Je suis en utilisant l'Android Compatbility bibliothèque à mettre en œuvre fragements et ont étendu la mise en page de l'échantillon, de sorte qu'un fragment contient un bouton qui déclenche un autre fragment.
Ainsi, dans le volet de sélection, sur la gauche, j'ai 5 éléments sélectionnables - A B C D E
Chaque charge d'un fragment (via FragmentTransaction:remplacer) dans le volet de détails - a b c d e
Maintenant, je l'ai étendu fragement 'e' pour contenir un bouton qui charge un autre fragment " e1 " également dans le volet de détails. Je l'ai fait sur ce fragment de la "e"s onClick méthode comme suit:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Si je fais les sélections suivantes:
E - E - e1 - D - E
Alors fragment de " e " dans le volet de détails. Ce qui est bien et ce que je veux. Cependant, si j'ai frappé le bouton "retour" à ce stade, il ne fait rien. Je dois cliquer deux fois parce que " e1 " est encore sur la pile. En outre, après avoir cliqué autour de moi, je suis une exception de pointeur null dans onCreateView:
Pour "résoudre" ce problème, j'ai ajouté ce qui suit à chaque fois que 'A B C D E" est sélectionné:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
Je me demandais si c'est la bonne solution ou si je dois faire quelque chose de différent?
Merci à l'avance. Peter