在我的设置活动中,选择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
答案 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"
/>