registerForActivityResult()使用案例
时间: 2024-05-04 21:12:54 浏览: 11
registerForActivityResult() 是 Android Jetpack 中的一个函数,用于注册一个 ActivityResultLauncher,用于处理从其他 Activity 返回的结果。它通常与 startActivityForResult() 或 startActivity() 一起使用。
以下是一个 registerForActivityResult() 的使用案例:
```kotlin
// 在 Activity 或 Fragment 中
val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// 处理返回的结果
val data: Intent? = result.data
// ...
}
}
// 启动其他 Activity 并等待结果
val intent = Intent(this, OtherActivity::class.java)
someActivityResultLauncher.launch(intent)
```
在上面的例子中,我们首先使用 registerForActivityResult() 函数创建了一个 ActivityResultLauncher 对象 `someActivityResultLauncher`。然后,我们可以使用 `someActivityResultLauncher.launch(intent)` 启动其他 Activity,并在返回结果时执行 lambda 表达式中的代码。
当其他 Activity 返回结果时,lambda 表达式会被调用,并且我们可以通过 `result` 参数获取返回的结果。在这个例子中,我们检查了返回结果的 resultCode 是否为 Activity.RESULT_OK,如果是,则可以通过 `result.data` 获取返回的 Intent 数据。
这样,我们就可以方便地处理从其他 Activity 返回的结果。