He creado un fondo de pantalla de Android en vivo y estoy tratando de dejar que un usuario elija una imagen de su teléfono y aplicarla como imagen de fondo, pero cuando la inicio, intento iniciar elegir las imágenes, mis preferencias compartidas no parecen guardarse correctamente.Preferencias compartidas de Android que no guardan
A continuación se muestra mi método onCreate de la actividad que comienzo cuando los usuarios presionan el botón de preferencia, y onActivityResult que obtiene la ruta de la imagen en el dispositivo (todo parece funcionar). La impresión después de confirmar las preferencias no imprime nada.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PICTURE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0);
preferences.edit().putString(SETTINGS_BACKGROUND_IMAGE, "okok");
preferences.edit().commit();
System.out.println("Image" + preferences.getString(SETTINGS_BACKGROUND_IMAGE, ""));
}
}
finish();
}
¿Soy el único que no puede ver la diferencia en la lógica entre esto y el código original? – josephus
cuando llamas a preferences.edit(), obtienes una instancia de Editor, en la que jOE estaba poniendo una cadena, pero después de eso, esa instancia ya no se usaba más (perdiendo así, y posiblemente recogiendo basura). Luego, jOE llamó a preferences.edit() nuevamente, obteniendo otra instancia de Editor que contiene la configuración inicial, que acaba de guardar en su lugar. Esto básicamente acaba de guardar la configuración inicial (no hizo nada para actualizar sus preferencias compartidas) – zrgiu
zrgui, muchas gracias por su ayuda! ¡Tu sugerencia funcionó perfectamente! – jOE