onActivityResult的小demo
在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从一个Activity启动另一个Activity后返回的结果。这个方法在父Activity(启动另一个Activity的Activity)中定义,当子Activity结束并返回数据时,`onActivityResult`会被调用。在这个小demo中,我们将深入探讨`onActivityResult`的使用,以及如何通过`setResult`设置返回的数据。 让我们理解`startActivityForResult`的作用。当你需要从一个Activity启动另一个Activity并期望得到一些结果时,你会使用`startActivityForResult`而不是`startActivity`。例如,假设你有一个主Activity,用户在那里可以打开相机或者选择图片。在这种情况下,你会启动相机或图库Activity,然后在用户完成操作后返回结果。 ```java Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); ``` 在这里,`REQUEST_IMAGE_CAPTURE`是一个自定义的请求码,用于区分不同的启动操作。 接下来,子Activity(如相机或图库Activity)在完成任务后,会使用`setResult`来设置返回给父Activity的结果。这个结果可以是一个简单的结果码,也可以是一个包含实际数据的Intent。 ```java Intent resultIntent = new Intent(); resultIntent.putExtra("imageUri", imageUri); setResult(RESULT_OK, resultIntent); finish(); ``` 在上述代码中,`RESULT_OK`表示操作成功,`resultIntent`包含了返回的数据,例如图片的URI。 现在,回到父Activity,我们定义`onActivityResult`来接收子Activity返回的结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { if (data != null) { Uri imageUri = data.getData(); // 在这里处理返回的图片URI } } } ``` 在`onActivityResult`中,我们首先检查请求码是否匹配(`REQUEST_IMAGE_CAPTURE`),然后检查结果码是否为`RESULT_OK`。如果两者都满足,我们就可以从`data` Intent中提取返回的数据(如图片的URI),并进行后续处理。 这个小demo旨在帮助新手开发者理解如何在Android应用中正确使用`startActivityForResult`和`onActivityResult`进行Activity间通信。通过这种方式,你可以实现如选择图片、获取用户输入等交互功能,增强应用程序的用户体验。记住,正确处理返回的结果是确保应用程序逻辑流畅的关键。在实际开发中,你可能需要根据具体需求对这个过程进行扩展,比如处理多个请求码或不同类型的返回数据。
- 1
- 粉丝: 44
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用Python和Pygame实现圣诞节动画效果
- 数据分析-49-客户细分-K-Means聚类分析
- 企业可持续发展性数据集,ESG数据集,公司可持续发展性数据(可用于多种企业可持续性研究场景)
- chapter9.zip
- 使用Python和Pygame库创建新年烟花动画效果
- 国际象棋检测10-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- turbovnc-2.2.6.x86-64.rpm
- 艾利和iriver Astell&Kern SP3000 V1.30升级固件
- VirtualGL-2.6.5.x86-64.rpm
- dbeaver-ce-24.3.1-x86-64-setup.exe