я думаю, що питання має більше спільного з тим, чому
PreferenceManager.getDefaultSharedPreferences(this).getAll()
повертає порожню / суперечливу карту, ніж те, як перебирати стандартну карту Java. андроїд документ насправді не кристально ясно про те, що відбувається тут , але в основному це здається, що перший виклик коли - або в
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
- це те, що ви повинні зателефонувати для ініціалізації налаштувань під час запуску програми - створює якусь кешовану версію ваших налаштувань, яка призводить до того, що майбутні зміни у вашому файлі налаштувань xml будуть послідовно оброблятися, тобто, спричиняючи невідповідність вам описані у вашому запитанні.
щоб скинути цю "кешовану сутність", виконайте наступні дії (які ви можете начебто придумати з наведеного вище посилання):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);