373 Stimmen

Zurück-Taste in Android deaktivieren

Wie kann man die Zurück-Taste in Android deaktivieren, während man sich aus der Anwendung abmeldet?

10voto

Zakaria Hossain Punkte 1699

Überschreiben Sie einfach die onBackPressed()-Methode, und Sie müssen nicht die Superklasse der onBackPressed-Methode oder andere aufrufen.

@Override
public void onBackPressed()
{

}

Oder Sie übergeben Ihre aktuelle Aktivität an die Methode onBackPressed().

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

Ersetzen Sie den Namen Ihrer gewünschten Aktivität durch myActivity.

wenn Sie Fragment verwenden, rufen Sie zunächst die Methode callParentMethod() auf

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

rufen Sie dann die leere Methode

@Override
public void onBackPressed()
{

}

9voto

Mahesh Bokhani Punkte 103

Zurück-Taste in Android deaktivieren

@Override
public void onBackPressed() {
    return;
}

9voto

Stephan Branczyk Punkte 9299

Wenn Sie sicherstellen wollen, dass Ihre Android-Client-Anwendung von einem Server abgemeldet wird, bevor Ihre Aktivität beendet wird --> melden Sie sich mit einem Dienst auf seinem eigenen Thread ab (das ist, was Sie sowieso tun sollten).

Die Deaktivierung der Schaltfläche "Zurück" bringt keine Lösung für Sie. Sie werden immer noch das gleiche Problem haben, wenn der Benutzer zum Beispiel einen Anruf erhält. Wenn ein Anruf eingeht, ist die Wahrscheinlichkeit, dass Ihre Aktivität abgebrochen wird, bevor sie eine zuverlässige Antwort vom Netz erhält, etwa gleich groß.

Deshalb sollten Sie einen Dienst in seinem eigenen Thread auf die Antwort aus dem Netz warten lassen und ihn dann erneut versuchen lassen, wenn er nicht erfolgreich ist. Es ist nicht nur viel unwahrscheinlicher, dass der Android-Dienst abgeschaltet wird, bevor er eine Antwort erhält, sondern sollte er wirklich abgeschaltet werden, bevor er seine Arbeit beendet hat, kann er jederzeit von AlarmManager wiederbelebt werden, um es erneut zu versuchen.

8voto

Aman Agarwal Punkte 584

Sie können die onBackPressed() Methode in Ihrer Aktivität und entfernen Sie den Aufruf der Superklasse.

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

6voto

hash Punkte 5146

Wenn Sie FragmentActivity . dann so vorgehen

rufen Sie zunächst This innerhalb Ihrer Fragment .

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

und dann Aufruf onBackPressed Methode auf der Seite Ihres Elternteils FragmentActivity Klasse.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X