Ne pouvez pas supprimer un fragment de FrameLayout?
J'ai une mise en page pour le mode paysage qui montre une ListView sur la gauche et un FrameLayout sur la droite. Lorsqu'un élément est sélectionné dans la liste, un autre fragment est ajouté à la FrameLayout
MyFragment myFragment = (MyFragment) fragmentManager.findFragmentById(R.id.myFrameLayout);
FragmentTransaction ft = fragmentManager.beginTransaction();
if (myFragment == null) {
myFragment = new MyFragment(uri);
ft.replace(R.id.myFrameLayout, playerFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commitAllowingStateLoss();
}
Plus tard, j'ai appuyez sur supprimer dans la liste afficher et de supprimer le dernier élément de la liste, et j'essaie de retirer le fragment de sorte que rien n'est montré, mais ça ne fonctionne pas, mon reste des fragments sur l'écran. Le code de retrait est:
MyFragment myFragment = (MyFragment) fragmentManager.findFragmentById(R.id.myFrameLayout);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.remove(myFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
ft.commitAllowingStateLoss();
Des idées pourquoi il n'est pas retiré de la Vue?
Je suis d'avoir exactement le même problème. A toute résolution atteint?
OriginalL'auteur DaveJohnston | 2012-03-28
Vous devez vous connecter pour publier un commentaire.
@DaveJohnston j'ai essayé votre code pour supprimer fragment je viens de moulage....merci 🙂
Hé, je ne sais pas c'est la solution à votre problème ou pas, mais d'essayer cette façon de travailler:
Approche pour ajouter de fragment:
Approche pour supprimer Fragment:
OriginalL'auteur Gru
êtes-vous déclarer le fragment xml? Citant Dianne Hackborn de google:
espère que cela aide
Bien cette API est tout simplement mauvais. Vous faites un simple
remove()
appel, et que la chose de base que vous attendiez de faire ne fonctionne pas.Il fonctionne pour les fragments ajoutés à une transaction explicite,faite par vous, par programmation.
OriginalL'auteur Blackbelt
Quand Vous de trouver Votre fragment par l'Id que vous avez obtenu de référence pour le fragment contenant pas de fragment de lui-même.
L'utilisation d'une ÉTIQUETTE lorsque vous addiing fragment et puis la recherche par TAG:
OriginalL'auteur Arvis
lors du remplacement de votre fragment d'utiliser
ft.addToBackStack(null)
méthode après la retirer facilement votre fragment.OriginalL'auteur jinkal
J'ai eu un moment très difficile de trouver une référence à ce problème survenant lors de ne PAS fixer de
<fragment>
via XML, mais en effet le réglage de chaqueFragment
dynamiquement avecFragmentTransaction
et<FrameLayout>
.La simplification de Gru de la solution, ce que résolu pour moi était simplement en ajoutant
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
pour remplacer mon opération et cela a fonctionné! Précédent fragments sont maintenant cachés de la vue.J'imagine que d'autres transitions marcherait aussi bien.
OriginalL'auteur jschlepp
Si vous avez un
Fragment
qui n'est pas enlevée sur le remplacement de laFragment
dans leFrameLayout
? vous pouvez le supprimer en commettre une élimination séparée de transition avecFragmentTransaction.TRANSIT_FRAGMENT_CLOSE
sur elle avant un appel à la régulière remplacer commettre.Mais je suggère d'essayer et de comprendre d'abord pourquoi le Fragment n'est pas remplacé, en premier lieu, vérifier si elle fait un travail lourd ou quelque chose de la remplacé?? mais si vous avez besoin d'une rapide solution temporaire essayer le code ci-dessus.
OriginalL'auteur TouchBoarder