8
votes

Comment implémenter Afficher et masquer Fragment Inside Fragment dans Android

Comment implémenter Afficher et masquer Fragment Inside Fragment dans Android? J'ai ajouté deux fragments à l'intérieur de l'activité. Un fragment contenant du menu et un fragment contiennent un sous-menu. J'ai beaucoup de bouton dans le fragment de menu comme à la maison, idée, etc. Si je clique sur le bouton Idée. Je dois montrer le sous-menu. Si j'ai encore une fois, cliquez sur le bouton Ivre, je dois masquer le sous-menu. Peut-on fournir un exemple ou comment accéder à un fragment d'affichage dans un autre fragment?

Ceci est ma mise en page principale xxx

dans mon fragment xxx

merci


2 commentaires

Reportez-vous au code de référence pour les fragments Masquer / Afficher indiqué sur le site Android développeur.android.com/resources/samples/apidemos/src/com/...


@kumar avez-vous obtenu votre tâche?


6 Réponses :


2
votes

Simplement, créez une méthode publique dans votre activité "Parent". qui cache le fragment.

puis de l'intérieur du fragment dans votre événement de clic, obtenez le "Parent |" activité, jetez-la puis appelez la méthode que vous avez créée. P>

    ((ParentActitity)getActivity()).hideFragment();


0 commentaires

1
votes

Vous devez utiliser une interface pour communiquer avec votre activité parent.

Jetez un coup d'œil sur le tutoriel de Vogella, "3.4. Communication d'application avec des fragments". Voici le lien


0 commentaires

5
votes

Vous pouvez essayer d'obtenir Framelayout ou fragment par ID et modifier sa visibilité

View frag = findViewById(R.id.my_fragment);
frag.setVisibility(View.VISIBLE);


0 commentaires

5
votes

Considérant que cette question a plus de 2k .. Une réponse peut toujours aider les nouveaux lecteurs donc ici cela va:

  • Vous ne voulez pas vraiment avoir de fragmentsManager et de fragments de fragments qui se produisent à l'intérieur des fragments de ne pas avoir de moulages ni de références néfastes potentielles à votre (des) activité (s) li> ul>

    Alors, ce que je fais et fonctionne bien, c'est bien définir une interface sur le fragment et donner une méthode, dites pashide (): p> xxx pré>

    puis mettez-le en œuvre sur votre activité: p>

     @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
    
        // Making sure Main activity implemented interface
        try {
            if (USE_A_CONDITION) {
                ((MyFragInterface)this.getActivity()).needsHide();
            }
        } catch (ClassCastException e) {
            throw new ClassCastException("Calling activity must implement MyFragInterface");
        }
        super.onViewCreated(view, savedInstanceState);
    }
    


0 commentaires

1
votes

méthode masquer () code>: cache un fragment existant. Ceci n'est pertinent que pour les fragments dont les vues ont été ajoutées à un conteneur, car cela entraînera la vue de la vue.

Votre code: P>

@Override
public void onClick(View v) {
    if(!menuVisible)
    {
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    fm.beginTransaction(); 
    Fragment fragOne = new SubFragment(); 
    ft.show(fragOne);
    }
    else
    {
        FragmentManager fm = getFragmentManager(); 
        FragmentTransaction ft = fm.beginTransaction(); 

        fm.beginTransaction(); 
        // it's wrong , you just hide the fragment that not added to  FragmentTransaction
        Fragment fragOne = new SubFragment(); 
        ft.hide(fragOne);   
    }

} 


0 commentaires

-1
votes

Sous le code travaillée pour moi ..

View frag = findViewById(R.id.fragment);
frag.setVisibility(View.GONE);//Or View.INVISBLE


0 commentaires