我已为我的应用实施了一些应用偏好设置。对于字符串,它们工作得很好,但不适用于布尔值。 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不起作用。当我单击它并返回主屏幕然后返回到首选项时,不会检查该值。
但对于字符串,它可以正常工作。
任何想法都错了吗?
答案 0 :(得分:2)
在我的应用程序中,我正在使用这样的工作正常
声明
private static final String SUNDAY_ON = "sunday_selected";
获得
state = prefs.getBoolean(SUNDAY_ON, false);
像这样存储
editor.putBoolean(SUNDAY_ON, value);