Android Bundle类

[日期:2011-08-11] 来源:Linux社区 作者:randyjiawenjie

发现自己连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类

  1. BundlemBundle=newBundle();
(2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
  1. mBundle.putString("Data","datafromTestBundle");
(3)新建一个intent对象,并将该bundle加入这个intent对象
  1. Intentintent=newIntent();
  2. intent.setClass(TestBundle.this,Target.class);
  3. intent.putExtras(mBundle);
完整代码如下:

Android mainfest.xml如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:Android="http://schemas.android.com/apk/res/android"
  3. package="com.tencent.test"
  4. Android:versionCode="1"
  5. Android:versionName="1.0">
  6. <applicationAndroid:icon="@drawable/icon"android:label="@string/app_name">
  7. <activityAndroid:name=".TestBundle"
  8. Android:label="@string/app_name">
  9. <intent-filter>
  10. <actionAndroid:name="android.intent.action.MAIN"/>
  11. <categoryAndroid:name="android.intent.category.LAUNCHER"/>
  12. </intent-filter>
  13. </activity>
  14. <activityAndroid:name=".Target"></activity>
  15. </application>
  16. <uses-sdkAndroid:minSdkVersion="7"/>
  17. </manifest>
两个类如下:intent从TestBundle类发起,到Target类。

类1:TestBundle类:

  1. importAndroid.app.Activity;
  2. importAndroid.content.Intent;
  3. importAndroid.os.Bundle;
  4. importAndroid.view.View;
  5. importAndroid.view.View.OnClickListener;
  6. importAndroid.widget.Button;
  7. publicclassTestBundleextendsActivity{
  8. privateButtonbutton1;
  9. privateOnClickListenercl;
  10. publicvoidonCreate(BundlesavedInstanceState){
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. button1=(Button)findViewById(R.id.button1);
  14. cl=newOnClickListener(){
  15. @Override
  16. publicvoidonClick(Viewarg0){
  17. //TODOAuto-generatedmethodstub
  18. Intentintent=newIntent();
  19. intent.setClass(TestBundle.this,Target.class);
  20. BundlemBundle=newBundle();
  21. mBundle.putString("Data","datafromTestBundle");//压入数据
  22. intent.putExtras(mBundle);
  23. startActivity(intent);
  24. }
  25. };
  26. button1.setOnClickListener(cl);
  27. }
  28. }
类2: Target
  1. importAndroid.app.Activity;
  2. importAndroid.os.Bundle;
  3. publicclassTargetextendsActivity{
  4. publicvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.target);
  7. <spanstyle="color:#ff6600;">Bundlebundle=getIntent().getExtras();</span>//得到传过来的bundle
  8. Stringdata=bundle.getString("Data");//读出数据
  9. setTitle(data);
  10. }
  11. }
布局文件:

main.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,TestBundle!</string>
  4. <stringname="app_name">测试Bundle用法</string>
  5. <stringname="button">点击跳转</string>
  6. <stringname="target">来到targetactivity</string>
  7. </resources>
结果:


跳转结果:


更多相关文章

  1. Android(安卓)中的单元测试(使用AndroidTestCase 进行 Content P
  2. WebKit – WebKit For Android
  3. Android中Message机制的灵活应用
  4. Android开发秘籍学习笔记(五)
  5. Android系统源码数据库(mmssms.db)
  6. android数据存储之File
  7. android开关飞行模式的方法
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. python起点网月票榜字体反爬案例

随机推荐

  1. 分享30个非常实用的游戏和应用源码
  2. Android(安卓)选择控件
  3. Android高级编程PDF
  4. 【Android入门】新手入门布局源码及零基
  5. android的TextView跑马灯效果属性
  6. Android(安卓)项目优化(七):阿里巴巴Android
  7. Android7.0中文API -- Spinner
  8. Android(安卓)项目优化(七):阿里巴巴Android
  9. 浅析Android手机卫士之手机实现短信指令
  10. 解决Gradle DSL method not found: ‘and