bundle -- 传数据

在Android开发中,Bundle是一种用于存储键值对形式数据的容器类。它主要用于在Activity、Fragment、Service等组件间传递少量的、简单的数据。Bundle对象可以直接附加到Intent上,也可以作为onSaveInstanceState()方法的参数来保存组件状态,以便在配置变更或进程被系统回收后恢复状态。以下是Bundle的主要特性和使用方法:

主要特点:

键值对存储:Bundle内部以键值对的形式存储数据,键为String类型,值可以是基本数据类型、String、CharSequence、Parcelable对象、Serializable对象等。

轻量级:相对于其他数据结构(如JSON、数据库记录等),Bundle更为轻量,适合在短时间内快速传递和恢复数据。

与Intent紧密配合:可以直接将Bundle对象通过Intent.putExtra(Bundle)方法附加到Intent上,便于在组件间传递数据。

支持持久化:在Activity或Fragment生命周期管理中,Bundle常用于在onSaveInstanceState()方法中保存当前状态数据,然后在onCreate(Bundle)、onCreateView(Bundle)等回调中恢复这些数据。

使用方法: 
// 创建 Bundle 对象
Bundle bundle = new Bundle();
 
// 添加基本类型数据
bundle.putInt("key_integer", 123);
bundle.putString("key_string", "Hello, Bundle!");
 
// 添加复杂类型数据(如 Parcelable 对象)
MyParcelableObject myParcelable = new MyParcelableObject();
bundle.putParcelable("key_parcelable", myParcelable);
 
// 添加 Serializable 对象
MySerializableObject mySerializable = new MySerializableObject();
bundle.putSerializable("key_serializable", mySerializable);

从 Bundle 中读取数据
// 获取 Bundle 对象,例如从 Intent 或 onSaveInstanceState() 回调中
Bundle bundle = getIntent().getExtras();
 
// 读取基本类型数据
int intValue = bundle.getInt("key_integer", defaultValue);
String stringValue = bundle.getString("key_string", defaultValue);
 
// 读取 Parcelable 对象
MyParcelableObject parcelableObject = bundle.getParcelable("key_parcelable");
 
// 读取 Serializable 对象
MySerializableObject serializableObject = (MySerializableObject) bundle.getSerializable("key_serializable");
将 Bundle 附加到 Intent
// 已有 Bundle 对象
Bundle bundle = ...;
 
// 创建 Intent
Intent intent = new Intent(this, TargetActivity.class);
 
// 将 Bundle 附加到 Intent
intent.putExtra("bundle_key", bundle);
 
// 启动目标 Activity,并传递 Bundle 数据
startActivity(intent);

在目标 Activity 中,通过 getIntent().getBundleExtra("bundle_key") 获取传递过来的 Bundle 对象:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target);
 
    // 从 Intent 中获取 Bundle
    Bundle bundle = getIntent().getBundleExtra("bundle_key");
 
    // 从 Bundle 中读取数据
    // ...
}
总结:

Bundle在Android开发中作为轻量级的数据容器,主要用于组件间的数据传递和状态保存。通过使用putXXX()和getXXX()方法,可以方便地将基本类型、String、CharSequence、Parcelable对象、Serializable对象等数据存入和取出Bundle。结合Intent的使用,能够在Activity、Fragment、Service等组件间高效地传递数据。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值