Значение по умолчанию для Bundle.getString(String key)

Я только заметил, что, хотя большинство получателей из Bundle имеют возможность включать значение по умолчанию, если ключ не существует в этом конкретном экземпляре пакета, getString не имеет такой возможности, возвращая null в этом случае.

Любые идеи о том, почему это так, и если есть какое-то простое решение для этого (я просто не хочу проверять каждое отдельное значение или расширять класс Bundle).

В качестве примера, прямо сейчас у вас есть только это:

bundle.getString("ITEM_TITLE");

Пока я хотел бы сделать:

bundle.getString("ITEM_TITLE","Unknown Title");

Спасибо!

Ответ 1

Вам придется обернуть его самостоятельно:

public String getBundleString(Bundle b, String key, String def)
{
    String value = b.getString(key);
    if (value == null)
        value = def;
    return value;
}

Ответ 2

Trojanfoe имеет лучшее решение, если это то, что вы хотите, но как только вы столкнетесь с дефолтами для других типов данных, вам придется сделать то же самое для всех.

Другим решением было бы проверить, содержит ли пучок ключ:

String myString = bundle.containsKey("key") ? bundle.getString("key") : "default";

Это не так хорошо, как функция, но вы всегда можете ее обернуть, если хотите.

Ответ 3

Другое решение - проверить null:

String s = bundle.getString("key");
if (s == null) s = "default";

Это лучше, чем решение csaunders, потому что Bundle может содержать соответствующий ключ, но может быть другого типа (например, int), и в этом случае его решение приведет к тому, что myString будет null вместо "default".