Android Bundle的使用

在Android中有一个非常简单易用的类android.os.Bundle

Bundle类实际上是一个简化的哈希表(map),用来存储Key和对应的Value

只是这个Key只能够是String类型的值;这个类的使用非常的简单,常用的功能

只有两个:1、通过putXXX(String Key,XXX Value)来向创建好的Bundle对象当中添加数据                                      

                     如:void putFloat(String key, float value)

              2、通过getXXX(Key)取出Bundle对象中存储的数据

                      如:void getFloat(String key)

需要指明的一点是,Bundle布局不仅仅能够装载基本的数据类型,还能够装载对象,但是,装载的对象必须是可序列化的:

 public void putSerializable(String Key , Serializble data);

public Serializable getSerializable(String Key) ;

如下:(前面介绍过如何将一个类可序列化,是一个对象可序列化,就是让对应的类实现Serializable接口,这个接口只是一个标记接口,里面没有任何接口方法,也就是说,只要用这个字段标记一下,这个类的实例对象就能够序列化了)

Person类

public class Person implements Serializable
{
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private Integer id;
    private String name;
    private String pass;
    private String gender;

    public Person()
    {
    }

    /**
     * @param name
     * @param pass
     * @param gender
     */
    public Person(String name, String pass, String gender)
    {
        this.name = name;
        this.pass = pass;
        this.gender = gender;
    }
}
BundleTest.java文件
public
class BundleTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn = (Button) findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener() { public void onClick(View v) { EditText name = (EditText)findViewById(R.id.name); EditText passwd = (EditText)findViewById(R.id.passwd); RadioButton male = (RadioButton) findViewById(R.id.male); String gender = male.isChecked() ? "男 " : "女"; Person p = new Person(name.getText().toString(), passwd .getText().toString(), gender); // 创建一个Bundle对象 Bundle data = new Bundle(); data.putSerializable("person", p); // 创建一个Intent Intent intent = new Intent(BundleTest.this, ResultActivity.class); intent.putExtras(data); // 启动intent对应的Activity startActivity(intent); } }); } }


ResultActivity.java 文件

public class ResultActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);
        TextView name = (TextView) findViewById(R.id.name);
        TextView passwd = (TextView) findViewById(R.id.passwd);
        TextView gender = (TextView) findViewById(R.id.gender);
        // 获取启动该Result的Intent
        Intent intent = getIntent();
        // 直接通过Intent取出它所携带的Bundle数据包中的数据
        Person p = (Person) intent.getSerializableExtra("person");
        name.setText("您的用户名为:" + p.getName());
        passwd.setText("您的密码为:" + p.getPass());
        gender.setText("您的性别为:" + p.getGender());
    }
}

 

所以我们只要通过Bundle类的构造方法来创建一个对象,之后就能够方便的使用这个“哈希表”了

至于一些具体的方法就不在多讲了,随时查阅官方文档就可以了

posted @ 2014-09-30 19:52  RoperLee  阅读(308)  评论(0)    收藏  举报