Обновите существующий элемент Preference в PreferenceActivity после возвращения с (под) PreferenceScreen

У меня есть PreferenceActivity с кучей (Sub) PreferenceScreens. Каждый такой (Sub) PreferenceScreen представляет учетную запись и имеет имя учетной записи-пользователя в качестве заголовка.

PreferenceScreen root = mgr.createPreferenceScreen(this);
for (MyAccountClass account : myAccounts) {
    final PreferenceScreen accScreen = mgr.createPreferenceScreen(this);

    accScreen.setTitle(account.getUsername());

    // add Preferences to the accScreen
    // (for instance a "change username"-preference)
    ...

    root.add(accScreen);
}

Когда пользователь вводит sub-PreferenceScreen и редактирует имя пользователя учетной записи, я хочу, чтобы внешний PreferenceScreen обновил свой заголовок PreferenceScreen для рассматриваемой учетной записи.

Я пытался добавить ...

usernamePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        accScreen.setTitle(newValue.toString());
        return true;
    }
});

... но accScreen.setTitle, похоже, не влияет на внешний PreferenceScreen. Я заметил, что звонитьonContentChanged(); на самом деле заставляет это работать, но я понимаю, что это, вероятно, не предпочтительный способ сделать это.

Я подозреваю, что я должен позвонитьpostInvalidate() где-то где-то, но я действительно не могу понять, что и когда делать.

PreferenceScreen android: сводное обновление! возможно, испытывает ту же проблему, что и я.

Любая помощь приветствуется.

Ответы на вопрос(8)

Ваш ответ на вопрос