J'ai deux fragments - A et B - les deux fragments occupent tout l'écran. Quand je charge mon activité, je montre le fragment d'utilisateur A tandis qu'en arrière-plan je charge le fragment B (dans le gestionnaire de fragment je remplace sur le fragment A puis sur le fragment B que j'ajoute et cache). Les deux fragments ont des dispositions relativement similaires (ou du moins il serait juste de dire que la disposition de A juste avant la transition est similaire à la mise en page de départ de B - se déplacer) et quand je veux passer de A à BI faire un "show" sur B et "hide" sur A. Cela fonctionne presque parfaitement, mais vous pouvez encore voir un court éclair de blanc entre les deux, avant que B ne soit montré, et cela ruine l'illusion que les deux sont le même fragment. Comment puis-je effectuer une transition sans que l'utilisateur ne s'en aperçoive? Quelques mots d'explication sur la raison pour laquelle il y a deux fragments et pas un seul - la logique métier est distincte. Chaque fragment traite d'une partie différente du flux et cela n'aurait aucun sens de les combiner.Android: comment passer d'un fragment à un autre sans que l'utilisateur s'en aperçoive?
choses que j'ai essayé jusqu'à présent:
• comme je l'ai dit plus haut, j'ai essayé d'ajouter B en arrière-plan et de faire seulement un « spectacle » là-dessus quand il est nécessaire - pour enregistrer tout le temps d'installation
• J'ai essayé redéfinissant la transition dans l'attente et de mettre un fadeout/fadein, mais il n'a fait aucune différence
• J'ai essayé cacher Fragmenta au lieu de l'enlever lors de l'affichage fragmentB, mais il n'a fait aucune différence
• J'ai essayé impérieuses en attente t RANSITION avec 0,0 (se débarrasser des transitions tout à fait), mais il est toujours le même
code:
getSupportFragmentManager().beginTransaction()
.replace(R.id.contentBlock, fragmentA, "FRAGMENTA")
.add(R.id.contentBlock, fragmentB)
.hide(fragmentB)
.commit();
et plus tard:
getSupportFragmentManager().beginTransaction()
.show(fragmentB)
.remove(fragmentA)
.commit();
Les deux solutions fonctionnent aussi bien et empêchent l'écran de scintiller, donc je leur donnerais honnêtement les deux meilleures réponses. Puisqu'il ne peut y en avoir qu'un, je vais devoir choisir celui-là – Jon