Désactiver le bouton back dans android

comment désactiver le bouton back sur android tout en déconnectant l'application?

271
demandé sur Paul Ratazzi 2011-01-24 11:26:45

14 réponses

outrepasser la méthode onBackPressed et ne rien faire si vous avez l'intention de manipuler le bouton arrière sur l'appareil.

@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}
587
répondu Gopinath 2017-12-13 06:55:16

si vous cherchez un niveau d'api android allant jusqu'à 1.6.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}

et si vous recherchez un niveau d'api plus élevé 2.0 et supérieur cela fonctionnera très bien

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;
}

Ecrivez ce code dans votre activité pour éviter d'appuyer sur le bouton

"
154
répondu Javanator 2012-06-02 02:37:12

vous pouvez faire ce moyen simple N'appelez pas super.onBackPressed ()

Note: - Ne faites pas cela à moins et jusqu'à ce que vous ayez une bonne raison de le faire.

@Override
public void onBackPressed() {
    super.onBackPressed();
// dont call **super**, if u want disable back button in current screen.
}
22
répondu Iman Marashi 2015-08-11 07:10:47

remplace simplement la méthode onBackPressed () .

@Override
public void onBackPressed() { }
17
répondu Pankaj kumar 2015-06-25 06:00:43

Je l'utilise.............

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK)
        Toast.makeText(getApplicationContext(), "back press",      
     Toast.LENGTH_LONG).show();

    return false;
       // Disable back button..............
}
11
répondu Mahmudul Haque Khan 2014-03-27 15:13:07

si vous voulez vous assurer que votre application client android est déconnecté d'un serveur avant que votre activité soit tuée --> déconnectez-vous avec un service sur son propre fil (c'est ce que vous êtes censé faire de toute façon).

désactiver le bouton arrière ne résoudra rien pour vous. Vous aurez toujours le même problème lorsque l'utilisateur reçoit un appel téléphonique par exemple. Quand un appel téléphonique est reçu, votre activité a à peu près autant de chances de se faire tuer avant d'obtenir un réponse fiable de retour à partir du réseau.

c'est pourquoi vous devez laisser un service attendre sur son propre fil la réponse du réseau, et ensuite le faire essayer de nouveau si elle ne réussit pas. Le service android est non seulement beaucoup moins susceptible de se faire tuer avant qu'il obtient une réponse en retour, mais s'il se fait vraiment tuer avant de finir le travail, il peut toujours être ranimé par AlarmManager d'essayer à nouveau.

8
répondu Stephan Branczyk 2011-01-24 09:56:55

si vous utilisez FragmentActivity . alors faites comme ceci

appelez d'abord ceci à l'intérieur de votre Fragment .

public void callParentMethod(){
    getActivity().onBackPressed();
}

et ensuite appeler onBackPressed méthode à côté de votre parent FragmentActivity classe.

@Override
public void onBackPressed() {
  //super.onBackPressed();
  //create a dialog to ask yes no question whether or not the user wants to exit
  ...
}
5
répondu hash 2016-07-14 12:18:55

si vous voulez désactiver votre application en vous déconnectant, vous pouvez afficher un dialogue non-cancellable.

3
répondu Ted Hopp 2011-01-24 21:29:47

vous avez juste besoin de surcharger la méthode pour le bouton de retour. Vous pouvez laisser la méthode vide si vous voulez de sorte que rien ne se produira lorsque vous appuyez sur le bouton Retour. Regardez le code ci-dessous:

@Override
public void onBackPressed() 
{
   // Your Code Here. Leave empty if you want nothing to happen on back press.
}
3
répondu Hammad Khan 2016-07-26 13:04:02

en dehors de ces deux méthodes de la réponse ci-dessus.

onBackPressed () (API Level 5, Android 2.0)

onKeyDown () (API Level 1, Android 1.0)

vous pouvez aussi remplacer le dispatchKeyEvent() (API Niveau 1, Android 1.0) comme ceci,

dispatchKeyEvent() (API Niveau 1, Android 1,0)

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}
2
répondu Kris Roofe 2017-06-23 07:09:15

en utilisant simplement ce code: si vous voulez désactiver les rétrogrades, vous n'utilisez pas super.OnBackPressed ();

@Override
public void onBackPressed() {

}
2
répondu Seda T. 2017-12-05 11:58:01

Pour moi juste primordial onBackPressed() n'a pas de travail, mais explicite de pointage de l'activité, il devrait commencer à bien fonctionné:

@Override
public void onBackPressed(){
  Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
  startActivity(intent);
}
1
répondu cheeroke 2017-04-19 13:14:36

vous pouvez outrepasser la méthode onBackPressed() dans votre activité et supprimer l'appel à la classe super.

@Override
public void onBackPressed() {
  //remove call to the super class
  //super.onBackPressed();
}
1
répondu Aman Agarwal 2018-03-24 12:59:50

remplace simplement la méthode onBackPressed() et pas besoin d'appeler la super classe de la méthode onBackPressed ou d'autres..

@Override
public void onBackPressed()
{

}

ou passez votre activité courante dans la méthode onBackPressed ().

@Override
public void onBackPressed()
{
   startActivity(new Intent(this, myActivity.class));  
   finish();
}

remplacer le nom de votre activité requise par myActivity.

si vous utilisez fragment alors tout d'abord appeler la méthode callParentMethod ()

public void callParentMethod(){
    context.onBackPressed(); // instead of context use getActivity or something related
}

alors appelez la méthode vide

@Override
public void onBackPressed()
{

}
0
répondu Zakaria Hossain 2018-06-03 20:14:34