J'ai une application qui a un flux suivant:menu latéral Android navigation - manipulation Fragments
Le point est que nous avons un seul Activity
et un menu coulissant, à partir de laquelle l'utilisateur peut choisir l'un des nombreux fragments de niveau supérieur (où par niveau supérieur je veux dire que lorsque l'utilisateur appuie sur la touche Retour, l'application se termine). A partir de ces fragments, l'utilisateur peut naviguer vers d'autres fragments (par exemple, les sujets du forum-> Détails du sujet-> Profil de l'affiche-> Amis de l'affiche-> Profil de l'ami), où la touche retour devrait retourner à l'utilisateur état du fragment précédent (par exemple restaure la position de défilement, etc.).
Dans ce cas, j'utilise:
void addFragment(Fragment f) {
//add fragment in a transaction, so back key does its thing
getSupportFragmentManager().beginTransaction().addToBackStack(null)
.add(R.id.fragment_container, f).commit();
}
Si l'utilisateur ouvre le menu latéral dans l'un de ces fragments et sélectionne un autre fragment de niveau supérieur, puis la pile tout le dos va se remplacer par le nouveau fragment (et lorsque l'utilisateur appuie en arrière, sorties app)
Dans ce cas, j'utilise:
void replaceFragment(Fragment f) {
//remove all fragments and add a top-level one
getSupportFragmentManager().popBackStackImmediate(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, f).commit();
}
Est-ce considéré comme une bonne navigation? Dans l'application iOS, chaque fragment de niveau supérieur se souvient de sa propre pile arrière, mais cela semblait être une surcharge, donc détruire la pile arrière sur le commutateur de niveau supérieur suffirait.
Totaly inutile, mais j'aime vos dessins! –