Legen Sie die übergeordnete Aktivität dynamisch fest
Also im moment habe ich eine Tätigkeit, die erreicht werden können, die aus zwei verschiedenen Aktivitäten, das problem ist, dass ich nur eine Tätigkeit wie die übergeordnete Aktivität in der manifest-XML-Datei. Das ist natürlich schlecht, UX/UI design, weil die Aktivität senden kann der Benutzer wieder auf die falsche Tätigkeit waren Sie früher, und so versuche ich dynamisch festlegen, welche Aktivität der übergeordneten Aktivität.
Das Problem ist, ich bin mir nicht ganz sicher, wie man über diese, ob im code oder XML-Datei, sodass alle Zeiger geschätzt werden. 🙂
InformationsquelleAutor der Frage Darryl Bayliss | 2013-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Konzepte spielen hier 'Oben' und 'Zurück'. 'Zurück' ist die offensichtliche ein: nimm mich, wo ich war, kurz bevor ich hierher kam. In der Regel brauchen Sie nicht besorgt zu sein mit 'Zurück', wie das system damit umgehen just fine. "Up" ist nicht so offensichtlich - es ist Analog, um zu verkleinern - von einem element zu der Sammlung, von einem detail zum Gesamtbild.
Welche diese passend zu Ihrem Anwendungsfall?
Als per Kommentar unten: die up-Taste, zieht das Ziel aus dem android-manifest, aber es kann sein,maßgeschneiderte programmgesteuert.
InformationsquelleAutor der Antwort Tassos Bassoukos
Für künftige Leser hier ist ein Beispiel, wie tatsächlich umzusetzen, die offizielle/richtige Lösung wie pro die developer guides (Blättern Sie zu dem Absatz beginnend mit "Dies ist angemessen, wenn die übergeordnete Aktivität kann unterschiedlich sein...").
Beachten Sie, dass diese Lösung davon ausgegangen, dass Sie die Support-Bibliothekum Ihre
ActionBar
und dass Sie mindestens ein 'default' übergeordnete Tätigkeit in Ihrer manifest-XML-Datei ein fallback auf, wenn die Aktivität, die Sie sichern, ist in einer 'Aufgabe' , der gehört nicht zu Ihrer app (Lesen Sie die verlinkten Dokumente für die Klärung).HINWEIS: Wenn Sie nicht legen Sie eine Standard-parent Activity in der manifest-XML-Datei, dann müssen Sie auch umsetzen onCreateSupportNavigateUpTaskStack() da das system keine Ahnung haben, wie das generieren eines backstack für Ihre Aufgabe. Ich habe keine Beispiel für diesen Teil.
Meine Gedanken auf die
finish()
LösungenAuf meiner Suche nach einer Lösung für dieses problem stieß ich auf ein paar Antworten, die Verfechter der Strategie des überwiegenden
onOptionsItemSelected()
und abfangen derandroid.R.id.home
- Taste, so dass Sie konnte einfachfinish()
den aktuellenActivity
um zum vorherigen Bildschirm zurückzukehren.In vielen Fällen wird dies erreicht das gewünschte Verhalten, aber ich möchte nur darauf hinweisen, dass dies definitiv nicht das gleiche wie eine richtige navigation. Wenn Sie die Navigation zu den child-Aktivität durch eine der übergeordneten Aktivitäten, dann ja
finish()
werden Sie wieder auf die richtige vorherigen Bildschirm, aber was ist, wenn Sie in der Kind-Aktivität durch eine "Meldung"? In diesem Fallfinish()
ing durch drücken der UP-Taste fallen würde Sie gleich wieder auf den home-Bildschirm oder was auch immer Anwendung, die Sie gerade betrachten, bevor Sie auf die Benachrichtigung, wenn stattdessen sollte es verschickt haben Sie, um eine ordnungsgemäße übergeordnete Aktivität innerhalb der app.InformationsquelleAutor der Antwort Tony Chan
Wie diese Weise können Sie navigieren Sie dynamisch an Ihre Eltern-Aktivität:
HINWEIS: Es leitet Sie auf die Aktivität oder fragment, wo du herkommst, egal, ob es ein Elternteil ist oder nicht. Klicken Sie auf der Aktionsleiste Up/Home-Taste beenden Sie einfach die aktuelle Aktivität.
InformationsquelleAutor der Antwort Saj
Finden Sie heraus, wie Sie verwenden, Bis die Navigation richtig sehen das Android Dev Guide.
Beachten Sie, dass es einen großen Mangel in den oben genannten Android Dev Guide " als das NavUtils Funktionen funktionieren anders für ICS(und niedriger) und JellyBean(und höher). Dieser Fehler in NavUtils erklärt schön hier.
InformationsquelleAutor der Antwort kpsfoo
Die Methode zu überschreiben ist getParentActivityIntent.
Hier ist mein code und funktioniert einwandfrei.
Vom übergeordneten Aktivitäten;
InformationsquelleAutor der Antwort Michael Tarimo
In der Regel ein 'detail' Art der Tätigkeit müssen die " up " - navigation wenn Sie mit verschachtelten/verwandten Inhalten. Die 'zurück' - navigation wird vom system behandelt, so dass Sie wirklich nicht haben, sich darum zu kümmern.
Nun für den zusätzlichen Aufwand unterstützen Sie die " up " - navigation, gibt es ein paar Möglichkeiten, es zu tun:
Tätigkeit, die die übergeordnete Aktivität definiert, die in der AndroidManifest.
Dies funktioniert gut, wenn es nur eine übergeordnete Aktivität Sinn, wenn die (DetailActivity) bekommt immer von dort aus gestartet (MainActivity). Ansonsten ist diese Lösung funktioniert nicht, wenn (DetailActivity) gestartet wurde aus verschiedenen Orten.
Mehr hier: http://developer.android.com/training/implementing-navigation/ancestral.html
(Leichter und Empfohlen) Activity mit Fragment und das Fragment-back-stack:
In dieser Lösung, wenn der Benutzer die Taste "zurück", das fragment wird geknallt werden aus dem fragment backstack und der Benutzer zurück zum vorherigen fragment, während Ihr noch in der gleichen Aktivität. Wenn der Benutzer drückt die 'up', wird die Aktivität entlässt und der Benutzer führen Sie zurück auf die Vorherige Aktivität (die übergeordnete Aktivität). Der Schlüssel hier ist die Verwendung des Fragments, wie Sie Ihre Benutzeroberfläche und die Tätigkeit als host des fragments.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Pirdad Sakhizada
Müssen Sie zu verfolgen die übergeordnete Aktivität. Ein Weg dies zu tun ist durch die Speicherung als extra in der Absicht, Sie anlegen, um die Kind-Aktivität). Zum Beispiel, wenn Eine Aktivität gestartet wird Aktivität B, speichern Sie Eine Absicht in der Absicht erstellt, für B. Dann in B
onOptionsItemSelected
wo Sie mit der navigation, das abrufen Einer Absicht, und starten Sie es mit der gewünschten Absicht flags.Den folgenden Beitrag hat einer komplexeren use-case, mit einer Kette von untergeordneten Aktivitäten. Es wird erläutert, wie Sie navigieren können, bis der gleiche oder eine neue Instanz des übergeordneten und beenden die Mittelstufe-Aktivitäten dabei.
Android navigation für eine Aktivität mit mehreren Eltern
InformationsquelleAutor der Antwort rohans310