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?
Android-Aktivitäten werden im Aktivitätsstack gespeichert. Wenn Sie zu einer vorherigen Aktivität zurückkehren, kann dies zwei Dinge bedeuten.
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.
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.
Versuchen Sie Activity#finish()
. Dies ist mehr oder weniger das, was die Zurück-Schaltfläche standardmäßig tut.
Schreiben Sie einfach auf click finish () . Sie gelangen zur vorherigen Aktivität.
Nur das
super.onBackPressed();
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
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
Rufen Sie diese Methode einfach auf, um die aktuelle Aktivität zu beenden oder um von onBackPressed zurückzukehren
finish();
OR
onBackPressed();
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);
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?.
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);
}
Sie können onBackPressed
explizit aufrufen, ist der einfachste Weg
Siehe Zurück zur vorherigen Aktivität für Details
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.
Habe das gleiche Problem und
finish(); OR super.onBackPressed();
funktionierte gut für mich, beide funktionierten gleich, aber kein Glück mit return
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);
}
Versuchen Sie, dies zu tun, da Sie die Zurück-Taste drücken müssen
finish();
onBackPressed();
@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();
}
});
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.
Ich empfehle NavUtils.navigateUpFromSameTask (), es ist einfach und sehr einfach, Sie können es vom Google-Entwickler lernen.
@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 .
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();
}
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();
}
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
oder
http://developer.Android.com/reference/Android/content/Intent.html