在我的设置活动中,选择 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)

通过将特殊字符串%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)
需要调用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)
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |