首选项未在PreferenceFragment中显示摘要

时间:2014-08-24 16:54:56

标签: android android-fragments android-preferences

我有一个首选项屏幕(Fragment),它有一些从xml文件设置的首选项。我在Fragment中调用的唯一内容是onCreate方法中的addPreferencesFromResource(R.xml.pref_main);

现在,除了"摘要"我的偏好中的部分,例如,如果您有一个EditTextPreference并输入了一些文本,那么该文本应该在首选项下以较小的字母显示。

我使用自定义控件作为首选项(但它也不适用于任何官方首选项),这扩展了DialogPreference。如果我像这样设置摘要:

@Override
protected void onDialogClosed(boolean positiveResult) {
    if (positiveResult) {
        setSummary("Some summary");
    }
}

它有效,但只要我不离开屏幕,当我返回时它不再存在。 有什么想法吗?

1 个答案:

答案 0 :(得分:5)

首选项屏幕不会自动显示摘要数据。你需要在代码中完成它。这是您可以在onCreate()方法中使用的代码片段。在致电addPreferencesFromResource(R.xml.pref_main);

后添加
for(int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
    initializeSummary(getPreferenceScreen().getPreference(i));
}

initializeSummary()方法是这样的:

private void initializeSummary(Preference p)
{
    if(p instanceof ListPreference) {
        ListPreference listPref = (ListPreference)p;
        p.setSummary(listPref.getEntry());
    }
    if(p instanceof EditTextPreference) {
        EditTextPreference editTextPref = (EditTextPreference)p;
        p.setSummary(editTextPref.getText());
    }
}