刚开始学Android,书上是onActivityResult获取Activity返回的数据,但是Android Studio提示
'onActivityResult(Int, Int, Intent?): Unit' is deprecated. Overrides deprecated member in 'androidx.activity.ComponentActivity'. Deprecated in Java
记录一下简单的使用替代品registerForActivityResult的情况。
MainActivity.ktclass MainActivity : AppCompatActivity() {
// 声明
private val myOnActivityResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
// 在此处处理返回数据
val data = it.data?.getStringExtra("value")
// 使用Toast显示返回的字符串
Toast.makeText(this, data, Toast.LENGTH_SHORT).show()
}
override fun onCreate(savedInstanceState: Bundle?) {
...
binding.bt.setOnClickListener {
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("value","传入的字符串")
//此处调用打开另一个Activity
myOnActivityResult.launch(intent)
}
...
}
...
}
SecondActivity.kt
class SecondActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
...
//接收传入数据
val data = intent.getStringExtra("value").toString()
// 使用Toast显示返回的字符串
Toast.makeText(this, data, Toast.LENGTH_SHORT).show()
// 返回数据
binding.bt.setOnClickListener {
intent.putExtra("value", "返回的字符串")
setResult(RESULT_OK, intent)
finish()
}
...
}
...
}



