1.Bundle类的作用

  Bundle类是一种数据载体,类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法, 如:putString()/getString()和putInt()/getInt(),    putXxx()用于往Bundle对象放入数据,   getXxx()用于从Bundle对象里获取数据。 Bundle的内部实际上是使用了HashMap类型的变量来存放putXxx()方法放入的值。Bundle就是一个专门用于导入Intent传值的包。

2.Intent的两种基本用法:

①一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;

②另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。

3.Intent直接传值和通过Bundle包装后传值的比较 ①若要从AActivity跳转到BActivity时需要写2个Intent,如果涉及的传值的话,Intent还要写两遍添加值的方法。 ②如果用1个Bundle直接把值先存里边 然后再存到Intent中代码会显得更加简洁。

需求:如果我现在有  Activity A ,B ,C; 现在我要把值通过A经过B传给C。

分析:你怎么传?如果用Intent的话   A->B先写一遍   再在B中都取出来 然后在把值塞到Intent中 再跳到C   累吗? 如果我在A中用了 Bundle 的话  我把Bundle传给B 在B中再转传到C  C就可以直接去了 这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value  同样可以在C中取出来。


接下来我们看一下Intent两种附加数据的写法:

第一种写法,用于批量添加数据到Intent:

Intent intent = new Intent();
  Bundle bundle = new Bundle();//该类用作数据载体
  bundle.putString("name","Mike");
  intent.putExtras(bundle);//可追加额外的数据,key同名的数据会被替换,与Map用法类似

第二种写法:不通过Bundle,把数据一个个地添加进Intent,这种写法使用起来比较方便,代码更简洁。

Intent intent = new Intent();
  intent.putExtra("name","XXX");//不是putExtras

传完数据后,现在看看如何将Intent和Bundle取出来:

  ①直接使用this.getIntent()就可以得到传来的Intent,

  ②然后在这个Intent的基础上调用getExtras()得到Bundle。

  ③根据数据类型可以从Bundle中get数据。   比如String str=bundle.getString(“Name”);得到键为“Name”的字符串,int num=bundle.getInt(“code”);得到键为“code”的整型。

  另外一定要注意getExtras和getExtra的区别。带s用于Bundle添加值和取值。

最新文章

  1. 【bzoj2073】[POI2004]PRZ
  2. WebSocket IO和后端建立长连接,即时接受后端消息
  3. [转] HTML5终极备忘大全(图片版+文字版)---张鑫旭
  4. Substring (nyoj 308)
  5. js判断操作系统windows,ios,android(笔记)
  6. pyhton中常用的基础模块
  7. Linux启动时间优化-内核和用户空间启动优化实践
  8. Vue 学习(1)
  9. SpringMVC 与 REST.
  10. 【python小练】0005
  11. Android BaseAdapter加载多个不同的Item布局时出现UncaughtException in Thread main java.lang.ArrayIndexOutOfBoundsException: length=15; index=15
  12. USB AUDIO Device CLASS Requests
  13. Java多线程-BlockingQueue-ArrayBlockingQueue-LinkedBlockingQueue
  14. Web负载均衡与分布式架构
  15. 【BZOJ3992】【SDOI2015】序列统计 EGF+多项式快速幂+循环卷积
  16. EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)
  17. EL与OGNL以及值栈的理解
  18. 【题解】 LA3708 Graveyard
  19. Codeforces Round 254 (Div. 2)
  20. github 丢失的本地提交

热门文章

  1. 标准C程序设计七---36
  2. PhpStorm配置svn:Can't use Subversion command line client:svn
  3. dedecms--二次开发之前后台登录分开
  4. 数据结构自己实现——queue
  5. 使用Python计算研究生学分绩(绩点)
  6. mysql中的SQL_CACHE(性能更优化)
  7. 小程序-TabBar点击切换
  8. js-随机生成16进制颜色
  9. Android Adapter推荐写法
  10. java线程中Exchanger使用