内容简介
Java代码里要通过Parcelable在intent间传递对象时,Java对象要实现Parcelable,操作起来很麻烦。不过Kotlin里已经有了更好用的方式了。
实现方式build.gradle添加plugin等文件头部增加如下内容:apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'android节点中增加如下内容:(因为该特性当前属于实验特性)androidExtensions {
experimental = true
}
定义数据类User.java:import android.os.Parcelableimport kotlinx.android.parcel.Parcelize@Parcelizeclass User(var age: Int,var name: String): Parcelable
如果不使用kotlin该实验特性,则需要在数据类中增加Parcel相关代码import android.os.Parcelimport android.os.Parcelable
class User(var age: Int,var name: String): Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readString()) {
} override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(age)
parcel.writeString(name)
} override fun describeContents(): Int { return 0
}
companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): User { return User(parcel)
} override fun newArray(size: Int): Array { return arrayOfNulls(size)
}
}
}通过intent传递对象:var intent = Intent(this@MainActivity, SecondActivity::class.java)val user = User(10, "Andy")
intent.putExtra("extraKey", user)
startActivity(intent)通过intent接收对象:val user = intent.getParcelableExtra("extraKey")
infoTextView.text = user.name
作者:程序园中猿
链接:https://www.jianshu.com/p/a32ecbfab6b0