2011-06-12 8 views
10

Hola, estoy llamando a un startActivityForResult() y tratando de procesar el resultado en el método onAcvityResult(). Sin embargo, los datos de Intento son nulos y el resultado es RESULT_CANCELED. No estoy seguro de por qué.onActivityResult() tiene los datos de Intento como nulos después de que una Actividad ha terminado

estoy creando con la actividad:

startActivityForResult(new Intent(this, Class.class),LIST_RESULT); 

continuación, 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(); 
} 

acabado() no tiene efecto. De hecho consigo la advertencia en LogCat que duplican solicitud acabado 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; 
    } 

} 

de datos es nulo y el resultCode es la Action.RESULT_CANCELED.

¿Alguna idea de por qué no estoy de acuerdo? ¿Hay algo que lo cambie entre configurarlo y leerla? El mParent también es nulo en la actividad que devuelve el resultado.

Alex

Respuesta

27

Alex,

creo que desea eliminar la llamada a finish() en su método onBackPressed(), y sustituirla por la llamada a super.onBackPressed(). Creo que la llamada al super.onBackPressed() está llamando a finalizar y nunca tendrá la oportunidad de llamar al setResult().

Try ...

@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(); 
} 
+0

así de fácil! :(Muchas gracias por la sugerencia – Alex

+0

Llamada agradable allí, William! –

+0

funcionó para mí, gracias. – Goot

Cuestiones relacionadas