Gestion de la presse arrière lors de l'utilisation de fragments dans Android
Je suis en utilisant Android Coulissantes Menu de Navigation à l'aide de Tiroir dans mon application et les Fragments sont utilisés dans l'application au lieu de des Activités.
Quand j'ai ouvert le tiroir, cliquez sur un élément, un Fragment apparaît. Je me déplace d'un fragment à un autre fragment en utilisant le code suivant:
Fragment fragment = null;
fragment = new GalleryFragment(selectetdMainMenu.getCategoryID());
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.addToBackStack("menuFrag");
ft.add(R.id.frame_container, fragment, "menuFrag");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
De cette façon, je peux aller d'un fragment à l'autre, mais je n'arrive pas à venir à le fragment précédent sur le dos sur le bouton. J'ai réussi à venir avec ce code à nouveau la poignée de la presse dans MainActivity où Tiroir est Initialisé:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
if (keyCode == KeyEvent.KEYCODE_BACK) {
Fragment fragment_byTag = fragmentManager.findFragmentByTag("menuFrag");
Fragment menuFragment_by_tag = fragmentManager.findFragmentByTag("galleryFrag");
Fragment commentsFrag_by_tag = fragmentManager.findFragmentByTag("commentsFrag");
Fragment dealDetail = fragmentManager.findFragmentByTag("promoFrag");
if(commentsFrag_by_tag != null){
if (commentsFrag_by_tag.isVisible()) {
Log.e("comments back ", " clicked");
//menuDetailsFrag.onBackPressed();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().remove(commentsFrag_by_tag).commit();
fragmentManager.beginTransaction().show(menuFragment_by_tag).commit();
}
}else if(menuFragment_by_tag.isVisible()){
Log.e("menu back ", " clicked");
menuDetailsFrag.onBackPressed();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().remove(menuFragment_by_tag).commit();
fragmentManager.beginTransaction().show(fragment_byTag).commit();
}
}
return false;
}
Cela fonctionne parfois, mais échoue la plupart du temps. Je serais très reconnaissant si une meilleure façon de naviguer dans le dossier peuvent être affichés.
source d'informationauteur TharakaNirmana
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de définir une
onKeyListener
à laView
dansonResume
. De ce que j'ai appris que vous avez à prendre soin de fixersetFocusableInTouchMode()
etrequestFocus
sur leView
.Ceci est un exemple de ce que j'utilise à cette fin:
Essayer ces méthodes. Pour moi, le plus utile est comme suit:
Dans MainActivity:
Dans GifPageTwoFragment:
Dans votre oncreateView() la méthode que vous devez écrire le présent code et dans KEYCODE_BACk condition que vous pouvez écrire ce que les fonctionnalités que vous souhaitez