今天发现自己连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. BundlemBundle=newBundle();
(2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)

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

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

[cpp] view plain copy
  1. Intentintent=newIntent();
  2. intent.setClass(TestBundle.this,Target.class);
  3. intent.putExtras(mBundle);
完整代码如下:

android mainfest.xml如下:

[java] view plain copy
  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 plain copy
  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 plain copy
  1. importandroid.app.Activity;
  2. importandroid.os.Bundle;
  3. publicclassTargetextendsActivity{
  4. publicvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.target);
  7. Bundlebundle=getIntent().getExtras(); //得到传过来的bundle
  8. Stringdata=bundle.getString("Data");//读出数据
  9. setTitle(data);
  10. }
  11. }

布局文件:

main.xml

[java] view plain copy
  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 plain copy
  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 plain copy
  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. Android中SharedPreferences的基本使用
  5. 从java内存分配角度分析android内存泄漏问题
  6. android SQLite操作
  7. Android(安卓)library projects cannot be launched
  8. 在Android中把SQLite的数据库文件存储在SD卡中【转】
  9. SharedPreferences

随机推荐

  1. Android之MediaPlayer播放音乐并实现进度
  2. Android内核cmdline到系统prop属性传递
  3. Android屏幕区域划分及尺寸获取
  4. New Gingerbread API: StrictMode阅读笔
  5. Android(安卓)Studio快速打印Log
  6. Android调整手机的默认亮度
  7. log函数封装,让WIN32和android ndk共用相
  8. 初学Android,使用ContentResolver获取自
  9. Android的logcat命令详解
  10. Redis 6.0 正式版终于发布了!除了多线程还