android safeargs destination值始终为默认值

oyxsuwqo  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(307)

所以我有一个混合了kotlin和java类的android应用程序,因为它是对旧应用程序的更新。长话短说,我们使用的是导航组件和safeargs,我能够正确设置参数上的值(kotlin类),但是当我尝试访问目标(android类)中的args时,我总是得到navigation.xml中设置的默认值
这是我的密码:
来源(kotlin):

//val actionDetail = FirstFragmentDirections.actionFirstToSecond("I am the source")
val actionDetail = FirstFragmentDirections.actionFirstToSecond()
actionDetail.chatSource = "I am the source"
navController.navigate(actionDetail)

然后我的navigation.xml看起来像:

<fragment
        android:id="@+id/nave_chat"
        android:name="ChatFragment"
        android:label=""
        tools:layout="@layout/fragment_chat" >
        <argument
            android:name="chatSource"
            app:argType="string"
            app:nullable="true"
            android:defaultValue="firstboot" />
    </fragment>

最后一个片段(java)看起来像:

String chatSource = requireArguments().getString("chatSource");
Log.d("MIKE LOG","CHAT SOURCE IS: " + chatSource);
String chatSource2 = getArguments().getString("chatSource");
Log.d("MIKE LOG","CHAT SOURCE 2 IS: " + chatSource2);
String vals = ChatFragmentArgs.fromBundle(getArguments()).getChatSource();
Log.d("MIKE LOG","CHAT SOURCE 3 IS: " + vals);

这里的所有值都是“firstboot”,而不是预期的“i is the source”。
任何帮助都是非常受欢迎的,我们一整天都在处理这个问题。先谢谢你。

ssgvzors

ssgvzors1#

尝试删除 app:defaultValue 在争论中

相关问题