J'ai trois fragments comme indiqué dans la figure ci-dessous. J'ai ajouté ces trois fragments dans LinearLayout en utilisant le fichier .xml et lorsque mon activité de lancement démarre, je charge cette mise en page .xml en utilisant setContentView.
J'ai quelques contrôles sur fragment2. En cliquant sur un, le fragment est chargé par programmation en utilisant FragmentTransaction et la méthode commit. Ce fragment est ajouté à l'écran mais le problème est que le fragment4 ajouté de manière pragmatique occupe toute la zone de l'écran. Quel peut être le problème?
Note: Sur tout élément, cliquez sur f2 Je veux remplacer seulement f2 par le nouveau fragment f4. Gardez à l'esprit que j'ai ajouté f1, f2, f3 au fichier de mise en page xml et que j'ai ajouté un nouveau fragment f4 par programmation. Conserver uniquement FrameLayout en tant qu'espaces réservés pour le fragment dans le fichier XML.
Remplacer un fragment par programme
Répondre
Vous devez toujours ajouter, supprimer et remplacer vos fragments par programmation. En tant que tel, je vous suggère de remplacer vos fragments F-1, F-2 et F-3 avec des conteneurs tels que FrameLayout.
Fondamentalement, au lieu d'avoir un élément <fragment/>
comme F-1, vous en faites un élément <FrameLayout/>
. Ensuite, vous effectuez une transaction fragment dans votre FragmentActivity de onCreate: Maintenant,
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Supposons que vous avez fait pour F-1, F-2 et F-3. Vous remplacez ensuite f2 par f4 en faisant la même chose à nouveau dans votre OnClickListener
:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
Avez-vous des références pour que je puisse prendre un exemple à partir de là? – MobiDev
J'ai édité ma réponse. Cela devrait résoudre votre problème. – CodePrimate
Merci. OK ce que je comprends est Ne pas mettre des fragments directement dans la mise en page XML. Mettez des framelayouts à la place des éléments de fragment. Et en remplaçant f4 par f2, utilisez frame of f2. Ai-je raison? Vous pouvez donner un site de référence pour le vérifier. – MobiDev
Dans le OnCreate, chargez les fragments dans le framelayout. OnClick du fragment, donne l'identifiant de ce FrameLayout particulier à remplacer par Fragment4.
- 1. Android remplacer le fragment actuel par un autre fragment
- 2. Remplacer un fragment par un autre dans ViewPager
- 3. Essayer de remplacer un fragment par un autre
- 4. Comment remplacer un fragment avec un fragment de viewpager
- 5. Android: Ajout par programme de plusieurs RecyclerViews dans un fragment
- 6. Init FragmentActivity avec un seul fragment par programme
- 7. Fragment chevauchant un autre fragment au lieu de le remplacer
- 8. Effacer le backstack et remplacer le fragment courant par un fragment de premier niveau
- 9. Comment puis-je remplacer Fragment par un bouton à l'intérieur d'un fragment?
- 10. remplacer fragment dans onActivityResult
- 11. Comment rechercher par programme le fragment actuellement affiché par FragmentActivity?
- 12. Comment remplacer par programme un HyperLinkField dans un GridView ASP.NET
- 13. Comment remplacer un UITextField du storyboard par un programme?
- 14. Fragment Remplacer/Ajouter provoquant IllegalStateException
- 15. Remplacer le fragment de OnClickListener
- 16. UIStoryboard comment remplacer les contraintes par programme?
- 17. Android remplacer fragment ou lancer une nouvelle activité avec fragment
- 18. Android - Fragment remplacer non remplacé
- 19. Remplacer la barre d'outils WinXP Tooltip par un autre programme
- 20. Comment remplacer un corps de message par programme dans Smalltalk?
- 21. Fragment Android Duplication: Impossible de remplacer le fragment ajouté statiquement
- 22. Bug? Contenu ajouté par programme non affiché dans le fragment
- 23. Fragment: Créer par programme une vue pour xml à remplir
- 24. Fragment n'a pas pu remplacer avec fragment dans viewpager
- 25. Ajouter ImageView par programme après retour à Fragment
- 26. Android: largeur de fragment de changement par programme dans onConfigurationChanged
- 27. Remplacer le fragment sur le fragment qui contient ViewPager
- 28. TableLayout par programme ne s'affichera pas dans le fragment
- 29. Android remplacer le fragment à l'intérieur d'un autre fragment
- 30. Remplacer fragment à l'aide FragmentTransaction appelle fragment créer plusieurs fois
Ce n'est pas clair. Est-ce que vous montrez tous les quatre fragments ensemble à la fin? –