我們在Android開發中在進行頁面跳轉的時候避免不了通過序列化的方式傳遞對象來通過狀態來維護頁面的UI顯示,其中有兩種方式,最簡單的是使用Serializable接口,當然他也會給我們帶來一些性能上不必要的開銷(其實就是懶),爲什麼呢,當然就是他那繁瑣的創建過程,所以這一點Kotlin考慮到了通過註解的方式幫我們避免了,我們本篇只是將一些使用方面的介紹,開始吧!
準備環節
這個便捷的序列化的方式應該默認是關閉的,所以我們下面來打開它。
補充:
因爲我們要使用Parcelable,肯定要實現他的接口,他idea會讓我們去實現對應的方法,而打開以下的開關之後就不需要我們自己實現,這樣也是檢驗我們這裏是否正確的打開了這個開關。
androidExtensions {
experimental = true
}
上邊的方法是在gradle的android方法中的。
使用
創建一個學生類,其中包括學生名稱
@Parcelize
data class Student(val name: String) : Parcelable
實現是使用一個按鈕點擊我們跳轉到下一個頁面接收到數據打印出來
LoginActivity
override fun initView() {
super.initView()
val intent = Intent(this, ShoppingActivity::class.java)
button.setOnClickListener {
//創建 Bundle容器
val bundle = Bundle()
//用於接收的序列化名稱
val name = "student"
val user = User("hhhhhhh")
//這裏使用的一樣的
bundle.putParcelable(name,user)
intent.putExtra(name,bundle)
startActivity(intent)
}
}
ShoppingActivity
//獲取序列化數據
val name = "student"
val bundle = intent.getParcelableExtra<Bundle>(name)
val studentBean = bundle.getParcelable<LoginActivity.User>(name)
userBean?.name?.let {
logd(it, "initView")
}
initView: hhhhhhh
這裏已經已經Ok了。