可包裹在科特林

时间:2019-10-25 17:10:13

标签: kotlin

当我自动Parcelable时,即使我的变量为String格式,我的类parcel.readString()和parcel.readString()也会用红色下划线标出。这是我的代码

import android.os.Parcel
import android.os.Parcelable

class adel constructor(var lel : String, var skl: String) : Parcelable {
    constructor(parcel: Parcel) : this(
             parcel.readString(),
             parcel.readString()
         ) {}

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(lel)
        parcel.writeString(skl)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<adel> {
        override fun createFromParcel(parcel: Parcel): adel {
            return adel(parcel)
        }

        override fun newArray(size: Int): Array<adel?> {
            return arrayOfNulls(size)
        }
    }
}

2 个答案:

答案 0 :(得分:4)

由于您位于Kotlin,因此可以跳过实施,而是安装一个不错的功能。只需将其添加到build.gradle

androidExtensions {
        experimental = true
    }

然后在您的课程中:

import kotlinx.android.parcel.Parcelize   

@Parcelize
data class Adel(var lel : String, var skl: String) : Parcelable

您已完成。请注意,您将出现皮棉错误。只是忽略它。

答案 1 :(得分:1)

parcel.readString()

可为空,替换为

parcel.readString().orEmpty()