今天发现自己连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对象



[cpp] view plain copy
  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>


结果:



跳转结果:


更多相关文章

  1. android中的bundle传送数据
  2. Android虚拟键盘挡住输入组件的解决办法
  3. Android——拖动条SeekBar
  4. Android:可拆分和可序列化之间的区别?
  5. Android的JNI实现基础
  6. Android(安卓)开发时遇到的两个模拟器问题
  7. android之蓝牙设备的使用01
  8. widget(1、TextView)
  9. Android进度条源代码

随机推荐

  1. Android(安卓)ButterKnife导入使用出错解
  2. android listview 实现从数据库读取已读
  3. NDROID中LISTVIEW仿QQ群组向上滚动特效
  4. android mediaplayer 自定义 mediacontro
  5. Android学习备忘021——FBReader源码修改
  6. Android实体类序列化
  7. 关于android的设备管理器-DevicePolicyMa
  8. Android(安卓)Gradle 学习之二:重命名APK
  9. Android(安卓)添加数据到本地Excel表中
  10. Android(安卓)框架层为IMountService 增