1.Intent換頁
2.Parcelize模組
3.Intent搭配Parcelize模組
Intent換頁
val intent = Intent(this, SecondActivity::class.java) startActivity(intent) finish()//關掉當前頁面
Parcelize模組,Kotlin版本在1.1.4以上皆已支援
以前尚未支援的時候,需要這樣寫class User(var name: String?, var info: String?): Parcelable { constructor(parcel: Parcel): this( parcel.readString() ,parcel.readString()) override fun describeContents(): Int { return 0 } override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeString(name) dest?.writeString(info) } companion object CREATOR: Parcelable.Creator<User> { override fun createFromParcel(source: Parcel): User { return User(source) } override fun newArray(size: Int): Array<User?> { return arrayOfNulls(size) } } }
現在支援後,只需這樣寫
@Parcelize class User(var name: String?, var info: String?): Parcelable { }
Intent搭配Parcelize模組
//按下button傳入Parcelize模組,並換頁 button.setOnClickListener { val appleUser = User("Apple", "A1") val javaUser = User("Java", "B1") val kotlinUser = User("Kotlin", "C1") val intent = Intent(this, SecondActivity::class.java) intent.putExtra("user", arrayListOf(appleUser, javaUser, kotlinUser)) startActivity(intent) finish() } //在onCreate的地方,將Parcelize模組的資料讀出來 val user = intent.getParcelableArrayListExtra<MainActivity.User>("user") user?.run { indices.forEach { println("name ${user[it].name} info ${user[it].info}") } }