Я реализую экран предпочтений, который представляет собой XML-файл с тегом PreferenceScreen, раздутым в PreferenceFragment. Обычно это поддерживается SharedPreferences, однако в моей конкретной ситуации мы заменяем SharedPreferences на собственный PreferenceDataStore для некоторых настроек.
В методе Fragment onCreate мы получаем отдельные настройки и перехват. их в PreferenceDataStore.
SwitchPreference pref = (SwitchPreference) findPreference("my_boolean_preference");
pref.setPreferenceDataStore(dataStore);
Это работает нормально, за исключением того, что текущее значение игнорируется при первом отображении экрана. Как я могу получить правильное значение при первом отображении экрана. Должен ли я поместить приведенный выше код где-нибудь кроме onCreate? Нужно ли мне вызывать какое-то обновление или перепривязку?
В настоящее время я работаю над решением этой проблемы, вручную устанавливая значение сразу после вызова setPreferenceDataStore.
pref.setChecked(dataStore.getBoolean("my_boolean_preference", false));
Подробнее здесь: https://stackoverflow.com/questions/652 ... erencedata