掌握Activity间数据传递的正确姿势
需积分: 5 72 浏览量
更新于2024-11-04
收藏 16.08MB ZIP 举报
资源摘要信息:"安卓应用之Activity数据传递"
在Android开发中,Activity是应用中的一个基本组件,它代表了一个屏幕上的一个界面,用于与用户交互。而数据传递是应用开发中非常常见且重要的需求,它涉及到不同Activity之间数据的发送与接收。本文将详细介绍如何在Android应用中实现Activity之间的数据传递,包括使用startActivityForResult和onActivityResult的方法来启动Activity、发送数据以及接收数据返回的整个过程。
首先,startActivityForResult是Intent的一个方法,它允许启动一个新的Activity,并且在新Activity结束后,能够得到一个返回结果。这个方法通常用于需要得到目标Activity处理结果的场景。当你调用startActivityForResult方法时,需要传入两个参数:一个是Intent对象,用于指定要启动的Activity;另一个是RequestCode,这是一个整数,用于标识这次请求,可以在调用onActivityResult时根据这个值来判断结果是由哪个请求返回的。
在新Activity中处理完数据后,需要调用setResult方法来设置返回结果。这个方法有两个重载版本,通常使用的版本需要两个参数:第一个是ResultCode,通常使用RESULT_OK或RESULT_CANCELED表示成功或取消;第二个是Intent对象,可以附带需要返回的数据。
调用setResult之后,需要调用finish方法来结束当前Activity。当这个Activity结束时,系统会自动调用起始Activity的onActivityResult方法。onActivityResult方法有三个参数:requestCode、resultCode和data。requestCode就是一开始调用startActivityForResult时传递的RequestCode;resultCode是目标Activity通过setResult设置的结果代码;data是一个Intent对象,包含了目标Activity通过setResult传递的数据。
在onActivityResult方法中,可以根据requestCode和resultCode来判断数据的来源和处理结果,并对返回的数据进行相应的处理。例如,可以根据requestCode来判断是哪个Activity返回的数据,可以根据resultCode来判断目标Activity是成功返回还是取消返回。
为了提高代码的可读性,通常建议将RequestCode和ResultCode定义为静态常量。这样,在代码的其他部分就可以使用这些常量来代替硬编码的数值,使得代码更易于理解和维护。例如:
```java
public class MainActivity extends AppCompatActivity {
public static final int REQUEST_CODE_HOME = 1;
public static final int RESULT_OK_HOME = 2;
public static final int RESULT_CANCELED_HOME = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startButton = findViewById(R.id.start_button);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE_HOME);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_HOME) {
if (resultCode == RESULT_OK_HOME) {
// 处理返回的 RESULT_OK_HOME 结果
} else if (resultCode == RESULT_CANCELED_HOME) {
// 处理返回的 RESULT_CANCELED_HOME 结果
}
}
}
}
```
在上述代码中,MainActivity中定义了REQUEST_CODE_HOME和RESULT_OK_HOME等静态常量,使得在startActivityForResult和onActivityResult方法中可以使用这些常量来代替直接使用数字。这样做既方便阅读,也方便维护代码。
在Activity中判断错误提示可以在当前Activity判断并提示,也可以在另一个Activity判断并返回错误提示。如果错误提示是在当前Activity处理的,可以在onActivityResult中添加相应的逻辑来判断返回的数据是否包含了错误提示,并据此显示Toast或AlertDialog等方式展示给用户。如果错误提示是在另一个Activity处理的,可以在那个Activity设置返回数据时附带错误提示信息,然后在当前Activity的onActivityResult方法中处理这些信息。
总之,通过startActivityForResult和onActivityResult方法,可以灵活地实现在Android应用中Activity之间的数据传递。理解这些方法的使用和相关参数的含义,有助于开发者更好地设计和实现功能模块之间的交互。
2015-08-06 上传
2015-12-12 上传
2013-02-21 上传
2013-06-15 上传
2020-09-05 上传
2020-08-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
成成大作战
- 粉丝: 3
- 资源: 10
最新资源
- ASP.net Membership角色与权限管理
- 采用等位函数法求解自由液面流场
- 用LevelSet方法求解具有自由面的流动问题
- hibernate3.1.2中文版学习手册.pdf
- R_M界面不稳定性LevelSet方法
- C#中的接口详细记录,很全很实用
- Prentice.Hall.Rapid.GUI.Programming.with.Python.and.Qt.Oct.2007.pdf
- 详细的QC测试文档,很难得的!
- VC++ MFC DLL动态链接库编写详解
- qt 类框架.pdf
- 网页设计css命名规范
- 实验2 常用网络命令使用.doc
- 60分钟学会OrCAD中文教程
- 全面解析Windows Embedded CE文件系统
- O'Reilly-XAML.in.a.Nutshell
- wince_oal.pdf