所以我有一个混合了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”。
任何帮助都是非常受欢迎的,我们一整天都在处理这个问题。先谢谢你。
1条答案
按热度按时间ssgvzors1#
尝试删除
app:defaultValue
在争论中