使用Bundle在Activity之間交換數據

iOSController之間的屬性傳值有點類似,安卓的Activity之間可以使用Bundle來交換數據.
用下面的例子來說明使用方式:
通過MainActivity啟動GetInfoActivityGetInfoActivity將獲取MainActivity的一些數據.

第一步

創(chuàng)建Bundle對象,放入需要傳遞的數據,并使用Intent來攜帶這個Bundle

        try {
                val personInfo = PersonInfo(
                    userName.text.toString(),
                    userPwd.text.toString(),
                    maleInfo)
                //創(chuàng)建Bundle對象
                val data = Bundle()
                data.putSerializable("PersonInfo",personInfo)
                //創(chuàng)建Intent
                val intent = Intent(this@MainActivity,GetInfoActivity::class.java)
                intent.putExtras(data)
                startActivity(intent)
            }catch (exception:Exception){
                showToast("$exception")
            }

PersonInfo是一個繼承Serializable接口的數據類

data class PersonInfo(val name:String,val pwd:String,val gender:String):Serializable;

第二步
GetInfoActivity取出數據

        val intent = intent

        try {
            //取出數據
            personInfo = intent.getSerializableExtra("PersonInfo") as PersonInfo?
            un.text = personInfo?.name
            up.text = personInfo?.pwd
            ug.text = personInfo?.gender
        }catch (exception:Exception){
            print(message = "ERROR:$exception")
        }
效果圖

說明

Bundle就是一個小型的數據攜帶包包含了一些存入和取出數據的方法
  • putXxx(String key,Xxx data)Bundle中放入Int 、Long等各種類型的數據
  • putSerializable(String key,Serialiable data)Bundle中放入一個可序列化的的對象
  • getXxx(String key)Bundle中取出IntLong等各種類型的數據
  • getSerialiable(String key)Bundle中取出一個可序列化的的對象
Intent通過提多多個重載的方法來攜帶額外的數據包
  • putExtras(data:Bundle)Intent中放入需要攜帶的數據包
  • getExtras():Bundle取出Intent中攜帶的數據包
  • putXxxx(key:String,value:Xxx)Intent中存入key-value形式的數據
  • getXxxExtra(key:String)Intent中取出 key所對應的數據包
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容