在androidx.preference.Preference
(使用1.1.0-beta01版)中,可以设置摘要提供程序,这是我在onCreatePreferences
的{{1}}方法内完成的。
PreferenceFragmentCompat
当我现在(仍使用片段编辑器)在该片段仍可见的情况下更新该偏好时,如何通知该偏好或片段该摘要提供者应再次调用(不会自动完成)?不幸的是,我看不到任何方法或方法。
答案 0 :(得分:0)
SummaryProvider
主要用于在更新首选项摘要之后用于更新首选项摘要,例如,当选择ListPreference
中的选项时,会强制更新{{1} },并因此触发Preference
。
如果通常是在首选项下更改数据,这里是否需要SummaryProvider
?如果没有,您可以在更改数据时手动调用SummaryProvider
,因为setSummary
当前没有观察到其备份数据源。没有更多的示例代码很难说,但奇怪的是,当用户当前正在查看首选项时,如果没有用户的输入,数据就可以更改。
答案 1 :(得分:0)
public class SettingsClass extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings_prefs);
final SwitchPreferenceCompat switchPreferenceCompat = (SwitchPreferenceCompat) getPreferenceManager().findPreference("rememberME");
switchPreferenceCompat.setSummaryProvider(new Preference.SummaryProvider() {
@Override
public CharSequence provideSummary(Preference preference) {
if (switchPreferenceCompat.isChecked()) {
return "Active";
}
return "Inactive";
}
});
}}
//.xml file
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:key="test">
<PreferenceCategory android:title="Σύνδεση">
<SwitchPreferenceCompat
app:key="rememberME"
android:defaultValue="false"
app:title="Παραμείνετε Συνδεδεμένος" />
</PreferenceCategory>
</PreferenceScreen>
答案 2 :(得分:0)
我在理解此问题时遇到了一些麻烦,但是我只会使用setSummaryProvider来更新摘要,并使用ChangeListener来更新其他内容:
with(findPreference<ListPreference>(PREFKEY_DOWNLOAD_SERVER)!!) {
setSummaryProvider { pref ->
getString(R.string.pref_download_server_summary, (pref as ListPreference).value)
}
setOnPreferenceChangeListener { _, newValue -> DataLoader.setSelectedServer(newValue as String); true }
}