1 Bundle介绍

Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。

我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。下面分别介绍Activity之间如何传递基本类型、传递对象。

2 传递基本类型

Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据。

  • 在activity间传递信息

     Bundle bundle = new Bundle();        //得到bundle对象
    bundle.putString("sff", "value值"); //key-"sff",通过key得到value-"value值"(String型)
    bundle.putInt("iff", 175); //key-"iff",value-175
    intent.putExtras(bundle); //通过intent将bundle传到另个Activity
    startActivity(intent);
    读取数据
     Bundle bundle = this.getIntent().getExtras(); //读取intent的数据给bundle对象
    String str1 = bundle.getString("sff"); //通过key得到value
    int int1 = bundle.getInt("iff");
  • 线程间传递(通过Handler将带有dundle数据的message放入消息队列,其他线程就可以从队列中得到数据)
     Message message=new Message();//new一个Message对象
    message.what = MESSAGE_WHAT_2;//给消息做标记
    Bundle bundle = new Bundle(); //得到Bundle对象
    bundle.putString("text1","消息传递参数!"); //往Bundle中存放数据
    bundle.putInt("text2",44); //往Bundle中put数据
    message.setData(bundle);//mes利用Bundle传递数据
    mHandler.sendMessage(message);//Handler将消息放入消息队列
    读取数据(这里用的是Handler的handleMessage(Message msg)方法处理数据)
     String str1=msg.getData().getString("text1");
    int int1=msg.getData().getString("text2");
PS:Bundle和Intent区别:

Bundle只是一个信息的载体,内部其实就是维护了一个Map<String,Object>。

Intent负责Activity之间的交互,内部是持有一个Bundle的。

Android_Bundle的更多相关文章

  1. meteor 安装 android sdk慢的改进方法

    网上方法很多,最后总结一下比较靠谱的一个,到~/.meteor/android_bundle/ 目录下, 执行tools/android,手动下载 API 19 和 intel X86 Atom Sy ...

随机推荐

  1. Cisco路由器基本使用

    作者:小啊博 QQ:762641008 转载请声明URL:https://www.cnblogs.com/-bobo/ 一.路由器命令行使用 router>                    ...

  2. 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter

    1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: ...

  3. ng执行css3动画

    在组件html中 <div> <aside id="aside">侧边栏</aside> <div class="content ...

  4. 设置Activity全屏的方法:

    1)代码隐藏ActionBar 在Activity的onCreate方法中调用getActionBar.hide();即可 2)通过requestWindowFeature设置 requestWind ...

  5. SpringBootSecurity学习(22)前后端分离版之OAuth2.0自定义授权码

    使用JDBC维护授权码 前面的代码中,测试流程第一步都是获取授权码,然后再携带授权码去申请令牌,授权码示例如下: 产生的授权码默认是 6 位的,产生以后并没有做任何管理,可以说是一个临时性的授权码,o ...

  6. BT面板安装php报错configure: error: C preprocessor “/lib/cpp” fails sanity check

    使用宝塔面板安装扩展时已经显示添加安装成功了,待我刷新浏览器之后没有安装成功.看了一下执行日志. 缺少必要的C++库,如下命令重装解决. yum reinstall glibc-headers gcc ...

  7. MySql + Workbench使用教程

    Mysql安装及使用 注意:不推荐下载zip版本,需要配置额外的环境变量和其他设置,很复杂.官方的windows安装版本可以自动完成所有操作. 下载地址:https://dev.mysql.com/d ...

  8. Java8 Period.between方法坑及注意事项

    在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题. @Test public void test1(){ LocalDate from = LocalD ...

  9. cocos2d-x C++ 工程初探

    经过较为繁琐的环境搭建后,我们终于运行出了一个helloworld窗口,可以正式上手cocos了 现在我们就从改代码开始玩起 窗口 我们之前讲到AppDelegate类是程序的入口,所以和窗口有关的设 ...

  10. 【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

    原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel ...