Bundle

API文档中:


Bundle类是一个final类://不能被继承,即没有子类
public final class
Bundle
extends Objec timplements Parcelable Cloneable

     

         用于两个Activity之间的通讯。具体做法是:

             1.新建一个Bundle类

 

               Bundle bundle=new Bundle();

 

             2.Bundle类中放入数据(key-value的形式,另一个Activity里面取数据的时候,就要用到key,找出对应的value)

                bundle.putString("key" ," value");

             3.新建一个intent对象,并将该bundle加入到这个intent对象

                Intent intent=new Intent( );

                intent.putExtras(bundle);

             4.获取key所对应的value

                Bundle bundle=getIntent().getExtras();

                String data=bundle.getString("key");

       当一个Activity启动另一个Activity时,同时会有一些数据需要传递过去,而两个Activity之间本来就有一个“信使”:Intent,因此可以将需要携带的数据放入Intent中即可。Intent提供了多个重载的方法来携带数据,如:

  putExtras(Bundle  extras):向Intent中放入需要携带的数据包

  Bundle  getExtras():取出Intent所携带的数据包

  putExtra(String name,Xxx value):向Intent中按key-value对的形式存入数据

  getXxxExtra(String name):从Intent中按key取出指定类型的数据

Bundle就是一个简单的数据携带包,Bundle对象也包含了多个方法来存入数据:

  putXxx(String key, Xxx  data):向Bundle中放入Int、Long等各种类型的数据

  putSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象

  为了取出Bundle数据携带包里的数据,Bundle提供了如下方法:

  getXxx(String key):从Bundle取出Int、Long等各种类型的数据

  getSerializable(String key,Serializable data):从Bundle取出一个可序列化的对象

其实,Intent所提供的putExtras(Bundle  extras)、getXxxExtra(String name)方法,只是一个便捷的方法,这些方法是直接存取Intent所携带的Bundle中的数据。

  当程序调用Intent的putExtra(String name ,Xxx value)方法向Intent中存入数据时,如果该Intent中已经携带了Bundle对象,则该方法直接向Intent所携带的Bundle存入数据;如果Intent还没有携带Bundle对象,putExtra(String name,Xxx value)方法会先为Intent创建一个Bundle,再向Bundle中存入数据。

可参见Intent部分源代码如下:

1  public Intent putExtra(String name, String[] value) {
2         if (mExtras == null) {
3             mExtras = new Bundle();
4         }
5         mExtras.putStringArray(name, value);
6         return this;
7     }

 

 

 

posted @ 2014-02-25 11:00  我是大嘴猴  阅读(1287)  评论(1编辑  收藏  举报