zoukankan      html  css  js  c++  java
  • Bundle对象的使用

    在Android开发中,如果要通过一个Activity启动另外一个Activity,需要调用startActivity()函数,这个函数的参数是一个Intent对象,这个对象通常的初始化方式如下:

    Intent intent = new Intent();
    intent.setClass(this,SecondActivity.class);
    startActivity(intent);
    

    这样就完成了一个新的Activity的启动,但是这种启动方式两个Activity之间不会有任何的数据传递,很多情况下,我们遇到的往往是前一个Activity要把数据传递给新启动的Activity,这就要用到Bundle对象了。
    比如在第一个Activity中,我们获取了身高和性别两种数据,需要传递给新启动的Activity,那么就要把这些数据封装进Bundle对象里面,再把Bundle对象assign给Intent,作为starActivity()函数的参数。
    实现代码如下:

    Intent intent = new Intent();
    intent.setClass(this,SecondActivity.class);
    //封装Bundle对象
    Bundle bundle = new Bundle();
    bundle.putDouble("height",height);//height为double型变量
    bundle.putString("sex",sex);//sex为string型变量
    //把Bundle对象assign给Intent
    intent.putExtras(bundle);
    startActivity(intent);
    

    第二个Activity相应的也要接收数据,方法也很简单,先从Intent对象中分离Bundle,再按照相同方法提取数据。
    实现代码如下:

    Bundle bundle1=this.getIntent().getExtras();
    String sex=bundle1.getString("sex");
    double height=bundle1.getDouble("height");
    

    值得注意的是,如果程序中有多个Activity,要在AndroidManifest.xml中声明,声明一个Activity格式如下:

    <activity android:name="SecondActivity"></activity>

    当存在多个Activity时,必须指定一个最先启动的Activity,也是在AndroidManifest.xml中声明,声明方式如下:

    <activity android:name="SecondActivity">
         <intent-filter>
              <action android:name="android.intent.action.MAIN"/>
              <category android:name="android.intent.category.LAUNCHER"/>
         </intent-filter>
    </activity>
    

    Bundle对象还有其他很多种对不同数据类型的操作方法,比如getBoolean等,具体可以到Android官网去参考。

  • 相关阅读:
    【java8】慎用java8的foreach循环(作废)
    【Java并发系列03】ThreadLocal详解
    【Java并发系列04】线程锁synchronized和Lock和volatile和Condition
    【Java并发系列02】Object的wait()、notify()、notifyAll()方法使用
    【Java并发系列01】Thread及ThreadGroup杂谈
    java安全管理器SecurityManager入门
    【DWR系列06】- DWR日志及js压缩
    时间插件
    springMVC中Restful支持
    面向接口编程
  • 原文地址:https://www.cnblogs.com/mrray/p/6178978.html
Copyright © 2011-2022 走看看