J'ai un autre soucis que je n'arrive pas à expliquer.

Mon appli a une activité affichant un fragment qui contient un "contextual action menu".

J'ai des boutons dans mon "contextual action menu", notamment un bouton "Cancel". J'aimerai afficher une popup de confirmation d'annulation.

Le code de mon alertBox est dans mon activité et fait appel à une classe perso qui étend DialogFragment. L'affichage se comporte bien.

Dans mon activité, j'ai donc le code suivant correspondant au clique sur "Ok".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public void doDeleteDialogPositiveClick() {
   Fragment prev2 = getSupportFragmentManager().findFragmentByTag("FragmentA");
   if (prev2 != null) {
      ((FragmentA) prev2).cancelModification();
   }
}
Ce code ne fonctionne pas : prev2 est toujours null.

J'ai retiré le "contextual action menu" et je l'ai remplacé par une ActionBar classique, et ce même code fonctionne.

Mon Fragment A est forcément encore chargé en mémoire : on le voit à l'écran, et si on clique sur "Cancel" dans l'alertBox, mon fragment continue à s'exécuter normalement.

Qu'en pensez vous ? Pourquoi findFragmentByTag renvoie null dans un cas et pas dans l'autre ?

Je ne comprends pas du tout ce comportement