'startActivityForResult(android.content.Intent, int)' is deprecated
时间: 2024-03-23 17:17:39 浏览: 83
Android startActivityForResult实例详解
这个警告是因为从Android 10开始,使用`startActivityForResult()`方法已经被标记为过时了。官方建议使用`ActivityResultLauncher`来代替旧的方式。
`ActivityResultLauncher`是一个新的API,可以帮助我们更好地管理Activity结果的回调。这个API可以用在Activity和Fragment中,可以用来启动Activity或者Fragment,然后接收其返回的结果。
以下是使用`ActivityResultLauncher`的基本示例:
```java
ActivityResultLauncher<Intent> launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
// 处理返回结果
}
});
Intent intent = new Intent(this, YourActivity.class);
launcher.launch(intent);
```
当你调用`launcher.launch(intent)`时,会启动`YourActivity`,当`YourActivity`返回结果时,`ActivityResultCallback`会被调用,并且你可以在这里处理返回的结果。
需要注意的是,如果你想要在Fragment中使用`ActivityResultLauncher`,则需要使用`registerForActivityResult()`方法来注册一个新的实例,并且在Fragment的生命周期方法中调用`launcher`的相应方法。
阅读全文