So schließen Sie die Aktivität und kehren zur vorherigen Aktivität in Android zurück

Lesezeit: 5 Minuten

Benutzer-Avatar
Zapnologica

Ich habe eine Hauptaktivität, die, wenn ich auf eine Schaltfläche klicke, eine neue Aktivität startet, ich habe dazu den folgenden Code verwendet:

Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);

Der obige Code wurde von der Hauptaktivität ausgeführt.

Jetzt habe ich in meiner neuen Aktivität, die von der Hauptaktivität aufgerufen wird, einen Zurück-Button. Wenn ich auf diese Zurück-Schaltfläche klicke, möchte ich, dass meine neue Aktivität geschlossen wird und zur ursprünglichen Hauptaktivität zurückkehrt.

Ich habe versucht anzurufen super.finish() und nur finish() (aus der neuen Tätigkeit) aber damit schließt sich dann meine gesamte Bewerbung (auch meine Haupttätigkeit).

Wie kann ich die aktuell fokussierte Aktivität einfach schließen und dann zur Hauptaktivität zurückkehren?

BEARBEITET

Die Tatsache, dass die Zurück-Taste meines Telefons auch meine gesamte App schließt, lässt mich glauben, dass ich die zweite Aktivität falsch gestartet habe?


OK, ich habe gesucht,

Ich habe eine Einstellungsaktivität erstellt, die denselben Manifestcode und denselben Code zum Starten der Aktivität verwendet.

Für die Einstellungsaktivität, wenn ich die Zurück-Taste drücke, kehrt es zur Hauptaktivität zurück.

Mit der oben in der Hauptfrage erwähnten Aktivität beendet es einfach meine gesamte App.

Das Problem scheint also nicht der Code zum Beenden der Aktivität zu sein, sondern die Aktivität selbst.

  • Sie brauchen nicht einmal eine Zurück-Taste, lassen Sie den Benutzer einfach die Zurück-Taste des Telefons verwenden und Sie müssen nichts tun.

    – Hoan Nguyen

    13. März 2013 um 18:51 Uhr

  • Die Schaltfläche “Zurück” des Telefons schließt die Eingabeanwendung, nicht nur meine sekundäre Aktivität. Ich möchte die Hauptaktivität nicht schließen.

    – Zapnologica

    13. März 2013 um 19:20 Uhr

  • Der “Zurück”-Button sollte das nicht tun — können Sie mehr von Ihrem Code zeigen?

    – peejaybee

    13. März 2013 um 19:23 Uhr

  • Als Reaktion auf Ihre Bearbeitung sieht die sekundäre Aktivität nach dem, was Sie gepostet haben, gut aus. Ich denke, TGMCianer haben wahrscheinlich die richtige Antwort und Sie untersuchen Ihr Manifest.

    – peejaybee

    13. März 2013 um 19:36 Uhr

  • siehe diese Antwort, ich denke, das wird dir helfen

    – Muhammad Helmi

    2. Januar 2019 um 4:54 Uhr

Benutzer-Avatar
Ajay S

Ich glaube, Sie rufen an finish() Methode ein MainActivity bevor es losgeht SettingsActivity.

Das von Ihnen beschriebene Szenario tritt auf zwei Arten auf:

ENTWEDER

Sie haben eingestellt android:noHistory = "true" zum MainActivity Innerhalb AndroidManifest.xml was verursacht MainActivity zu finish automatisch beim Drücken der Zurück-Taste.

ODER

Bevor Sie zu Ihrer ‘SettingsActivity’ wechseln, haben Sie angerufen finish() in deiner MainActivity, was es tötet. Wenn Sie die Zurück-Taste drücken, geht es zurück zum Hauptbildschirm, da im Stapel keine andere Aktivität zum Popup voreingestellt ist.

  • Das würde erklären, warum die „Zurück“-Taste des Telefons auch die Hauptaktivität verwirft.

    – peejaybee

    13. März 2013 um 19:27 Uhr

  • Beim Debuggen ist mir aufgefallen, dass die Ausführung nach finish() fortgesetzt wird, daher ist es ratsam, zusätzlich eine Rückgabe einzufügen.

    – bis

    16. April 2015 um 14:10 Uhr

  • Ist der dritte Grund in dieser Antwort nicht nur eine Wiederholung des ersten?

    – Schmerz

    27. Oktober 2016 um 4:45 Uhr

Sie können zur vorherigen Aktivität zurückkehren, indem Sie einfach finish() in der Aktivität aufrufen, in der Sie sich gerade befinden. Beachten Sie, dass jeder Code nach dem Aufruf von finish() ausgeführt wird – Sie können einfach nach dem Aufruf von finish() eine Rückkehr ausführen, um dies zu beheben.

Wenn Sie Ergebnisse zu Aktivität eins zurückgeben möchten, benötigen Sie beim Starten von Aktivität zwei:

startActivityForResults(myIntent, MY_REQUEST_CODE);

Innerhalb Ihrer aufgerufenen Aktivität können Sie dann den Intent aus dem Parameter onCreate() erhalten oder verwenden

getIntent();

Um ein Ergebnis in Aktivität eins zurückzugeben, tun Sie dies in Aktivität zwei

setResult(Activity.RESULT_OK, MyIntentToReturn);

Wenn Sie nicht die Absicht haben, zurückzukehren, sagen Sie es einfach

setResult(Activity.RESULT_OK);

Wenn die Aktivität schlechte Ergebnisse liefert, können Sie Activity.RESULT_CANCELED verwenden (dies wird standardmäßig verwendet). Dann tust du es in Aktivität eins

onActivityResult(int requestCode, int resultCode, Intent data) {
    // Handle the logic for the requestCode, resultCode and data returned...
}

Um Aktivität zwei abzuschließen, verwenden Sie die gleichen Methoden mit finish() wie oben beschrieben, wobei Ihre Ergebnisse bereits festgelegt sind.

  • “Beachten Sie, dass jeder Code nach dem Aufruf von finish() ausgeführt wird – Sie können nach dem Aufruf von finish() einfach eine Rückkehr ausführen, um dies zu beheben.” Ich denke, “fix” ist hier eine schlechte Wortwahl. Es ist eher so, als würden Sie die Ausführung der folgenden Zeilen vermeiden (nicht reparieren).

    – Lo Tan

    20. Juni 2013 um 17:37 Uhr


Wenn Sie Fragment verwenden, sollten Sie verwenden

getActivity().onBackPressed();

Wenn Sie eine einzelne Aktivität verwenden, können Sie verwenden

finish();

Wenn Sie auf Ihre Schaltfläche klicken, können Sie Folgendes aufrufen:

super.onBackPressed();

Ich glaube, dass Ihre zweite Aktivität wahrscheinlich nicht mit Ihrer Hauptaktivität als Kinderaktivität verknüpft ist. Überprüfe dein AndroidManifest.xml Datei und sehen Sie nach, ob die <activity> Der Eintrag für Ihre untergeordnete Aktivität umfasst a android:parentActivityName Attribut. Es sollte in etwa so aussehen:

<?xml ...?>
...
<activity
    android:name=".MainActivity"
    ...>
</activity>
<activity
    android:name=".ChildActivity"
    android:parentActivityName=".MainActivity"
    ...>
</activity>
...

Benutzer-Avatar
Nirav Gadhiya

Versuchen Sie stattdessen diesen Code finish:

onBackPressed();

Benutzer-Avatar
JJD

Button edit = (Button) view.findViewById(R.id.yourButton);
edit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent intent = new Intent(this, YourMainActivity.class);
        startActivity(intent);
        finish();
    }
});

1014900cookie-checkSo schließen Sie die Aktivität und kehren zur vorherigen Aktivität in Android zurück

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

Privacy policy