registerForActivityResult应用 代码举例
时间: 2024-05-04 14:13:44 浏览: 11
registerForActivityResult是Android Jetpack库中的一个类,用于简化处理Activity或Fragment结果的过程。它可以帮助我们更方便地处理startActivityForResult和requestPermissions等操作。
下面是一个使用registerForActivityResult的代码示例:
首先,在Activity或Fragment中定义一个ActivityResultLauncher对象:
```java
private ActivityResultLauncher<Intent> launcher;
```
然后,在onCreate方法中初始化该对象:
```java
launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
// 处理成功的结果
Intent data = result.getData();
// ...
} else {
// 处理失败的结果
// ...
}
});
```
接下来,我们可以使用launcher.launch方法来启动一个Activity,并在结果返回时进行处理:
```java
Intent intent = new Intent(this, SecondActivity.class);
launcher.launch(intent);
```
在SecondActivity中,当需要返回结果时,可以使用以下代码设置结果并关闭Activity:
```java
Intent intent = new Intent();
intent.putExtra("key", value);
setResult(Activity.RESULT_OK, intent);
finish();
```
这样,在原来的Activity中,就可以在launcher的回调函数中获取到返回的结果。