当使用 Kotlin 中的 @Parcelize 注解时,我希望忽略一个字段以使其不被 parcel 化,因为该字段没有实现 Parcelable 接口。从这里开始,我们会因为 PagedList 不可被序列化而出现错误:
@Parcelize
data class LeaderboardState(
val progressShown: Boolean = true,
val pagedList: PagedList<QUser>? = null
) : Parcelable
给出:
Type is not directly supported by 'Parcelize'. Annotate the parameter type with '@RawValue' if you want it to be serialized using 'writeValue()'
将@Transient
标记为Transient
会得到与上述相同的错误:
@Parcelize
data class LeaderboardState(
val progressShown: Boolean = true,
//Same error
@Transient
val pagedList: PagedList<QUser>? = null
) : Parcelable
我发现了一个未记录的注释,名为@IgnoredOnParcel
。它会产生相同的错误,并在注释上产生lint错误。
结果: 我发现了一个未记录的注释,名为@IgnoredOnParcel
。它会产生相同的错误,并在注释上产生lint错误。
@Parcelize
data class LeaderboardState(
val progressShown: Boolean = true,
//Same error plus lint error on annotation
@IgnoredOnParcel
val pagedList: PagedList<QUser>? = null
) : Parcelable
在这种情况下,lint错误是:
@IgnoredOnParcel'不适用于在主构造函数中声明的属性
真的没有用@Parcelize实现这个的方法吗?
data class
,而不是普通的class
。 - Nicolas