2012-02-01 22 views
7

¿Cómo eliminar la corriente y mostrar el fragmento anterior? Al igual que si estoy pulse el botón "Volver"Mostrar el fragmento anterior

estoy usando dicha construcción:

FragmentManager fm=getFragmentManager(); 
FragmentTransaction ft=fm.beginTransaction(); 
ft.remove(fragment).commit(); 

Pero simplemente elimina el fragmento actual, sin mostrar anterior

Respuesta

13

Tienes que llamar FragmentTransaction.addToBackStack(null) donde se agrega el fragmento y luego llama al FragmentManager.popBackStack() cuando quieras eliminarlo.

+2

Y si haces esto, no tendrás que anular el comportamiento del botón BACK. El fragmento visible se eliminará automáticamente y el siguiente fragmento en la columna posterior se mostrará automáticamente cuando pulse ATRÁS. –

+0

Esto no funciona para mí. Estoy usando la biblioteca v4. –

+0

FragmentManager.popBackStack() recargando el fragmento. –

4

Añadir este método en su actividad:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
      if(this.getFragmentManager().getBackStackEntryCount() != 0){ 
       this.getFragmentManager().popBackStack(); 
       return true; 
      } 
      // If there are no fragments on stack perform the original back button event 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

Entonces, ¿dónde va a cambiar los fragmentos hacen esto:

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(android.R.id.content, new YourFragmentName()); 
transaction.addToBackStack(null); // this is needed for the above code to work 
transaction.commit(); 
0

tratar de mostrar fragmento anterior después de quitar:

FragmentManager fm=getSupportFragmentManager(); 
    FragmentTransaction ft=fm.beginTransaction(); 
    ft.remove(fragment).commit(); 

    previousFragment=(SherlockFragment)getSupportFragmentManager() 
    .findFragmentByTag(""+currentTagNum); 
    getSupportFragmentManager().beginTransaction() 
      .show(mFragment) 
      .commit(); 
Cuestiones relacionadas