Android Intent 数据传递与回传详解
52 浏览量
更新于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传递一个标识来定位数据。对于敏感信息,最好使用加密手段来保护。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2017-11-23 上传
112 浏览量
2020-05-24 上传
2020-09-01 上传
点击了解资源详情
2024-11-06 上传
weixin_38674415
- 粉丝: 5
- 资源: 920
最新资源
- django-project
- nextjs-ninja-tutorial
- laravel
- AmazonCodingChallengeA:寻找 VacationCity 和 Weekend 最佳电影列表观看
- MTPlayer:媒体播放器,用于公共广播公司的贡献-开源
- c-projects-solutions
- Kabanboard
- 基于php+layuimini开发的资产管理系统无错源码
- sumi:从 code.google.compsumi 自动导出
- multithreading:解决Java中最著名的多线程问题
- astsa:随时间序列分析的R包及其应用
- ember-qunit-decorators:在Ember应用程序中将ES6或TypeScript装饰器用于QUnit测试
- calculator
- jdgrosslab.github.io
- Java核心知识点整理.rar
- https-github.com-steinsag-gwt-maven-example