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());

NullPointerException当您在空引用上调用方法时,这将抛出一个。

您需要传入一个有效值boolean,例如

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