Ich habe einen Code geschrieben, der den Benutzer auffordert, ihn erneut zu drücken, wenn er das Programm beenden möchte. Ich habe derzeit einen gewissen Code, aber ich weiß, dass er schlecht geschrieben ist, und ich gehe davon aus, dass es einen besseren Weg gibt, dies zu tun. Anregungen wäre hilfreich!
Code:
public void onBackPressed(){
backpress = (backpress + 1);
Toast.makeText(getApplicationContext(), " Press Back again to Exit ", Toast.LENGTH_SHORT).show();
if (backpress>1) {
this.finish();
}
}
this.finish()
durchsuper.onBackPressed();
.this.finish()
lieber anzurufenNavUtils.navigateUpFromSameTask(this);
, um zum vorherigen Bildschirm / zur vorherigen Aktivität zurückzukehrenAntworten:
Ich würde einen Dialog implementieren, der den Benutzer fragt, ob er beenden möchte, und dann anrufen,
super.onBackPressed()
wenn er dies tut.Im obigen Beispiel müssen Sie WelcomeActivity durch den Namen Ihrer Aktivität ersetzen.
quelle
super.onBackPressed()
in IhreronBackPressed()
Definition immer noch einen Aufruf (außer dem in der onClick-Methode)?android.os.Process.killProcess(android.os.Process.myPid());
aber benutze , ist die Animation zwischen den Aktivitäten nicht so flüssig. Stattdessen blinkt etwa die Hälfte der Sekunde ein schwarzer Bildschirm.Sie benötigen keinen Zähler für Rückpressen.
Speichern Sie einfach einen Verweis auf den angezeigten Toast:
private Toast backtoast;
Dann,
Dies wird aufgerufen,
finish()
wenn Sie zurück drücken, während der Toast noch sichtbar ist, und nur, wenn das Zurückdrücken zum Beenden der Anwendung führen würde.quelle
this.finish()
lieber anzurufenNavUtils.navigateUpFromSameTask(this);
, um zum vorherigen Bildschirm / zur vorherigen Aktivität zurückzukehrenIch benutze diesen viel einfacheren Ansatz ...
quelle
Sowohl Ihr Weg als auch der von @ Steve sind akzeptable Wege, um versehentliche Ausgänge zu verhindern.
Wenn Sie mit der Implementierung fortfahren möchten, müssen Sie sicherstellen, dass der Backpress auf 0 initialisiert ist, und wahrscheinlich eine
Timer
Art implementieren , um ihn nach einer Abklingzeit beim Tastendruck wieder auf 0 zurückzusetzen. (~ 5 Sekunden scheint richtig)quelle
Möglicherweise müssen Sie auch den Zähler zurücksetzen
onPause
, um Fälle zu vermeiden, in denen der Benutzer nach dem ersten Zurückdrücken nach Hause drückt oder auf andere Weise weg navigiert. Ansonsten sehe ich kein Problem.quelle
Wenn Sie Ihre Anwendung aus der direkten zweiten Aktivität beenden möchten, ohne zur ersten Aktivität zu wechseln, versuchen Sie diesen Code. "
In der zweiten Aktivität geben Sie diesen Code ein.
Und Ihre erste Aktivität Geben Sie diesen Code ein .....
}}
quelle
Dies ist der beste Weg, denn wenn der Benutzer nicht länger als zwei Sekunden zurück ist, setzen Sie den zurückgedrückten Wert zurück.
quelle
Außerdem müssen Sie den Dialog vor dem Aufruf auflösen
activity.super.onBackPressed()
, da sonst der Fehler "Aktivität ist durchgesickert ..." angezeigt wird.Beispiel in meinem Fall mit der Sweetalerdialog-Bibliothek:
quelle
Verwenden Sie .onBackPressed (), um die angegebene Aktivität zu unterstützen
quelle
Ich hatte gerade dieses Problem und löste es durch Hinzufügen der folgenden Methode:
quelle
Sie können onBackPressed auch auf folgende Weise mit benutzerdefiniertem Toast verwenden:
Geben Sie hier die Bildbeschreibung ein
customized_toast.xml
MainActivity.java
quelle
Verwenden Sie dies, es kann helfen.
quelle