和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
所对应的数据包
网友评论