Kotlin使用parcelable出現(xiàn):BadParcelableException: Parcelable protocol requires a Parcelable.Creator...

在Kotlin編寫代碼過程中,需要用到parcelable來進行傳值,按照以前的寫法,進行序列化:

class PayTypeInfo : Parcelable{
    var payMethodId: String? = null//支付方式ID
    var payMethodName: String? = null//支付方式名稱

    override fun writeToParcel(dest: Parcel, flags: Int) {
        dest.writeString(payMethodId)
        dest.writeString(payMethodName)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object {

        val CREATOR: Parcelable.Creator<PayTypeInfo> = object : Parcelable.Creator<PayTypeInfo> {

            override fun createFromParcel(source: Parcel): PayTypeInfo {
                val payTypeInfo = PayTypeInfo()
                payTypeInfo.payMethodId = source.readString()
                payTypeInfo.payMethodName = source.readString()
                return payTypeInfo
            }

            override fun newArray(size: Int): Array<PayTypeInfo> {
                return newArray(size)
            }

        }
    }
}

這樣序列化的實體類就寫完了,然后進行傳值

val bundle = Bundle()
val typeList = ArrayList<PayTypeInfo>()
bundle.putParcelableArrayList("payType", typeList)

接受數(shù)據(jù)時:

  val bundle = intent.extras
 val payTypeList = bundle.getParcelableArrayList<PayTypeInfo>("payType")

運行程序,出現(xiàn)錯誤,錯誤代碼為:BadParcelableException: Parcelable protocol requires a Parcelable.Creator...

經(jīng)過查找資料,找到了解決辦法,只需要在代碼CREATOR前面添加@JvmField即可:

@JvmField val CREATOR: Parcelable.Creator<PayTypeInfo> = object : Parcelable.Creator<PayTypeInfo> {

            override fun createFromParcel(source: Parcel): PayTypeInfo {
                val payTypeInfo = PayTypeInfo()
                payTypeInfo.payMethodId = source.readString()
                payTypeInfo.payMethodName = source.readString()
                return payTypeInfo
            }

            override fun newArray(size: Int): Array<PayTypeInfo> {
                return newArray(size)
            }

        }

在運行程序,傳值成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容