148 votes

Comment définir une balise Fragment par code ?

Je n'ai pas trouvé quelque chose comme setTag(String tagName) dans la méthode Fragment classe. La seule façon de définir une Fragment que j'ai trouvé est de faire un FragmentTransaction et en passant un nom de balise comme paramètre.

Est-ce le seul moyen de définir explicitement un Fragment tag par code ?

121voto

PJL Points 5865

Oui. Le seul moyen est donc de le faire au moment de la transaction, en utilisant par exemple add , replace ou dans le cadre de la mise en page.

Je l'ai déterminé en examinant les sources de compatibilité, car j'ai brièvement cherché à obtenir des informations similaires à un moment donné dans le passé.

2 votes

Votre réponse se trouve [ici][1] dans le message sur stackoverflow [1] : stackoverflow.com/questions/9363072/Android-set-fragment-id

2 votes

Utilisez la fonction add(int containerViewId, Fragment fragment, String tag) de FragmentTransaction comme décrit ici : stackoverflow.com/a/13244471/4002895 @PJL S'il vous plaît modifier votre réponse. Cette réponse trompe les gens.

0 votes

C'est plutôt gênant.

79voto

David Points 2298

Vous pouvez définir la balise de fragment de cette façon :

Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
    .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
    .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();

7 votes

Où dois-je utiliser ce code ? Dans getItem dans FragmentPagerAdapter ?

36voto

Kuool Points 117

Vous pouvez fournir une balise dans votre fichier xml de présentation d'activité.

Fournir le android:tag attribute avec une chaîne unique.

Tout comme vous attribuez un identifiant dans un fichier xml de présentation.

    android:tag="unique_tag"

lien vers le guide du développeur

38 votes

Cela pourrait fonctionner si l'on utilisait un fichier de mise en page. Mais cette question fait référence à la définition dynamique de la balise en Java.

1 votes

C'est la réponse dont j'avais besoin car parfois, en utilisant certaines bibliothèques, vous n'avez pas le contrôle sur les transactions de fragments et vous ne pouvez pas définir la balise de manière programmatique. Merci !

2voto

Chris Fremgen Points 295

Vous pouvez aussi obtenir tous les fragments comme ceci :

Pour les fragmets v4

List<Fragment> allFragments = getSupportFragmentManager().getFragments();

Pour app.fragment

List<Fragment> allFragments = getFragmentManager().getFragments();

2voto

Ankit Sharma Points 1

Bonjour, je souhaite prolonger cette discussion.

Je souhaite trouver un fragment qui a été ajouté par la vue Pager dans une activité à onglet.

Comment puis-je trouver cela, puisque je ne peux pas ajouter manuellement une balise ou un identifiant car cela est géré par l'adaptateur :(.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X