我正在尝试将 Navigation Safe Args 与 Kotlinx @Serializable 类型一起使用,但是当我传递可序列化数据时,我在运行时不断遇到同样的问题:
Caused by: java.lang.IllegalArgumentException: com.example.serializablesafeargsnavigation.shared.Model.SerializableModel is not Serializable or Parcelable.
在我的nav_graph.xml我有以下内容:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/firstFragment">
<fragment
android:id="@+id/firstFragment"
android:name="com.example.serializablesafeargsnavigation.androidApp.FirstFragment"
android:label="FirstFragment" >
<action
android:id="@+id/action_firstFragment_to_secondFragment"
app:destination="@id/secondFragment" />
</fragment>
<fragment
android:id="@+id/secondFragment"
android:name="com.example.serializablesafeargsnavigation.androidApp.SecondFragment"
android:label="SecondFragment">
<argument
android:name="arg"
app:argType="com.example.serializablesafeargsnavigation.shared.Model.SerializableModel" />
</fragment>
</navigation>
我的SerializableModel看起来像这样:
@Serializable
data class SerializableModel(
@SerialName("some_value")
val someValue: String
)
有没有人找到一种解决方法来使用 Safe Args 进行这项工作。如果您使用导航 API 传递 Bundle,它会起作用,但如果可能,我想使用 Safe Args。
我正在使用的版本
- plugin.serialization: 1.4.21
- 导航安全参数梯度插件:2.3.2
- androidx.navigation:navigation-ui-ktx: 2.3.2
- androidx.navigation:navigation-fragment-ktx: 2.3.2
- kotlinx 序列化核心:1.0.1
提前致谢!