首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreferenceScreen android:摘要更新!

PreferenceScreen android:摘要更新!
EN

Stack Overflow用户
提问于 2010-03-07 20:00:53
回答 6查看 7.9K关注 0票数 14

在我的android应用程序中,我有一个有3个CheckBoxPreferences作为孩子的PreferenceScreen父对象。

当我单击父preferenceScreen,并显示3个复选框时,我选择其中一个复选框,并在与复选框关联的Preference.OnPreferenceChangeListener中,使用以下命令设置父preferenceScreen摘要:

代码语言:javascript
复制
Parent.setSummary("string depending on the selection")

问题是,当我返回到父对象时,它的摘要不会更新,即使内部的值已经相应地更改为设置的值。

有没有人知道这种行为?

EN

回答 6

Stack Overflow用户

发布于 2013-03-08 04:59:52

使用

代码语言:javascript
复制
Parent.setSummary("string depending on the selection");
((BaseAdapter)getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();

它像一个护身符,无论您在哪里更改摘要,都可以使用它。

票数 14
EN

Stack Overflow用户

发布于 2015-05-04 22:45:53

这是正确的方式

代码语言:javascript
复制
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;
  }
});
票数 2
EN

Stack Overflow用户

发布于 2010-08-03 10:05:44

通过使用getListView().invalidate()跟踪setSummary(),我发现它似乎是有效的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2396153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档