当一个Activity
启动另一个Activity
时,常常会有一些数据需要传过去。对于Activity
而言,进行数据交换很简单,只需要使用Intent
,将我们需要传递的数据放入Intent
中即可。
Intent提供了多个重载方法来携带数据,如下:
putExtras(Bundle data)
: 向Intent
中放入需要携带的数据包。Bundle getExtras
:取出Intent
中所携带的数据包。putExtra(String name,Xxx value)
:向Intent
中按key-value
对的形式存入数据。getXxxExtra(String name)
:从Intent
中按key
取出指定类型的数据。
上面方法中的Bundle
就是一个简单的数据携带包,该Bundle
对象包含了多个方法来存入数据。
putXxx(String key,Xxx data)
:向Bundle
中存入Int、Long
等各种类型的数据。putSerializable(String key,Serializable data)
:向Bundle
中放入一个可序列化的对象。
为了取出Bundle
数据携带包中的数据,Bundle
提供了如下方法:
getXxx(String key)
:从Bundle
中取出Int、Long
等各种类型的数据。getSerializable(String key)
:从Bundle
中取出一个可序列化的对象
例如:
1. 方法1
向Intent 中携带数据
/***向Intent 中携带数据***/
Person p=new Person("jack","男");
//创建一个Bundle对象
Bundle data=new Bundle();
data.putSerializable("person",p);
//创建一个Intent
Intent intent=new Intent(this,TwoActivity.class);
intent.putExtras(data);
//启动intent对应的Activity
startActivity(intent);
向Intent 中取数据
/***向Intent 中取数据***/
Intent intent=getIntent();
Person p=intent.getSerializableExtra("person");
也可以使用下面的方法存放数据:
2. 方法2
存数据
Intent intent=new Intent(this,TwoActivity.class);
Person p=new Person("jack","男");
intent.putExtras("person",(Serializable)p);
//启动intent对应的Activity
startActivity(intent);
取数据
Intent intent=getIntent();
Person p=intent.getSerializableExtra("person");
建议使用第二种方法,简单粗暴。注意,Person
需要实现Serializable
接口。