Ex3.10 不同Activity之间的数据传递——Bundle对象的实现

    在上例中(Ex3.9)中实现了Activity之间的跳转,虽然我扩展到三个Activity间的跳转,但各个Activity间是相互独立并存的。这一节我们就从数据入手,学习在不同Intent间传递数据的对象 —— Bundle 。

首先我们回顾一下Activity与Intent,为更好地理解Bundle做准备。

 

    众所周知,Android应用结构是由一下四个部分组成:(并不是说每一个Android应用里都包含所有内容

  • Activity
  • Intent Receiver
  • Service
  • Content Provider

    Activity是Android应用中最基本的组成部分,往文了说就是“每个activity都被实现为一个独立的类,并且继承于Activity这个基类。这个activity类会由若干个Widgets控件组成”。往俗了说“activity就是Android应用中的一个单独窗口屏幕”。

    上例中引出了“Intent”这一概念,说的是Intent用于Activity间的数据交换。其实在Intent的结构描述中主要包含两部分:动作和动作所对应的数据。关于Intent的动作行为和请求会牵扯出另外一个概念“IntentFilter”,所以在本例中暂不细说。就记住 Intent是连接Android应用间的桥梁就行,因为Intent的本事很大很大 :-)

    而对于Bundle,我理解它就是一个"数据封装的容器",而Intent就是这个数据容器的应用载体。

    有了这些理论依据,我们再来看程序代码,无非就是"放数据"和"取数据"的关系。

 

//第一步 创建Intent对象,指定Class Intent intent = new Intent(); intent.setClass(); //第二步 创建Bundle对象, 放/压 数据 Bundle bundle = new Bundle(); bundle.putData(XXXXXXX); //第三步 将Bundle对象分发给Intent, 调用Activity intent.putExtras(bundle); startActivity(intent);

 

//取数据 //获取Intent中的Bundle对象 bunde = this.getIntent().getExtras(); bunde.getData();

 

代码中的putData()与getData()泛指放数据和取数据。真实应用要根据不同数据类型来分别对待。

 

Bundle中支持的数据类型还是很丰富的,除常用数据类型以外(int,float,double...),还有针对Bitmap的读取getParcelable与写入 putParcelable等等。

 

你可能感兴趣的:(《Google,Android,SDK开发范例》读书笔记,android,service,float,class,扩展)