Pasar el argumento a la actividad anterior
Me gustaría pasar argumentos de una actividad B a A donde B ha sido lanzado por A. ¿Es posible hacerlo? Gracias
Sí, si al iniciar la Activity
B desde A, lo inicia con startActivityForResult
, puede establecer un resultado en la Activity
B y leer el valor en A.
En A necesitará anular onActivityResult
para obtener el valor del resultado.
En la Activity
B:
// do stuff setResult(RESULT_OK); finish();
Entonces en A:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); //check result }
Para ampliar un poco la respuesta de davec:
Si necesita más datos que RESULT_OK, entonces tendrá que usar putExtra () en B y getExtras () en A. Puede enviar tipos de datos primitivos, por ejemplo, para String:
En B:
String str1 = "Some Result"; Intent data = new Intent(); data.putExtra("myStringData", str1); setResult(RESULT_OK, data);
Luego para recogerlo en A:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (data != null) { Bundle b = data.getExtras(); String str = b.getString("myStringData"); } } }
.
Observe startActivityForResult (que se llamará desde A), setResult (que se llamará desde B) y onActivityResult (devolución de llamada de A que se llama después de que B sale).