Wie drücke ich die Zurück-Taste in Android programmgesteuert?

Lesezeit: 4 Minuten

Benutzer-Avatar
Vinothp

In meiner App habe ich eine Abmeldefunktion. Wenn der Benutzer auf Abmelden klickt, gelangt er zum Startbildschirm. Jetzt verlasse ich meine App, indem ich die Zurück-Taste drücke. Aber was ich möchte, ist, dass ich automatisch (dh programmgesteuert) beenden muss, genauso wie die Funktionalität der Zurück-Schaltfläche. Ich weiß, dass durch Aufrufen von finish() die Funktionalität ausgeführt wird. Aber die Sache ist, dass es zur vorherigen Aktivität geht.

  • Auch wenn Sie die Zurück-Taste drücken, wird die vorherige Aktivität angezeigt …

    – Tarun

    23. Mai 2012 um 11:17 Uhr

  • Verwenden Sie einfach beenden ();

    – VJ

    23. Mai 2012 um 11:20 Uhr

  • @Tarun Ich verwende diesen Code, um den gesamten Verlauf zu löschen. ExitActivity.this.finish(); Absicht intention1 = neue Absicht (ExitActivity.this,PinActivity.class); intention1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity (Absicht1);

    – Vinothp

    23. Mai 2012 um 11:22 Uhr


  • @ user1216003 Sie sind auf dem richtigen Weg. Sie tun dasselbe wie die Zurück-Schaltfläche, indem Sie das Flag in Absicht setzen.

    – VJ

    23. Mai 2012 um 11:24 Uhr


Benutzer-Avatar
Tarun

onBackPressed() wird unterstützt seit: API-Level 5

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

@Override
public void onBackPressed() {
    //this is only needed if you have specific things
    //that you want to do when the user presses the back button.
    /* your specific things...*/
    super.onBackPressed();   
}

  • Was ist der Sinn davon? Sie schreiben, was Android standardmäßig tut. Es ruft onBackPressed() auf, wenn die Zurück-Taste gedrückt wird …. habe ich recht?

    – Drulabs

    23. Mai 2012 um 11:21 Uhr

  • @KKD Wenn Sie API unter 5 unterstützen müssen, müssen Sie wie oben verwenden. android-developers.blogspot.co.uk/2009/12/…

    – Tarun

    23. Mai 2012 um 11:24 Uhr

  • Dann ist onBackPressed gut zu gehen … Starten Sie Ihren ExitIntent in onBackPressed ()

    – Tarun

    23. Mai 2012 um 11:29 Uhr

  • Vielen Dank für Ihren Kommentar. Ich verwende keine Zurück-Schaltfläche. Ich verwende eine Abmeldeschaltfläche. Wenn der Benutzer darauf klickt, wird ein Dialogfeld mit der Frage Ja oder Nein ausgefüllt … Dies ist notwendig, weil ich die Alarmfunktion in meiner App verwende. Wenn jemals der Alarm auftaucht, erscheint die Nachricht auf dem Startbildschirm im Hintergrund. Also muss ich ihn entfernen, das ist es, was ich versuche …

    – Vinothp

    23. Mai 2012 um 11:37 Uhr


  • Ich hatte auf einigen Tablets Probleme mit onBackPressed(), wie beim Absturz.

    – Dämonick

    23. Mai 2012 um 13:21 Uhr

Sie müssen nicht überschreiben onBackPressed() – Es ist bereits als die Aktion definiert, die Ihre Aktivität standardmäßig ausführt, wenn der Benutzer die Zurück-Schaltfläche drückt. Also einfach anrufen onBackPressed() wann immer Sie die Zurück-Taste “programmgesteuert drücken” möchten.

Das würde nur dazu führen finish() wird aber angerufen 😉

Ich denke, Sie sind verwirrt mit der Funktion der Zurück-Taste. Standardmäßig ist es nur ein Anruf bei finish(), sodass die aktuelle Aktivität einfach beendet wird. Wenn Sie etwas hinter dieser Aktivität haben, wird dieser Bildschirm angezeigt.

Was Sie tun können, ist, wenn Sie Ihre Aktivität über das Login starten, ein CLEAR_TOP-Flag hinzufügen, damit die Login-Aktivität nicht da ist, wenn Sie Ihre verlassen.

  • Hallo, vielen Dank für Ihre Antwort. Es klingt gut, aber ich habe Ihren Ansatz erneut versucht und lande im selben Anmeldebildschirm. Können Sie mir dabei helfen …

    – Vinothp

    29. Mai 2012 um 12:17 Uhr


  • Dies ist die richtige Antwort, aber Sie sollten sie bearbeiten, da es nicht immer “nur ein Aufruf zum Beenden ()” ist. In meinem Fall (und es funktioniert genau so, wie ich es beabsichtige) ist es eine Möglichkeit, sich rückwärts durch den Fragmentstapel zu bewegen, und ruft nicht finish() auf, bis Sie das allererste Element auf diesem Stapel erreicht haben.

    – Jewgeni Simkin

    6. Mai 2015 um 6:28 Uhr

Manchmal ist es nützlich, die Methode onBackPressed() zu überschreiben, denn falls Sie mit Fragmenten arbeiten und zwischen ihnen wechseln, wenn Sie die Zurück-Taste drücken, kehren sie zum vorherigen Fragment zurück.

  • Das ist genau richtig und verdient mehr Upvotes.

    – Jewgeni Simkin

    6. Mai 2015 um 6:29 Uhr

Benutzer-Avatar
Drulabs

Anruf onBackPressed nachdem Sie es in Ihrer Aktivität überschrieben haben.

Sie können einfach onBackPressed(); verwenden;

oder wenn Sie Fragment verwenden, können Sie getActivity().onBackPressed() verwenden

Benutzer-Avatar
DBS-Strahl

Fügen Sie einfach finish(); in deiner ersten Klasse’ (Login-Aktivität) onPause(); Methode. das ist alles

Benutzer-Avatar
Schwarz Grün

Für Kotlin-Benutzer und die Arbeit mit Fragmenten:

verwenden finish() wenn Sie durch Aktivitäten navigieren, aber für Fragmente können Sie das Fragment anhand seines Fragment-Tags entfernen.

Verwenden Sie beim Navigieren zum Fragment:

myFragment = myFragment(this)            

parentFragmentManager.beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
                .add(R.id.baseFragmentContainer, myFragment, "MYFRAGMENT")
                .addToBackStack("myFragmentNameInStack")
                .commit()

Wenn Sie dann auf Ihre bestimmte Schaltfläche tippen und ein Drücken der “Zurück-Schaltfläche” simulieren, gehen Sie wie folgt vor:

    binding.someButton.setOnClickListener {
        activity?.supportFragmentManager?.
        popBackStack("myFragmentNameInStack", FragmentManager.POP_BACK_STACK_INCLUSIVE)
    }

Dadurch wird das durch Tag hinzugefügte Fragment entfernt "myFragmentNameInStack"zeigt den vorherigen auf dem Bildschirm.

1283420cookie-checkWie drücke ich die Zurück-Taste in Android programmgesteuert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy