在我的android应用程序中,我有一个有3个CheckBoxPreferences作为孩子的PreferenceScreen父对象。
当我单击父preferenceScreen,并显示3个复选框时,我选择其中一个复选框,并在与复选框关联的Preference.OnPreferenceChangeListener中,使用以下命令设置父preferenceScreen摘要:
Parent.setSummary("string depending on the selection")问题是,当我返回到父对象时,它的摘要不会更新,即使内部的值已经相应地更改为设置的值。
有没有人知道这种行为?
发布于 2013-03-08 04:59:52
使用
Parent.setSummary("string depending on the selection");
((BaseAdapter)getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();它像一个护身符,无论您在哪里更改摘要,都可以使用它。
发布于 2015-05-04 22:45:53
这是正确的方式
Preference pref = findPreference(getString(R.string.key_of_pref));
PreferenceScreen parent = (PreferenceScreen) sf.findPreference(getString(R.string.key_of_preference_screen));
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean newValueBool = (Boolean) newValue;
parent.setSummary(newValueBool ? "Summary is true" : "Summary is false");
((BaseAdapter) getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();
// true to update the state of the Preference with the new value
// in case you want to disallow the change return false
return true;
}
});发布于 2010-08-03 10:05:44
通过使用getListView().invalidate()跟踪setSummary(),我发现它似乎是有效的
https://stackoverflow.com/questions/2396153
复制相似问题