传递简单数据给下一个Activity
在本Activity中构建intent
//send data to activity2
R.id.item_sendData -> {
val intent = Intent(this,MainActivity2::class.java)
intent.putExtra("name","张三")
intent.putExtra("number","123456")
startActivity(intent)
}
在目标Activity中取出数据
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
val name = intent.getStringExtra("name")
val number = intent.getStringExtra("number")
Log.d(Tag,"$name's number is $number")
}
结果
2022-03-23 22:10:12.467 22547-22547/com.example.intentdatatest D/MainActivity: 张三's number is 123456
从目标Activity中取回数据
同样先在本Activity中构建intent,跳转到目标Activity
//get data from activity3
R.id.item_getData -> {
val intent = Intent(this,MainActivity3::class.java)
startActivityForResult(intent,1)
}
然后在目标Activity中用intent构建返回内容,用setresult()返回数据
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main3)
val intent = Intent()
intent.putExtra("returnData1","yes")
intent.putExtra("returnData2","no")
setResult(RESULT_OK,intent)
finish()
}
重写back响应保证逻辑的执行
override fun onBackPressed() {
val intent = Intent()
intent.putExtra("returnData1","yes")
intent.putExtra("returnData2","no")
setResult(RESULT_OK,intent)
finish()
}
在原Activity中取出数据
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(requestCode){
1 -> {
if (resultCode == RESULT_OK){
//返回数据成功的处理逻辑
Log.d(Tag,"get data form activity3 successful!")
}
}
}
}
结果
2022-03-23 22:10:20.059 22547-22547/com.example.intentdatatest D/MainActivity: get data form activity3 successful!
2022-03-23 22:10:25.798 22547-22547/com.example.intentdatatest D/MainActivity: get data form activity3 successful!