我有一个带有一堆(子)PreferenceScreens 的 PreferenceActivity。每个这样的 (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-title 为有问题的帐户。
我已经尝试添加...
usernamePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
accScreen.setTitle(newValue.toString());
return true;
}
});
...但是 accScreen.setTitle 似乎没有在外部 PreferenceScreen 上生效。我注意到调用onContentChanged();
实际上使它起作用,但我意识到这可能不是这样做的首选方式。
我怀疑我应该postInvalidate()
在某个地方调用一些视图,但我真的不知道什么视图以及何时执行。
PreferenceScreen android:摘要更新!可能遇到和我一样的问题。
任何帮助表示赞赏。