我在android中遇到了一个非常令人沮丧的问题,使用了SharedPreference.getBoolean。请参阅以下代码段:
Map<String, ?> all = preferences.getAll();
Object x = all.get("EnableMedia");
boolean v = preferences.getBoolean("EnableMedia", (Boolean) null);
我可以在调试器中看到&#39; x&#39;是一个布尔值,它是真的。
然而,如果我执行下一行preferences.getBoolean,它会抛出异常。是什么给了什么?!
答案 0 :(得分: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);