内容简介
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