DefaultValue для <preference /> не сохраняется, PreferenceManager игнорирует его?
Возможно, вопрос очень тривиальный, и мои навыки работы с Google недостаточно хороши, но я не смог найти решения для следующей проблемы.
Я создал PreferenceFragment, который совместим с android-support-library с помощью этого обходного пути. Он отлично работает и был очень прост в реализации.
При открытии этого фрагмента (в onCreate()
) текущее значение каждого предпочтения будет показано в сводке объекта предпочтения с помощью:
preference.setSummary(stringValue);
Это хорошо работает для всех EditTextPreference
, ListPreference
и - с простым добавлением - для CheckboxPreference
, тоже. Но у меня есть другое предпочтение:
<Preference
android:key="minInputLength"
android:defaultValue="@integer/numberPickerInputLengthDefaultValue"
android:title="@string/minInputLength"/>
Когда кэш приложения пуст и onCreate
метод вызван, сводка этого и только этого предпочтения пуста, хотя я вызвал этот метод:
PreferenceManager.setDefaultValues(this, R.layout.fragment_settings, true);
в основной деятельности. В противном случае резюме всех других предпочтений также будут пустыми.
Приведенное выше предпочтение просто открывает диалог, который содержит простой NumberPicker в своей области содержимого. Если я изменю значение в NumberPicker и выйду из диалогового окна, нажав на кнопку PositiveButton, сводка этого предпочтения изменится, как и ожидалось. Если я очищаю кеш и снова открываю фрагмент, резюме снова пусто.
Поэтому я попытался выяснить, почему и отобразил все SharedPreferences через LogCat и понял, что это и только это предпочтение отсутствует. Вот почему я спрашиваю себя: игнорирует ли PreferenceManager defaultValue, объявленное в xml, <preference />
?
РЕДАКТИРОВАТЬ: Или эта проблема вызвана обходной путь, о котором я говорил?
Эти две ссылки суммируют мое исследование, но не было никакого решения для моей проблемы (или я просто слишком слеп, чтобы видеть):