Wie deaktiviere ich die Zurück-Schaltfläche in Android, während ich mich von der Anwendung abmelde?
Zurück-Button in Android deaktivieren
Anmut
Gopinath
Überschreiben Sie die onBackPressed-Methode und tun Sie nichts, wenn Sie die Zurück-Schaltfläche auf dem Gerät verarbeiten wollten.
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
-
Dies ist viel besser und sauberer als das Überschreiben der Schlüsselbehandlungsmethoden und hat den gleichen Effekt. Gute Antwort!
– Nik Reimann
13. Mai 2011 um 8:02 Uhr
-
Tolle Lösung Alter. Gibt es eine Möglichkeit, dies mit dem Home-Button zu tun?
– Datta Kunde
8. Juni 2011 um 7:01 Uhr
-
Das ist toll! Ich wollte eigentlich immer zu meiner Hauptaktivität zurückkehren, wenn ich mich von einer anderen Aktivität zurückziehe, und wenn ich diese Methode überschreibe, kann ich das sehr einfach tun.
– Jim
3. April 2013 um 20:14 Uhr
-
Hoppla, ich habe vergessen, super.onBackPressed() zu entfernen.
– Aristo Michael
7. Oktober 2015 um 14:40 Uhr
Rohit Sharma
Wenn Sie nach einem höheren API-Level 2.0 und höher suchen, funktioniert dies hervorragend
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
Wenn Sie nach Android-API-Level bis 1.6 suchen.
@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);
}
Schreiben Sie den obigen Code in Ihre Aktivität, um zu verhindern, dass die Zurück-Taste gedrückt wird
-
Diese Methode ist aufgrund der API-Level-Anforderung von onbackpressed abwärtskompatibeler als die Verwendung von onbackpressed
– AndrewPK
7. September 2011 um 3:40 Uhr
-
Gute Antwort. Obwohl ich es für mein Projekt nicht benötige, weiß ich es zu schätzen, dass Sie sowohl die alten als auch die neuen Methoden bereitgestellt haben. Dies sollte als richtige Antwort markiert werden. +1
– Jim
3. April 2013 um 20:16 Uhr
-
@Javanator der zweite würde für mich nicht funktionieren (zum Beispiel für API-Level 16), aber der erste funktioniert wie ein Zauber
– Nolomann
9. Juli 2013 um 14:27 Uhr
Iman Marashi
Sie können dies auf einfache Weise tun Rufen Sie nicht super.onBackPressed() auf
Hinweis:- Tun Sie dies nicht, es sei denn, Sie haben einen triftigen Grund dafür.
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
-
Eine Erklärung zum “warum nicht” wäre toll. Danke.
– fast ein Anfänger
12. März 2017 um 9:24 Uhr
-
Es ist wichtig, nicht .super anzurufen!
– rannte
17. März 2017 um 15:17 Uhr
-
@fastabeginner, da das Nichtaufrufen von Super die normale Verwendung der Zurück-Taste ungültig macht. Benutzer werden ausflippen, wenn eine normal funktionierende Schaltfläche nicht mehr funktioniert. Sie denken vielleicht, dass die App fehlerhaft ist oder das Telefon nicht richtig funktioniert usw. Ihre App wird am Ende der Übeltäter sein.
– begongon97
17. Juli 2019 um 12:41 Uhr
Pankaj Kumar
Einfach überschreiben onBackPressed() Methode.
@Override
public void onBackPressed() { }
Ich benutze es………….
@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..............
}
Zakaria Hossain
Überschreiben Sie einfach die Methode onBackPressed() und Sie müssen nicht die Superklasse der Methode onBackPressed oder andere aufrufen.
@Override
public void onBackPressed()
{
}
Oder übergeben Sie Ihre aktuelle Aktivität an die Methode onBackPressed().
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Ersetzen Sie Ihren erforderlichen Aktivitätsnamen 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 auf
@Override
public void onBackPressed()
{
}
Stephan Branczyk
Wenn Sie sicherstellen möchten, dass Ihre Android-Clientanwendung von einem Server abgemeldet wird, bevor Ihre Aktivität beendet wird –> Melden Sie sich mit einem Dienst in einem eigenen Thread ab (das sollten Sie sowieso tun).
Das Deaktivieren der Zurück-Taste wird nichts für Sie lösen. Sie werden immer noch das gleiche Problem haben, wenn der Benutzer zum Beispiel einen Anruf erhält. Wenn ein Telefonanruf eingeht, besteht für Ihre Aktivität ungefähr die gleiche Wahrscheinlichkeit, dass sie beendet wird, bevor sie eine zuverlässige Antwort vom Netzwerk erhält.
Aus diesem Grund sollten Sie einen Dienst in seinem eigenen Thread auf die Antwort aus dem Netzwerk warten lassen und es dann erneut versuchen, wenn dies nicht gelingt. Es ist nicht nur viel unwahrscheinlicher, dass der Android-Dienst beendet wird, bevor er eine Antwort zurückerhält, sondern er kann, sollte er wirklich beendet werden, bevor er den Job beendet hat, jederzeit von AlarmManager wiederbelebt werden, um es erneut zu versuchen.
Können Sie die Frage etwas klarer formulieren? Wenn Sie das Standardverhalten der Zurück-Schaltfläche überschreiben möchten, lesen Sie diese Frage hier. stackoverflow.com/questions/2000102/…
– Gopinath
24. Januar 2011 um 8:28 Uhr
Bitte tun Sie dies nicht, es sei denn, Sie haben einen guten Grund, da das Brechen des erwarteten Betriebsmodells die gesamte Plattform geringfügig beeinträchtigt
– Hami
24. Januar 2011 um 8:39 Uhr
Sie würden es tun wollen, wenn Sie es mit einem dummen Samsung S4 zu tun haben, bei dem die Zurück-Taste berührungsempfindlich (nicht physisch) direkt am Rand des Telefons ist, das bereits so berührungsempfindlich ist, dass eine Handfläche an der Seite anliegt geh zurück.
– dubmojo
14. Februar 2014 um 22:27 Uhr
Es ist gegen Qualitäts- und Designleitfaden für AndroidRolle UX-N1.
– MiguelSlv
1. Dezember 2018 um 19:41 Uhr