根据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html)
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
- Bundle mBundle = new Bundle();
(2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
[java] view plain copy
- 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. "1"
5. "1.0">
6. "@drawable/icon" android:label="@string/app_name">
7. ".TestBundle"
8. "@string/app_name">
9. <intent-filter>
10. "android.intent.action.MAIN" />
11. "android.intent.category.LAUNCHER" />
12. </intent-filter>
13. </activity>
14. ".Target"></activity>
15. </application>
16. "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.
8. public class TestBundle extends Activity {
9.
10. private Button button1;
11. private OnClickListener cl;
12. public void onCreate(Bundle savedInstanceState) {
13. super.onCreate(savedInstanceState);
14. setContentView(R.layout.main);
15.
16. button1 = (Button) findViewById(R.id.button1);
17. new OnClickListener(){
18. @Override
19. public void onClick(View arg0) {
20. // TODO Auto-generated method stub
21. new Intent();
22. this, Target.class);
23. new Bundle();
24. "Data", "data from TestBundle");//压入数据
25. intent.putExtras(mBundle);
26. startActivity(intent);
27. }
28. };
29. button1.setOnClickListener(cl);
30. }
31. }
类2: Target
[java]
view plain
copy
1. import android.app.Activity;
2. import android.os.Bundle;
3.
4. public class Target extends Activity{
5.
6. public void onCreate(Bundle savedInstanceState) {
7.
8. super.onCreate(savedInstanceState);
9. setContentView(R.layout.target);
10. "color:#ff6600;">Bundle bundle = getIntent().getExtras(); </span> //得到传过来的bundle
11. "Data");//读出数据
12. setTitle(data);
13.
14. }
15. }
布局文件:
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. "vertical"
4. "fill_parent"
5. "fill_parent"
6. >
7. <TextView
8. "fill_parent"
9. "wrap_content"
10. "@string/hello"
11. />
12. <Button
13. "fill_parent"
14. "wrap_content"
15. "@string/button"
16. "@+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. "vertical"
4. "fill_parent"
5. "fill_parent"
6. >
7. <TextView
8. "fill_parent"
9. "wrap_content"
10. "@string/target"
11. />
12. </LinearLayout>
String.xml
[java] view plain copy
1. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. "hello">Hello World, TestBundle!</string>
4. "app_name">测试Bundle用法</string>
5. "button">点击跳转</string>
6. "target">来到target activity</string>
7. </resources>