ListPreference 不显示选定的值

Thi*_*Zaw 2 android

在我的设置活动中,选择 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" />
Run Code Online (Sandbox Code Playgroud)

ListPreference 的屏幕截图

Ště*_*nek 7

通过将特殊字符串%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"
        />
Run Code Online (Sandbox Code Playgroud)


Thi*_*Zaw 2

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

@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(), ""));
}
Run Code Online (Sandbox Code Playgroud)