sartActivityForResult显示过时了,如何修改
时间: 2024-05-11 08:19:01 浏览: 143
在新版的 Android SDK 中,建议使用 `ActivityResultLauncher` 来替换 `startActivityForResult`。使用 `ActivityResultLauncher` 可以更方便地管理 ActivityResult,并且可以使用 Lambda 表达式等方式来简化代码。
以下是使用 `ActivityResultLauncher` 的示例代码:
```java
// 创建一个 ActivityResultLauncher 对象
ActivityResultLauncher<Intent> launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
// 处理返回的数据
}
});
// 启动一个需要返回结果的 Activity
Intent intent = new Intent(this, MyActivity.class);
launcher.launch(intent);
```
其中,`registerForActivityResult` 方法接收两个参数,第一个参数是一个 `ActivityResultContract` 对象,用于指定要启动的 Activity 的 Intent 和返回的结果类型;第二个参数是一个 `ActivityResultCallback` 对象,用于处理返回结果。
如果需要传递参数给启动的 Activity,可以修改 Intent 对象,例如:
```java
Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("key", "value");
launcher.launch(intent);
```
如果需要在 Activity 返回时传递数据给调用者,可以在 Activity 中使用 `setResult` 方法,例如:
```java
Intent data = new Intent();
data.putExtra("result", "value");
setResult(Activity.RESULT_OK, data);
finish();
```
阅读全文