2012-12-26 6 views
7

ich mit der Navigation unterDer richtige Weg „Up“ Navigation nach den Richtlinien

enter image description here

Stellen einverstanden völlig zu handhaben, dass das Buch ausführlich in verschiedenen Instanzen eines BookDetailActivity gemacht.

Der Stapel vor in book2 Detail nach oben gedrückt ist:

  • BookDetailActivity (Buch 2 - Sie sind hier)
  • BookDetailActivity (Buch 1)
  • AllBooksActivity

Wenn ich folgen die guidelines werde ich verwenden:

Aber das große Problem mit diesem Code ist, dass BookDetailActivity (Buch 1) noch am Leben ist!

Drücken Zurück-Taste nach „oben“ würde das Detail des Buches bringen 1.

Wie kann ich töten alle BookDetailActivity, die zwischen dem ursprünglichen AllBooksActivity und der Tätigkeit sind, wo ich oben gedrückt?

+0

Haben Sie überlegt, Fragmente anstelle von Aktivitäten zu verwenden? –

+0

Ich brauche eine andere Aktivität, weil ich möchte die Animation (wenn auf dem Benutzergerät aktiviert) ein neues "Window" erstellen und Übergänge zwischen ganzen Bildschirmen –

+0

so weit ich weiß, können Sie Übergänge zwischen Fragmenten haben: http: // Entwickler. android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations (int, int, int, int) –

Antwort

5

Die related guidelines article nimmt den folgenden: Für weitere Informationen versuchen, die zur Verfügung stehenden Absichten Fahnen lesen

Implementierung Hinweis: Als bewährte Methode, wenn entweder Starts oder Up Implementierung sicher, dass die löschen Rückstapel von beliebigen absteigenden Bildschirmen. Für den Home-Bildschirm sollte der einzige verbleibende Bildschirm auf dem Backstack der Startbildschirm sein. Für die Aufwärtsnavigation sollte der aktuelle Bildschirm vom Backstack entfernt werden, es sei denn, Back navigiert über Bildschirmhierarchien. Sie können die FLAT_ACTIVITY_CLEAR_TOP und FLAG_ACTIVITY_NEW_TASK Absichtsflags zusammen verwenden, um dies zu erreichen.

Da Sie dies tun, sollte BookDetailActivity1 von FLAG_ACTIVITY_CLEAR_TOP geschlossen werden.Der einzige Weg, wenn es lebendig wäre und beim Drücken von Zurück angezeigt wird, ist, dass es vor AllBooksActivity gestartet wurde.

Was nicht FLAG_ACTIVITY_NEW_TASK benötigen (vorgeschlagen von android Entwickler ‚s Antwort):

Wenn dieses Flag verwenden, wenn eine Aufgabe bereits für die Tätigkeit ausgeführt wird Sie jetzt beginnen, dann eine neue Aktivität wird nicht gestartet; stattdessen wird einfach die aktuelle Aufgabe darin wurde zuletzt an der Vorderseite des Bildschirm mit dem Zustand gebracht werden.

... also, wenn Ihre Aktivität vorhanden ist, wird es keine neue Aufgabe starten.

+0

Soweit die neue Aufgabe Flagge geht, kann Ihr Kommentar wahr sein, aber warum die Flagge an erster Stelle? Es scheint mir keine neue Aufgabe zu sein. – kabuko

+0

Es wird möglicherweise nicht in allen Fällen benötigt. Aber wenn Benutzer BookDetailsActivity von außerhalb der App (von einer Benachrichtigung, durch Scannen eines Codes usw.) starten können, ist es sinnvoll. Siehe das letzte Beispiel (Navigieren zwischen Apps zur Unterstützung der Freigabe) in diesem Artikel: http://developer.android.com/design/patterns/navigation.html –

1

ok, es gibt mehrere Möglichkeiten, so etwas zu tun. hier ist einer von ihnen:

jedoch würde ich vorschlagen, dass anstatt die erste Aktivität zu öffnen, als ob es eine neue ist, einfach die aktuelle und die davor fertig.

Um dies zu tun, rufen Sie jede neue Aktivität mit startActivityForResult auf und setzen das Ergebnis für jede der Aktivitäten auf einen Wert, der besagt, dass Sie zur ersten Aktivität zurückkehren möchten.

Sie können sogar den Wert als kanonischen Klassennamen festlegen und eine Basisaktivität erstellen, die alle diese Anfragen automatisch behandelt, so dass Sie sie nicht behandeln müssen.

auf jeden Fall, ich denke, Sie haben einen Fehler gemacht, indem Sie Intent.FLAG_ACTIVITY_NEW_TASK verwenden, da es eine neue Aufgabe erstellt, so dass die vorherige noch existiert. http://developer.android.com/reference/android/content/Intent.html

+0

+1 für nicht benötigt FLAG_ACTIVITY_NEW_TASK' – Geobits

+0

so jetzt funktioniert es gut? –

+0

Klingt wie Deverloper Blog ist nicht korrekt: http://developer.android.com/training/implementing-navigation/ancestral.html –

Verwandte Themen