2015-05-21 4 views
1

Говорите в версии 1, у меня нет этого значения SharedPreference. Теперь я вручную обновил APK до версии 2. После этого я снова загружу свой телефон. Однако, когда я создавал файл .xml, который был создан, он устанавливается как false.Значение по умолчанию SharedPreference установлено странно

SharedPreference, как показано ниже:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    boolean optimus = prefs.getBoolean("prime", true); 

Я думал getBoolean устанавливает значение в качестве значения по умолчанию, оно не существует (что не делает это первый раз, когда он инициализируется.).

Этот xml-файл совершенно новый, и его раньше не существовало.

Почему это происходит? Есть ли какое-то привычное поведение в Android, которое мне не хватает?

ответ

0

getBoolean(key, defaultValue) возвращает defaultValue программно, когда это утверждение Java выполняется, если нет значения в файле XML для данного ключа, так что вы не найдете DefaultValue в файле XML вы говорите, если вы звоните prefs.edit().putBoolean(key, myValue).apply()

Edit: другими словами, prefs.getBoolean("prime", true) всегда будет возвращать true, если вы когда-то называли prefs.edit().putBoolean("prime", false).apply() в любой момент времени (с момента вы установили первую версию приложения и при условии, что вы никогда не удалили его или очистили данные).

+0

так, что это значение устанавливается как, когда я использую это логическое значение: если сказать (Оптимус == TRUE) запуска() он не будет выполнять Run(), правильно? – JavaChipMocha

+0

Проверьте измененный ответ. И чтобы ответить на вопрос в комментарии, 'if (optimus == true)', который может быть упрощен до 'if (optimus)' будет true, а 'run()' будет выполняться нормально **, если ** вы не отредактировали общие настройки и установить 'prime' в' false' явно. – Karim

0

Если вы обновите приложение (без предварительной деинсталляции), оно сохранит предпочтение, установленное в предыдущей версии. Так что если "prime" был установлен в false ранее в старой версии, то он по-прежнему будет false в новой версии, если только старая версия не будет удалена, прежде чем устанавливать новую. Удаление удалит старый XML-файл предпочтений.

Кроме того, при перезагрузке вашего телефона не будут устранены предпочтения.

Смежные вопросы