引言
startActivityForResult在Android Studio中弃用了,改用registerForActivityResult进行数据传递
registerForActivityResult使用
first layout调用程序:
private val startAtivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
if (it.resultCode == RESULT_OK){
val data = it.data?.getStringExtra("data_ret")
Log.d("one layout", "the data is $data")
}
}
first layout的onCreate()内函数:
val binding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.button1.setOnClickListener {
val intent = Intent(this, two_layout::class.java)
startAtivity.launch(intent)
}
two layout程序:
val binding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.button2.setOnClickListener {
val intent = Intent()
intent.putExtra("data_ret", "hello one")
setResult(Activity.RESULT_OK,intent)
finish()
}