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类的构造方法来创建一个对象,之后就能够方便的使用这个“哈希表”了
至于一些具体的方法就不在多讲了,随时查阅官方文档就可以了

浙公网安备 33010602011771号