今天发现自己连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 Room联合AsyncListUtil实现RecyclerView分页加载ORM数据
  4. Android——SQLite数据库
  5. Android使用JDBC连接mysql数据库
  6. Android 高效的SQLite型数据库greenDAO使用
  7. Android五种常用数据的存储方式

随机推荐

  1. Android(安卓)应用层读取底层节点信息
  2. android 事件分发之dispatchTouchEvent()
  3. Android中联系人和通话记录详解(联系人的
  4. No 94 · android 在规定时间内跳转到其
  5. 第二章 Android开发工具及技巧
  6. Android开发 - 设置EditText的样式
  7. [Android]RecyclerView基本使用+adapter
  8. 【转载】ROS与Android
  9. Opencv4.3.0+android studio3.6.1运行打
  10. Android屏幕截图实现方式 系统截屏源码分