Android 获取Activity返回值教程
101 浏览量
更新于2024-09-02
收藏 52KB PDF 举报
本文将介绍如何在Android应用中获取上一个Activity返回的值,这是一个常见的交互过程,特别是在多个Activity之间传递数据时。我们将通过一个简单的示例,展示Activity A如何启动Activity B,然后从Activity B获取选定的数据并显示在Activity A上。
在Android中,我们可以通过Intent对象来传递数据,并在另一个Activity中接收这些数据。以下是实现这个功能的步骤:
1. 声明和注册Activity:首先,在AndroidManifest.xml文件中声明并注册你将要使用的Activity。例如,Activity B(在这个例子中是"DemoActivity")需要在主配置文件中声明,如以下代码所示:
```xml
<!-- 注册通讯录的读写权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<!-- .表示上面manifest标签中package属性的值 -->
<activity
android:name=".DemoActivity"
android:label="选择联系人">
</activity>
```
2. 在A中设置布局和事件监听:在Activity A的布局XML文件中,创建需要显示返回值的控件,比如EditText,以及用于启动Activity B的Button。同时,给Button添加点击事件监听器。例如:
```xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="启动B"/>
</LinearLayout>
```
3. 启动Activity B并传递数据:在Activity A的Java代码中,当Button被点击时,我们需要创建一个新的Intent,用来启动Activity B并传递一些初始数据(如果有的话)。同时,设置一个结果监听器,以便在B返回数据后进行处理。例如:
```java
Button button1 = findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(A.this, DemoActivity.class);
// 可以添加额外的数据
intent.putExtra("key", "initial_data");
startActivityForResult(intent, REQUEST_CODE_B); // 使用startActivityForResult启动B
}
});
```
在这里,`REQUEST_CODE_B`是一个自定义的整数值,用于识别不同的请求。
4. 在B中处理数据并返回:在Activity B中,用户选择或操作完成后,需要将结果数据放入Intent,并使用`setResult()`方法返回给Activity A。例如,如果你是从联系人列表中选择了联系人,你可以这样做:
```java
Intent resultIntent = new Intent();
resultIntent.putExtra("selected_contact", selectedContact);
setResult(RESULT_OK, resultIntent); // 结果状态码为RESULT_OK,表示成功
finish(); // 结束Activity B
```
5. 在A中接收返回数据:最后,在Activity A中重写`onActivityResult()`方法,该方法会在B返回结果时被调用。在这里,我们可以从Intent中取出返回的数据,并显示在TextView上:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_B && resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("selected_contact");
TextView textView = findViewById(R.id.textView);
textView.setText(returnedData);
}
}
```
通过以上步骤,你就能成功地从Activity B获取到返回值并在Activity A中展示了。在实际开发中,你可以根据需要传递不同类型的值,如整数、字符串、自定义对象等,只需相应调整`putExtra()`和`getExtra()`方法即可。
2016-05-15 上传
2021-01-03 上传
点击了解资源详情
2020-09-03 上传
2015-06-18 上传
162 浏览量
2021-01-20 上传
2012-01-09 上传
weixin_38556822
- 粉丝: 2
- 资源: 974
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库