Android应用偏好无效

时间:2011-12-26 12:57:20

标签: android sharedpreferences

我已为我的应用实施了一些应用偏好设置。对于字符串,它们工作得很好,但不适用于布尔值。 E.g。

public class MdSharedPrefs {
    public final static String PREFS_NAME = "prefs";

    public static boolean getSSFlag(Context context) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);

        return prefs.getBoolean(context.getString(R.string.pref_key_ss), false);
    }

    public static void setSSFlag(Context context, boolean newValue) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
        Editor prefsEditor = prefs.edit();
        prefsEditor.putBoolean(context.getString(R.string.pref_key_ss),
                newValue);
        prefsEditor.commit();
    }

}

这需要

<string name="pref_key_ss"></string>
在strings.xml中

。当我删除这一行时,项目不会编译。但是当我离开它时,这个布尔pref不起作用。当我单击它并返回主屏幕然后返回到首选项时,不会检查该值。

但对于字符串,它可以正常工作。

任何想法都错了吗?

1 个答案:

答案 0 :(得分:2)

在我的应用程序中,我正在使用这样的工作正常

声明

 private static final String SUNDAY_ON = "sunday_selected";

获得

 state = prefs.getBoolean(SUNDAY_ON, false);

像这样存储

 editor.putBoolean(SUNDAY_ON, value);