Обновите существующий элемент 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: сводное обновление! возможно, испытывает ту же проблему, что и я.
Любая помощь приветствуется.