SharedPreferences не будет сохранять / загружать в PreferenceActivity

РЕДАКТИРОВАТЬ: Проблема, описанная ниже, возникла из-за очень специфической проблемы устройства, не вызванной какой-либо проблемой, связанной с кодированием.

У меня есть preferenceActivity, в котором у меня много checkBoxPreferences. Предполагается, что checkBoxPreference сохраняет файл общих настроек по умолчанию, а затем вызывается снова, когда я открываю приложение, чтобы обновить пользовательский интерфейс.

Это происходит не так, как предполагалось. Если я закрою приложение и открою его резервную копию, мои значения останутся такими, как предполагалось, но если я использую диспетчер задач для завершения приложения или если я включаю и выключаю телефон (когда приложение не запущено), то вызываются значения по умолчанию. еще раз.

Итак, я создал SharedPreference в моем onResume (), чтобы проверить его.

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

Затем я проверяю, есть ли ключ в этом общем предпочтении.

pref.contains("myCheckBoxPreference");

Когда я закрываю и открываю его снова, он возвращает истину. если я закрываюсь с помощью диспетчера задач или выключаю и снова включаю телефон, возвращается 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, и это все равно имело тот же эффект.

И я удалил приложение с телефона, а затем включил телефон выключить и снова включить, а затем переустановить, и он все равно будет иметь тот же эффект.

14
задан tshepang 21 July 2014 в 18:24
поделиться