2012-08-18 45 views
28

Estoy trabajando en una aplicación en la que las pestañas se implementan usando FragmentActivity. Como las pestañas son necesarias en toda la aplicación, los fragmentos se utilizan ampliamente para hacer que la aplicación sea compatible con todas las versiones de Android.¿Cómo obtener una lista de entradas de fragmentos backstack en Android?

Como consecuencia, tengo un problema al visualizar qué fragmentos están presentes en la backstack. Estoy seguro de que hay una forma de recuperar la lista de fragmentos presentes en la backstack. Gracias.

Respuesta

73

El FragmentManager tiene métodos:

getBackStackEntryCount()

getBackStackEntryAt (int index)

FragmentManager fm = getFragmentManager(); 

for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){ 
    Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId()); 
} 
+3

getId devuelve el id de backstack no el fragmento –

+0

Downvote porque es incorrecto. Si ejecuta 'findFragmentById()' y usa estos identificadores, no encontrará un fragmento. – Bevor

0

Si desea comprobar qué fragmento es visible y si se conoce el id of view donde se coloca el fragmento, primero debe agregar debajo en onCreate()

getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() { 

    @Override 
    public void onBackStackChanged() { 
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame); 
    if (f != null){ 
     updateActionBarTitle(f); 
    } 

    } 
}); 

private void updateActionBarTitle(Fragment fragment) { 
     String fragClassName = fragment.getClass().getName(); 

     if (fragClassName.equals(FirstFragment.class.getName())) { 
      setTitle("Home"); 
     } else if (fragClassName.equals(SecondFragment.class.getName())) { 
      setTitle("Second"); 
     } 
    } 

Esto actualizará el título de la barra de acciones en el detector de cambios de la pila posterior.

Cuestiones relacionadas