registerForActivityResult使用方法
时间: 2024-05-04 12:03:14 浏览: 12
registerForActivityResult是用于注册ActivityResult的方法,用于获取从其他Activity返回的结果。它的使用方法如下:
1. 创建一个ActivityResultLauncher实例
```
val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.SomeContract()) { result ->
//处理返回结果
}
```
2. 在需要启动Activity的地方,使用ActivityResultLauncher.launch()方法启动
```
someActivityResultLauncher.launch(inputData)
```
其中,inputData为需要传递给新Activity的数据,可以为空。
3. 在新Activity中设置返回结果
在新Activity中,可以使用setResult()方法设置返回结果:
```
val resultIntent = Intent()
resultIntent.putExtra("result", someData)
setResult(Activity.RESULT_OK, resultIntent)
finish()
```
其中,someData为需要返回给原Activity的数据。
4. 在原Activity中处理返回结果
在注册ActivityResult的lambda表达式中,可以处理从新Activity返回的结果:
```
val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.SomeContract()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val resultData = result.data
//处理返回结果
}
}
```
其中,result.resultCode为返回结果的状态码,result.data为返回的数据。