Activity数据返回 startActivityForResult()用法详解
来源:互联网 发布:可可网络验证通杀 编辑:程序博客网 时间:2024/05/09 19:27
上一节我以“计算男女生标准体重”为例详细介绍了如何使用Intent、Bundle等实现不同Activity之间数据的传递问题,本节将仍以“计算男女生标准体重”为例详细介绍如何利用startActivityForResult()实现数据的返回,即从第二页面返回第一页面。
一、目标
如下图,用户在第一个页面填写完数据后点击“计算”按钮,程序跳转到第二个页面,并显示计算结果。在用户点击第二个页面的“返回计算结果”按钮后,程序跳转回第一个页面,并显示第二个页面的计算结果,注意第一个页面的变化。
二、思路
1、在第一个页面(MainActivity.java)中以方法startActivityForResult( )启动第二个页面(TwoActivity.java);
01.
private
void
jump2Activiy2() {
02.
03.
Bundle bundle =
new
Bundle();
04.
bundle.putString(
"strSex"
, strSex);
05.
bundle.putDouble(
"douHeight"
, douHeight);
06.
Intent intent =
new
Intent();
07.
intent.setClass(MainActivity.
this
, TwoActivity.
class
);
08.
intent.putExtra(
"bundle"
, bundle);
09.
startActivityForResult(intent,
0
);
10.
}
2、在第二个页面中对要返回的数据进行打包,并以方法setResult( )返回第一个页面;
01.
private
void
jump2Activiy1() {
02.
03.
Intent intent2 =
new
Intent();
04.
intent2.setClass(TwoActivity.
this
, MainActivity.
class
);
05.
Bundle bundle2 =
new
Bundle();
06.
bundle2.putString(
"strResult"
, strResult);
07.
intent2.putExtra(
"bundle2"
, bundle2);
08.
setResult(
0
, intent2);
09.
TwoActivity.
this
.finish();
10.
}
3、在第一个页面中复写onActivityResult( )方法,用于获取和处理第二页面返回的数据,更新页面。
01.
@Override
02.
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
03.
if
(
0
== requestCode) {
04.
if
(
0
== resultCode) {
05.
06.
Bundle bundle2 = data.getBundleExtra(
"bundle2"
);
07.
String strFromAct2 = bundle2.getString(
"strResult"
);
08.
txtFromAct2.setText(strFromAct2);
09.
}
10.
11.
}
12.
super
.onActivityResult(requestCode, resultCode, data);
13.
}
三、讨论
利用Intent和Bundle实现不同Activity之间数据的传递,此种方法虽然简单易懂,但是总感觉与MVC思想有所背离,最好是能将页面和数据分开,通过更改数据来调整页面,而不是让数据在两个Activity之间“抛过来,抛过去”,或许Fragment的诞生有此种考虑也未可知。
以上谨代表个人意见,抛砖引玉,代码有写作不规范的地方,接受走过的路过的直接拍砖斧正。
源码下载http://download.csdn.net/detail/liyongliang_2012/7556133 文件名:HelloAndroid20140627.rar
0 0
- Activity数据返回 startActivityForResult()用法详解
- Activity数据返回 startActivityForResult()用法详解
- 【数据】Activity数据返回——startActivityForResult()用法详解
- 【数据】Activity数据返回——startActivityForResult()用法详解
- Activity返回值-->startActivityForResult用法
- 返回数据到前一个Activity--startActivityForResult
- 返回数据到前一个activity-startActivityForResult
- Android Activity 之 startActivityForResult用法详解
- Android------startActivityForResult的详细用法--返回数据
- android: startActivityForResult用法(启动其他Activity并返回结果)
- 返回数据到前一个Activity---startActivityForResult方法
- 返回数据到前一个Activity---startActivityForResult方法
- startActivityForResult,onActivityResult,利用Activity启动返回的数据
- 从Activity中返回数据--startActivityForResult的使用..
- startActivityForResult无法调用singleTask的Activity返回的数据
- Android入门--返回数据到前一个Activity--startActivityForResult 方法
- 返回数据到前一个Activity StartActivityForResult方法
- android Intent返回数据,回调数据,startActivityForResult用法
- AttributeError: 'module' object has no attribute 'post'问题
- Echarts仪表盘
- self.XX点语法/队列和栈的区别/堆区与栈区的区别
- Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
- PHP执行效率问题总结
- Activity数据返回 startActivityForResult()用法详解
- 初探服务器:使用服务器运行自己的程序
- Android view 坐标
- 找零钱的方案数以及所需最少张数的钞票的方案
- 20160902
- 动手实现自己的 STL 容器 《1》---- vector
- Unity3D for VR 学习(2): 暴风魔镜框架探索
- Sublime Text2 CUDA 语法高亮
- 31. Next Permutation