android registerForActivityResult用法完整代码 代码举例
时间: 2024-05-04 16:13:45 浏览: 118
在Android中,`registerForActivityResult`是一个用于处理Activity结果的方法。它可以替代`startActivityForResult`方法,用于启动其他Activity并接收返回结果。以下是一个完整的使用示例代码:
首先,在你的Activity中定义一个ActivityResultLauncher对象和一个ActivityResultCallback回调函数:
```java
private ActivityResultLauncher<Intent> launcher;
private ActivityResultCallback<ActivityResult> callback;
```
然后,在`onCreate`方法中初始化这两个对象:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
if (result.getResultCode() == RESULT_OK) {
Intent data = result.getData();
// 处理返回结果
}
});
callback = new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK) {
Intent data = result.getData();
// 处理返回结果
}
}
};
}
```
接下来,在需要启动其他Activity的地方,使用`launcher`对象调用`launch`方法:
```java
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
launcher.launch(intent);
```
当其他Activity返回结果时,会自动触发回调函数中的代码,你可以在回调函数中处理返回结果。
注意:上述代码中的`OtherActivity`是你要启动的其他Activity的类名,你需要根据实际情况进行替换。
阅读全文