Ваша проблема в том, что вы генерируете новый объект Editor при каждом вызове sp.edit ().Таким образом, ваш вызов sp.edit (). Commit () создает новый редактор, в котором нет изменений для фиксации.Попробуйте это:
private void savePreferences() {
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(DISABLE_CHECK, isDisableCodeCheck);
editor.putBoolean(ALWAYS_CONFIRM, isAlwaysAskForConf);
editor.putBoolean(NEVER_CONFIRM, isNeverAskForConf);
editor.putBoolean(SHOW_NOTIFICATION, isShowNotif);
editor.putBoolean(SHOW_ON_BOOT, isShowAtBoot);
editor.putBoolean(HIDE_ICON, isHideIcon);
editor.putBoolean(LOGGING, isLogging);
editor.commit();
}
В качестве альтернативы, методы редактора предназначены для цепочки, поэтому это также будет работать:
private void savePreferences() {
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0)
prefs.edit().putBoolean(DISABLE_CHECK, isDisableCodeCheck)
.putBoolean(ALWAYS_CONFIRM, isAlwaysAskForConf)
.putBoolean(NEVER_CONFIRM, isNeverAskForConf)
.putBoolean(SHOW_NOTIFICATION, isShowNotif)
.putBoolean(SHOW_ON_BOOT, isShowAtBoot)
.putBoolean(HIDE_ICON, isHideIcon)
.putBoolean(LOGGING, isLogging)
.commit();
}
У вас есть та же проблема в вашем тестовом коде, который можетбыть исправлено так:
@Override
public void onStop() {
super.onStop();
SharedPreferences sp = getSharedPreferences("pref", 0);
sp.edit().putString("setting2", s).commit();
}