startActivityForResult已被划线弃用,怎么解决
时间: 2024-01-09 08:19:37 浏览: 127
`startActivityForResult`方法被弃用了,可以使用`startActivityForResult`的替代方法`registerForActivityResult`来实现类似的功能。使用`registerForActivityResult`需要实现一个`ActivityResultCallback`接口,该接口有一个`onActivityResult`方法,该方法会在启动的Activity返回结果时被调用。以下是使用`registerForActivityResult`的示例代码:
```
val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data: Intent? = result.data
// 处理返回结果
}
}
val intent = Intent(this, YourActivity::class.java)
resultLauncher.launch(intent)
```
在上面的代码中,我们首先使用`registerForActivityResult`方法创建一个`ActivityResultLauncher`对象,并实现了`ActivityResultCallback`接口的`onActivityResult`方法。在启动Activity时,我们使用`resultLauncher`的`launch`方法来启动Activity,并在Activity返回结果时调用`onActivityResult`方法处理结果。
阅读全文