onActivityResult和startActivityForResult讲解,详细通俗易懂
时间: 2024-10-23 08:21:33 浏览: 15
`onActivityResult` 和 `startActivityForResult` 是Android应用程序中两个重要的生命周期方法,它们主要用于处理由其他活动启动并返回的结果。
`startActivityForResult` 是从当前活动发起一个新的活动(比如打开一个相册选择图片),这个操作会返回一个请求码(request code),它是一个整数,用于在结果返回时识别来自哪个请求。调用这个方法后,当前活动会被挂起等待结果,而不是立即关闭。
例如:
```java
Intent intent = new Intent(this, GalleryActivity.class);
startActivityForResult(intent, REQUEST_IMAGE PICK);
```
这里,`REQUEST_IMAGE_PICK` 是自定义的请求码。
当另一个活动(如GalleryActivity)完成任务并需要返回数据时,它会通过 `setResult()` 方法设置结果,并调用 `finish()` 结束自身。然后,原始活动会在接收到 `onActivityResult` 通知后恢复运行。
`onActivityResult` 方法的定义类似于:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_PICK && resultCode == RESULT_OK) {
// 处理返回的数据,如解析图片路径
Bitmap bitmap = data.getParcelableExtra("IMAGE_BITMAP");
displayImage(bitmap);
}
}
```
在这个方法里,我们检查请求码是否匹配,如果匹配并且结果状态良好(RESULT_OK),就可以获取到目标活动提供的结果数据并进一步处理。
阅读全文