Activity数据返回 startActivityForResult()用法详解

一、目标

如下图,用户在第一个页面填写完数据后点击“计算”按钮,程序跳转到第二个页面,并显示计算结果。在用户点击第二个页面的“返回计算结果”按钮后,程序跳转回第一个页面,并显示第二个页面的计算结果,注意第一个页面的变化。

  

二、思路

1、在第一个页面(MainActivity.java)中以方法startActivityForResult( )启动第二个页面(TwoActivity.java);

view sourceprint?

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( )返回第一个页面;

view sourceprint?

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( )方法,用于获取和处理第二页面返回的数据,更新页面。

view sourceprint?

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


转载于:https://my.oschina.net/leohouse/blog/662346

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值