1、使用Bundle在Activity之间交换数据
当在一个Activity中启动另一个Activity,而这些Activity之间又经常要交换数据,这时可以通过Intent来实现,因为Intent通常被称为是两个Activity之间的信使,通过将要传递的数据保存在Intent中,就可以将其传递到另一个Activity中.
在Android中,可以将要保存的数据存放在Bundle对象中,然后通过Intent提供的putExtras()方法将要携带的数据保存在Intent中.
说明: Bundle是一个字符串值到各种Parcelable类型的映射,用于保存要携带的数据包传递一个一个的字符
Bundle bundle = new Bundle(); // 实例化一个Bundle对象
bundle.putSerializable("info", info); // 将输入的基本信息保存到Bundle对象中
Intent intent = new Intent(this,Activity2.class);
intent.putExtras(bundle); // 将bundle保存到Intent对象中
startActivity(intent); // 启动intent对应的Activity
接收:Intent intent=getIntent(); //获取Intent对象
Bundle bundle=intent.getExtras(); //获取传递的数据包
Info info=(Info)bundle.getSerializable("info"); //获取一个可序列化的info对象
有返回数据的Activity转跳
startActivityForResult(intent, 请求码);//启动activity
setResult(123, intent);//activity2返回结果
/**
* 接收上一个Activity返回回来携带的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
<span style="white-space:pre"> </span>super.onActivityResult(requestCode, resultCode, data);
<span style="white-space:pre"> </span>// 判断,传过去的请求码和返回的请求码是否一致,如果一致证明是我们想要获取的数据。否则不要
<span style="white-space:pre"> </span>if (requestCode == 请求码 && resultCode == 123) {
<span style="white-space:pre"> </span>Bundle bundle = data.getExtras();<span style="font-family: Arial, Helvetica, sans-serif;">//获取传递的数据包</span>
<span style="white-space:pre"> </span>String userName = bundle.getString("userName");
<span style="font-family: Arial, Helvetica, sans-serif;"> ... </span>
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>