安卓偏好设置。如何强制更新设置了 SummaryProvider 的首选项摘要?

标签 android kotlin sharedpreferences preferencefragment edittextpreference

我使用 SimpleSummaryProvider 修改了 EditTextPreference:

<NumberPreference
    android:key="pref_key"
    android:defaultValue="0"
    android:title="Some title"
    app:useSimpleSummaryProvider="true"/>

如果我以编程方式更改此首选项(例如在 onSharedPreferenceChanged 事件中),则图形界面中的摘要将不会更新。有没有办法通知首选项小部件它需要再次读取该值并将其显示在摘要中?无需手动为摘要分配特定值?

我正在使用 PreferenceFragmentCompat 和修改后的 EditTextPreference 以及修改后的 EditTextPreferenceDialogFragmentCompat

最佳答案

我查看了 Android 源代码 ( EditTextPreferenceDialogFragmentCompat.java ) - 用于更改设置的对话框如何通知 EditTextPreference 有关值更改的信息。也做了并且有效:)

if (editTextPreference().callChangeListener(value)) {
    editTextPreference().setText(value);
}

关于安卓偏好设置。如何强制更新设置了 SummaryProvider 的首选项摘要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974704/

相关文章:

java - 在 Kotlin 中覆盖 Java @Nullable varargs 方法,IDE 提示它没有覆盖任何内容

android - 如何检查 SharedPreferences 中是否存在数据

android - 处理 UI 事件的最佳实践

android - 为什么尝试更改 TextView 或在 timerTask 中显示 toast 会卡住我的应用程序?

android - 为什么在位置 ==2 时调用 destroyItem? android pagerAdapter

gradle - Kotlintest 中的数据表测试 - 高级方法名称和测试用例的传播

Android "remembers"应用程序完全卸载后的共享首选项

java - Android 内部存储 VS 共享首选项

android - 如何防止 Volley 请求重试?

Android:下载时播放 mp4 文件,但选择 "Video"时播放器得到 "Cannot play video"