【问题标题】:Change summary when returning from nested PreferenceScreen从嵌套的 PreferenceScreen 返回时更改摘要
【发布时间】:2011-07-20 01:03:28
【问题描述】:

我有一个带有嵌套 PreferenceScreen 的 PreferencesActivity,因此 PreferenceScreen 在首选项列表中有自己的行,当您单击它时,您会看到更多选项。

当用户更改其中一个选项时,我会更新该选项的摘要以显示用户选择的内容。

我还想更改主列表上 PreferenceScreen 的摘要以显示其子设置的值。我正在使用 OnSharedPreferenceChangeListener 一次更新两个摘要。但是,只有首选项的摘要会发生变化,而不是首选项屏幕的摘要。

这里是简化的代码:

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals(SUB_PREFERENCE)){
        updateSubPreferenceSummary(); //works
        updatePreferenceScreenSummary(); //doesn't work
    } else if (key.equals(SOME_OTHER_PREF_IN_ROOT_OF_PREFERENCEACTIVITY) {
        updatePreferenceScreenSummary(); //works. (not what I want--just illustrating issue)
    }
}

我的理论是,Android 在第一个屏幕不可见时会忽略它,因此不会更新。我尝试覆盖 onBackPressed(),但这也不起作用。

【问题讨论】:

    标签: android


    【解决方案1】:

    我找到了解决方法。显然,摘要正在更新,但父屏幕的视图并未失效/重绘。

    所以我在更新摘要后这样做:

    mHandler.post(new Runnable(){
                public void run(){onContentChanged();
            }});
    

    我把它放在 Handler 中只是作为预防措施,因为我不确定 onSharedPreferenceChanged() 是从哪个线程调用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多