- Primera actividad empieza la actividad segundos con startActivityForResult
- Segunda actividad empieza tercera actividad con startActivityForResult
Resultado esperado: tercer (último) la actividad establece un resultado que se ve atrapado en el segundo activity's onivityResult
Resultado actual: tercer (último) la actividad fija un resultado que está atrapado en onActivityResult de la actividad primera
¿Cómo se establecen resultado en la tercera actividad que podrá capturarse en tercer lugar de la segunda actividad (última) la actividad establece un resultado que está atrapado en la actividad de la segunda actividad en ActivityResult?
Algunos fragmentos de código:
Primera actividad
public class TestProjActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
Log.i("TAAAG", "1st activity - startActivityForResult");
Intent intent = new Intent(TestProjActivity.this, Activ2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent, 1008);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "1st activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1008:
String info = data.getExtras().getString("KEY1");
Log.i("TAAAG", "1st activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
Segunda actividad
public class Activ2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "2nd activity - startActivityForResult");
Intent intent = new Intent(Activ2.this, Activ3.class);
startActivityForResult(intent, 1009);
Intent intent2 = new Intent();
intent2.putExtra("KEY1", "VALUE1");
setResult(RESULT_OK, intent2);
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "2nd activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1009:
String info = data.getExtras().getString("KEY2");
Log.i("TAAAG", "2nd activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
Tercera actividad
public class Activ3 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "3rd activity - Inserting Value and finishing");
Intent intent = new Intent();
intent.putExtra("KEY2", "VALUE2");
setResult(RESULT_OK, intent);
finish();
}
}
Estás terminando tu segunda actividad j ust después de que lance su tercera. Entonces, por lo que sé, la primera actividad recibirá el resultado ya que la segunda ya no se está ejecutando. Intenta eliminar finish(); desde crear en Activty2 y ver qué pasa! –
Sí, gracias, ¡resolvió el problema! – Chaiavi