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