'startActivityForResult(android.content.Intent, int)' is deprecated
时间: 2024-03-23 08:15:30 浏览: 23
这个警告是因为 `startActivityForResult()` 方法在 Android 11 (API level 30) 中被标记为过时(deprecated)了。官方建议我们使用新的 `registerForActivityResult()` 方法来代替。
`registerForActivityResult()` 方法与 `startActivityForResult()` 方法类似,但是使用起来更加简单和直观。它使用一个 `ActivityResultLauncher` 对象来处理返回的结果,可以根据需要在任何位置声明和使用,而不必担心 Activity 的生命周期。
以下是一个简单的示例:
```kotlin
// 在 Activity 或 Fragment 中声明一个 ActivityResultLauncher 对象
private val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// 处理返回的数据
val data: Intent? = result.data
// ...
}
}
// 发起启动 Activity 的请求
val intent = Intent(this, SomeActivity::class.java)
someActivityResultLauncher.launch(intent)
```
需要注意的是,`ActivityResultLauncher` 对象是与某个特定的请求代码(requestCode)相关联的。如果需要启动多个 Activity 并且需要处理它们返回的结果,那么就需要为每个请求代码分别声明一个 `ActivityResultLauncher` 对象。