📅  最后修改于: 2023-12-03 15:15:56.239000             🧑  作者: Mango
在 Android 中,Intent 是跨组件通信的重要方式。 Intent 包含了一些可以传递的数据,这些数据就是 extras。
Intent Extras 是传递给 Intent 的附加信息。它们是键值对的形式存在的。在 Intent 中使用 Bundle 来存储这些键值对。
要向 Intent 中添加 extras,可以使用 Intent 的 putExtra()
方法。
Intent intent = new Intent(context, NextActivity.class);
intent.putExtra("key", "value");
startActivity(intent);
在 NextActivity 中获取 extras,可以使用 Intent 的 getExtras()
方法。
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
}
Intent Extras 支持许多基本类型,如字符串、整数、浮点数、布尔值等。同时也支持 Serializable 和 Parcelable 对象。
public class MyClass implements Serializable {
// class body
}
public class MyParcelable implements Parcelable {
// class body
}
// 添加 extras
Intent intent = new Intent(context, NextActivity.class);
intent.putExtra("stringKey", "Hello");
intent.putExtra("intKey", 1);
intent.putExtra("booleanKey", true);
intent.putExtra("serializableKey", new MyClass());
intent.putExtra("parcelableKey", new MyParcelable());
startActivity(intent);
// 获取 extras
Bundle extras = getIntent().getExtras();
if (extras != null) {
String stringExtra = extras.getString("stringKey");
int intExtra = extras.getInt("intKey");
boolean booleanExtra = extras.getBoolean("booleanKey");
MyClass serializableExtra = (MyClass) extras.getSerializable("serializableKey");
MyParcelable parcelableExtra = extras.getParcelable("parcelableKey");
}
Intent Extras 的大小有限制,大概为 1MB 左右。如果添加的数据过多,可能会导致 TransactionTooLargeException
异常。此时,建议使用其他方式来传递数据,如存储在 SQLite 数据库或文件中。