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

当一个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` 之间传递数据。而 `Intent` 对象本身并不能直接传递复杂的数据类型,例如自定义的对象、数组、集合等,因此我们需要使用 `Bundle` 对象将这些数据类型打包后再通过 `Intent` 传递。 `Bundle` 是一个键值对数据结构,类似于 `Map`,可以用来存储不同类型的数据。我们可以通过 `put` 方法将数据存储到 `Bundle` 对象中,然后将 `Bundle` 对象通过 `putExtras()` 方法添加到 `Intent` 对象中。在接收 `Intent` 对象时,可以通过 `getExtras()` 方法获取传递过来的 `Bundle` 对象,再从 `Bundle` 对象中取出之前存储的数据。 以下是一个例子,演示了如何使用 `Bundle` 对象在 `Activity` 之间传递数据: 在发送 `Intent` 时: ```java Intent intent = new Intent(this, TargetActivity.class); Bundle bundle = new Bundle(); bundle.putString("name", "Tom"); bundle.putInt("age", 18); intent.putExtras(bundle); startActivity(intent); ``` 在接收 `Intent` 时: ```java Bundle bundle = getIntent().getExtras(); String name = bundle.getString("name"); int age = bundle.getInt("age"); ``` 可以看到,在发送 `Intent` 时,我们将一个包含字符串和整型数据的 `Bundle` 对象添加到 `Intent` 中;在接收 `Intent` 时,我们通过 `getExtras()` 方法获取传递过来的 `Bundle` 对象,并从中取出之前存储的数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值