我有类似下面的内容,我想将它们作为意图参数传递;
sealed class BasketType : Parcelable {
class BasketOne(val basketId: String): BasketType() {
constructor(parcel: Parcel) : this(parcel.readString()) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
super.writeToParcel(parcel, flags)
parcel.writeString(basketId)
}
override fun describeContents(): Int {
return 0
}
...
}
...
}
但我收到以下错误;
Abstract member cannot be accessed directly
在线
super.writeToParcel(parcel, flags)
这是一种预期。我四处寻找解决方法,但找不到。有任何想法吗?
最佳答案
如果你想要 @Parcelize
在 sealed class
, 像这样做:
sealed class AssistantType : Parcelable{
@Parcelize data class Dashboard(
val firstName: String,
val hasGoal: Boolean,
val hasOverDuePayment: Boolean
) : AssistantType()
@Parcelize data class Detail(
val firstName: String,
val isGoalAchived: Boolean
) : AssistantType()
}
并将以下代码添加到您的 App Level gradle 中。apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
androidExtensions {
experimental = true
}
关于android-intent - 使密封类层次结构 Parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810072/