内容简介
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<User> { override fun createFromParcel(parcel: Parcel): User { return User(parcel) } override fun newArray(size: Int): Array<User?> { 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<User>("extraKey") infoTextView.text = user.name
作者:程序园中猿
链接:https://www.jianshu.com/p/a32ecbfab6b0
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦