Bundle用于不同Activity之间的数据传递,类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap类型的变量来存放putXxx()方法放入的值.
重要方法:
- clear():清除此Bundle映射中的所有保存的数据
- clone():克隆当前Bundle
- containsKey(String key):返回指定key的值
- getString(String key):返回指定key的字符
- hasFileDescriptors():指示是否包含任何捆绑打包文件描述符
- isEmpty():如果这个捆绑映射为空,是则返回true
- putString(String key, String value):插入一个给定key的字符串值
- readFromParcel(Parcel parcel):读取这个parcel的内容
- remove(String key):移除指定key的值
- writeToParcel(Parcel parcel, int flags):写入这个parcel的内容
Bundle的经典用法:
- 新建一个bundle类。Bundle bundle = new Bundle();
- bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value) mBundle.putString("Data", "data from TestBundle");
- 新建一个intent对象,并将该bundle加入这个intent对象,然后发送到另一个Activity。
Intent intent = new Intent(); intent.setClass(TestBundle.this, Target.class); intent.putExtras(mBundle); startActivity(intent)
- Bundle对象可以从activity.getIntent().getExtras()中返回。 可见,启动当前activity 的Intent对象是由getIntent()来找到时
- 接收方取得数据。
Bundle bundle = getIntent().getExtras();//得到传过来的bundle String data = bundle.getString("Data");//读出数据