Android Intent 数据传递与回传详解
46 浏览量
更新于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 上传
2017-11-23 上传
112 浏览量
2020-09-01 上传
点击了解资源详情
点击了解资源详情
2022-08-08 上传
weixin_38674415
- 粉丝: 5
- 资源: 920
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析