我有一个首选项屏幕(Fragment
),它有一些从xml文件设置的首选项。我在Fragment
中调用的唯一内容是onCreate方法中的addPreferencesFromResource(R.xml.pref_main);
。
现在,除了"摘要"我的偏好中的部分,例如,如果您有一个EditTextPreference并输入了一些文本,那么该文本应该在首选项下以较小的字母显示。
我使用自定义控件作为首选项(但它也不适用于任何官方首选项),这扩展了DialogPreference
。如果我像这样设置摘要:
@Override
protected void onDialogClosed(boolean positiveResult) {
if (positiveResult) {
setSummary("Some summary");
}
}
它有效,但只要我不离开屏幕,当我返回时它不再存在。 有什么想法吗?
答案 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());
}
}