私は(サブ)PreferenceScreensの束を持つPreferenceActivityを持っています。このような (Sub)PreferenceScreen はそれぞれアカウントを表し、そのタイトルとして account-username を持ちます。
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:まとめ更新!私と同じ悩みを抱えているかもしれません。
どんな助けでも感謝します。