Creo que la pregunta tiene más que ver con la razón por
PreferenceManager.getDefaultSharedPreferences(this).getAll()
está volviendo un mapa vacío/contradictorios que con la forma de iterar sobre un mapa de Java estándar. la android doc no es muy claro acerca de lo que está pasando aquí, pero básicamente parece que la primera llamada vez a
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
- que es lo que se supone que llamar para inicializar las preferencias al iniciar su aplicación - crea algún tipo de versión almacenada en caché de sus preferencias, lo que provoca que los cambios futuros en su archivo de preferencias xml se manejen de manera incoherente, es decir, causando la falta de coincidencia que describió en su pregunta.
para reiniciar esta "entidad caché", siga estos pasos (que se puede ordenar de subir con el enlace de arriba):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
esto está volviendo ningún valor para mí :( – astuter
'getAll() 'puede devolver el valor' NULL'. Sería mejor verificar 'keys' para NULL. – trante
Es mejor usar' 'entry.getValue()' 'en lugar de' 'entry.getValue(). toString()' 'no para get NullPointerException) –