2010-04-07 9 views

Respuesta

2

Pienso que de esta manera:

A -> B -> C 

actividades A, B, C.

No se puede hacer una vuelta dos veces desde la primera onKeyDown() se ejecutará en C y el segundo uno debe ser ejecutado en B.

no sé por qué está tratando de hacer, pero aquí están algunas opciones

  1. Utilizando el android:noHistory tag:

    Tal vez su actividad C está haciendo algo que no necesita una vista y es por eso que desea realizar una copia dos veces.

  2. Utilizando una intención. Algo así como:

    Intent intent = new Intent(C.this, A.class); 
    startActivity(intent); 
    
  3. Utilizando el finishActivityFromChild(). Nunca lo intenté, pero parece que puedes usarlo para decidir qué hacer en B, dependiendo de cómo termine C.

21

FirstActivity

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
startActivity(intent); 

SecondActivity

int REQUEST_CODE = 123 
Intent intent = new Intent(SecondActivity.this, ThirdActivity.class); 
startActivityForResult(intent, REQUEST_CODE); 

(para hacer esta pedagógica hay más código para esta actividad a continuación)

ThirdActivity

@Override 
public void onBackPressed() { 
    // Semi ugly way of supporting that back button takes us back two activites instead of the usual one. 
    setResultOkSoSecondActivityWontBeShown(); 
    finish(); 
} 

private void setResultOkSoSecondActivityWontBeShown() { 
    Intent intent = new Intent(); 
    if (getParent() == null) { 
    setResult(Activity.RESULT_OK, intent); 
    } else { 
     getParent().setResult(Activity.RESULT_OK, intent); 
    } 
} 

SecondActivity (de nuevo)

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 123) { 
     if (resultCode == RESULT_OK) { 
      finish(); 
     } 
    } 
} 
0

| * | Volviendo una pantalla o al final de la actividad:

finish(); 

| * | Volviendo más de una pantalla:

Puede volver a la que jamás pantalla que necesita el uso de banderas intención y uso para evitar que se remonta a la misma pantalla:

Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class); 

gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

startActivity(gotoScreenVar); 
Cuestiones relacionadas