当一个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接口。
本文详细介绍了在Android应用中如何使用Intent在不同Activity间传递数据,包括使用Bundle包装数据、序列化对象及从Intent中获取数据的方法。
&spm=1001.2101.3001.5002&articleId=103158915&d=1&t=3&u=e113e00a9de847c2b1b8371b50f270da)
499

被折叠的 条评论
为什么被折叠?



