Fragment recréé sur l'élément de navigation de navigation inférieur sélectionné
Voici mon code pour le fond de navigation afficher l'élément sélectionné
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.action_one:
//Switch to page one
fragment = FragmentA.newInstance();
break;
case R.id.action_two:
//Switch to page two
fragment = FragmentB.newInstance();
break;
case R.id.action_three:
//Switch to page three
fragment = FragmentC.newInstance();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment,"TAG").commit();
return true;
}
});
Maintenant mon problème est qu'à chaque fois le fragment est re-créé et ne veulent pas de fragment à être recréés à chaque fois j'ai aussi essayé d'ajouter addToBackStack(null) mais ce cas sur le bouton de retour de la presse ne cesse d'apparaître des fragments de la pile, ce qui je ne veux pas.
Est-il un moyen pour afficher des fragments sur le fond de la barre de navigation sélectionné, sans créer à nouveau fragment
source d'informationauteur apk
Vous devez vous connecter pour publier un commentaire.
Avec le soutien de la bibliothèque v26 vous pouvez le faire
Essayez ceci :
Qui vous permettra d'obtenir le courant fragment dans votre
container
et si vous cliquez de nouveau sur ce fragment qui ne sera pas ré ajouter le fragment.Être prudent lors de l'utilisation de
replace
. Même si la transmission d'un fragment qui existe déjà dans la mémoire,replace
va redémarrer le fragment du cycle de vie. Pour éviter un redémarrage, l'objet de la transaction de méthodes comprendadd
show
ethide
qui peut être utilisé pour montrer le bon fragment sans redémarrer il.Utilisation setOnNavigationItemReselectedListener comme ceci:
et de l'appeler à l'aide:
setOnNavigationItemReselectedListener serait une meilleure solution pour que
Il y a plusieurs cas de test impliqués dans la navigation correcte , je suis coller mon code avec tous les cas de test vérifié.