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.
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());
}
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.