android-intent - 使密封类层次结构 Parcelable

标签 android-intent kotlin parcelable sealed

我有类似下面的内容,我想将它们作为意图参数传递;

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)这是一种预期。

我四处寻找解决方法,但找不到。有任何想法吗?

最佳答案

如果你想要 @Parcelizesealed 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/

相关文章:

java - Android studio 改变 Intent 时崩溃

android - 当按下后退按钮时,android显示空白页

android - 无法生成 View 绑定(bind) java.lang.IndexOutOfBoundsException

firebase - Firebase Firestore 中是否有任何 whereIn 查询?

java - 将枚举写入 Parcel 导致 RuntimeException

java - Android Parcelable 对象传递给 Activity 但不传递给服务

android - 使用 FileProvider 通过 Intent 发送多个不同类型的文件

java - 尝试启动第二个 Activity 时出现 ActivityNotFoundException

kotlin - 在 kotlin 中命名伴生对象有什么意义

java - 打包/取消打包自定义对象的 HashMap 的最佳方法是什么?