android - Parcelables 不支持默认值。 Android 导航深层链接参数

标签 android navigation parcelable deeplink android-safe-args

在执行传参解决方案的过程中,在模块之间导航时,遇到了一个序列化错误。据我所知,深度链接接受自定义参数类型,即 Parcelables 或 Serializable。

我正在使用最新版本的导航 2.2.0

错误信息:

java.lang.UnsupportedOperationException: Parcelables don't support default values.



我做错了什么还是仍在开发中?

这是一个简短的例子:
<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

这是我在堆栈上的第一篇文章,所以请温柔:)

EDIT



这是答案:

https://issuetracker.google.com/issues/148523779

最佳答案

Parcelables 当前不支持默认值,因此您需要将对象作为字符串值传递。是的,这是一种解决方法。因此,我们可以将该对象转换为 JSON(字符串)并通过导航传递,然后将该 JSON 解析回目的地的对象,而不是将对象本身作为 Parcelize 对象传递。您可以使用 GSON用于对象到 json 字符串的转换。

关于android - Parcelables 不支持默认值。 Android 导航深层链接参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59975553/

相关文章:

c# - LoadContent 在 AndroidGameActivity 中运行时的启动/加载屏幕

android - 无法将JGit导入gradle构建脚本

ios - 在 iOS 中切换 View 的最佳方式

css - 推特 Bootstrap 4 : two toggler/displaying only one menu in lg screens

Android:使用 Parcerable 将自定义对象的 ArrayList 从 fragment 发送到 Activity

android - 如何使我的自定义对象 Parcelable?

android - 来自不同类的 fragment 中的 start 方法

java - 在 android 的 AsyncTask 中创建额外的线程并使用 ExecutorService 更新 UI,我做错了吗?

html - 导航栏下方的下拉导航菜单

java - 无法通过 bundle 使用 putparcelablearraylist 将对象的 Arraylist 发送到 fragment ?