Android Intent 数据传递与回传详解
181 浏览量
更新于2024-08-29
1
收藏 54KB PDF 举报
"Android应用中使用Intent进行数据传递和回传的方法详解"
在Android开发中,Intent是一个非常关键的组件,用于在不同组件之间传递数据和启动操作。本资源主要探讨了如何通过Intent在两个页面间传递数据以及如何将数据回传到原始页面。
1. Intent数据传递
- 单个数据传递:在`MainActivity`中,创建一个新的Intent实例,并使用`putExtra()`方法将数据存储到Intent中。例如,可以传递一个字符串数据:
```java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", et_name.getText().toString().trim());
intent.putExtra("pass", et_pass.getText().toString().trim());
startActivity(intent);
```
在`SecondActivity`中,通过调用`getIntent()`获取Intent对象,然后使用`getStringExtra()`或`getIntExtra()`等方法取出数据:
```java
Intent intent = getIntent();
String name = intent.getStringExtra("name");
String pass = intent.getStringExtra("pass");
tv_name.setText("用户名为:" + name + "\n密码为:" + pass);
```
- 打包传递多个数据:如果需要传递多个数据,可以使用`Bundle`对象来组合数据,然后将Bundle附加到Intent中:
```java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", et_name.getText().toString().trim());
bundle.putInt("age", Integer.parseInt(et_age.getText().toString().trim()));
intent.putExtra("bundle_data", bundle);
startActivity(intent);
```
在接收端,同样通过Intent获取Bundle,然后从Bundle中提取数据:
```java
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("bundle_data");
String name = bundle.getString("name");
int age = bundle.getInt("age");
```
2. 数据回传
- 使用结果回调:若需要从`SecondActivity`返回数据给`MainActivity`,可以使用`startActivityForResult()`启动`SecondActivity`,并重写`onActivityResult()`方法:
```java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQ_CODE);
```
在`SecondActivity`中,通过`setResult()`设置返回结果,然后调用`finish()`关闭当前Activity:
```java
Intent resultIntent = new Intent();
resultIntent.putExtra("back_data", "返回的数据");
setResult(RESULT_OK, resultIntent);
finish();
```
`MainActivity`的`onActivityResult()`方法会接收到这些数据:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE && resultCode == RESULT_OK) {
String backData = data.getStringExtra("back_data");
// 处理返回的数据
}
}
```
3. 隐式与显式页面跳转
- 显式跳转:如示例中所示,直接指定目标Activity的类名,适用于知道确切接收方的情况。
- 隐式跳转:通过设置Intent的Action、Category、Data等信息,让系统匹配能够处理该Intent的Activity,适用于不确定接收方或公开API时。
请注意,为了安全和性能考虑,应避免传递大量数据或敏感信息。如果数据量大,可以考虑使用Parcelable接口或序列化对象,或者使用其他机制如存储到数据库或文件中,然后通过Intent传递一个标识来定位数据。对于敏感信息,最好使用加密手段来保护。
2018-08-10 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-06-28 上传
weixin_38674415
- 粉丝: 5
- 资源: 920
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作