7.1、单向数据传递

Intent对象可以在组件之间转达信息,同时可以携带键值对的数据结构

在初始组件中创建Intent对象时,通过调用重载的putExtra函数即可实现数据的单向传递。

主组件:

    //拿到跳转按钮findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String msg = ((EditText)findViewById(R.id.Etxt_msg)).getText().toString();Intent it = new Intent(MainActivity.this, NextAct.class);it.putExtra("msg",//如果什么都不输入,则msg的值为nullmsg);it.putExtra("names",12.5);//intent对象可以接受多个键值对(extra 数据)startActivity(it);}});

显示页面:

     //如果在主界面没有任何输入,则这里取得的msgstr为nullString msgstr = getIntent().getStringExtra("msg");Double doustr=getIntent().getDoubleExtra("msg",0.1);//getDoubleExtra有两个参数(key,default)//参数1:根据key取value的key值; 参数2:如果对应key取value失败,可以使用的默认值if(msgstr.hashCode() == 0)//如果为nullmsgstr = "null str";((TextView)findViewById(R.id.txtv_showmsg)).setText("result:" + msgstr+" "+doustr);

7.2、Bundle

当我们在组件之间传递多个数据的时候,如果每传送一个数据就重载一次putExtra()函数,那么代码就会变得十分冗杂

我们引入Bundle包,将要传递的数据打包,直接将包传递

 findViewById(R.id.btn_send_exerc).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Bundle bd=new Bundle();bd.putString("msg","mosang");bd.putDouble("doub",0.11);bd.putInt("int",5);Intent it=new Intent(MainActivity.this,NextAct.class);it.putExtra("bundle",bd);startActivity(it);}});

在接收端:

接受Bundle对象,通过对应的键值来获取数据

 Bundle bd=getIntent().getBundleExtra("bundle");String msgstr=bd.getString("msg");double dou=bd.getDouble("doub");int value=bd.getInt("value");((TextView)findViewById(R.id.txtv_showmsg)).setText("result:" + msgstr+" "+dou+" "+value);

7.3、数据回传

在之前的传递中,我们都是从主组件向其他组件传递信息,这里我们要在主组件中获取其他组件传递回来的数据

主页面:

 ((Button)findViewById(R.id.btnchoose)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//显式跳转到Image_act界面Intent it = new Intent(MainActivity.this,Image_act.class);//1.发起组件调用startActivityForResult()函数(Intent对象,请求码)startActivityForResult(it,0x123);}});

图片选择界面:

 
//定义图片数组public int[] imgs = new int[]{R.drawable.icon1,R.drawable.icon2,R.drawable.icon3,R.drawable.icon4,R.drawable.icon5,R.drawable.icon6,R.drawable.icon7,R.drawable.icon8,R.drawable.icon9,R.drawable.icon10};​​//在GridView上设置了一个监听器,重写了其点击事件gd.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//2.在目的组件中,获取intent对象准备数据Intent it = getIntent();Bundle bd = new Bundle();//资源id号bd.putInt("imgid",imgs[position]);it.putExtras(bd);//通过setResult做标记并指定intent对象(k,v)setResult(0x123,it);//参数1.需要匹配的值需要与主界面设置的请求码相匹配才能回传,参数2.提供返回数据的对象finish();}});
 //源码:public void setOnItemClickListener(AdapterView.OnItemClickListener listener) {throw new RuntimeException("Stub!");}​public interface OnItemClickListener {void onItemClick(AdapterView<?> var1, View var2, int var3, long var4);}

3.回到发起组件,重写回调函数

//当通过startActivityForResult函数启动其他的安卓组件//该组件发生返回动作时,就会调用此函数@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {super.onActivityResult(requestCode, resultCode, intent);//判断是否匹配成功//requestCoded的值与resultCode的值不需要相等,//但requestCoded的值需要与函数参数的int requestCode值相等//resultCode的值需要与函数参数的int resultCode值相等if(requestCoded == 0x123 && resultCode的值需要与函数参数的 == 0x123){//i取值Bundle bd = intent.getExtras();int imgid = bd.getInt("imgid");ImageView img = (ImageView)findViewById(R.id.imgicon);img.setImageResource(imgid);}}

Android开发-数据回传相关推荐

  1. XE5 Android 开发数据访问手机端 解决乱码的办法

    经过测试,将sqlserver里的字段由varchar 或者char  改为  nvarchar 或者nchar 然后在手机端的clientdataset 增加字段的时候数据类型选择widestrin ...

  2. Intent的四种跳转( 1 显式跳转 ,2 隐式跳转 , 3 数据传递 , 4 数据回传)

    1 显式跳转 ,2 隐式跳转 , 3 数据传递 , 4 数据回传 关键代码片段: 显式跳转: Intent intent1=new Intent(MainActivity.this,Main2Acti ...

  3. Android开发之通过接口回调机制加载数据(源代码分享)

    Android开发之通过接口回调机制加载数据的简单实现,在实际开发中通过callback方法得到网络加载的数据的使用频率远比通过直接开启线程或异步任务加载数据的频率高的多,这篇文章的代码将简单实现该机 ...

  4. Asp.net控件开发学习笔记(六)----数据回传

    在Asp.net中,利用Http Post的回传机制意味着可以再客户端存储状态并且可以在服务器接收.Asp.net中大部分控件都提供了存储自身状态的功能并且在自身状态改变时引发对应事件.IPostDa ...

  5. Android开发 Intent传递参数,获取数据为null

    android开发 Activity通过Intent传递参数,获取失败的原因 启动一个有返回值的activity (MapActivity) Intent intent = new Intent(Up ...

  6. 数据来源渠道及采集工具_GrowingIO「转化数据回传」| 平台对接免开发,优化投放更便捷...

    GrowingIO「广告监测」为我们准确监测投放质量.通过「转化数据回传」功能,我们能够快速完成广告平台对接工作,让广告效果优化更为高效. -- 某社交平台明星企业 随头条.腾讯等各广告平台逐步推出 ...

  7. 【转】Asp.net控件开发学习笔记整理篇 - 数据回传

    最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...

  8. android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...

    在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23   作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...

  9. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  10. # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递

    4.Activity活动简介 什么是Activity: 如何创建Activity: Activity启动方式: Activity的生命周期: 不同Activity之间数据的传递: 什么是Activit ...

最新文章

  1. SeciLog 1.3.1 发布,增加了全屏配置,自定义预警等新功能
  2. XML 命名空间(XML Namespaces)介绍以及节点读取方法
  3. Merge Sorted Array
  4. 【深度学习】重大里程碑!VOLO屠榜CV任务,无需额外数据,首个超越87%的模型...
  5. boost::safe_numerics::automatic相关的测试程序
  6. jsf 单元测试_构建和测试JSF.next
  7. python环境介绍_Python介绍以及Python环境搭建
  8. 手机版数据库oracle,用手机管理及维护MySQL,Oracle等数据库
  9. 玩玩机器学习3——TensorFlow基础之Session基本运算、占位符和变量的使用
  10. 陶哲轩实分析 引理8.2.7 注
  11. z变换判断稳定性和因果性_数字信号处理(王娜)-中国大学mooc-题库零氪
  12. osea/Beat Classification 4.3-4.5
  13. Android TextView和EditText属性详解
  14. php自动生成试卷,基于jQuery的试卷自动排版系统实现代码
  15. MySQL 检索 JSON 字段
  16. 计算机磁盘怎么更改,如何对电脑中的磁盘盘符号进行修改?
  17. (完全理解)二重积分中的换元积分中的雅可比矩阵
  18. Unity Steam_VR VRTK开发插件自带案例详解(一)
  19. cas跨域单点登录原理_基于CAS的SSO单点登录-实现ajax跨域访问的自动登录
  20. 看完这五个问题后你真的了解C语言吗?(深度剖析C语言第二期)

热门文章

  1. 如何彻底卸载Mysql数据库软件
  2. 关于STM32 串口二、串口三串口调试助手无法显示的问题
  3. 项目管理ppt_干货:腾讯内部项目管理PPT!
  4. 如何实现数字化转型?麦肯锡:数字化转型四步法
  5. kafka权威指南学习笔记
  6. kafka权威指南读书心得
  7. 程序员代码面试指南:IT名企算法与数据结构题目最优解-字符串问题:C/C++语言实现
  8. windows 使用ACR122U-A9设备读写M1卡
  9. 分享个Duilib中基于wke的浏览器控件
  10. 基于新浪微博评论的情感分析