android开发教程之startActivityForResult使用方法
在Android应用开发中,`startActivityForResult()` 是一个非常重要的方法,它允许一个Activity启动另一个Activity并等待结果。这个功能通常用于实现数据交互或者在多个Activity之间传递信息。以下是对`startActivityForResult()` 使用方法的详细说明: 1. **启动Activity并等待结果:** 当我们使用`startActivityForResult(Intent intent, int requestCode)` 启动一个新的Activity时,`intent` 参数是一个包含目标Activity信息的Intent对象,而`requestCode` 是一个整数,用于区分来自不同来源的结果。`requestCode` 应该大于等于0,以便系统能够正确处理。 2. **返回结果:** 在新的Activity(如上面的`ActivityA`或`ActivityB`)中,当用户操作完成并需要返回结果时,我们可以调用`setResult(int resultCode, Intent data)` 方法。`resultCode` 是一个自定义的整数,表示操作的状态(例如,成功、失败等),而`data` 是一个可选的Intent对象,用于携带返回的数据。 3. **处理返回结果:** 当启动Activity的Activity(如`MainActivity`)接收到结果时,系统会回调`onActivityResult(int requestCode, int resultCode, Intent data)` 方法。在这里,`requestCode` 和`resultCode` 分别与启动时传入的值相对应,`data` 就是新Activity返回的Intent。开发者可以在这个方法中根据`requestCode` 判断结果来自哪个Activity,并根据`resultCode` 和`data` 处理相应的业务逻辑。 4. **示例代码**: - `MainActivity` 的部分代码如下: ```java public class MainActivity extends AppCompatActivity { public static final int REQUEST_A = 1; public static final int REQUEST_B = 2; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_A) { // 处理来自ActivityA的结果 } else if (requestCode == REQUEST_B) { // 处理来自ActivityB的结果 } } // 省略了按钮点击事件的代码,它们会调用startActivityForResult()方法 } ``` - `ActivityA` 或 `ActivityB` 的部分代码如下: ```java public class ActivityA extends AppCompatActivity { @Override public void onBackPressed() { // 当用户按下后退键时,也可以设置结果并结束Activity setResult(RESULT_OK, new Intent()); // 或者使用其他resultCode finish(); } // 其他操作完成后调用setResult() // ... setResult(RESULT_OK, new Intent()); // 或者使用其他resultCode finish(); } ``` 5. **应用场景**: - 用户填写表单后提交:从一个Activity启动编辑界面让用户输入信息,然后返回结果。 - 选择图片:启动相机或图库应用选择图片,返回选定的图片路径。 - 授权验证:如请求用户授权访问某些权限,根据用户的选择返回结果。 6. **注意事项**: - 记得在新启动的Activity结束时调用`finish()`,否则可能不会触发`onActivityResult()`。 - `requestCode` 应该保持唯一,以便正确地匹配结果。 - 不要忘记在`onActivityResult()` 中处理所有可能的`requestCode`,否则可能会导致未定义的行为。 通过以上介绍,你应该对`startActivityForResult()` 的使用有了深入的理解。在实际开发中,这个方法能帮助你实现更灵活的Activity间通信,提高用户体验。



























- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 三网融合和G技术将加速移动通信媒体发展.doc
- 工厂化肉鸡物联网精细饲养技术探析.docx
- 机器学习研究进展.ppt
- 局域网网络工程配置手册(经典).doc
- 过生日MicrosoftPowerPoint演示文稿.ppt
- T6餐饮管理软件产品整合营销工具(独立餐饮售前演示).ppt
- 单片机电子时钟和显示屏设计.doc
- 2007年9月全国计算机等级历年考试二级C语言31076.doc
- 图像处理与计算机视觉技术综述.ppt
- 关于计算机网络安全防御技术分析.docx
- 思维导图:提升高中信息技术课堂效率的和剑教育信息化.docx
- 土地管理信息化建设路径.docx
- 基于ATC单片机的家庭防盗报警系统设计.doc
- 计算机网络环境下大学英语网络课堂教学组织的有效研究.docx
- 新建本科院校计算机基础教育的问题与对策.docx
- PLC在多段调速系统中应用.doc


