Android-Bundle的说明和用法
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添加值和取值。
Android-Bundle的说明和用法的更多相关文章
- android中Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- (转载)Android常用的Dialog对话框用法
Android常用的Dialog对话框用法 Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的 ...
- Android View.setId(int id) 用法
Android View.setId(int id) 用法 当要在代码中动态的添加View并且为其设置id时,如果直接用一个int值时,Studio会警告. 经过查询,动态设置id的方法有两种; 1. ...
- android bundle存放数据详解
转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...
- Android Intent的几种用法全面总结
Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...
- 解决React Native unable to load script from assets index.android.bundle on windows
React Native运行的时候,经常碰到React Native unable to load script from assets index.android.bundle on windows ...
- React Native: unable to load scripts from assets 'index.android.bundle' on real device
问题:重新建了一个项目后,运行react-native run-android报: unable to load scripts from assets 'index.android.bundle' ...
- Unable to load script from assets 'index.android.bundle'.make sure you bundle is packaged correctly
解决此问题 以下方法每次都需要执行命令2才能更新 1.创建assets目录 mkdir android/app/src/main/assets 2.执行命令 react-native bundle - ...
- 项目初始化以后出现:Unable to load script from assets 'index.android.bundle
Mac中真机测试React Native project时出现Unable to load script from assets 'index.android.bundle' 2018年01月21日 ...
- react native中Unable to load script from assets 'index.android.bundle'解决方案
刚刚朋友问我,说是创建好一个项目,运行后报错:Unable to load script from assets 'index.android.bundle',以前好好的没出现这种现象,于是我找到一个 ...
随机推荐
- charles 抓包工具破解方法
在线破解地址: https://www.zzzmode.com/mytools/charles/ 之后将下载的jar包替换 charles.app ->右键显示包内容 ->content ...
- IPython:一种交互式计算和开发环境
一 键盘快捷键 - Ctrl-P 或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令 - Ctrl-N 或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令 - Ctrl-R ...
- hdu 5974 A Simple Math Problem gcd(x,y)=gcd((x+y),lcm(x,y))
题目链接 题意 现有\[x+y=a\\lcm(x,y)=b\]找出满足条件的正整数\(x,y\). \(a\leq 2e5,b\leq 1e9,数据组数12W\). 思路 结论 \(gcd(x,y)= ...
- linux信号-------初涉
一.信号的本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是进程 ...
- jq ajax之beforesend(XHR)
用于在向服务器发送请求前添加一些处理函数.例如:搜寻附近店铺,未搜寻出来的时候显示:正在搜寻中... 常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容 ...
- AC日记——[CQOI2014]危桥 洛谷 P3163
题目描述 Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.A ...
- 牛客网 Wannafly挑战赛9 C.列一列-sscanf()函数
C.列一列 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld 链接:https://www.now ...
- 网络入侵检测规避工具fragrouter
网络入侵检测规避工具fragrouter 网络入侵检测系统可以通过拦截数据包,获取内容进而判断是否为恶意数据包.对于传输较大的数据包,通常会采用分片的方式,将大数据包拆分为小数据包进行传输.如果入 ...
- DBUtils工具类学习一
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能 1.特征 DBUtils是java编程中 ...
- 高并发场景下System.currentTimeMillis()的性能优化
一.前言 System.currentTimeMillis()的调用比new一个普通对象要耗时的多(具体耗时高出多少我也不知道,不过听说在100倍左右),然而该方法又是一个常用方法, 有时不得不使用, ...