Bundle
からのゲッターのほとんどはデフォルト値を含めることができますが、その特定のバンドルインスタンスにキーが存在しない場合、getString
は存在しないことに気づきました。その可能性があり、その場合はnullを返します。
理由とそれに対する簡単な解決策があるかどうかについてのアイデアはあります(簡単に言うと、個々の値をチェックしたり、Bundle
クラスを拡張したりする必要がないことを意味します)。
例として、今あなたはこれだけを持っています:
bundle.getString("ITEM_TITLE");
私がしたい間:
bundle.getString("ITEM_TITLE","Unknown Title");
ありがとう!
自分でラップする必要があります。
public String getBundleString(Bundle b, String key, String def)
{
String value = b.getString(key);
if (value == null)
value = def;
return value;
}
Trojanfoeは、それが必要な場合に最適なソリューションを提供しますが、他のデータ型のデフォルトを処理するようになると、それらすべてに対して同じことを行う必要があります。
別の解決策は、バンドルにキーが含まれているかどうかを確認することです。
String myString = bundle.containsKey("key") ? bundle.getString("key") : "default";
関数ほど良くはありませんが、必要に応じていつでもラップできます。
注: http://developer.Android.com/reference/Android/os/Bundle.html
public String getString (String key, String defaultValue)
以来:APIレベル12
編集この関数はBaseBundleに移動しました: ここ
別の解決策は、null
をチェックすることです。
String s = bundle.getString("key");
if (s == null) s = "default";
Bundle
にはそれぞれのキーを含めることができますが、異なるタイプ(たとえば、int
)にすることができるため、これはcsaundersのソリューションよりも優れています。その場合、彼のソリューションはmyString
は、"default"
ではなくnull
になります。