Android学习碎片(一)项目源文件
在Android开发中,Activity是应用程序的基本组件,它代表了用户界面的一个屏幕。`startActivityForResult`是Activity类中的一个关键方法,用于启动另一个Activity并期待返回结果。这个方法在进行跨Activity通信时非常常见,特别是在处理用户交互或者数据传递的情景下。下面我们将深入探讨`startActivityForResult`的工作原理及其在实际开发中的应用。 ### 1. `startActivityForResult`的语法 `startActivityForResult`方法有两个参数:Intent和请求码。Intent用于指定要启动的目标Activity,而请求码则是在接收返回结果时用来识别哪个Activity返回了结果。 ```java startActivityForResult(Intent intent, int requestCode); ``` ### 2. 请求码(requestCode) 请求码是一个整数,是你自定义的标识符。当你在目标Activity中调用`setResult`方法返回结果时,会将这个请求码一起传递回去。这样,在原始Activity的`onActivityResult`方法中,你可以根据请求码判断返回的结果来自哪个Activity。 ```java setResult(int resultCode, Intent data); ``` ### 3. 返回结果(resultCode和data) `setResult`方法的两个参数是返回结果的状态(resultCode)和可能的数据(data)。resultCode通常是一个整数,表示操作的状态(如`RESULT_OK`表示成功,`RESULT_CANCELED`表示取消)。data则是一个Intent对象,可以携带任何你需要返回的数据。 ### 4. `onActivityResult`回调 在启动Activity的类中,你需要重写`onActivityResult`方法来接收和处理返回的结果。在这个方法中,你会得到请求码、结果状态和数据。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 检查请求码并处理结果 if (requestCode == YOUR_REQUEST_CODE) { if (resultCode == RESULT_OK) { // 处理成功的情况 } else if (resultCode == RESULT_CANCELED) { // 处理取消的情况 } // 从data中获取返回的数据 String resultData = data.getStringExtra("key"); } } ``` ### 5. 示例场景 - **选择图片**:当你需要让用户从相册中选择一张图片时,可以启动一个`Intent`去打开系统相册,然后在`onActivityResult`中获取选定的图片路径。 - **登录验证**:在登录界面,用户输入账号密码后,启动一个验证Activity,验证成功后返回到原来的登录界面。 - **支付流程**:在购物应用中,启动支付Activity完成支付,支付成功或失败后返回原始Activity更新订单状态。 ### 6. 注意事项 - 请求码应避免使用硬编码的常量,最好定义成常量类中的成员,以提高代码可读性。 - 为了避免内存泄漏,记得在Activity被销毁之前取消任何可能导致内存泄漏的操作,如注册广播接收器。 - 返回的数据应封装在Intent中,可以通过`putExtra`和`getExtra`方法添加和获取。 通过深入理解并熟练运用`startActivityForResult`,开发者可以构建出更加丰富、交互性强的Android应用程序。在实践中不断练习,你将更好地掌握这种强大的Activity间通信方式。
- 1
- 2
- 3
- 4
- 5
- 6
- 10
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 远程访问工具+支持xftp功能
- CrystalDiskInfo Aoi Edition
- java项目,课程设计-ssmVue汉服文化平台网站
- github加速小软件
- halcon初学者适用案例共500M颜色识别 OCR文字识别,图像分割,图像增强 寻找手机关屏幕状态 形态学处理 手眼标定
- Desk-Emoji 是一款真正的开源 AI 桌面机器人,具有表情符号屏幕、双轴控制台和用于语音聊天的 LLM 功能
- uniapp的swiper轮播图实现第一页不右滑,最后一页不左滑,官方的swiper调试不了,手写实现
- java项目,课程设计-ssm病人跟踪治疗信息管理系统
- 中国电子学会C++真题与答案.zip
- 创维8A07机芯 E750系列 主程序软件 电视刷机 固件升级包1.51.0 V140402