Android:startActivityForResult示例与Contact选择功能
26 浏览量
更新于2024-08-29
收藏 202KB PDF 举报
在Android开发中,`startActivityForResult()` 是一个重要的方法,它用于在一个Activity中启动另一个Activity,并且能够在指定的请求代码下返回一个结果。本文将介绍如何在实际应用中使用这个功能,以及涉及到的Activity之间的通信机制。
首先,我们来看一下文章中的三个Activity:SearchContact、PickContact和AnotherPick。它们之间通过`startActivityForResult()`方法实现数据传递。SearchContact是起始Activity,它主要负责用户输入搜索条件,如电话号码,然后通过点击按钮触发PickContact或AnotherPick的显示。
在SearchContact的`MainActivity.java`中,`onCreate()` 方法是关键部分。当Activity创建时,它会加载`activity_main.xml`布局文件。在这个Activity中,我们看到有一个EditText用于用户输入电话号码,可能还包含一个TextView用于显示搜索结果。在`onCreate()` 方法中,并没有直接调用PickContact,而是可能在某个事件(如按钮点击)触发时,会创建一个Intent:
```java
private void initiatePickContact(View view) {
EditText phoneNumberEditText = findViewById(R.id.phoneNumberEditText);
String phoneNumber = phoneNumberEditText.getText().toString();
Intent intent = new Intent(this, PickContact.class);
intent.putExtra(PickContact.EXTRA_PHONE_NUMBER, phoneNumber);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
```
这里,`startActivityForResult()`方法被用来启动PickContact,并传递电话号码作为Intent的额外数据。`PICK_CONTACT_REQUEST`是请求码,每个启动的Activity都应该有一个唯一的请求码,以便接收返回的结果。
在PickContact和AnotherPick这两个Activity中,用户可能执行一些操作,例如选择联系人后返回。为了返回数据,它们通常会在`onActivityResult()`方法中处理,这是所有启动的Activity都必须覆盖的方法:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
String selectedPhoneNumber = data.getStringExtra(PickContact.EXTRA_PHONE_NUMBER);
// 处理选中的电话号码并返回到SearchContact
setResult(RESULT_OK, data);
finish();
} else {
// 处理取消或者失败的情况
}
}
}
```
当PickContact或AnotherPick完成任务并决定返回结果时,它们会调用`setResult()`方法来设置结果码(RESULT_OK表示成功),并传递选择的数据。接着调用`finish()`结束自身,这样SearchContact就能接收到结果并在`onActivityResult()`方法中获取到返回的数据。
总结来说,`startActivityForResult()`是Android中实现Activity间通信的重要工具,它允许我们在一个Activity中启动另一个Activity,并在后者执行完特定操作后返回数据。了解并熟练运用这个功能对于构建可交互的Android应用至关重要。通过在每个Activity中正确地处理请求码和结果码,开发者可以构建出流畅的用户体验。
2019-08-13 上传
2019-04-01 上传
2015-06-15 上传
2021-05-15 上传
2021-01-20 上传
2020-09-05 上传
2013-08-07 上传
2021-04-29 上传
2019-08-13 上传
weixin_38697659
- 粉丝: 1
- 资源: 898
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目