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 接口。