com.app.android.models.Item 不可序列化或可打包
com.app.android.models.Item is not Serializable or Parcelable
正在尝试学习 kotlin,如有任何帮助,我们将不胜感激。我试图在片段之间传递这个对象,并得到它不可序列化或不可分割的消息。关于为什么会发生这种情况有什么建议吗?
@Serializable
data class Item(
@SerialName("_version")
val version: String,
@SerialName("language")
val language: String,
@SerialName("region")
val region: String? = null,
@SerialName("variant")
val variant: String? = null
)
nav_graph.xml
<fragment
android:id="@+id/fragment1"
android:name="com.app.android.ui.fragment1">
<action
android:id="@+id/toFragment2"
app:destination="@id/Fragment2"
/>
<argument
android:name="item1"
android:defaultValue="@null"
app:argType="com.app.android.models.Item"
app:nullable="true" />
</fragment>
它允许我传递存储在数据部分而不是模型部分中的其他对象,所以不确定为什么这是一个问题。例如,这个对象可以作为参数:
@Parcelize
data class Item2 internal constructor(
val code: String,
val Id: String,
val url: String,
) : Parcelable {
companion object {
//more code
}
}
注解对编译器有帮助,但你还需要实现Serializable
接口。
@Serializable
data class Item(
@SerialName("_version")
val version: String,
@SerialName("language")
val language: String,
@SerialName("region")
val region: String? = null,
@SerialName("variant")
val variant: String? = null
) : Serializable
Item2
工作的原因是因为它实现了 Parcelable
接口。
正在尝试学习 kotlin,如有任何帮助,我们将不胜感激。我试图在片段之间传递这个对象,并得到它不可序列化或不可分割的消息。关于为什么会发生这种情况有什么建议吗?
@Serializable
data class Item(
@SerialName("_version")
val version: String,
@SerialName("language")
val language: String,
@SerialName("region")
val region: String? = null,
@SerialName("variant")
val variant: String? = null
)
nav_graph.xml
<fragment
android:id="@+id/fragment1"
android:name="com.app.android.ui.fragment1">
<action
android:id="@+id/toFragment2"
app:destination="@id/Fragment2"
/>
<argument
android:name="item1"
android:defaultValue="@null"
app:argType="com.app.android.models.Item"
app:nullable="true" />
</fragment>
它允许我传递存储在数据部分而不是模型部分中的其他对象,所以不确定为什么这是一个问题。例如,这个对象可以作为参数:
@Parcelize
data class Item2 internal constructor(
val code: String,
val Id: String,
val url: String,
) : Parcelable {
companion object {
//more code
}
}
注解对编译器有帮助,但你还需要实现Serializable
接口。
@Serializable
data class Item(
@SerialName("_version")
val version: String,
@SerialName("language")
val language: String,
@SerialName("region")
val region: String? = null,
@SerialName("variant")
val variant: String? = null
) : Serializable
Item2
工作的原因是因为它实现了 Parcelable
接口。