我的Parcelable类希望我包含一个CREATOR
字段,但我不知道这样的字段是什么样的。在此期间,我已经用SupressLint
消除了投诉,但希望拥有CREATOR
字段。知道是什么样吗?
@SuppressLint("ParcelCreator")
@Parcelize
class RecipeTemplate: Parcelable {
var recipeHeader: String? = null
var recipeText: String? = null
var recipeImage: String? = null
var recipeKey: String? = null
}
答案 0 :(得分:2)
尽管如此,Parcelize仍然存在一个小问题。在这一刻 Android Studio出现问题,显示有关 Parcelable接口的实现不完整:
这是IDE本身的一个已知错误,您可以忽略它, 代码没有错,它可以按预期工作。你可以保持 在这里跟踪问题。目前处于“进行中”状态。
因此您可以忽略此警告。
答案 1 :(得分:0)
可打包的示例实现如下所示:
data class WarriorParcelable(val name : String,
val weapon : String) : Parcelable {
companion object CREATOR : Parcelable.Creator<WarriorParcelable> {
override fun createFromParcel(parcel: Parcel): WarriorParcelable = WarriorParcelable(parcel)
override fun newArray(size: Int): Array<WarriorParcelable?> = arrayOfNulls(size)
}
private constructor(parcel: Parcel) : this (parcel.readString(),parcel.readString())
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(name)
dest.writeString(weapon)
}
override fun describeContents(): Int = 0
}
但是,如果使用@Parcelize,则无需编写Parcelable的实现代码。它将为您实现。
答案 2 :(得分:0)
@Parcelize 仍是一项实验性功能,升级到最新的kotlin插件版本并将此代码添加到您的 build.grade 中> 文件
android {
...
androidExtensions {
experimental = true
}
}
IDE将停止抱怨。如下所示;我对您的课程进行了一些修改,但本质上是同一件事。
@Parcelize
data class RecipeTemplate(var recipeHeader: String? = null,
var recipeText: String? = null,
var recipeImage: String? = null,
var recipeKey: String? = null) : Parcelable