web-dev-qa-db-fra.com

Désactiver le bouton Précédent dans android

Comment désactiver le bouton Précédent dans Android lors de la déconnexion de l'application?

312
Grace

Ignorez la méthode onBackPressed et ne faites rien si vous vouliez gérer le bouton Précédent de l'appareil.

@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}
632
Gopinath

Si vous recherchez Android niveau d'api 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 supérieur à 2.0, cela fonctionnera très bien.

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

écrivez ce code dans votre activité pour éviter que le bouton Précédent ne soit enfoncé

161
Javanator

Vous pouvez le faire simplement n'appelez pas super.onBackPressed ()

Remarque: - Ne le faites que si vous avez de bonnes raisons de le faire.

@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
32
Iman Marashi

Remplacez simplement la méthode onBackPressed ().

@Override
public void onBackPressed() { }
21
Pankaj kumar

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..............
}
13

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

La désactivation du bouton Retour 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. Lorsqu'un appel est reçu, votre activité a à peu près autant de chances d'être tuée avant de recevoir une réponse fiable du réseau.

C'est pourquoi vous devez laisser un service attendre sa réponse du réseau sur son propre thread, puis le faire réessayer s'il échoue. Le service Android non seulement est beaucoup moins susceptible de se faire tuer avant de recevoir une réponse, mais s'il le fait vraiment avant de terminer le travail, AlarmManager peut toujours le réactiver pour le réessayer.

9
Stephan Branczyk

Remplacez simplement la méthode onBackPressed () et inutile d'appeler la super classe de la méthode onBackPressed ou autres.

@Override
public void onBackPressed()
{

}

Ou passez votre activité actuelle dans la méthode onBackPressed ().

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

Remplacez le nom de votre activité require par myActivity.

si vous utilisez fragment, appelez d’abord la méthode callParentMethod ()

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

puis appelez la méthode vide

@Override
public void onBackPressed()
{

}
8
Zakaria Hossain

si vous utilisez FragmentActivity. alors fais comme ça

premier appel Ceci à l'intérieur de votre Fragment.

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

puis appelez la méthode onBackPressed à côté de votre classe parent FragmentActivity.

@Override
public void onBackPressed() {
  //super.onBackPressed();
  //create a dialog to ask yes no question whether or not the user wants to exit
  ...
}
6
hash

En utilisant simplement ce code: Si vous voulez appuyer sur désactiver, vous n’utilisez pas super.OnBackPressed ();

@Override
public void onBackPressed() {

}
5
Seda T.

Si vous souhaitez désactiver votre application lors de la déconnexion, vous pouvez afficher une boîte de dialogue non annulable.

4
Ted Hopp

Vous pouvez remplacer la méthode onBackPressed() dans votre activité et supprimer l'appel de la classe super.

@Override
public void onBackPressed() {
  //remove call to the super class
  //super.onBackPressed();
}
4
Aman Agarwal

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

onBackPressed () (API de niveau 5, Android 2.0)

onKeyDown () (API de niveau 1, Android 1.0)

Vous pouvez également remplacer la dispatchKeyEvent() (API de niveau 1, Android 1.0) comme ceci,

dispatchKeyEvent() (API de 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);
}
3
Kris Roofe

Il vous suffit de remplacer la méthode pour le bouton Précédent. Vous pouvez laisser la méthode vide si vous le souhaitez afin que rien ne se passe lorsque vous appuyez sur le bouton Précédent. Veuillez regarder le code ci-dessous:

@Override
public void onBackPressed() 
{
   // Your Code Here. Leave empty if you want nothing to happen on back press.
}
3
Hammad Khan

Pour moi, simplement remplacer onBackPressed() ne fonctionnait pas, mais indiquer explicitement quelle activité elle devait commencer fonctionnait bien:

@Override
public void onBackPressed(){
  Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
  startActivity(intent);
}
2
cheeroke

Essaye ça:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {

   return true;
 }
   return super.onKeyDown(keyCode, event);    
}
1
mohamad sheikhi

retirer super.onBackPressed() de public void onBackPressed() fonctionne très bien. son testé dans Android 9

1
Golil

Désactiver le bouton de retour sous Android

@Override
public void onBackPressed() {
    return;
}
0
Mahesh Bokhani