2012-08-28 10 views
13

Me gustaría saber si se mostró mi actividad porque el usuario presionó en alguna otra actividad. En el ciclo de vida no pude identificar ninguna devolución de llamada que me brinde esa información.Determinar si la actividad llegó al frente debido a la navegación de regreso

onRestart() no funciona. También se activará si la Tarea de aplicaciones fue llevada al frente. onResume() no funcionará por la misma razón.

Supongo que hay una solución simple para eso, pero en Android supuestamente las cosas simples pueden ser bastante desagradables.

+1

estudio [esta respuesta] (http: // stackoverflow. com/a/10493384/779408) – breceivemail

+1

Esto es un poco tarde, pero ¿por qué no funciona onRestart? ¿Esto funciona para mi? – osrl

Respuesta

14

Llame a su 2da actividad con startActivityForResult(Intent, int), luego anule onBackPressed() en la 2ª actividad y la tiene setResult() a RESULT_CANCELED. Por último, haga que la primera actividad atrape eso en onActivityResult().

ejemplo Código:

Actividad 1:

Intent i = new Intent(Activity1.this, Activity2.class); 
startActivityForResult(i, 0); 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 0) { 
     if (resultCode == RESULT_CANCELED) { 
       // user pressed back from 2nd activity to go to 1st activity. code here 
     } 
    } 
} 

Actividad 2:

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    finish(); 
} 
+1

buena respuesta, aunque tengo alrededor de 15 actividades y estoy usando AndoridAnnotations que no tiene opción para llamar a startActivityForResult (aún, aunque en una próxima versión) ... así que todavía estoy esperando otra idea ... – Jakob

+1

¿AndroidAnnotations previene de utilizar constructos Android normales y básicos como este? No utilizaría una herramienta así, entonces ... – Ridcully

+1

No, puedo usar construcciones estándar de Android, pero ya tengo 15 actividades que tengo que tocar ahora. La respuesta podría ser simplemente "la forma de hacerlo". – Jakob

Cuestiones relacionadas