
Android隐式Intent实现页面回跳与startActivityForResult详解

在Android应用开发中,Intent是一种强大的工具,用于在应用程序内部或不同组件之间传递数据和控制流程。在之前的章节中,我们学习了如何使用显式Intent进行页面的向下跳转,即从一个Activity明确指定目标Activity进行跳转。然而,有时候我们需要实现的是隐式Intent,也就是从当前Activity跳转回之前访问过的某个Activity,这种情况下,通常是从一个更高级别的Activity返回到一个较低级别的Activity。
在Android的Activity设计中,`startActivityForResult()`方法起到了关键作用。这个方法不仅仅用于启动一个新的Activity,它还允许上一个Activity在目标Activity执行完毕后接收到结果。这在用户交互过程中非常有用,比如从搜索结果列表选择一项,然后返回到搜索结果页面并显示所选内容。`startActivityForResult()`方法接受两个参数:第一个参数是Intent,用于指定要启动的Activity;第二个参数是请求码(request code),它是一个整数值,用于标识这次请求,上一个Activity可以通过它来识别返回的数据来源。
以下是一个简单的例子,展示如何在`MainActivity`中使用`startActivityForResult()`实现隐式Intent跳转:
```java
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button bt;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = findViewById(R.id.button1);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 创建一个Intent,指定要启动的FirstActivity作为目的地
Intent intent = new Intent(MainActivity.this, FirstActivity.class);
// 使用startActivityForResult()方法启动FirstActivity,并传递请求码
startActivityForResult(intent, 1); // 1是一个示例请求码
}
});
}
// 当从FirstActivity返回时,会在onActivityResult()方法中处理结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1 && resultCode == RESULT_OK) {
// 处理从FirstActivity返回的数据
String resultData = data.getStringExtra("result"); // 假设FirstActivity返回了一个字符串
tv.setText(resultData);
}
}
}
```
在`onActivityResult()`方法中,我们检查请求码(`requestCode`)是否与我们启动FirstActivity时设置的一致,如果匹配且结果状态(`resultCode`)为`RESULT_OK`,则意味着FirstActivity成功完成任务并提供了数据。这时,我们可以从`data`对象中获取返回的数据并更新UI。
了解并熟练运用`startActivityForResult()`方法和隐式Intent,可以帮助开发者构建更加流畅、灵活的用户体验,尤其是在处理Activity之间的导航和数据交互时。
相关推荐

















weixin_38738189
- 粉丝: 5
最新资源
- 韩顺平PHP MVC框架源码与教学资料详解
- LabVIEW数据库学习资料详解与应用
- 繁体字转换为简体字的实现方法与工具
- Java代理模式实现与类设计图解析
- C#实现访问SqlLocalDB数据库的方法与应用
- ZKTime5.0考勤与门禁管理系统软件分享
- 君正清空工具及其相关固件文件解析
- 基于ArcGIS实现百度地图加载算法
- 解除限制的高效卡证制作工具,支持批量数据导入
- 群联PS2267芯片组量产工具v3.63与新版固件发布
- Java批量反编译工具Jad一键操作指南
- 希捷官方硬盘修复工具及使用方法
- 简易高效的MD5计算工具,快速获取文件哈希值
- GRUB4DOS 0.4.5c 最新稳定版发布,英文含样例
- Unity3D JSON库在iOS平台无错误解决方案
- PSD格式后台登录模板源文件附赠四套实用模板
- JavaMail所需activation.jar最新版本1.1.1发布
- 高效IP代理挖掘工具合集,轻松获取可用代理
- 基于VS2010的矩阵运算内库实现分享
- 深入理解Android 4源代码实践
- Corel图像库1万幅:图像检索研究的理想资源
- 磊科330与336无线网卡配置程序详解
- 基于cocos2d-x的SimpleGame源代码解析与优化
- 基于C#开发的简易任务管理器 支持倒计时关闭任务