和iOS下Controller之間的屬性傳值有點類似,安卓的Activity之間可以使用Bundle來交換數據.
用下面的例子來說明使用方式:
通過MainActivity啟動GetInfoActivity,GetInfoActivity將獲取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中取出Int、Long等各種類型的數據 -
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所對應的數據包