我在Android中的SharedPreference.getBoolean遇到了一个非常令人沮丧的问题。请参阅以下代码段:
Map<String, ?> all = preferences.getAll();
Object x = all.get("EnableMedia");
boolean v = preferences.getBoolean("EnableMedia", (Boolean) null);
我可以在调试器中看到“ x”是布尔值,它是真的。
但是,如果我执行下一行preferences.getBoolean,它将引发异常。是什么赋予了?!
最佳答案
看一下这个电话:
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);