tôi nghĩ câu hỏi liên quan nhiều hơn đến lý do tại sao
PreferenceManager.getDefaultSharedPreferences(this).getAll()
đang trả về một bản đồ trống / mâu thuẫn với cách lặp qua bản đồ java tiêu chuẩn. các doc android là không thực sự tinh thể rõ ràng về những gì đang xảy ở đây nhưng về cơ bản nó có vẻ như các cuộc gọi đầu tiên để
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
- đó là những gì bạn phải gọi để khởi tạo tùy chọn khi bạn khởi động ứng dụng của mình - tạo một số loại phiên bản tùy chọn được lưu trong bộ nhớ cache khiến các thay đổi trong tương lai đối với tệp tùy chọn xml của bạn sẽ được xử lý không nhất quán, tức là khiến bạn không khớp được mô tả trong câu hỏi của bạn.
để đặt lại "thực thể được lưu trong bộ nhớ cache" này, hãy làm theo các bước sau (mà bạn có thể tìm ra từ liên kết trên):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);