ListPreference不显示所选值

时间:2014-09-24 15:47:31

标签: 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"/>Screenshot for ListPreference

2 个答案:

答案 0 :(得分:2)

需要调用bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_calllog_sorting_descending)));在onPostCreate(Bundle savedInstanceState)方法中。 bindPreferenceSymmaryToValue(首选项首选项)方法在应用程序中添加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(), ""));
}

答案 1 :(得分:1)

通过将特殊字符串%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"
        />