OnActivityResult () tiene datos de intención como null después de que una actividad ha terminado
Hola estoy llamando a un startActivityForResult () y tratando de procesar el resultado en el método onAcvityResult (). Sin embargo, los datos de intención son nulos y el resultado es RESULT_CANCELED. No estoy seguro de por qué sin embargo.
Estoy creando actividad con:
startActivityForResult(new Intent(this, Class.class),LIST_RESULT);
Entonces en la clase de actividad
@Override public void onBackPressed() { super.onBackPressed(); Intent data = new Intent(); Bundle bundle = new Bundle(); bundle.putParcelable("name", la); data.putExtras(bundle); if (getParent() == null) { setResult(Activity.RESULT_OK, data); } else { getParent().setResult(Activity.RESULT_OK, data); } //finish(); }
Finish () no tiene ningún efecto. De hecho, recibo una advertencia en LogCat que duplicar la solicitud de finalización HistoryRecord
Y estoy procesando el resultado en:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case(LIST_RESULT): if(resultCode == Activity.RESULT_OK) { previousList = data.getExtras(); } break; } }
Los datos son nulos y el resultCode es Action.RESULT_CANCELED.
¿Alguna idea de por qué no estoy recibiendo nada? ¿Hay algo cambiándolo entre mi configuración y lectura? El mParent también es nulo en la actividad que devuelve el resultado.
Alex
Alex,
Creo que desea eliminar el llamado a finish()
en su método onBackPressed()
, y reemplazarlo por la llamada a super.onBackPressed()
. Creo que la llamada a super.onBackPressed()
está llamando a finalizar y nunca tendrás la oportunidad de llamar a setResult()
.
Tratar…
@Override public void onBackPressed() { Intent data = new Intent(); Bundle bundle = new Bundle(); bundle.putParcelable("name", la); data.putExtras(bundle); if (getParent() == null) { setResult(Activity.RESULT_OK, data); } else { getParent().setResult(Activity.RESULT_OK, data); } super.onBackPressed(); }