Désactiver le Bouton de Retour de la presse à partir de fragment
Ma demande a une activité avec de nombreux fragments. Je souhaite désactiver le bouton de retour de la presse dans certains fragment. J'ai essayé avec le code ci-dessous. Mais ça ne fonctionne pas.
L'activité principale:
@Override
public void onBackPressed() {
super.onBackPressed();
OrderFragment.onBackPress();
}
Dans le fragment,
public static void onBackPressed()
{
Log.d(TAG,"It listen");
}
J'ai le message de log mais, comment puis-je désactiver le bouton de retour de mon fragment.
Vous devez vous connecter pour publier un commentaire.
Vous devez conserver une référence à la fragment que vous souhaitez désactiver/poignée de retour de la conférence de presse sur votre activité principale:
Dans OrderFragment:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.isVisible()' on a null object reference
erreur.Dans votre oncreateView() la méthode que vous devez écrire le présent code et dans KEYCODE_BACk retour, vrai, alors il va s'arrêter sur le bouton de retour de l'option pour le fragment
Avez-vous essayé comme cela, Effectivement, il fonctionne pour moi auparavant.
vous pouvez définir un écouteur pour l'Arrière de la clé. si vous ajoutez à cela, je suppose que cela fonctionne.
Je pense que vous devez Remplacer méthode onResume en fragments dont vous avez besoin pour désactiver l'arrière de la presse.Essai le code suivant.
super.onBackPressed
dans l'activité est la valeur par défaut de mise en œuvre. Supprimer cette si vous ne le voulez pas.Si vous ne voulez pas que votre fragment à être dans la backstack vous pouvez le faire, ne pas ajouter à la backstack dans la transaction. Donc, ne PAS appel
FragmentTransaction.addToBackStack();
sur les fragments que vous ne voulez pas dans votre backstack.onBackPressed
fonctionne comme ceci:Ainsi, lorsque vous appelez super.onBackPressed() vous pop la BackStack avant la fin de l'activité. La meilleure façon de régler cette question est pour vérifier que tu n' pas ajouter les fragments de la BackStack. Il est normalement fait comme ceci:
Une solution alternative, mais plus laide depuis que vous avez toujours inutiles code de la gauche, serait faire
onBackPressed()
appeler directementfinish()
à la fin de l'activité.Je vous conseille fortement de ne pas utiliser
getView().setOnKeyListener(...)
car il est odeur de code.Essayer cette