myślę, że pytanie ma więcej wspólnego z tym, dlaczego
PreferenceManager.getDefaultSharedPreferences(this).getAll()
zwraca pustą / sprzeczną mapę niż w przypadku iteracji po standardowej mapie java. android doc naprawdę nie jest krystalicznie czysta, co się dzieje tutaj, ale w zasadzie wydaje się, że pierwsze wezwanie kiedykolwiek do
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
- co powinieneś wywołać, aby zainicjować preferencje podczas uruchamiania aplikacji - tworzy jakąś buforowaną wersję twoich preferencji, która powoduje, że przyszłe zmiany w twoim pliku preferencji xml będą niespójnie obsługiwane, tj. powodując niedopasowanie opisane w Twoim pytaniu.
aby zresetować tę „jednostkę w pamięci podręcznej”, wykonaj następujące kroki (które można znaleźć w powyższym linku):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);