Ich möchte etwas einfaches auf Android App machen. Wie ist es möglich, zu einer vorherigen Aktivität zurückzukehren?
Welchen Code brauche ich, um zur vorherigen Aktivität zurückzukehren?
Ich möchte etwas einfaches auf Android App machen. Wie ist es möglich, zu einer vorherigen Aktivität zurückzukehren?
Welchen Code brauche ich, um zur vorherigen Aktivität zurückzukehren?
Antworten:
Android-Aktivitäten werden im Aktivitätsstapel gespeichert. Die Rückkehr zu einer früheren Aktivität kann zwei Dinge bedeuten.
Sie haben die neue Aktivität von einer anderen Aktivität aus mit startActivityForResult geöffnet . In diesem Fall können Sie einfach die Funktion finishActivity () aus Ihrem Code aufrufen und kehren zur vorherigen Aktivität zurück.
Behalten Sie den Aktivitätsstapel im Auge. Wann immer Sie eine neue Aktivität mit einer Absicht starten, können Sie ein Absichtsflag wie FLAG_ACTIVITY_REORDER_TO_FRONT
oder angeben FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Sie können dies verwenden, um zwischen den Aktivitäten in Ihrer Anwendung zu wechseln. Ich habe sie aber nicht viel benutzt. Schauen Sie sich die Flags hier an: http://developer.android.com/reference/android/content/Intent.html
Wie in den Kommentaren erwähnt, kann man die Aktivität mit startActivity()
schließen , wenn sie mit geöffnet wird finish()
. Wenn Sie die Aufwärts - Taste verwenden möchten , können Sie das in fangen onOptionsSelected(MenuItem item)
Verfahren mit der Überprüfung der Artikel - ID gegen android.R.id.home
anders als R.id.home
wie in den Kommentaren erwähnt.
Versuchen Sie es Activity#finish()
. Dies ist mehr oder weniger das, was die Zurück-Schaltfläche standardmäßig tut.
this.finish();
#
ist ein Indikator, der finish()
eine nicht statische Methode der Aktivitätsklasse ist. Es ist kein gültiges Java, aber es hilft zu erklären, wie man die Methode verwenden könnte.
.
, dh:Activity.someStaticMethod()
Schreiben Sie einfach auf "Fertig stellen" () . Sie gelangen zur vorherigen Aktivität.
Nur das
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Dadurch gelangen Sie zu einer vorherigen Aktivität, bei der der Stapel beibehalten und alle nachfolgenden Aktivitäten vom Stapel gelöscht werden.
Wenn der Stapel beispielsweise A-> B-> C-> D war und Sie B mit diesem Flag starten, ist der Stapel A-> B.
Möchten Sie die Kontrolle über das Verhalten der Zurück-Schaltfläche übernehmen? Sie können die Zurück-Schaltfläche (um zu einer bestimmten Aktivität zu gelangen) über eine von zwei Methoden überschreiben.
Für Android 1.6 und niedriger:
@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 Informationen: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Rufen Sie einfach diese Methode auf, um die aktuelle Aktivität zu beenden oder mit onBackPressed zurückzukehren
finish();
ODER
onBackPressed();
Wenn Sie gehen möchten, um nur zur vorherigen Aktivität zu gehen, verwenden Sie
finish();
ODER
onBackPressed();
Wenn Sie zur zweiten Aktivität oder darunter wechseln 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);
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);
}
Wenn Sie die Datei AndroidManifest.xml mit übergeordneter Aktivität korrekt eingerichtet haben, können Sie Folgendes verwenden:
NavUtils.navigateUpFromSameTask(this);
Wo dies Ihre Kinderaktivität ist.
Versuchen Sie dies, indem Sie die Zurück-Taste drücken
finish();
onBackPressed();
Sie können explizit anrufen.
Dies onBackPressed
ist der einfachste Weg.
Weitere Informationen finden Sie unter Zurück zur vorherigen Aktivität
Starten Sie die zweite Aktivität mit Absicht (entweder verwenden startActivity
oder startActivityForResult
gemäß Ihren Anforderungen). Wenn der Benutzer die Zurück-Taste drückt, wird die aktuelle Aktivität oben geschlossen und die vorherige angezeigt.
Nehmen wir an, Sie haben zwei Aktivitäten, eine zum Auswählen einiger Einstellungen für den Benutzer, wie Sprache, Land usw., und nach der Auswahl klickt der Benutzer auf die Schaltfläche Weiter, um zum Anmeldeformular zu gelangen (zum Beispiel). Wenn die Anmeldung nicht erfolgreich ist, befindet sich der Benutzer in der Anmeldeaktivität. Was passiert, wenn die Anmeldung erfolgreich ist?
Wenn die Anmeldung erfolgreich ist, müssen Sie eine andere Aktivität starten. Dies bedeutet, dass eine dritte Aktivität gestartet wird und noch zwei Aktivitäten ausgeführt werden. In diesem Fall ist es gut zu verwenden startActivityForResult
. Wenn die Anmeldung erfolgreich ist, senden Sie OK-Daten an die erste Aktivität zurück und schließen Sie die Anmeldeaktivität. Wenn die Daten empfangen werden, starten Sie die dritte Aktivität und schließen Sie die erste Aktivität mit finish.
@Override
public void onBackPressed() {
super.onBackPressed();
}
und wenn Sie auf die Schaltfläche klicken möchten, gehen Sie zurück und setzen Sie sie einfach ein
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@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 der Symbolleisten-Zurück-Schaltfläche als auch auf der Hardware-Zurück-Schaltfläche .
Es gibt nur 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ückführen möchten, klicken Sie auf 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: AktivitätA -> FBHelperActivity ----> AktivitätA
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.
Danach haben Sie zwei Möglichkeiten, von der aktuellen Aktivität zur vorherigen Aktivität zurückzukehren:
Rufen Sie einfach an: finish()
Klicken Sie unter der Schaltfläche auf den Listener, oder überschreiben Sie die folgende Methode, um mit der Schaltfläche "System zurück" zurückzusetzen:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Neben all den genannten Antworten ist dies immer noch eine alternative Möglichkeit. Nehmen wir an, Sie haben zwei Klassen, Klasse A und Klasse B.
Klasse A Sie haben einige Aktivitäten wie das Aktivieren des Kontrollkästchens vorgenommen, einige Daten und Absichten für Klasse B ausgedruckt. Klasse B, Sie möchten mehrere Werte an Klasse A übergeben und den vorherigen Status von Klasse A beibehalten. Sie können diese Alternative verwenden Methode oder Quellcode herunterladen, um dies zu demonstrieren
oder
http://developer.android.com/reference/android/content/Intent.html
Probieren Sie dies einfach in der ersten Aktivität aus
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
In Ihrer zweiten Aktivität
@Override
public void onBackPressed() {
this.finish();
}