我收到以下错误:
Parcelable 应该有主构造函数
想法我该如何解决这个问题?我有一个基类,其构造函数不共享基本构造函数,那么我如何扩展这样的类并使其在 kotlin 中可分割?
添加主构造函数 => 然后我得到异常,
PhoneAppItem
代码
这是产生此错误的基本准系统代码(
我有两个以上的简单构造函数!!):
PhoneAppItem
abstract class AbstractPhoneAppItem : Parcelable {
constructor() {
}
constructor(packageName: String?) {
this.packageName = packageName
}
}
@Parcelize
class PhoneAppItem : AbstractPhoneAppItem {
constructor() : super()
constructor(packageName: String?) : super(packageName)
}
abstract class AbstractPhoneAppItem(): Parcelable {
private var packageName: String? = null
constructor(packageName: String?): this() {
this.packageName = packageName
}
}
@Parcelize
class PhoneAppItem : AbstractPhoneAppItem {
constructor() : super()
constructor(packageName: String?) : super(packageName)
}
这样,您可以在没有任何参数的情况下使用它(因此您的 packageName 为 null,或您想要的默认值)或与参数一起使用。然后,您的项目类可以调用超类的主构造函数。
:
abstract class AbstractPhoneAppItem (var packageName: String? = null) : Parcelable {
}
否则,
@Parcelize
class PhoneAppItem : AbstractPhoneAppItem {
constructor() : super()
constructor(packageName: String?) : super(packageName)
companion object : Parceler<PhoneAppItem> {
// modify logic to taste
override fun PhoneAppItem.writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(packageName)
}
override fun create(parcel: Parcel): PhoneAppItem {
return PhoneAppItem(parcel.readString())
}
}
}
确实需要一个主构造函数来知道要做什么。
@Parcelize