Android Kotlin-4 Intent換頁與Parcelize模型


Posted by John on 2020-12-06

1.Intent換頁
2.Parcelize模組
3.Intent搭配Parcelize模組

  1. Intent換頁

     val intent = Intent(this, SecondActivity::class.java)
     startActivity(intent)
     finish()//關掉當前頁面
    
  2. 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 {
    
     }
    
  3. 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}")
         }
     }
    

#Android #Kotlin #軟體設計 #電腦程式







Related Posts

[TensorFlow Certification Day2] 課程規劃與安排時間

[TensorFlow Certification Day2] 課程規劃與安排時間

如何在 CoderBridge 上撰寫文章?

如何在 CoderBridge 上撰寫文章?

使用 visx 製作資料圖表-台灣六都即時空氣品質指標

使用 visx 製作資料圖表-台灣六都即時空氣品質指標


Comments