Как обновить предпочтение с помощью SummaryProvider в PreferenceFragmentCompat? - PullRequest
0 голосов
/ 12 июня 2019

В androidx.preference.Preference (с использованием версии 1.1.0-бета01) можно установить поставщика сводных данных, что я сделал в методе onCreatePreferences для PreferenceFragmentCompat.

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
  ...

  val mySummaryProvider = Preference.SummaryProvider<Preference> {
     val str = preferenceManager.sharedPreferences.getString(it.key, "")
     doSomethingCool(str)
  }

  findPreference<Preference>("my_pref_id").summaryProvider = mySummarProvider
}

КогдаТеперь я обновляю предпочтение (используя редактор предпочтений), пока фрагмент все еще видим, как я могу уведомить предпочтение или фрагмент о том, что поставщик сводных данных должен быть снова вызван (это не делается автоматически)?К сожалению, я не вижу никакого способа или способа сделать это.

1 Ответ

0 голосов
/ 15 июня 2019

SummaryProvider в основном предназначен для обновления сводки предпочтений после того, как оно само обновляется, например, когда выбран параметр в ListPreference, что вызывает обновление Preference и, следовательно, вызывает SummaryProvider.

Если вы обычно меняете данные в соответствии с предпочтением, вам нужен SummaryProvider здесь? Если нет, вы можете просто вручную вызвать setSummary при изменении данных, поскольку Preferences в настоящее время не наблюдает за их источником данных. Трудно сказать без примера кода, но кажется странным, что данные могут изменяться без ввода данных пользователем, пока они в данный момент просматривают предпочтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...