web-dev-qa-db-fra.com

Comment obtenir une liste des entrées de fragments de pile dans Android?

Je travaille sur une application dans laquelle les onglets sont implémentés à l'aide de FragmentActivity. Étant donné que des onglets sont nécessaires dans toute l'application, des fragments sont largement utilisés pour rendre l'application compatible sur toutes les versions d'Android.

En conséquence, je suis confronté à un problème de visualisation des fragments présents sur le backstack. Je suis sûr qu’il existe un moyen de récupérer la liste des fragments présents sur le backstack}. Merci.

38
Harshal Kshatriya

Le FragmentManager a les méthodes suivantes:

getBackStackEntryCount ()

getBackStackEntryAt (int index)

FragmentManager fm = getFragmentManager();

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

Si vous voulez vérifier quel fragment est visible et si vous connaissez l'identifiant de la vue où fragment est placé, vous devez d'abord ajouter ci-dessous dans 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");
        }
    }

Cela mettra à jour le titre de votre barre d’action sur le programme d’écoute de la pile arrière.

0
Harsh Mittal