一、初初了解
首先 Bundle 是一个类,继承于 Object 类,接口于 Parcelable Cloneable 这两个类
谷歌官方文档显示:
java.lang.Object |
↳ |
android.os.Bundle |
这个类是什么东西呢:
A mapping from String values to various Parcelable types.
一个从字符值到各种可打包类型的映射。而所谓映射,我的理解就是利用类来实现UI(用户界面)的事件。
这是一个final 类
二、有何用处?
可用来两个 activity 之间通信
(1)新建一个 bundle 类的对象
-
Bundle mBundle = new Bundle();
(2)给对象加入要传输的数据,(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
-
mBundle.putString("Data", "data from TestBundle");
-
(3)新建一个intent 对象,并将该 bundle 加入这个intent 对象
这里顺便说明下什么是Intent 当一个activity 需要启动 另一个 activity 时,程序并没有直接告诉系统要启动哪个Activity ,
而是通过Intent 来表达自己的意图——我想启动哪个Activity 。 打个比喻就是,古时候,男生( activity)想向女友的父母(系统)提亲,但是不好意思直接上门,于是找了个媒婆(Intent)来告诉二老我想去你们的xxx女儿( activity)。 哈哈。就是这意思了。
-
Intent intent = new Intent();
-
intent.setClass(TestBundle.this, Target.class);
-
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 文件内容
具体程序在附件,有兴趣同学可以去看看。
<>
<>
用户841296 2014-7-5 13:13
用户593939 2014-1-10 22:36