【发布时间】:2012-10-03 19:29:48
【问题描述】:
我将我的布尔值存储在我的偏好活动中:
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。有谁知道我做错了什么?
【问题讨论】:
-
您确定正在呼叫
editor.putBoolean("locationEnabled", true);吗?newValue.toString().trim().equals("true")的计算结果是否为真? -
是的,我确定在这两种情况下,我都使用 System.out 对其进行了测试。它存储价值但无法检索它