android registerForActivityResult用法 代码举例
时间: 2024-05-04 18:13:44 浏览: 16
在Android开发中,registerForActivityResult是一个用于处理Activity或Fragment中的ActivityResult的方法。它可以用于替代旧版本中的startActivityForResult方法。
使用registerForActivityResult的步骤如下:
1. 首先,在Activity或Fragment中定义一个ActivityResultLauncher对象,用于处理返回的结果。例如:
```java
private ActivityResultLauncher<Intent> launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
// 处理返回的结果
Intent data = result.getData();
// ...
}
}
);
```
2. 然后,在需要启动另一个Activity的地方,使用launcher.launch(intent)来启动目标Activity,并传递相应的Intent。例如:
```java
Intent intent = new Intent(this, TargetActivity.class);
launcher.launch(intent);
```
3. 最后,在目标Activity中,通过setResult方法设置返回的结果,并调用finish方法关闭当前Activity。例如:
```java
Intent resultIntent = new Intent();
resultIntent.putExtra("key", value);
setResult(Activity.RESULT_OK, resultIntent);
finish();
```
这样,当目标Activity关闭时,会回调之前定义的ActivityResultLauncher对象中的回调方法,你可以在回调方法中处理返回的结果。