0

私は Android の SharedPreference.getBoolean で本当にイライラする問題を抱えています。次のスニペットを参照してください。

Map<String, ?> all = preferences.getAll();

Object x = all.get("EnableMedia");

boolean v = preferences.getBoolean("EnableMedia", (Boolean) null);

「x」がブール値であり、真であることをデバッガーで確認できます。

しかし、次の行、preferences.getBoolean を実行すると、例外がスローされます。何が得られる?!

4

1 に答える 1

4

この呼び出しを見てください:

preferences.getBoolean("EnableMedia", (Boolean) null);

の署名を見てくださいgetBoolean

public abstract boolean getBoolean (String key, boolean defValue)

boolean値ではなく、値であることに注意してくださいBoolean。実際に何が起こっているかというと、コードは次のようなものです。

Boolean tmp = null;
preferences.getBoolean("EnableMedia", tmp.booleanValue());

null 参照でメソッドを呼び出しているため、がスローNullPointerExceptionされます。

boolean有効な値を渡す必要があります。

preferences.getBoolean("EnableMedia", true);
于 2012-04-11T05:52:11.587 に答える