Bundle 通过使用安全的 Args 导航变得空

我正在尝试通过使用 java 使用 android x 的新导航功能,我面临以下问题


我正在使用 Safe Args 将数据从一个目的地传递到另一个目的地,但我的捆绑包始终为空。我尝试了很多选择。


在没有 Safe Args 的情况下尝试参数传递,即使使用 Safe Args 我也收到错误


// Passing an argument in fragment

nameBtn.setOnClickListener(v -> {

            AccountFragmentDirections.ToNameFragment direction =

                    AccountFragmentDirections.toNameFragment().setNameArgument(editName.getText().toString());

            Navigation.findNavController(v).navigate(direction);

        });



//Retriving the nameArgument from bundle

        String name  = NameFragmentArgs.fromBundle(savedInstanceState).getNameArgument();



<!-- Fragments in Navigation graph -->

    <fragment

        android:id="@+id/nameFragment"

        android:name="com.example.navigationdemo.NameFragment"

        android:label="fragment_name"

        tools:layout="@layout/fragment_name">


        <argument

            android:name="nameArgument"

            app:argType="string"

            app:nullable="true"

            android:defaultValue="none" />

    </fragment>


    <fragment

        android:id="@+id/accountFragment"

        android:name="com.example.navigationdemo.AccountFragment"

        android:label="fragment_account"

        tools:layout="@layout/fragment_account" >

        <action

            android:id="@+id/toNameFragment"

            app:destination="@id/nameFragment" />

    </fragment>


Smart猫小萌
浏览 110回答 1
1回答

不负相思意

您不应该使用savedInstanceStateto retrieve safe args。代替String&nbsp;name&nbsp;&nbsp;=&nbsp;NameFragmentArgs.fromBundle(savedInstanceState).getNameArgument();使用String&nbsp;name&nbsp;&nbsp;=&nbsp;NameFragmentArgs.fromBundle(getArguments).getNameArgument();另外,请注意,android:defaultValue="none"字面意思是 String with value&nbsp;"none"。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java