Recoger un objeto al cerrar otro Activity
En un tutorial anterior, Victor Sanchez nos preguntaba cómo lanzar un Activity con un objeto, modificarlo en esa segunda Activity y luego recuperarlo por la primera cuando la segunda se ha cerrado.
Hoy os vamos a enseñar precisamente eso, pero antes de nada daré por sabidos los conceptos de como pasar objetos entre activities.
Al pasar el objeto al segundo Activity deberemos crear un Intent al igual que el en tutorial anterior, pero en lugar de lanzarlo con startActivity() lo haremos con startActivityForResult().
Intent intent = new Intent(Activity_Origen.this, Activity_Destino.class); intent.putExtra("parametro", objeto); startActivityForResult(intent, IDENTIFICADOR);
Recogeremos el objecto como ya enseñamos anteriormente.
A la hora de devolver el objeto, podremos hacerlo cuando el usuario ejecute una acción o si queremos que sea cuando se cierre esta segunda Activity incluiremos el siguiente código en el onDestroy().
Intent intent = new Intent(null); intent.putExtra("parametro",objeto); setResult(Activity.RESULT_OK, intent);
Ya sólo nos quedaría recoger el objeto en el primer activity de esta manera:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case (IDENTIFICADOR) : { if (resultCode == Activity.RESULT_OK) { Objecto objeto = data.getExtras().getSerializable("parametro"); } break; } } }
Y listo, es bastante sencillo y muy útil además de dejarnos el código mucho más limpio en según qué casos.