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

  1. BundlemBundle=newBundle();

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



[java]view plaincopy

  1. mBundle.putString("Data","datafromTestBundle");


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



[cpp]view plaincopy

  1. Intentintent=newIntent();

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

  3. intent.putExtras(mBundle);

完整代码如下:


android mainfest.xml如下:


[java]view plaincopy

  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类:


[java]view plaincopy

  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



[java]view plaincopy

  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


[java]view plaincopy

  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

[java]view plaincopy

  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


[java]view plaincopy

  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. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 类和 Json对象
  4. Adnroid单元测试
  5. 几种常用的适配器--Adapter
  6. Android(安卓)Fragment基础之动态添加Fragment 实现两个Fragment
  7. SQLite数据库总结
  8. Android连接SQLite数据库
  9. Android(安卓)访问Http被限制解决方法

随机推荐

  1. android 短信验证自动获取验证码
  2. Expecting android:screenOrientation="u
  3. [置顶] android 设置边框圆角
  4. android初识之路
  5. android中连接到指定wifi
  6. Android SystemUI任务栏修改
  7. Android外置存储器(SD卡)工具类
  8. Android istview顶部的或底部的渐变色怎
  9. 自定义进度条
  10. android中MotionEvent.ACTION_CANCEL事件