J'ai un fragment dans une activité de groupe et je souhaite le remplacer par un autre fragment:
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Cela fonctionne bien quand cela est fait en tant que projet séparé sans utiliser de groupe d'activités, tout fonctionne bien dans log cat car le contrôle entre dans getview (), mais aucune vue n'est visible, aucune exception ne se produit, je veux que le fragment de détail du livre soit être remplacé par un fragment de détail de coupe.
Le XML du fragment de détail de livre a l'ID book_description_fragment et le xml pour le fragment de description de section a l'ID section_description_fragment.
Le code ci-dessus est dans la méthode onClick d'un élément, je veux que lorsque l'utilisateur appuie sur un élément en mode défilement horizontal, le fragment change.
la source
onCreateView()
. Ainsi, comme vous pouvez le supposer, toute référence au fragment est en fait perdue au niveau de la vue. Ainsi, vous ne pouvez pas remplacer un fragment, mais vous pouvez plutôt supprimer manuellement les vues maintenant présentes dans le conteneur et y placer un fragment à la place si nécessaire.S'il vous plaît voir cette question
Vous ne pouvez remplacer qu'un " fragment ajouté dynamiquement ".
Donc, si vous souhaitez ajouter un fragment dynamique, consultez cet exemple.
la source
J'ai fait l'essentiel de LA méthode parfaite pour gérer le remplacement des fragments et le cycle de vie .
Il remplace uniquement le fragment actuel par un nouveau, s'il n'est pas le même et s'il n'est pas en backstack (dans ce cas, il le fera apparaître).
Il contient plusieurs options comme si vous souhaitez que le fragment soit enregistré dans la backstack.
=> Voir Gist ici
En utilisant ceci et une seule activité, vous souhaiterez peut-être l'ajouter à votre activité:
la source
Utilisez le code ci-dessous dans android.support.v4
la source
Utilisez ce code en utilisant la v4
la source
j'espère que vous allez bien. quand j'ai commencé à travailler avec,
Android Fragments
j'avais aussi le même problème alors j'ai lu sur 1- Comment changer de fragment avec d'autres. 2- Comment ajouter un fragment s'ilFragment container
n'a aucun fragment.puis après quelques R&D, j'ai créé une fonction qui m'aide dans de nombreux projets jusqu'à présent et j'utilise toujours cette fonction simple.
profitez de votre temps de code :)
la source
Utilisez ViewPager. C'est du travail pour moi.
la source
Vous pouvez utiliser ce code
ou vous pouvez utiliser ce code
la source
Dans kotlin, vous pouvez faire:
la source
vous pouvez utiliser un code simple son travail pour la transaction
la source
Je change le fragment dynamiquement en code à une seule ligne
Cela fonctionne dans n'importe quelle version du SDK et androidx
J'utilise la navigation comme
BottomNavigationView
la source