SharedPreferences sobreescribe otro valor
Tengo un problema con SharedPreferences
Si quiero guardar dos valores diferentes. He intentado con este código:
SharedPreferences sharedPref = getSherlockActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.SavedStartSilentHour), hour); editor.commit(); editor.putInt(getString(R.string.SavedStartSilentMinute), min); editor.commit(); // One editor.commit() is enough
Si ejecuto este código, el primer valor se sobrescribe con el valor seccond. Si elimino la segunda parte el valor se guarda correctamente. ¿Porqué es eso?
- Preferences Support Library - SwitchPreference no funciona
- ClassCastException en PreferenceActivity
- Cómo abrir un hijo anidado PreferenceScreen en Android
- ¿Cómo escuchar los cambios de preferencia dentro de un archivo PreferenceFragment?
- SetDisplayHomeAsUpEnabled () no funciona en PreferenceActivity
- Error: Error: Los tipos de cadenas no están permitidos (en 'entradas' con valor 'array / list')
- Utilizar listpreference y obtener la clave funciona, pero no hay botón ok
- El tamaño de fuente de título de preferencia personalizada es mayor que la preferencia estándar en android 5
- Activar y desactivar una preferencia
- PreferenceFragment - Diferencia entre getPreferenceManager () y getPreferenceScreen ()?
- SetInputType en EditTextPreference
- ¿Cómo cambiar el estado de un elemento de preferencia de fuera de PreferenceActivity?
- ¿Cómo usar el Porcentaje para el diseño de Android?
Su código parece perfecto!
Podrías simplificar la cosa confiriendo todas las cosas después de todas las operaciones "puts". Aunque no creo que este podría ser su problema …
Sólo asegúrese de que los valores definidos de SavedStartSilentHour
y SavedStartSilentMinutes
xml estén correctamente definidos, es decir, si son los mismos, por supuesto, se sobrescribirán. (Esta es la única cosa que tiene sentido para mí teniendo en cuenta su código).
Déjame saber de tu progreso;)
Eliminar la primera llamada a
editor.commit();
Y usted estará bien.
El problema es muy probablemente causado por volver a usar una clave de tal manera que la segunda asignación simplemente sobrescribe el valor de la misma clave.
Una forma de probar esta hipótesis es intentar usar claves simples que eliminen tal posibilidad, por ejemplo:
editor.putInt("hour", hour); editor.putInt("min", min);
Alternativamente, se puede adjuntar un depurador y se pueden comparar los resultados de getString(keyId)
.
Si esto realmente "soluciona" el problema, asegúrese de que los recursos SavedStartSilentHour
y SavedStartSilentMinute
realmente evalúen a diferentes cadenas – inspeccione el archivo de recursos en sí.
- ¿Escribir mensaje NDEF varias veces a la misma etiqueta?
- El borrador no se llama cuando se pulsa el botón