Actividad Principal
Creamos el siguiente método:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == request_code) && (resultCode == RESULT_OK)){
data.getDataString() //cogemos los datos que devuelve la segunda actividad
}
}
Este método sirve para ejecutar las acciones que se realizará la clase una vez la segunda actividad haya devuelto los datos.
Iniciamos la segunda actividad de tal forma que reciba los datos una vez esta acabe:
int request_code = 1; //declarado como global
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, request_code);
Actividad Secundaria
Devolvemos desde el segundo activity los datos que queramos.
Intent data = new Intent();
data.setData(Uri.parse(cad));
setResult(RESULT_OK, data);
finish();
cad --> es la cadena que devolvemos al activity principal.
Ejemplo, creamos una ListView y el elemento elegido es el que se devuelve:
lvString = (ListView)findViewById(R.id.lv_Strings);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, cargarListView());
lvString.setAdapter(adapter);
lvString.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String cad = (String)lvString.getAdapter().getItem(arg2);
Intent data = new Intent();
data.setData(Uri.parse(cad));
setResult(RESULT_OK, data);
finish();
}
});