android首选项返回默认摘要

android首选项返回默认摘要,android,android-activity,fragment,preference,summary,Android,Android Activity,Fragment,Preference,Summary,我目前正在使用带有片段的首选项活动。我在定义这些首选项的xml文件中使用android:summary来为用户设置解释性标题,然后在用户更改首选项值且一切正常时设置每个首选项的摘要。 但是,当用户在任何EditTextPreference中清除他/她的选择时,我希望显示来自xml标记android:summary的解释文本。我怎样才能做到这一点 提前谢谢你的帮助。好的,我想好了。 只需为每个名为key_summary的首选项添加一个资源字符串,并将其用作定义首选项的xml文件中的android:

我目前正在使用带有片段的首选项活动。我在定义这些首选项的xml文件中使用android:summary来为用户设置解释性标题,然后在用户更改首选项值且一切正常时设置每个首选项的摘要。 但是,当用户在任何EditTextPreference中清除他/她的选择时,我希望显示来自xml标记android:summary的解释文本。我怎样才能做到这一点

提前谢谢你的帮助。

好的,我想好了。 只需为每个名为key_summary的首选项添加一个资源字符串,并将其用作定义首选项的xml文件中的android:summary。 然后在onSharedPreferenceChanged函数中,只需加载相应的字符串作为摘要,如下所示:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
    Preference preference = findPreference(key);
    if(preference instanceof EditTextPreference)
    {
        EditTextPreference editPref = (EditTextPreference)preference;
        String szPref = editPref.getText();
        if(null!=szPref&&0<szPref.length())
            editPref.setSummary(szPref);
        else
        {
            Activity activity = getActivity();
            int nSummary = getResources().getIdentifier(key + "_summary", "string", activity.getPackageName());
            if(0<nSummary)
                editPref.setSummary(getString(nSummary));
            else
                editPref.setSummary(szPref);
        }
    }
}

您应该在strings.xml中将默认summary设置为字符串资源,并且您可以随时将其设置回原来的值。是的,但是我的类是用于每个EditTextPreference的通用类,我有很多这样的类。我不打算在这个类中添加一个特定的条目来获取每个条目对应的字符串。我想要一个更通用的方法来做这件事。。。类似于setSummarygetDefaultSummary…: