• 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     }
  • 相关阅读:
    oracle unwrap解密工具
    介绍一款国产的矢量图形设计软件--百绘大师
    windows10上安装OpenSSL_1.1.1d_x64
    centos7上安装phantomjs并对页面截屏
    如何用Java Socket实现一个简单的Redis客户端
    cenos上通过yum安装mariadb
    windows上杀掉指定名称的进程
    centos磁盘满时查找大文件清理掉
    为Vertica数据库增加自定义函数to_base64和from_base64
    解决Vertica集群某节点出现Clock skewed告警
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3566248.html
Copyright © 2020-2023  润新知