0

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

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。有人知道我在做什么错吗?

4

2 回答 2

1

一旦你在保存和加载时调用 getPreferences(MODE_PRIVATE),你就调用 PreferenceManager.getDefaultSharedPreferences(this);

我认为这不是相同的偏好。仅使用其中一种

于 2012-10-03T19:40:35.363 回答
0

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

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

它给你你得到的价值。

于 2013-07-05T15:05:52.427 回答