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 /> ?

РЕДАКТИРОВАТЬ: Или эта проблема вызвана обходной путь, о котором я говорил?

Эти две ссылки суммируют мое исследование, но не было никакого решения для моей проблемы (или я просто слишком слеп, чтобы видеть):

0 ответов

Другие вопросы по тегам