Intent传递对象需要序列化
对于Intent序列化有两种方法
一种是Serializable,另一种是Parcelable。
这里我用到的是Parcelable 因为在Kotlin实现里Parcelable有一种特别方便的实现,不需要写过多的逻辑。
build.gradle添加plugin
apply plugin: 'kotlin-android-extensions'
然后在android节点下添加以下代码:(因为该特性当前属于实验特性)
android {
...
androidExtensions {
experimental = true
}
然后在你需要传递的数据类里面加上@Parcelize ,以及让类继承Parcelable接口
@Parcelize //加上这个
data class Pet(var petname:String) :Parcelable {}
这里演示一下怎么传
向下一个传递数据
val intent=Intent(this,ACTIVITY::class.java).apply {
putExtra("pet",pet)
}
this.startActivity(intent)
接收上一个传递来的数据
val pet=intent.getParcelableExtra<Pet>("pet")