我收到错误消息“Parcelable 协议需要一个名为 CREATOR 类的 Parcelable.Creator 对象......”,但我确实有一个 Creator,但我不知道它有什么问题。我从https://developer.android.com/reference/android/os/Parcelable复制它并更改了类名以适合我的代码。我怀疑从 Java 到 Kotlin 的(自动)转换并不完美(或者准确地说:它是否与需要的略有不同),但我不知道问题到底是什么。
有一个具有相同错误消息的线程(Parcelable 协议需要一个名为 CREATOR(我确实有 CREATOR)的Parcelable.Creator对象),但问题在于“fun writeToParcel”的写入顺序与读取顺序不同“有趣的数据处理程序”。在我的情况下,这不是问题,因为它的顺序相同。
那里的另一个答案指出,函数需要是静态的可能是一个问题。但是,Kotlin 没有“静态”功能。我读到它是用“同伴对象”完成的。我试过了(见下文),但它引发了另一个错误 - 我不确定它是否会起作用。
class DataHandler : Parcelable {
var player1name = ""
var player1color = 0
//main constructor
fun DataHandler(player1name: String, player1color: Int) {
this.player1name = player1name
this.player1color = player1color
}
//write object values to parcel for storage
override fun writeToParcel(dest: Parcel, flags: Int) {
//write all properties to the parcle
dest.writeString(player1name)
dest.writeInt(player1color)
}
//constructor used for …Run Code Online (Sandbox Code Playgroud)