和iOS下Controller之间的属性传值有点类似,安卓的Activity之间可以使用Bundle来交换数据.
用下面的例子来说明使用方式:
通过MainActivity启动GetInfoActivity,GetInfoActivity将获取MainActivity的一些数据.
第一步
创建Bundle对象,放入需要传递的数据,并使用Intent来携带这个Bundle
try {
val personInfo = PersonInfo(
userName.text.toString(),
userPwd.text.toString(),
maleInfo)
//创建Bundle对象
val data = Bundle()
data.putSerializable("PersonInfo",personInfo)
//创建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所对应的数据包











网友评论