Bundle(使用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");
注意:对于默认值(defaultValue
),请根据实际数据类型为其指定合适的值。
将 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
等组件间高效地传递数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!