it-swarm.com.de

Android: Gehen Sie zur vorherigen Aktivität zurück

Ich möchte etwas einfaches mit der Android-App machen. Wie kann man zu einer vorherigen Aktivität zurückkehren? 

Welchen Code brauche ich, um zur vorherigen Aktivität zurückzukehren?

459
Troj

Android-Aktivitäten werden im Aktivitätsstack gespeichert. Wenn Sie zu einer vorherigen Aktivität zurückkehren, kann dies zwei Dinge bedeuten.

  1. Sie haben die neue Aktivität aus einer anderen Aktivität mit startActivityForResult geöffnet. In diesem Fall können Sie einfach die Funktion finishActivity () aus Ihrem Code aufrufen und Sie gelangen zurück zur vorherigen Aktivität.

  2. Verfolgen Sie den Aktivitätsstapel. Wenn Sie eine neue Aktivität mit einer Absicht beginnen, können Sie ein Absichtsflag wie FLAG_ACTIVITY_REORDER_TO_FRONT oder FLAG_ACTIVITY_PREVIOUS_IS_TOP angeben. Sie können dies verwenden, um zwischen den Aktivitäten in Ihrer Anwendung zu mischen. Ich habe sie nicht viel benutzt. Schauen Sie sich die Flaggen hier an: http://developer.Android.com/reference/Android/content/Intent.html

Wie in den Kommentaren erwähnt, kann man die Aktivität mit startActivity() öffnen, wenn man sie mit finish()..__ schließt. Wenn Sie die Aufwärts-Schaltfläche verwenden möchten, können Sie dies in der onOptionsSelected(MenuItem item)-Methode abrufen, indem Sie die Element-ID im Gegensatz zu Android.R.id.home wie angegeben mit R.id.home prüfen in den Kommentaren.

443
Abhinav

Versuchen Sie Activity#finish() . Dies ist mehr oder weniger das, was die Zurück-Schaltfläche standardmäßig tut.

213
adamp

Schreiben Sie einfach auf click finish () . Sie gelangen zur vorherigen Aktivität.

73
Umer Rana

Nur das

super.onBackPressed();
64
AtanuCSE
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Auf diese Weise gelangen Sie zu einer vorherigen Aktivität, wobei der Stack beibehalten wird und alle darauf folgenden Aktivitäten vom Stack gelöscht werden.

Wenn Stack beispielsweise A-> B-> C-> D war und Sie B mit diesem Flag starten, ist Stack A-> B

28

Möchten Sie das Verhalten der Rücktasten steuern? Sie können die Zurück-Schaltfläche (um zu einer bestimmten Aktivität zu gelangen) mit einer von zwei Methoden überschreiben.

Für Android 1.6 und darunter:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

Oder wenn Sie nur Android 2.0 oder höher unterstützen:

@Override
public void onBackPressed() {
    // do something on back.
    return;
}

Für weitere Details: http://Android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

19
Bryan Denny

Rufen Sie diese Methode einfach auf, um die aktuelle Aktivität zu beenden oder um von onBackPressed zurückzukehren

finish();

OR

onBackPressed();
17
Akshay Paliwal

wenn Sie möchten, gehen Sie einfach zu der vorherigen Aktivität 

finish();

OR

onBackPressed();

wenn Sie zur zweiten Aktivität oder darunter gehen möchten, verwenden Sie Folgendes:

intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
12
Ram G.

Wenn Sie die AndroidManifest.xml-Datei mit der Aktivität "parent" richtig eingerichtet haben, können Sie

NavUtils.navigateUpFromSameTask(this);

Wo ist Ihre Kinderaktivität?.

11
Thomas Decaux

Fügen Sie dies in Ihre onCLick () -Methode ein, um zu Ihrer vorherigen Aktivität zurückzukehren

fertig();

oder Sie können dies verwenden. Es hat perfekt für mich funktioniert

 @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();

      if ( id == Android.R.id.home ) {
         finish();
         return true;
       }

  return super.onOptionsItemSelected(item);
  }
10
Darshuu

Sie können onBackPressed explizit aufrufen, ist der einfachste Weg
Siehe Zurück zur vorherigen Aktivität für Details 

7

Starten Sie die zweite Aktivität mit Absicht (verwenden Sie entweder startActivity oder startActivityForResult entsprechend Ihren Anforderungen). Wenn der Benutzer nun die Zurück-Taste drückt, wird die aktuelle Aktivität oben geschlossen und die vorherige angezeigt. 

Jetzt nehmen wir an, Sie haben zwei Aktivitäten, eine für die Auswahl einiger Einstellungen für den Benutzer, wie Sprache, Land usw., und nachdem er ausgewählt wurde, klickt der Benutzer auf die Schaltfläche Weiter, um zum Anmeldeformular zu gelangen (beispielsweise). Wenn der Login jetzt nicht erfolgreich ist, wird der Benutzer die Login-Aktivität ausführen. Was ist, wenn der Login erfolgreich ist? 

Wenn der Login erfolgreich ist, müssen Sie eine weitere Aktivität starten. Dies bedeutet, dass eine dritte Aktivität gestartet wird und noch zwei Aktivitäten ausgeführt werden. In diesem Fall empfiehlt es sich, startActivityForResult zu verwenden. Wenn die Anmeldung erfolgreich ist, senden Sie die OK-Daten an die erste Aktivität zurück und schließen Sie die Anmeldeaktivität. Wenn die Daten nun empfangen werden, starten Sie die dritte Aktivität und schließen Sie die erste Aktivität mit Finish. 

6
Altaf Hussain

Habe das gleiche Problem und 

finish();  OR super.onBackPressed();

funktionierte gut für mich, beide funktionierten gleich, aber kein Glück mit return

6
NoNaMe

Sie können dies versuchen:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
5
nikki

Versuchen Sie, dies zu tun, da Sie die Zurück-Taste drücken müssen

finish();
onBackPressed();
5
Muhammed Fasil
@Override
public void onBackPressed() {
    super.onBackPressed();
}

und wenn Sie auf den Button klicken wollen, gehen Sie einfach zurück 

bbsubmit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});
4
Md Hussain

Alle neuen Aktivitäten/Absichten haben standardmäßig ein Zurück/Vorheriges Verhalten, sofern Sie nicht finish() für die aufrufende Aktivität codiert haben.

4
ameyx

Ich empfehle NavUtils.navigateUpFromSameTask (), es ist einfach und sehr einfach, Sie können es vom Google-Entwickler lernen.

2
wuxue
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();

      if ( id == Android.R.id.home ) {
          finish();
          return true;
      }

      return super.onOptionsItemSelected(item);
 }

Versuchen Sie dies, es funktioniert sowohl auf Symbolleisten-Zurück-Schaltfläche als Hardware-Zurück-Schaltfläche .

2
Puni

Erstens, was Sie beachten müssen, wenn Sie zu einer vorherigen Aktivität zurückkehren möchten. Rufen Sie dann nicht die Methode finish () auf, wenn Sie mit Intent zu einer anderen Aktivität wechseln.

Danach haben Sie zwei Möglichkeiten, von der aktuellen Aktivität zur vorherigen Aktivität zurückzukehren:

Rufen Sie einfach: finish() unter dem Button Click Listener auf, oder überschreiben Sie die folgende Methode, um mit dem System Back Button zurückzukehren:

@Override
public void onBackPressed() {
    super.onBackPressed();
}
0
Monir Zzaman

Es gibt wenige Fälle, in denen Sie zu Ihrer vorherigen Aktivität zurückkehren können:

Fall 1: Wenn Sie das Ergebnis zu Ihrer vorherigen Aktivität zurückbringen möchten, dann ActivityA.Java

 Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
               startActivityForResult(intent,2);

FBHelperActivity.Java

 Intent returnIntent = new Intent();
 setResult(RESULT_OK, returnIntent);
 finish();

Fall 2: ActivityA -> FBHelperActivity ----> ActivityA

ActivityA.Java

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

FBHelperActivity.Java

after getting of result call finish();
 By this way your second activity will finish and because 
 you did not call finish() in your first activity then
 automatic first activity is in back ground, will visible.

Versuchen Sie es einfach mit erste Aktivität

Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);

In deiner zweiten Aktivität

@Override
public void onBackPressed() {
    this.finish();
}
0
byteC0de

Abgesehen von all den genannten Antworten ist dies immer noch eine alternative Methode. Nehmen wir an, Sie haben zwei Klassen, Klasse A und Klasse B.

Klasse A: Sie haben einige Aktivitäten wie das Ankreuzen eines Kontrollkästchens vorgenommen, einige Daten ausgedruckt und beabsichtigt, Klasse B. zu wählen. Klasse B, möchten Sie mehrere Werte an Klasse A übergeben und den vorherigen Status der Klasse A beibehalten, können Sie Versuchen Sie diese alternative Methode oder laden Sie den Quellcode herunter, um dies zu demonstrieren

http://whats-online.info/science-and-tutorials/125/Android-mainain-the-previous-state-of-activity-on-intent/

oder

http://developer.Android.com/reference/Android/content/Intent.html

0
Daniel Nyamasyo