从共享首选项获取布尔值始终返回false

时间:2012-10-03 19:29:48

标签: android sharedpreferences

我将我的布尔值存储在我的偏好活动中:

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。谁知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

在保存时调用getPreferences(MODE_PRIVATE)并在加载时调用PreferenceManager.getDefaultSharedPreferences(this);

我认为这不是同样的偏好。只使用其中一个

答案 1 :(得分:0)

试试这段代码。如果你给出参数如true或false,它将返回你给出的值。

Boolean tmp = null;
tmp = sharedPreferences.getBoolean("key", tmp.getBoolean(""));

它为您提供了所获得的价值。