掌握Activity启动与返回值处理技巧

### Android Activity启动与返回值
在Android开发中,Activity是应用中的一个单独屏幕,它提供了一个用户交互的界面。一般情况下,我们会启动新的Activity来处理用户的输入或显示新的信息。Activity之间的跳转是通过Intent对象来实现的。当从一个Activity启动另一个Activity时,通常使用`startActivity()`方法。但是,如果启动的目的Activity需要向启动它的源Activity返回结果,则需要使用`startActivityForResult()`方法。
#### 使用`startActivityForResult()`方法
1. **启动目的Activity**:
当需要从当前Activity启动另一个Activity,并希望在目标Activity完成某些操作后能够返回结果时,应使用`startActivityForResult(Intent intent, int requestCode)`方法。其中`intent`是启动目标Activity的Intent对象,`requestCode`是一个整数请求码,用于标识启动的请求。此请求码是由开发者自定义的,用于在返回结果时识别是哪个请求的结果。
2. **接收返回结果**:
在源Activity中需要重写`onActivityResult(int requestCode, int resultCode, Intent data)`方法以接收返回的结果。此方法有三个参数:`requestCode`是启动请求时传递的请求码,`resultCode`是返回结果的代码,通常用于标识操作是成功还是失败,`data`是一个Intent对象,包含了目标Activity传递回来的数据。
3. **处理返回数据**:
在`onActivityResult()`方法中,通过检查`requestCode`和`resultCode`来确定是哪个请求以及操作结果。然后从`data` Intent中取出需要的数据。例如,如果目标Activity返回了一个字符串,可以这样获取:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == YOUR_REQUEST_CODE && resultCode == RESULT_OK) {
String result = data.getStringExtra("result_key");
// 处理返回的数据
}
}
```
#### 目标Activity返回结果
1. **设置返回结果**:
在目标Activity中,当用户完成所需的操作后,可以通过调用`setResult(int resultCode, Intent data)`方法来返回数据。`resultCode`通常使用`RESULT_OK`表示操作成功,或者使用`RESULT_CANCELED`表示操作被取消。`data`是一个Intent对象,用于存放需要返回给源Activity的数据。
```java
Intent returnIntent = new Intent();
returnIntent.putExtra("result_key", "result_value");
setResult(Activity.RESULT_OK, returnIntent);
finish();
```
2. **结束Activity**:
在调用`setResult()`方法后,必须调用`finish()`方法结束当前Activity,这样Android系统才会调用源Activity的`onActivityResult()`方法。
#### 注意事项
- 确保源Activity在`onActivityResult()`方法中正确处理返回的结果。如果结果处理不当,可能会导致应用崩溃或数据丢失。
- 当使用`startActivityForResult()`启动目标Activity时,必须确保在`onActivityResult()`中正确识别`requestCode`和`resultCode`,否则可能无法接收到正确的结果。
- 在目标Activity设置返回结果时,不要忘记调用`finish()`方法结束Activity,否则源Activity可能无法正确接收返回结果。
#### 总结
`startActivityForResult()`方法是Android开发中处理Activity间交互的重要手段,它允许开发者在一个Activity中启动另一个Activity,并且能够接收目标Activity返回的结果。正确使用`startActivityForResult()`和`onActivityResult()`方法,可以实现复杂的用户交互流程,增强应用的用户体验。在使用这些方法时,要注意请求码和结果码的正确使用,以及在返回结果后正确结束目标Activity,以确保应用的流程控制逻辑正确无误。
相关推荐










haikuotiankong8
- 粉丝: 6
最新资源
- Linux SSH终端常用配置详解及初始化设置
- 基于JSP和SQL Server的论坛管理系统
- MATLAB信号处理仿真实验教程及疑难解答
- 打造仿百度新闻客户端与服务器端代码教程
- 基于OpenCV和PCA的人脸识别技术解析
- 演示如何将Excel数据批量导入数据库
- Android启动画面代码详解:初学者入门指南
- 树莓派硬件原理图详细解析
- AnyDVD:揭秘全自动DVD解密软件
- 探索SyncML网络同步协议源码及其在无线数据同步中的应用
- Flex数据绑定工具包使用说明与相关文件介绍
- 大傻串口调试工具:跨平台兼容性强的便捷选择
- Spring 2.5 AOP开发所需aspectJ环境配置
- OpenCV实现Camshift算法教程
- 旗风制造执行系统v1.0:生产线自动化管理介绍
- JD-Eclipse 插件:离线安装包使用指南与特性解析
- VC++实现的简易弹球小程序教程与源码
- IOS音视频开发包:快速实现软件应用
- 实现单虚拟摇杆源代码的核心技术解析
- 深入解析嵌入式Linux系统移植及资源获取指南
- Windows 7资源管理器增强:添加类似XP的向上按钮功能
- Android RatingBar封装进阶:个性化图片资源应用
- LPC2132开发板电路原理图详解
- 爱普生230打印机如何使用清零软件进行维护