效果:有两个Activity分别为A和B,从A中采用Bundle封装数据向B中传递数据,然后使用startActivityForResult在B中修改后回传数据。

第一个Activity的layout如main.xml:

 1 <?xml version="1.0" encoding="utf-8"?>2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3     android:orientation="vertical"4     android:layout_width="fill_parent"5     android:layout_height="fill_parent">6     <TextView  7         android:id="@+id/text"8         android:layout_width="fill_parent" 9         android:layout_height="wrap_content"
10         android:text="Welcome to my blog:"/>
11     <Button
12         android:id="@+id/edit_btn"
13         android:layout_width="fill_parent"
14         android:layout_height="wrap_content"
15         android:text="编辑"/>
16 </LinearLayout>

效果如下:

刚开始只是一个TextView显示Welcome to my blog:现在需要的是在点击编辑按钮时将TextView里的数据传递给第二个Activity编辑,然后回传编辑后的数据。

在第一个Activity中,采用Bundle封装并传递数据,从TextView里获取文本用getText()方法,核心代码如下

1         text = (TextView)findViewById(R.id.text);2         editBtn = (Button)findViewById(R.id.edit_btn);3         editBtn.setOnClickListener(new OnClickListener(){4             @Override5             public void onClick(View v) {6                 // TODO Auto-generated method stub7                 Bundle bundle = new Bundle();8                 bundle.putString("text_view", text.getText().toString());9                 Intent intent = new Intent(DataTransActivity.this, SecondActivity.class);
10                 intent.putExtras(bundle);
11                 startActivityForResult(intent, 0);
12             }
13         });

Android中startActivityForResul(Intent intent, int requestCode)的主要作用就是它可以回传数据,这里需注意的是requestCode要大于等于0,用于回传时识别用的。

好了,数据是发出去了,那怎样在第二个Activity接收呢?先开布局文件:

1 <?xml version="1.0" encoding="utf-8"?>2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"3     android:orientation="vertical"4     android:layout_width="fill_parent"5     android:layout_height="fill_parent"6     >7     <EditText  8         android:id="@+id/edittext"9         android:layout_width="fill_parent"
10         android:layout_height="300dp" />
11     <LinearLayout
12         android:orientation="horizontal"
13         android:layout_width="fill_parent"
14         android:layout_height="wrap_content">
15         <Button
16             android:id="@+id/submit"
17             android:layout_width="0dp"
18             android:layout_height="wrap_content"
19             android:layout_weight="1.0"
20             android:text="确定"/>
21         <Button
22             android:id="@+id/cancel"
23             android:layout_width="0dp"
24             android:layout_height="wrap_content"
25             android:layout_weight="1.0"
26             android:text="取消"/>
27     </LinearLayout>
28 </LinearLayout>

效果图如下,图中文字http://www.cnblogs.com/sense7/是我另外加进去的,从主Activity传递过来的数据是Welcome to my blog:确定按钮会把修改过的数据回传,取消按钮则会返回主Activity然后提示未作任何修改。

首先接收主Activity穿过来的数据:

1         Bundle bundle = getIntent().getExtras();
2         editText.setText(bundle.getString("text_view"));

接下来确定按钮将修改过的数据封装回传:

1         submit.setOnClickListener(new OnClickListener(){2             @Override3             public void onClick(View v) {4                 // TODO Auto-generated method stub5                 // 实例化 Bundle,设置需要传递的参数6                 Bundle bundle = new Bundle(); 7                 bundle.putString("edit_text", editText.getText().toString()); 8                 SecondActivity.this.setResult(RESULT_OK, SecondActivity.this.getIntent().putExtras(bundle));9                 SecondActivity.this.finish();
10             }
11         });

点击取消按钮

1         cancel.setOnClickListener(new OnClickListener(){
2             @Override
3             public void onClick(View v) {
4                 // TODO Auto-generated method stub
5                 SecondActivity.this.setResult(RESULT_CANCELED);
6                 SecondActivity.this.finish();
7             }
8         });

其中setResut(int resultCode, Intent intent)将结果回传,resultCode用于区分不同的返回结果,RESULT_OK和RESULT_CANCELED是自带的参数,方便使用,在下面还会提一下,而intent中可以封装修改后的数据传回给主Activity。还有一点就是,最后要调用当前Activity的finish()方法。

下面在主Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法,requestCode和startActivityForResul(Intent intent, int requestCode)中requestCode的对应,resultCode则是上面穿过来的值,data是回传的值。重写方法的代码为:

1     @Override2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {3         // TODO Auto-generated method stub4         super.onActivityResult(requestCode, resultCode, data);5         if (resultCode == RESULT_OK) { 6             Bundle bundle = data.getExtras(); 7             text.setText(bundle.getString("edit_text").toString());8         }else if (resultCode == RESULT_CANCELED) { 9             Toast.makeText(this, "未作任何修改", Toast.LENGTH_SHORT).show();
10         }
11     }

修改文字点击确定返回后的效果图如下

点击取消效果如下

转载于:https://www.cnblogs.com/xiaoran1129/archive/2012/07/04/2576157.html

ANDROID中ACTIVITY间的数据传递相关推荐

  1. Android中Activity之间的数据传递(Intent和Bundle)

    当一个Activity启动另一个Activity时,常常会有一些数据传过去,对于Activity之间的数据交换更简单,因为两个Activity之间进行数据传递交换更简单,因为两个Activity之间本 ...

  2. Android之一窥究竟Activity间的数据传递以及Intent的用处

    1.Activity与Intent * 1.1何为Intent * 1.2Intent的用武之地 * 1.3Activity间的数据传递 转载请标明出处: http://blog.csdn.net/h ...

  3. 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...

    各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...

  4. Android Activity/Fragment间的数据传递

    Activity间的数据传递 举例:MainActivity是已经打开的Activity,在这个界面打开第二个Activity,SecondActivtiy,如果是直接通过startActivity( ...

  5. 【好文推荐】Activity之间的数据传递方法汇总

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递方法. 1.通过 Intent 传递 我们在进行 Activit ...

  6. 浅谈ASP中Web页面间的数据传递

    [简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...

  7. matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...

    我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...

  8. android 打印流程图,Android实现Activities之间进行数据传递的方法

    本文实例讲述了Android实现Activities之间进行数据传递的方法.分享给大家供大家参考.具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(In ...

  9. Android--Activity的跳转及Activity之间的数据传递

    Activity的跳转及Activity之间的数据传递(作业) 首先呢,看到这个作业第一感觉并不难,因为只是涉及到多activity之间的跳转以及简单的数据传递而已.然后,做的时候也没花费多长的时间, ...

最新文章

  1. Prolog学习:数独和八皇后问题
  2. 使用WinINet和WinHTTP实现Http访问
  3. Android 4.4 中 WebView 使用注意事项
  4. windows2016 安装mysql5.7
  5. 2018阿里云双12年终大促主会场全攻略
  6. wrf 嵌套网格作用_在网格系统中使用响应列,嵌套列和偏移列 引导程序
  7. 赠你一只金色的眼 - 富集分析和表达数据可视化
  8. 7.hdfs工作流程及机制
  9. 20、Tabs底部导航栏
  10. “MapReduce: Simplified Data Processing on Large Clusters”
  11. 文档中的公式编号怎么不从1开始
  12. 嵌入式工具——strace
  13. Android自定义的属性使用双向绑定
  14. iOS开发证书申请教程
  15. vue 引入qunee_(原创) 工作流程图的树形展示-使用qunee插件实现
  16. 捷讯fw300r虚拟服务器口号,迅捷FW300R开启UPnP功能
  17. 使用防火墙禁止软件联网
  18. cdn对动态网站有作用吗_使用CDN对动态网站内容加速有效果吗
  19. ACdream 1430 SETI 后缀自动机
  20. Ubuntu 14.04重装mysql

热门文章

  1. 【linux网络编程】网络字节序、地址转换
  2. rufus linux开机密码,使用Rufus 3.4制作Ubuntu 18.04.1 U盘启动盘的方法
  3. MySQL了content函数_MySql字符串函数使用技巧
  4. 只允许运行一个实例的方法
  5. 每天一道LeetCode-----实现LFU置换算法
  6. 在windows下查看进程
  7. Shell(13)——find
  8. SENet(Squeeze-and-Excitation Networks)
  9. 链表数据结构图解 和 代码实现
  10. 关于中断的一点点认识