初心

何期自性,本自具足

认识Bundle

| Comments

  用于不同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
    }
   }
  );
 }

Comments