掌握Android Activity间数据传递:onActivityResult详解
57 浏览量
更新于2024-09-01
1
收藏 123KB PDF 举报
在Android开发中,理解如何在应用程序内部传递数据以及接收来自其他Activity的结果至关重要。本篇Android学习笔记主要关注如何在启动另一个Activity后,获取并处理被启动Activity传递回来的数据。Android中的Activity间通信通常通过Intent来实现,特别是当一个Activity需要将数据返回到启动它的Activity时。
首先,我们有一个名为MainActivity的Activity,它包含了两个基本组件:一个Button和一个TextView。Button用于触发启动另一个Activity的行为,而TextView则用于展示从目标Activity返回的数据。在onCreate方法中,我们初始化了这些组件,并设置了Button的点击监听器,当用户点击时,会创建一个新的Intent,指定要启动的Activity——AnotherActivity,并设置请求码(requestCode)为0,这是为了后续区分不同的请求。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
startActivityForResult(intent, 0);
}
});
}
```
关键的部分在于`onActivityResult()`方法的实现。当MainActivity调用`startActivityForResult()`后,系统会在目标Activity执行完毕并返回时调用这个方法。`requestCode`参数与我们之前设置的值相匹配,系统会自动传递回来`requestCode`、`resultCode`和`data`。`resultCode`表示操作结果,`data`是一个包含额外数据的Intent对象,我们可以从中获取我们想要的数据。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == Activity.RESULT_OK) { // 检查请求码和结果代码是否匹配
textView.setText("另外一个Activity传回来的数据是:" + data.getStringExtra("data")); // 从data中提取并显示数据
}
}
```
在这个例子中,我们在AnotherActivity执行完后,假设它使用`putExtra()`方法添加了一个键值对"data",键名为"data",值为需要传递的数据。在MainActivity的`onActivityResult()`方法中,我们检查请求码和结果代码,确保是从期望的Activity返回的,然后通过`getStringExtra()`方法获取并显示该数据。
总结起来,本篇学习小结介绍了如何在Android应用中利用`startActivityForResult()`和`onActivityResult()`来实现Activity之间的数据传递,这对于构建复杂的用户界面和管理应用程序状态非常重要。开发者可以根据实际需求调整请求码、结果代码和传递的数据类型,以满足各种交互场景。
2021-01-20 上传
2021-01-03 上传
2021-10-19 上传
2018-09-07 上传
点击了解资源详情
2018-05-18 上传
2021-12-17 上传
2021-09-03 上传
weixin_38732811
- 粉丝: 6
- 资源: 958
最新资源
- shaynelarocque.github.io:shaynelarocque.github.io
- find_unused_open_ports
- 【WordPress插件】2022年最新版完整功能demo+插件2.2.1.zip
- Data-Science-IIHT:IIHT数据科学日志和工作表
- DOTween Pro v0.9.290.zip
- Club-management
- stinedeck:使用Flask,Python,MongoDB和Javascript jQuery创建的数字抽认卡应用程序
- PhotoshootMap
- WheelPicker:轮选择器
- spring-2021-work-Blua2:GitHub Classroom创建的spring-2021-work-Blua2
- Lucille MPD client:音乐播放器守护程序的客户端-开源
- micr1
- simple-cv
- 分数阶傅里叶变换.zip
- ci-app
- Entity_Resolution_Service_Intermediary_OSGi