Tôi có một PreferenceActivity với một bó (Sub) PreferenceScreens. Mỗi PreferenceScreen như vậy (Sub)Screen đại diện cho một tài khoản và có tên tài khoản là tên của nó.Cập nhật mục ưu tiên hiện tại trong một PreferenceActivity khi trở về từ một (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);
}
Khi người dùng nhập vào tiểu PreferenceScreen, và chỉnh sửa các sử dụng tên tài khoản, tôi muốn PreferenceScreen ngoài để cập nhật nó PreferenceScreen-tiêu đề cho tài khoản trong câu hỏi.
Tôi đã cố gắng thêm ...
usernamePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
accScreen.setTitle(newValue.toString());
return true;
}
});
... nhưng accScreen.setTitle dường như không có hiệu lực trên PreferenceScreen bên ngoài. Tôi đã lưu ý rằng việc gọi onContentChanged();
thực sự làm cho nó hoạt động, nhưng tôi nhận ra rằng điều này có lẽ không phải là cách ưa thích để làm điều đó.
Tôi nghi ngờ tôi nên gọi postInvalidate()
trên một số chế độ xem ở đâu đó, nhưng tôi thực sự không thể tìm ra chế độ xem và thời điểm thực hiện.
PreferenceScreen android:summary update ! có thể gặp phải vấn đề tương tự như tôi.
Bất kỳ trợ giúp nào được đánh giá cao.
Wow, nghe có vẻ giống như con đường để đi. Tôi không có SDK Android được cài đặt vào lúc này, nhưng tôi sẽ nhận lời của bạn vì nó hoạt động. Tuyệt quá! – aioobe
Giải pháp tốt cho lỗi - cảm ơn! – James
điều này cũng sẽ đặt lại tất cả các thay đổi được thực hiện cho tùy chọn trong phân đoạn ưu tiên (ví dụ như người nghe) sau khi gọi! (hoặc trong các thay đổi từ khác được thực hiện từ gọi này cho đến khi nó sẽ hoàn thành xây dựng lại xem sẽ bị mất :)) – ceph3us