如何使用 PreferenceFragmentCompat 中的 SummaryProvider 更新首选项?

Zar*_*doz 7 android android-preferences sharedpreferences

androidx.preference.Preference(使用版本1.1.0-beta01),可以设置一个摘要提供商,这是我的内部确实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
}
Run Code Online (Sandbox Code Playgroud)

当我现在更新首选项(通过使用首选项编辑器)而片段仍然可见时,如何通知首选项或片段应再次调用摘要提供程序(它不会自动完成)?不幸的是,我没有看到任何方法或方式来做到这一点。

小智 2

SummaryProvider主要用于在更新自身后更新首选项的摘要,例如当ListPreference选择 a 中的选项时,强制更新Preference并因此触发SummaryProvider.

如果您通常要更改首选项下的数据,是否需要此处SummaryProvidersetSummary如果没有,您可以在更改数据时手动调用,因为Preferences当前不观察其支持数据源。如果没有更多示例代码,很难说清楚,但奇怪的是,当用户当前正在查看首选项时,数据可以在没有用户输入的情况下发生更改。