在实施传递参数解决方案期间,在模块之间的导航中,我遇到了序列化错误。据我所知,深层链接接受自定义参数类型,即Parcelables或Serializable。
我正在使用最新版本的导航2.2.0
错误消息:
java.lang.UnsupportedOperationException:可打包设备不支持默认值。
我做错什么了吗?还是在开发中?
这是一个简短的例子:
<fragment
android:id="@+id/sampleFragment"
android:name="com.testapp.app.samples.navigation.SampleFragment"
android:label="SampleFragment">
<argument
android:name="Args"
app:argType="com.testapp.navigation.SampleArgs" />
<deepLink app:uri="app://app/samples/navigation/SampleFragment?Args={Args}"/>
</fragment>
@Parcelize
@Keep data class SampleArgs(
val text: String
) : NavArgs, Parcelable
val x = SampleArgs("TEST")
val uri = Uri.parse("app://app/samples/navigation/SampleFragment?Args=$x")
navController.navigate(uri)
我在这里Android Parcelable don't support default values App Crash
找到了类似的东西这是我的第一篇文章,所以请保持柔和:)
编辑
这是答案:
答案 0 :(得分:0)
Parcelables 目前不支持默认值,因此您需要将对象作为字符串值传递。是的,这是一个变通方法。因此,与其将对象本身作为 Parcelize 对象传递,我们还可以将该对象转换为 JSON(字符串)并通过导航将其传递,然后将该 JSON 解析回目标处的对象。您可以将 GSON
用于对象到 json-string 的转换。