РЕДАКТИРОВАТЬ: Проблема, описанная ниже, объясняется очень необычной проблемой устройства, не вызванной какой-либо проблемой, связанной с кодированием.
У меня есть preActivity, в которой у меня есть много checkBoxPreferences. Функция checkBoxPreference должна сохранять файл общих настроек по умолчанию, а затем сновазываться при открытии приложения для обновления пользовательского интерфейса.
Это не так, как предполагают. Если я закрою приложение и откройте его, мои значения останутся такими, какими они и есть, но если я использую диспетчер задач для завершения приложения или если я включу телефон (когда приложение не будет запущено), тогда будут вызваны значения по умолчанию еще раз.
Итак, я создал SharedPreference в моем onResume(), чтобы проверить его.
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Затем я проверяю, есть ли ключ в этой sharedpreference.
pref.contains("myCheckBoxPreference");
Когда я закрываю и открываю его, он возвращает true. если я закрою с диспетчером задач или выключим питание, выключите и снова включите телефон, затем верните false.
Итак, я попытался вручную установить SharedPreference
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("myCheckBoxPreference", myCheckBoxPreference.isChecked());
editor.commit();
а затем я назвал это, когда значение checkboxpreference изменилось. Я также пробовал называть его onStop и onPause. Тем не менее, если я закрою приложение и откройте его обратно, pref.contains вернет true, но если я выключу и снова включу телефон, он вернет false.
Поэтому я попытался использовать файл SharedPreferences.
В объявлении класса:
public static final String PREFS = "prefs";
И в onResume():
SharedPreferences pref = this.getSharedPreferences(PREFS, 0);
То же поведение, pref.contains по-прежнему возвращает true, если я просто закрываю приложение и открываю его обратно, но он возвращает false, если я выключил и снова включил телефон.
Затем я попытался изменить значение ключа myCheckBoxPreference на то, что НЕ соответствовало xml-ключу для CheckBoxPreference, и оно все равно имело тот же эффект.
И я удалил приложение с телефона, затем выключил и снова включил телефон, а затем снова установил его, и он по-прежнему имеет тот же эффект.