2010-04-27 30 views

Respuesta

90

Llamando finish() de la actividad que desea terminar debe encargarse de esto.

Editar muchos años después: Esto todavía funciona, pero es un enfoque un poco torpe. Cuando originalmente publiqué esto, Fragments no existía, y (como han señalado varios comentadores) esto no funciona de la misma manera cuando hay Fragments involucrados. Hay mejores enfoques ahora si usted está utilizando Fragments.

+0

eso es rigth, tan fácil, lo siento .... – david

+7

No hay necesidad de disculparse, feliz de ayudar! –

+17

Esto no simula el botón Atrás. Si solo está utilizando actividades, está bien, pero si está utilizando fragmentos en una actividad, esto cerrará todos los fragmentos con la actividad en conjunto. – tasomaniac

34

cuando se utilizan fragmentos:

getFragmentManager().popBackStack(); 

o

getSupportFragmentManager().popBackStack(); 

si está utilizando android.support.v4.app paquete

1

Esto es para una situación en la que el mismo fragmento a veces puede ser el único fragmento en una actividad, y a veces parte de una actividad de varios fragmentos, por ejemplo, en una tableta donde dos los fragmentos son visibles al mismo tiempo.

/** 
* Method that can be used by a fragment that has been started by MainFragment to terminate 
* itself. There is some controversy as to whether a fragment should remove itself from the back 
* stack, or if that is a violation of the Android design specs for fragments. See here: 
* http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish 
*/ 
public static void fragmentImplementCancel(Fragment fragment) { 

    FragmentActivity fragmentActivity = fragment.getActivity(); 
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); 

    if (fragmentManager.getBackStackEntryCount() == 1) { 
     fragmentManager.popBackStack(); 
    } 
    else { 
     fragmentActivity.finish(); 
    } 
} 

Se puede llamar a este código para implementar un botón Cancelar, por ejemplo.

if (theButton.getId() == R.id.btnStatusCancel) { 
     StaticMethods.fragmentImplementCancel(this); 
    } 
50

Sólo para el registro: El método descrito no hace lo mismo que hace el botón de retroceso en algunos casos, pero se puede llamar

this.onBackPressed(); 

o

getActivity().onBackPressed(); 

si están en un fragmento para lograr exactamente el mismo comportamiento.

+3

Por lo que puedo decir, esta es la mejor respuesta. Gracias. –

0

Puede suplantar una llamada botón en la parte posterior pulse el botón:

@Override 
public void onBackPressed() { 
    onNavigateUp(); 
} 
Cuestiones relacionadas