基本上,我有一个MainActivity,它包含3个不同的片段,在其中一个片段中,我可以单击一个按钮,通过简单的RadioGroup选项打开一个新的活动,每当我单击其中一个选项时,它就会自动关闭该活动。现在,我的问题是将所选的数据传输到片段,这样我就可以根据我选择的RadioButton来更新它。
我最接近的解决方案是startActivityForResult,但它似乎不再有效。。。
来自官方指南文档:
在你的片段中,创建&注册启动器
private val launcher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
handleResult(result)
}
创建一个处理ActivityResult
:的方法
fun handleResult(result: ActivityResult) {
// Handle the returned result as you do in onActivityResult()
// Use result.resultCode to determine OK or Cancelled result
if (result.resultCode == Activity.RESULT_OK) {
val resultIntent = result.data
// Use returned Intent
}
}
启动OtherActivity
以获得如下结果:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// ...
val selectButton = findViewById<Button>(R.id.select_button)
selectButton.setOnClickListener {
// Launch activity from whom you want the result
val intent = Intent(requireContext(), OtherActivity::class.java)
launcher.launch(intent)
}
}
在OtherActivity
中,当您准备好发回结果时,创建一个意向并将数据放入其中
val intent = Intent()
intent.putExtra("YOUR_KEY", YOUR_DATA_HERE)
setResult(Activity.RESULT_OK, intent)
finish()
之后,您将在handleResult()
方法中得到结果。
您可以使用SharedPreferences来保存单选按钮的状态,也可以创建一个回调函数,在处理片段时触发主活动,并将单选按钮状态作为参数传递。