0
votes

Empêcher les mêmes fragments de l'arrière-plan

J'ai une activité. Dans cette activité, plusieurs fragments sont là. Les fragments sont en séquence à ajouter, A -> B -> C -> D -> B -> C -> D

MAINTENANT, lorsque j'accepte l'action de l'action que la séquence est, D

Mais je dois réaliser une pile de retrait comme celle-ci, D

Quel est le moyen approprié d'empêcher le même fragment dans la poitrine de l'arrière-plan? P>

Voici mon code pour ajouter des fragments, P>

 if (supportFragmentManager.backStackEntryCount > 0) {
            supportFragmentManager.popBackStackImmediate()
        }


2 commentaires

Est-ce que cela répond à votre question? Comment garder une seule instance d'un fragment, lors de la commutation avec NavigationDrawer?


Oui merci. Ça va marcher bien @Prakashreddy


3 Réponses :


0
votes

Lors de la création du fragment Définissez une balise pour elle, vous pouvez ensuite le trouver via le gestionnaire de fragments et remplacer / créer une nouvelle en conséquence xxx


0 commentaires

0
votes

Vous pouvez utiliser rejeter () comme si vous allez un à B, B à C et C à D lorsque vous appuyez sur le dos et rejetez le fragment Son retiré de la file d'attente comme celle de la D à C et C à B et B. à un sa fait de votre empilement et de votre essai pour gérer


0 commentaires

1
votes

Je ne sais pas si c'est parfait, mais une fois que j'avais fait quelque chose comme ça. J'avais une pile de types d'entiers (appelons-le Stackoffragmenttracker code>). Alors supposons que vous ayez des fragments F1, F2, F3, F4 et vous avez fait F1-> F3-> F4-> F2. Ensuite, StackoFFRAGMENTTracker code> aurait du contenu comme celui-ci: 1-> 3-> 4-> 2.

Suivant, vous ne créez qu'une seule instance par fragment (donc dans mon exemple, dites F1, F2, F3 , F4 n'a chacun que une seule instance) et vous les garderiez dans l'arrière-plan dans l'état invisible: p> xxx pré>

vous le feriez pour tous vos fragments. P>

Ensuite, vous avez besoin d'une variable de fragment (disons, fragment actif code>), pointez-le à votre premier fragment (c'est-à-dire où vous souhaitez aller pour la 1ère heure) et le rendre visible. P>

void insideBackPress(){
  stackOfFragmentTracker.pop();
  int top = stackOfFragmentTracker.top();
 if(top==1){
    hideActiveFragment();
    showActiveFragment(f1);
  }else if(top==2){
    hideActiveFragment();
    showActiveFragment(f2);
  } // ... ... ...
}


0 commentaires