用于不同Activity之间的数据传递
重要方法
clear():清除此Bundle映射中的所有保存的数据。
clone():克隆当前Bundle
containsKey(String key):返回指定key的值
getString(String key):返回指定key的字符
hasFileDescriptors():指示是否包含任何捆绑打包文件描述符
isEmpty():如果这个捆绑映射为空,则返回true
putString(String key, String value):插入一个给定key的字符串值
readFromParcel(Parcel parcel):读取这个parcel的内容
remove(String key):移除指定key的值
writeToParcel(Parcel parcel, int flags):写入这个parcel的内容
Android 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
| Bundle mBundle = new Bundle();
|
(2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
1
| mBundle.putString("Data", "data from TestBundle");
|
(3)新建一个intent对象,并将该bundle加入这个intent对象
1
2
3
| Intent intent = new Intent();
intent.setClass(TestBundle.this, Target.class);
intent.putExtras(mBundle);
|
完整代码见原文
————————
Activity1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| btn.setOnClickListener
(
new OnClickListener()
{
@Override
public void onClick(View v) {
String str=ev.getText().toString().trim();
Intent intent=new Intent();
intent.setClass(Activity1.this,Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("str", str);
intent.putExtras(bundle);//绑定信息
startActivity(intent);//启动Activity
Activity1.this.finish();//关闭Activity
}
}
);
|
Activity2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.anthor);
TextView tv=(TextView)this.findViewById(R.id.TextView1);//显示的信息
Button button=(Button)this.findViewById(R.id.anthorButton);//返回按钮
Bundle bundle=this.getIntent().getExtras();
String str=bundle.getString("str");
StringBuilder sb=new StringBuilder();
sb.append("您填写的信息为:"+str+"\n");
tv.setText(sb.toString().trim());
button.setOnClickListener
(
new OnClickListener()
{
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(Activity2.this,Activity1.class);
startActivity(intent);
AnotherActivity.this.finish();//关闭Activity
}
}
);
}
|