ActionBar 'up' Button zerstört die Elternaktivität, 'back' nicht

Ich habe eine relativ einfache Android-app mit einem Activity zeigt eine Liste von Elementen, und eine andere zeigt die details zu einem ausgewählten Artikel. Ich beginne die Liste Aktivität, das ist meine höchste Aktivität (mit FLAG_ACTIVITY_CLEAR_TOP deaktivieren Sie die login-Aktivität, aus dem dieser genannt wird) mit:

Intent intent = new Intent(this, ListInstancesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

und in dieser Tätigkeit habe ich handeln ein Element ausgewählt wird, mit:

Intent detailIntent = new Intent(this, ShowInstanceActivity.class);
detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);

Alles Prima funktioniert, und wenn ich auf den softkey "zurück" - Taste, dann komme ich zu der ListInstancesActivity als ich erwarten würde. Allerdings, wenn ich stattdessen drücken Sie die zurück - /nach oben-Taste auf der Menüleiste, dann ist es zerstört und neu erstellt die ListInstancesActivity. Das ist schlecht, da es relativ rechenintensiv, so zu tun.

Wie kann ich die action bar in der gleichen Weise Verhalten, wie Sie den softkey, und gerade zurück zu der vorherigen Aktivität, anstatt es zu zerstören.

Es sollte angemerkt werden, dass ich mit der support library version der actionbar.

Sind die relevanten Teile meiner AndroidManifest.xml sind

<activity
  android:name=".agenda.ListInstancesActivity"
  android:label="@string/list_instances_activity_title">
</activity>
<activity
  android:name=".agenda.ShowInstanceActivity"
  android:label="@string/show_instance_activity_title"
  android:parentActivityName=".agenda.ListInstancesActivity">
</activity>
Kommentar zu dem Problem
CLEAR_TOP hat nichts zu tun mit der login-Aktivität, die kommt, bevor die Liste Aktivität. Es besagt, dass alles, was nach der Liste die Aktivität beendet werden soll. Sollten Sie mit dem LOGIN, LISTE, DETAIL, LISTE, DETAIL Schritte. Nach dem starten der LISTE Aktivität mit CLEAR_TOP Flagge der stack wird wie folgt Aussehen : LOGIN-LISTE. Die LISTE Aktivität erhalten von Grund auf neu erstellt. Wenn Sie angeben, SINGLE_TOP darüber hinaus die LISTE Aktivität stattdessen werden bewahrt und erhalten onNewIntent(Vorsatz) callback. Kommentarautor: Eugen Pechanec

InformationsquelleAutor der Frage jgm | 2014-03-04

Schreibe einen Kommentar