ANDROID中ACTIVITY间的数据传递
效果:有两个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间的数据传递相关推荐
- Android中Activity之间的数据传递(Intent和Bundle)
当一个Activity启动另一个Activity时,常常会有一些数据传过去,对于Activity之间的数据交换更简单,因为两个Activity之间进行数据传递交换更简单,因为两个Activity之间本 ...
- Android之一窥究竟Activity间的数据传递以及Intent的用处
1.Activity与Intent * 1.1何为Intent * 1.2Intent的用武之地 * 1.3Activity间的数据传递 转载请标明出处: http://blog.csdn.net/h ...
- 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...
各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...
- Android Activity/Fragment间的数据传递
Activity间的数据传递 举例:MainActivity是已经打开的Activity,在这个界面打开第二个Activity,SecondActivtiy,如果是直接通过startActivity( ...
- 【好文推荐】Activity之间的数据传递方法汇总
在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递方法. 1.通过 Intent 传递 我们在进行 Activit ...
- 浅谈ASP中Web页面间的数据传递
[简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...
- matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...
我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...
- android 打印流程图,Android实现Activities之间进行数据传递的方法
本文实例讲述了Android实现Activities之间进行数据传递的方法.分享给大家供大家参考.具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(In ...
- Android--Activity的跳转及Activity之间的数据传递
Activity的跳转及Activity之间的数据传递(作业) 首先呢,看到这个作业第一感觉并不难,因为只是涉及到多activity之间的跳转以及简单的数据传递而已.然后,做的时候也没花费多长的时间, ...
最新文章
- TCP握手和传输的一次观察
- Swift3.0语言教程查找字符集和子字符串
- python 为什么每次代码运行时间不同-为什么你写的Python运行的那么慢呢?
- 2012_02_07
- 《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
- JavaScript基础8——弹窗案例
- 「CameraCalibration」传感器(相机、激光雷达、其他传感器)标定笔记
- 微信h5网页关闭分享以及关闭当前页面
- CSDN博客投票活动开始了
- 全世界20座最有创意的桥,7座在中国,5座在荷兰!
- 利用DELPHI开发完成例程(1)
- mysql-linux命令登录,退出
- 【Mac】Mac 使用 zsh 后, mvn 命令无效
- 创业被泼冷水怎么办?
- 组件化开发Android应用及SDK
- Matlab 输入输出操作
- 关系型数据库中一对多,多对一,多对多关系(详细)
- 写作活动第三期!让我们再挣200元稿费吧!
- pg数据库numeric对应oracle,Oracle类型number与PG类型numeric对比和转换策略
- Linux系统使用userdel命令删除用户
热门文章
- vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍
- build vue 选哪个_分析vue-cli项目,简单修改,来快速理解这个项目的结构
- python一个try块后接一个或多个finally块_Python *与*语句完全等同于一个try – (除了) – finally块?...
- ajax get请求_JSP中的对讲机Ajax简述
- 【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)
- 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
- C++学习笔记-----在一个构造函数中调用另一个构造函数
- file是c语言自带的数据类型吗_C语言中基本的数据类型包括
- 记录flink和spark提交任务常用句
- VC6.0编写BHO 提示unresolved external symbol _main