Я ценю вашу помощь, но фактическая проблема в моем случае была из-за неисправного устройства.

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

У меня есть 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, и все равно имело тот же эффект.

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

Ответы на вопрос(7)

Ваш ответ на вопрос