我需要将自定义对象从一个片段传递到另一个片段。我使用 androidx 导航在片段之间进行导航。我不得不deepLink
为我的用例使用导航。
带有目标片段的导航图有,
<fragment
android:id="@+id/ListFragment"
android:name="com.joseph.learning.ListFragment"
android:label="ListFragment">
<argument android:name="todoItem"
app:argType="com.joseph.learning.models.todoItem" />
<deepLink app:uri="android-app://androidx.navigation/todoList/{todoItem}" />
</fragment>
从源片段开始,导航就像
findNavController().navigate(
Uri.parse("android-app://androidx.navigation/todoList/$item"),
NavOptions.Builder()
.setEnterAnim(R.anim.transition_slide_in_right)
.setExitAnim(R.anim.transition_slide_out_left)
.setPopExitAnim(R.anim.transition_slide_out_right)
.setPopEnterAnim(R.anim.transition_slide_in_left)
.build()
)
但是一旦执行并出现以下错误,这就会失败
java.lang.UnsupportedOperationException: Parcelables don't support default values.
at androidx.navigation.NavType$ParcelableType.parseValue(NavType.java:679)
at androidx.navigation.NavType.parseAndPut(NavType.java:96)
at androidx.navigation.NavDeepLink.parseArgument(NavDeepLink.java:306)
...
如果 incase 将自定义对象作为参数替换为字符串或整数,则导航可以正常工作。也可以使用在目标片段中提取传递的数据navArgs()
应该怎么做才能跨片段传递自定义对象?