刚开始学Android,书上是onActivityResult获取Activity返回的数据,但是Android Studio提示
'onActivityResult(Int, Int, Intent?): Unit' is deprecated. Overrides deprecated member in 'androidx.activity.ComponentActivity'. Deprecated in Java
记录一下简单的使用替代品registerForActivityResult的情况。
MainActivity.kt
class 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()
}
...
}
...
}
本文介绍了如何在Android开发中,使用Kotlin和Android Studio的registerForActivityResult替代传统的onActivityResult方法来接收Activity返回的数据。通过示例代码展示了在MainActivity.kt和SecondActivity.kt中的具体实现。
1644

被折叠的 条评论
为什么被折叠?



