📜  java intent extras - Java (1)

📅  最后修改于: 2023-12-03 15:15:56.239000             🧑  作者: Mango

Java Intent Extras

在 Android 中,Intent 是跨组件通信的重要方式。 Intent 包含了一些可以传递的数据,这些数据就是 extras。

什么是 Intent Extras?

Intent Extras 是传递给 Intent 的附加信息。它们是键值对的形式存在的。在 Intent 中使用 Bundle 来存储这些键值对。

如何使用 Intent Extras?

要向 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 数据库或文件中。