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 p> dans mon fragment p> merci p> p>
6 Réponses :
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();
Vous devez utiliser une interface pour communiquer avec votre activité parent. P>
Jetez un coup d'œil sur le tutoriel de Vogella, "3.4. Communication d'application avec des fragments". Voici le lien p>
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);
Considérant que cette question a plus de 2k .. Une réponse peut toujours aider les nouveaux lecteurs donc ici cela va:
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> 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);
}
méthode Votre code: P> 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.
@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);
}
}
Sous le code travaillée pour moi ..
View frag = findViewById(R.id.fragment); frag.setVisibility(View.GONE);//Or View.INVISBLE
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?