我将我的布尔值存储在我的偏好活动中:
OnPreferenceChangeListener locaListener = new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
if(newValue.toString().trim().equals("true")){
editor.putBoolean("locationEnabled", true);
}else if (newValue.toString().trim().equals("false")){
editor.putBoolean("locationEnabled", false);
}
editor.commit();
return true;
}
};
并尝试在我的主要活动中检索它:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean prefLocationEnabled = prefs.getBoolean("locationEnabled", false);
相同的方法与字符串工作完美,但使用布尔值似乎总是返回默认值为false。谁知道我做错了什么?
答案 0 :(得分:1)
在保存时调用getPreferences(MODE_PRIVATE)并在加载时调用PreferenceManager.getDefaultSharedPreferences(this);
我认为这不是同样的偏好。只使用其中一个
答案 1 :(得分:0)
试试这段代码。如果你给出参数如true或false,它将返回你给出的值。
Boolean tmp = null;
tmp = sharedPreferences.getBoolean("key", tmp.getBoolean(""));
它为您提供了所获得的价值。