原创 Android笔记10-搞清楚Bundle 类

2014-7-29 20:28 2540 18 20 分类: 软件与OS 文集: Android
一、初初了解
首先 Bundle 是一个类,继承于 Object 类,接口于 Parcelable Cloneable 这两个类
谷歌官方文档显示:
java.lang.Object
   ↳ android.os.Bundle
 
这个类是什么东西呢:

A mapping from String values to various Parcelable types.

一个字符各种可打包类型映射。而所谓映射,我的理解就是利用类来实现UI(用户界面)的事件。

 
这是一个final 类
二、有何用处?
可用来两个 activity 之间通信
(1)新建一个 bundle  类的对象
  1. Bundle mBundle = new Bundle();   
 
(2)给对象加入要传输的数据,(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
 
  1. mBundle.putString("Data""data from TestBundle");  
  2.  
 
(3)新建一个intent 对象,并将该 bundle 加入这个intent 对象
这里顺便说明下什么是Intent 当一个activity 需要启动 另一个 activity 时,程序并没有直接告诉系统要启动哪个Activity ,
而是通过Intent 来表达自己的意图——我想启动哪个Activity 。 打个比喻就是,古时候,男生( activity)想向女友的父母(系统)提亲,但是不好意思直接上门,于是找了个媒婆(Intent)来告诉二老我想去你们的xxx女儿( activity)。 哈哈。就是这意思了。
  1. Intent intent = new Intent();    
  2. intent.setClass(TestBundle.this, Target.class);    
  3. intent.putExtras(mBundle);  
(4) intent 从  BundleExam 类发起,到Receiver类
数据发送方: BundleExam 类:
package com.example.bundleexam;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class BundleExam extends Activity {
 
//声明变量
private Button button1;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
 
button1 = (Button)findViewById(R.id.button1);
//按钮监听处理方法
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Intent intent = new Intent();
intent.setClass(BundleExam.this, Receiver.class);
//声明Bundle 对象
Bundle btn_Bundle = new Bundle();
//传入数据
btn_Bundle.putString("Data", "data from Bundle_Send!");
//向Intent传入要携带的数据
intent.putExtras(btn_Bundle);
//开始传送
startActivity(intent);
}
});
}
}
 
接收方:Receiver.java
package com.example.bundleexam;
 
import android.app.Activity;
import android.os.Bundle;
 
public class Receiver extends Activity 
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.receive);  
Bundle bundle = getIntent().getExtras(); //得到传来的bundle
String data = bundle.getString("Data");//读出数据
setTitle("OK");//显示数据
}
}
 
main.xml 内容
     android:orientation="vertical"  
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
 
   
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
         />
 
   
        android:id="@+id/button1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="@string/button1"
      />
 
 
receive.xml 文件内容
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
   
 
     android:text="@string/receiver"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     />
 
 
strings.xml 文件内容
 
   122501.jpg
 
 
具体程序在附件,有兴趣同学可以去看看。
<>
<>

文章评论2条评论)

登录后参与讨论

用户841296 2014-7-5 13:13

学习,谢谢!

用户593939 2014-1-10 22:36

好好学习一下,很不错,很好
相关推荐阅读
啊左不是蜗牛 2015-01-28 09:21
【博客大赛】那样的人生,看不穿
         昨晚11点跟PM姐姐聊天,问她今晚要不要加班,她回:刚刚开发哥哥陪她出来打的。。。我以为我十点半从实验室回去已经够晚了。。我脸红了。        我问她为什么不早点回去...
啊左不是蜗牛 2015-01-13 19:41
【智能手机】三个观点说说国产手机未来
在此篇文章之前还有一个各大手机品牌的总结,请点击查看。 智能手机之论英雄出处      谈手机之前换个角度,类比一下PC领域。 PC领域毛利最高的时候,国产PC一直混在低端。随着时代发...
啊左不是蜗牛 2015-01-09 17:56
【智能手机】论英雄出处
我认为,如果你不知道对手的底细,那么你就很难战胜对手。知己知彼,百战百胜。所以,我简单地说说我对这几家手机品牌的看法。个人之见,欢迎讨论。   苹果: 1976年成立,在乔布斯这样的天...
啊左不是蜗牛 2014-11-19 13:48
【博客大赛】蜗牛求职记之华为篇
1、前言说明          蜗牛是电赛出身,本科做硬件嵌入式,画板子和写C程序,然后研究生阶段是转战android,但是由于项目涉及到硬件,导师项目众多,小伙伴少,于是我也负责部分st...
啊左不是蜗牛 2014-08-16 14:38
以另一种位图的思想来解决一道OJ题目
前言: 以前所接触到的位图的思想都是以1位的形式去存储某个数出现的次数是1次还是0次。常见的例子不外乎在《编程珠玑》上的开篇例子里,1千万个数的排序统计,用1.25M的内存空间就可以达到遍历一...
啊左不是蜗牛 2014-08-15 11:57
Android 笔记之 listview 性能优化
列表显示需要三个元素, (1)listview 视图,用来显示列表的View ; (2)适配器,用来把数据映射到listView上面的 (3)数据,具体将被映射的数据,包括字符串,图片...
我要评论
2
18
关闭 站长推荐上一条 /2 下一条