今天发现自己连Bundle类都没有搞清楚,于是花时间研究了一下。

根据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html


Bundle类是一个key-value对,“A mapping from String values to various Parcelable types.

类继承关系:

java.lang.Object
    android.os.Bundle

Bundle类是一个final类:
public final class
Bundle
extends Objectimplements Parcelable Cloneable

两个activity之间的通讯可以通过bundle类来实现,做法就是:

(1)新建一个bundle类


[java] view plain copy
  1. Bundle mBundle = new Bundle();  

(2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)



[java] view plain copy
  1. mBundle.putString("Data", "data from TestBundle");  


(3)新建一个intent对象,并将该bundle加入这个intent对象



  1. Intent intent = new Intent();    

  2. intent.setClass(TestBundle.this, Target.class);    

  3. intent.putExtras(mBundle);  

完整代码如下:


android mainfest.xml如下:


[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3. package="com.tencent.test"

  4.      android:versionCode="1"

  5.      android:versionName="1.0">  

  6.    <application android:icon="@drawable/icon" android:label="@string/app_name">  

  7.        <activity android:name=".TestBundle"

  8.                  android:label="@string/app_name">  

  9.            <intent-filter>  

  10.                <action android:name="android.intent.action.MAIN" />  

  11.                <category android:name="android.intent.category.LAUNCHER" />  

  12.            </intent-filter>  

  13.        </activity>  

  14.    <activity android:name=".Target"></activity>  

  15.    </application>  

  16.    <uses-sdk android:minSdkVersion="7" />  

  17. </manifest>  


两个类如下:intent从TestBundle类发起,到Target类。


类1:TestBundle类:


[java] view plain copy
  1. import android.app.Activity;    

  2. import android.content.Intent;    

  3. import android.os.Bundle;    

  4. import android.view.View;  

  5. import android.view.View.OnClickListener;  

  6. import android.widget.Button;  

  7. publicclass TestBundle extends Activity {    

  8. private Button button1;  

  9. private OnClickListener cl;  

  10. publicvoid onCreate(Bundle savedInstanceState) {    

  11. super.onCreate(savedInstanceState);    

  12.        setContentView(R.layout.main);  

  13.        button1 = (Button) findViewById(R.id.button1);  

  14.        cl = new OnClickListener(){  

  15. @Override

  16. publicvoid onClick(View arg0) {  

  17. // TODO Auto-generated method stub

  18.                Intent intent = new Intent();    

  19.                intent.setClass(TestBundle.this, Target.class);    

  20.                Bundle mBundle = new Bundle();    

  21.                mBundle.putString("Data", "data from TestBundle");//压入数据  

  22.                intent.putExtras(mBundle);    

  23.                startActivity(intent);  

  24.            }  

  25.        };  

  26.        button1.setOnClickListener(cl);  

  27.    }  

  28. }    


类2: Target



[java] view plain copy
  1. import android.app.Activity;    

  2. import android.os.Bundle;    

  3. publicclass Target extends Activity{    

  4. publicvoid onCreate(Bundle savedInstanceState) {    

  5. super.onCreate(savedInstanceState);    

  6.        setContentView(R.layout.target);    

  7.        <span style="color:#ff6600;">Bundle bundle = getIntent().getExtras();   </span> //得到传过来的bundle

  8.        String data = bundle.getString("Data");//读出数据  

  9.        setTitle(data);    

  10.    }    

  11. }    


布局文件:


main.xml


[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  3.    android:orientation="vertical"

  4.    android:layout_width="fill_parent"

  5.    android:layout_height="fill_parent"

  6.    >  

  7. <TextView    

  8.    android:layout_width="fill_parent"

  9.    android:layout_height="wrap_content"

  10.    android:text="@string/hello"

  11.    />  

  12. <Button    

  13.    android:layout_width="fill_parent"

  14.    android:layout_height="wrap_content"

  15.    android:text="@string/button"

  16.    android:id = "@+id/button1"

  17.    />  

  18. </LinearLayout>  



target.xml
[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  3.    android:orientation="vertical"

  4.    android:layout_width="fill_parent"

  5.    android:layout_height="fill_parent"

  6.    >  

  7. <TextView    

  8.    android:layout_width="fill_parent"

  9.    android:layout_height="wrap_content"

  10.    android:text="@string/target"

  11.    />  

  12. </LinearLayout>  


String.xml


[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <resources>  

  3.    <string name="hello">Hello World, TestBundle!</string>  

  4.    <string name="app_name">测试Bundle用法</string>  

  5.    <string name="button">点击跳转</string>  

  6.    <string name="target">来到target activity</string>  

  7. </resources>  


结果:


9277551_1312190166lqNN.jpg

跳转结果:

9277551_1312190166Ua77.jpg