【问题标题】:Setting a preference screen summary from switch preference state从切换首选项状态设置首选项屏幕摘要
【发布时间】:2015-07-13 04:05:44
【问题描述】:

我正在尝试动态更新嵌套子选项的特定首选项屏幕摘要(此首选项屏幕有它自己的键名)。我的目标是首选项屏幕摘要应通过其子视图或嵌套视图中的开关首选项状态进行更新。我尝试使用此处的指南How to listen for preference changes within a PreferenceFragment?,但这仅显示了如何动态更新特定的关键引用。

是否有任何指针可以为带有键名的特定偏好屏幕实现此实现?

【问题讨论】:

    标签: android


    【解决方案1】:

    您需要将 newValue 转换为布尔值并设置摘要,如代码所示。

    Preference pref = findPreference(getString(R.string.key_of_pref));
    PreferenceScreen parent = (PreferenceScreen) sf.findPreference("prefs_root");
    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;
      }
    });
    

    【讨论】:

    • 看来你没听懂我的问题。抱歉不清楚。我的问题是使用开关首选项的状态更新首选项屏幕摘要,而不是更新开关首选项摘要@Bojan
    • 我添加了一些代码。在 onPreferenceChange 监听器 中使用此代码
    • Parent.setSummary() 内部没有Parent.setSummary() 的实例@bojan
    • 你需要在外面做一个变量,然后在里面使用。 PreferenceScreen parent = (PreferenceScreen) sf.findPreference("prefs_root");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多