使用Bundle在Activity之间传递数据(Activity之间数据传递)

本文详细介绍了在Android应用中如何使用Intent在不同Activity间传递数据,包括使用Bundle包装数据、序列化对象及从Intent中获取数据的方法。

当一个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接口。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值