效果:有两个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. TCP握手和传输的一次观察
  2. Swift3.0语言教程查找字符集和子字符串
  3. python 为什么每次代码运行时间不同-为什么你写的Python运行的那么慢呢?
  4. 2012_02_07
  5. 《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
  6. JavaScript基础8——弹窗案例
  7. 「CameraCalibration」传感器(相机、激光雷达、其他传感器)标定笔记
  8. 微信h5网页关闭分享以及关闭当前页面
  9. CSDN博客投票活动开始了
  10. 全世界20座最有创意的桥,7座在中国,5座在荷兰!
  11. 利用DELPHI开发完成例程(1)
  12. mysql-linux命令登录,退出
  13. 【Mac】Mac 使用 zsh 后, mvn 命令无效
  14. 创业被泼冷水怎么办?
  15. 组件化开发Android应用及SDK
  16. Matlab 输入输出操作
  17. 关系型数据库中一对多,多对一,多对多关系(详细)
  18. 写作活动第三期!让我们再挣200元稿费吧!
  19. pg数据库numeric对应oracle,Oracle类型number与PG类型numeric对比和转换策略
  20. Linux系统使用userdel命令删除用户

热门文章

  1. vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍
  2. build vue 选哪个_分析vue-cli项目,简单修改,来快速理解这个项目的结构
  3. python一个try块后接一个或多个finally块_Python *与*语句完全等同于一个try – (除了) – finally块?...
  4. ajax get请求_JSP中的对讲机Ajax简述
  5. 【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)
  6. 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
  7. C++学习笔记-----在一个构造函数中调用另一个构造函数
  8. file是c语言自带的数据类型吗_C语言中基本的数据类型包括
  9. 记录flink和spark提交任务常用句
  10. VC6.0编写BHO 提示unresolved external symbol _main