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