Désactiver le bouton back dans android
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();
}
}
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
"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.
}
remplace simplement la méthode onBackPressed () .
@Override
public void onBackPressed() { }
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..............
}
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.
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
...
}
si vous voulez désactiver votre application en vous déconnectant, vous pouvez afficher un dialogue non-cancellable.
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.
}
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);
}
en utilisant simplement ce code: si vous voulez désactiver les rétrogrades, vous n'utilisez pas super.OnBackPressed ();
@Override
public void onBackPressed() {
}
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);
}
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();
}
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()
{
}