Kotlin使用Parcelable序列化数据类

一、正常使用:

data class User(
    val name: String?,
    val sex: String?,
    val age: Int
): Parcelable {
    
    constructor(parcel: Parcel) : this(
        parcel.readString(),
        parcel.readString(),
        parcel.readInt()
    ) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(name)
        parcel.writeString(sex)
        parcel.writeInt(age)
    }

    override fun describeContents(): Int {
        return 0
    }

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

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

正常使用就是重写Parcelable的几个方法。

二、使用注解:

@Parcelize
data class User(
    val name: String?,
    val sex: String?,
    val age: Int
): Parcelable

完事!
需要注意的点就是要使用 @Parcelize 需要再app下面的build.gradle下面添加上:

android {
    ...
    androidExtensions {
        experimental = true
    }
}

如果遇到报如下No signature of method…的错误:
在这里插入图片描述
那是因为没有添加 kotlin-android-extensions 依赖,也是在app下面的build.gradle下:
在这里插入图片描述
添加上再重新编译即可!

更新:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
//    id 'kotlin-android-extensions'
    id 'kotlin-parcelize' //后续升级Kotlin插件版本,需要更换成这种引入方式, kotlin-android-extensions已废弃
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值