android ListPreference不显示所选值

bvjveswy  于 2023-04-18  发布在  Android
关注(0)|答案(3)|浏览(173)

在我的设置活动中,在选择ListPreference以升序或降序排列结果列表后,所选的值不会出现在ListPreference中。下面是我的列表首选项代码。我还附上了此问题的屏幕截图。请告诉我问题所在以及我的错误。

<ListPreference
        android:title="@string/pref_calllog_sorting"
        android:key="@string/pref_calllog_sorting_descending"
        android:defaultValue="@string/pref_calllog_sorting_descending"
        android:entryValues="@array/pref_calllog_sorting_values"
        android:entries="@array/pref_calllog_sorting_options" />

vc9ivgsu

vc9ivgsu1#

通过将特殊字符串%s放入summary属性,您可以告诉Android显示所选条目。
您的XML将是

<ListPreference
        android:title="@string/pref_calllog_sorting"
        android:key="@string/pref_calllog_sorting_descending"
        android:defaultValue="@string/pref_calllog_sorting_descending"
        android:entryValues="@array/pref_calllog_sorting_values"
        android:entries="@array/pref_calllog_sorting_options"
        android:summary="%s"
        />
moiiocjp

moiiocjp2#

需要在onPostCreate(Bundle savedInstanceState)方法中调用bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_calllog_sorting_descending)));。在应用程序中添加SettingActivity时,自动创建bindPreferenceSymmaryToValue(Preference preference)方法。

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    setupActionBar();
    bindPreferenceSummaryToValue(findPreference(
            getString(R.string.pref_calllog_sorting_descending)));
}

private static void bindPreferenceSummaryToValue(Preference preference) {
    // Set the listener to watch for value changes.
    preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);

    // Trigger the listener immediately with the preference's
    // current value.
    sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
            PreferenceManager
                    .getDefaultSharedPreferences(preference.getContext())
                    .getString(preference.getKey(), ""));
}
vtwuwzda

vtwuwzda3#

只需添加app:useSimpleSummaryProvider=“true”即可

<ListPreference
            app:key="myKey"
            app:title="@string/line_type"
            app:defaultValue="line"
            app:entries="@array/type_entries"
            app:entryValues="@array/type_values"
            app:useSimpleSummaryProvider="true"/>

相关问题