PreferenceGroup的summary没有自动更新的问题

写了一个PreferenceActivity,层次是这样的:

PreferenceScreen(BEGIN-END)

--EditTextPreference(BEGIN)

--EditTextPreference(END )

EditTextPreference

在BEGIN的值改变后,在它的OnPreferenceChangeListener里更改BEGIN的summary和B-E的summary(注意到,在更改BEGIN的时候B-E是不可见的,需要按下返回键回到B-E这个层次的界面),但是只有BEGIN的summary更新了。

查了资料,在下面的链接里找到了相应的讨论:

http://code.google.com/p/android/issues/detail?id=931

调用PreferenceActivity的onContentChanged就可以更新B-E的summary。

另外,要实现更新Preference,比较推荐的做法不是使用某一个Preference的OnPreferenceChangeListener,而是在PreferenceActivity实现OnSharedPreferenceChangeListener集中处理。

    @Override
    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }
   
    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);   
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        if(0 == key.compareTo(sleepBeginKey) || 0 == key.compareTo(sleepEndKey)) {
            playTime.setSummary(sleepBegin + "-" + sleepEnd);
            onContentChanged();
        }
    }

原文地址:https://www.cnblogs.com/zhengwenwei/p/2027633.html