Navigation
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
17. April 2024 | 2.7.7 | − | − | 2.8.0-alpha07 |
Abhängigkeiten deklarieren
Zum Hinzufügen einer Abhängigkeit von Navigation müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovig
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
Fügen Sie die folgende classpath
in die build.gradle
-Datei der obersten Ebene ein, um Ihrem Projekt Safe Args hinzuzufügen:
Groovig
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Sie müssen außerdem eines von zwei verfügbaren Plug-ins anwenden.
Wenn Sie Java-Sprachcode generieren möchten, der für Java oder gemischte Java- und Kotlin-Module geeignet ist, fügen Sie diese Zeile in die Datei build.gradle
Ihrer App oder Ihres Moduls ein:
Groovig
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Zum Generieren von Kotlin-Code, der nur für Kotlin-basierte Module geeignet ist, können Sie alternativ Folgendes hinzufügen:
Groovig
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Wie unter Zu AndroidX migrieren beschrieben, muss android.useAndroidX=true
in Ihrer gradle.properties
-Datei enthalten sein.
Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.8
Version 2.8.0-alpha07
17. April 2024
androidx.navigation:navigation-*:2.8.0-alpha07
wird freigegeben. Version 2.8.0-alpha07 enthält diese Commits.
Neue Funktionen
Fügt ein neues
navigation-fragment-compose
-Artefakt hinzu, das eineComposableNavHostFragment
-Alternative zuNavHostFragment
enthält, mit der ducomposable
-Zielen zu deinen Navigations-XML-Dateien hinzufügen kannst. Jedescomposable
-Ziel muss als@Composable
-Methode der obersten Ebene ohne Argument ausgedrückt werden, deren vollständig qualifizierter Name alsandroid:name
-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele navigieren, wird ein Fragment erstellt, in dem der zusammensetzbare Inhalt angezeigt wird. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
API-Änderungen
- Unterstützung für Safe Args in Navigation Compose mithilfe eines auf Kotlin-Serialisierung basierenden Ansatzes. Diese APIs sind noch nicht abgeschlossen und mit der Annotation
ExperimentalSafeArgsApi
gekennzeichnet. Diese Annotation wird entfernt, sobald die gesamte API-Oberfläche in einem zukünftigen Release fertiggestellt ist. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, Ied2c9, Ied2c9, 19, 19, 27, 27, 27, 27, 27, 29, 21, 21, 7, 7, 9, 17, 21, 7, 7, 7}
Version 2.8.0-alpha06
3. April 2024
androidx.navigation:navigation-*:2.8.0-alpha06
wird freigegeben. Version 2.8.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Unterstützung für Safe Args in Navigation Compose mit einem auf Kotlin-Serialisierung basierenden Ansatz hat begonnen. Diese APIs sind noch nicht abgeschlossen und mit der Annotation
ExperimentalSafeArgsApi
gekennzeichnet. Diese Annotation wird entfernt, sobald die gesamte API-Oberfläche in einem zukünftigen Release fertiggestellt ist. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41cb15}, I24e41
Fehlerkorrekturen
NavHost
verwendet jetztAlignment.TopStart
als standardmäßiges contentAlignment-Argument. Dies entspricht dem Standardwert fürAnimatedContent
und behebt einige Instanzen einer unerwarteten Skalierung von der Mitte. (I09e72, b/330111602)- Wenn während der Verwendung der Funktion „Schreibassistent“ die Geste „Zurück“ zu sehen ist, wird der benutzerdefinierte Übergang von
NavHost
jetzt korrekt abgeschlossen und nicht sofort beendet. (I99017, b/327292110)
Version 2.8.0-alpha05
20. März 2024
androidx.navigation:navigation-*:2.8.0-alpha05
wird freigegeben. Version 2.8.0-alpha05 enthält diese Commits.
Neue Funktionen
- Sie können jetzt Argumente direkt in der
startDestination
-Route an dasstartDestination
-Element vonNavGraph
übergeben, ohne sich aufdefaultValue
zu verlassen. Dies gilt auch für verschachtelteNavGraph
-startDestinations
. (I0e0b5, b/109505019, b/188693139)
API-Änderungen
- Neue abstrakte
CollectionNavType<T>
-Klasse, eine Unterklasse vonNavType<T>
für sammlungsbasierte Argumente wie list, Arrays, Maps, hinzugefügt. (Ic6d63, b/188693139) - Alle standardmäßigen
NavType
-Arrays (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
undStringArrayType
) sind jetzt vom TypCollectionNavType
(Idcf79, b/188693139) NavType
bietet jetzt eine neue offenevalueEquals
API, die bestimmt, ob zwei Werte desselben Typs einander entsprechen. (I6cb97, b/327229511)
Fehlerkorrekturen
- Abfrageparameter in Deeplinks lassen jetzt Werte in Form von geschweiften Klammern um den Argumentnamen (z.B.
{argName}
) als gültige Werte für stringbasierteNavTypes
zu. Dadurch wird ein Problem behoben, bei dem ein solcher Wert für alle Typen als ungültig (oder als fehlender Wert) betrachtet wird. (I18302, b/327274038) NavController
-Funktionen, die Routen wienavigate
oderpopBackStack
unterstützen, können jetzt Routen korrekt zuordnen, die mit Argumenten des ArraysNavTypes
gefüllt sind. (Iea805, b/327229511)
Version 2.8.0-alpha04
6. März 2024
androidx.navigation:navigation-*:2.8.0-alpha04
wird freigegeben. Version 2.8.0-alpha04 enthält diese Commits.
Neue Funktionen
- Sie können jetzt die
SizeTranform
für Ihre Übergänge in Navigation Compose angeben, indem Sie sie im Rahmen der Initialisierung dercomposable
- und/odernavigation
-Funktionen definieren. (I91062, b/296912651)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
NavHost
in der Navigation „Schreiben“ den Übergang nicht korrekt anzeigte, wenn die Systemrückseite ohne Geste verwendet wurde. (Iceeae, b/325998468)
Version 2.8.0-alpha03
21. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha03
wird freigegeben. Version 2.8.0-alpha03 enthält diese Commits.
API-Änderungen
NavBackStackEntry.savedStateHandle
ist jetzt als@MainThread
markiert, da sie Code verwendet, der sich sowieso im Hauptthread befinden muss. (Ibb988, b/299523245)
Fehlerkorrekturen
- Es wurde ein Problem in der Navigation behoben, bei dem
NavGraph
ViewModels zu früh aufDESTROYED
gesetzt wurde, da dieViewModel
des verknüpften Eintrags nicht Teil des gespeicherten Status war. (Ib6bb7, b/317581849)
Abhängigkeitsaktualisierung
- Die Funktion „Schreibassistent“ hängt jetzt von Compose 1.7.0-alpha03 ab.
Version 2.8.0-alpha02
7. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha02
wird freigegeben. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die Funktion „Navigationserstellung“ unterstützt jetzt die In-App-Funktion „Vorhersagbar“ über die neuen
SeekableTransitionState
-APIs von „compose-animation“. So können Sie die „Zurück“-Touch-Geste verwenden, um das vorherige Ziel mit der benutzerdefinierten Umstellung zu sehen, bevor Sie sich entscheiden, ob Sie die Transaktion mit der abgeschlossenen Touch-Geste per Commit durchführen oder abbrechen möchten. (I8b8e9)
Version 2.8.0-alpha01
24. Januar 2024
androidx.navigation:navigation-*:2.8.0-alpha01
wird freigegeben. Version 2.8.0-alpha01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit einem
BackStackState
-Leak wurde behoben, bei dem mehreresaveState
-Aufrufe an ein Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste wiederhergestellt werden konnte. (I598b0, b/309559751) - Es wurde ein Problem behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn die
NavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)
Abhängigkeitsaktualisierung
- Die Funktion „Navigation erstellen“ hängt jetzt davon ab, dass Compose
1.7.0-alpha01
ein Problem behebt, das zu einer unerwarteten Skalierungsanimation führen kann. (b/297258205)
Externer Beitrag
- Vielen Dank, SimonMarquis. Er hat das Anzeigeproblem für Nicht-String-Argumente behoben, wenn die
NavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet werden.
Version 2.7.7
Version 2.7.7
7. Februar 2024
androidx.navigation:navigation-*:2.7.7
wird freigegeben. Version 2.7.7 enthält diese Commits.
Fehlerkorrekturen
- Von Navigation
2.8.0-alpha01
zurückportiert:BackStackState
-Leak wurde behoben, bei dem mehreresaveState()
-Aufrufe auf einem einzelnenNavBackStackEntry
dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste gespeicherte Status konnte wiederhergestellt werden. (I598b0, b/309559751) - Von Navigation
2.8.0-alpha01
rückportiert: Ein Problem wurde behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn dieNavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)
Externer Beitrag
- Vielen Dank, SimonMarquis. Er hat das Anzeigeproblem für Nicht-String-Argumente behoben, wenn die
NavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet werden.
Version 2.7.6
Version 2.7.6
13. Dezember 2023
androidx.navigation:navigation-*:2.7.6
wird freigegeben. Version 2.7.6 enthält diese Commits.
Fehlerkorrekturen
- Die Funktion
NavGraph
equals()
berücksichtigt jetzt die Knoten des anderen Diagramms korrekt und nicht mehr nur den aufrufenden. Dadurch wird sichergestellt, dass Grafiken mit Knoten mit unterschiedlichen IDs nicht mehr als gleich angesehen werden (I401cb, b/311414915).
Version 2.7.5
Version 2.7.5
1. November 2023
androidx.navigation:navigation-*:2.7.5
wird freigegeben. Version 2.7.5 enthält diese Commits.
Leistungsverbesserungen
- Die Leistung (sowohl in Bezug auf Zeit als auch in Bezug auf die Anzahl der Zuweisungen) des Vergleichs von zwei Diagrammen wurde erheblich verbessert. Das bedeutet, dass Aufrufe wie
setGraph
, die das neue Diagramm intern mit dem vorhandenen vergleichen, viel schneller sind und weniger übersprungene Frames zur Folge haben. Vielen Dank, Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62) NavHost
rendert jetzt das Startziel im ersten Kompositionspass, anstatt darauf zu warten, dass der zweite Durchlauf den aktualisierten Status liest. (I439a7, b/304852206)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Back Stack nur dann angezeigt wurde, wenn
setGraph
mehr als einmal mit genau demselben Diagramm aufgerufen wurde, wenn die Grafik ein Ziel mit einer Aktion enthielt, die zwei Ziele verknüpft hat. (Ieaed7) - Dialogfelder, die schnell hintereinander aufgerufen und geschlossen wurden, gelangen nicht mehr in die Liste der
NavController.visibleEntries
. (I67586, b/287969970) - Wenn ein Eintrag per Pop-up und anschließend eine Konfigurationsänderung abgerufen wird, wird der
ViewModel
des Eintrags jetzt korrekt gelöscht, wennsaveState
auf „false“ gesetzt ist. (Idf242, b/298164648) - Es wurde ein Problem behoben, bei dem
NavController
denselben Deeplink mehrmals verarbeiten konnte, wenn der Back-Stack vor einer Konfigurationsänderung vollständig leer war odersetGraph
nur dann aufgerufen wurde, wenn für den eingehenden Intent das FlagFLAG_ACTIVITY_NEW_TASK
gesetzt war. (I73c7f)
Aktualisierungen von Abhängigkeiten
- Die Navigation mit Fragmenten hängt jetzt von Fragment 1.6.2 ab. Es wurde ein Problem behoben, bei dem die
ViewModel
-Instanzen verschachtelter Fragmente beim Aufrufen vonclearBackStack
nicht gelöscht wurden.
Version 2.7.4
Version 2.7.4
4. Oktober 2023
androidx.navigation:navigation-*:2.7.4
wird freigegeben. Version 2.7.4 enthält diese Commits.
Neue Funktionen
- Zusätzliche Unterstützung für
popUpTo
zur Verwendung von Routen mit Argumenten, um das Zurückkehren zu einem bestimmten Eintrag zu ermöglichen, der genau diese Argumente verwendet, passend zur Unterstützung inpopBackStack
. (I731f4, b/299255572)
Fehlerkorrekturen
- Problem behoben, bei dem das Unterbrechen einer Navigation mit einer anderen Navigation mit
popUpTo
dazu führte, dassFragmentNavigator
abstürzte. (I3c848, b/301887045) - Ein Problem wurde behoben, bei dem durch das Drücken des Systems die
currentDestination
nicht korrekt aktualisiert wurde, um mit dem angezeigten Fragment übereinzustimmen. (Id0d6c, b/289877514) - Der
DialogFragment
-Lebenszyklus wird jetzt korrekt in den StatusRESUMED
verschoben, wenn das Dialogfeld darüber geschlossen wird. (I88f0d, b/301811387)
Version 2.7.3
Version 2.7.3
20. September 2023
androidx.navigation:navigation-*:2.7.3
wird freigegeben. Version 2.7.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem in der Navigation mit Fragmenten behoben, durch das die
visibleEntries
-Liste falsche Einträge enthielt. (I5caa9, b/288520638) - Ein Problem wurde behoben, bei dem das Ziel für ein unverankertes Fenster (z. B.
Dialogs
,Bottomsheets
usw.) nie einenRESUMED
-Lebenszyklus-Callback erhielt. (I3b866, b/287505132)
Version 2.7.2
Version 2.7.2
6. September 2023
androidx.navigation:navigation-*:2.7.2
wird freigegeben. Version 2.7.2 enthält diese Commits.
Fehlerkorrekturen
- Die Navigation hängt jetzt vom Lebenszyklus
2.6.2
ab. Dabei wird eine Interaktion zwischenrememberSaveable
und derNavHost
von Navigation Compose behoben, die dazu führen würde, dass der StatusrememberSaveable
der Ziele und alleViewModel
-eigenenSavedStateHandle
-Instanzen nach dem Beenden und der Neuerstellung des Prozesses nicht ordnungsgemäß wiederhergestellt werden. (b/298059596, b/289436035) - Es wurde ein Problem behoben, das beim gleichzeitigen Anzeigen mehrerer Dialogfelder in der Funktion „Navigationsleiste“ angezeigt wurde und bei denen die teilweise verdeckten Dialogfelder (z.B. das oberste Dialogfeld) den Lebenszyklusstatus
CREATED
und nicht den StatusSTARTED
hatten. (aosp/2728520, b/289257213) - Es wurde ein Problem behoben, das beim gleichzeitigen Anzeigen mehrerer Dialogfelder in der Funktion „Navigationsleiste“ angezeigt wurde. Wenn das oberste Dialogfeld geschlossen wurde, blieb das neue oberste Dialogfeld im Lebenszyklusstatus
STARTED
hängen und wurde nicht korrekt inRESUMED
verschoben. (aosp/2629401, b/286371387) - Navigation Safe Args instanziiert seine Aufgabe nicht mehr eifrig, wenn sie nicht tatsächlich ausgeführt wird. (I0e385, b/260322841)
Abhängigkeitsaktualisierung
- Die Funktion „Schreibassistent“ richtet sich jetzt nach der Version 1.5.1.
Version 2.7.1
Version 2.7.1
23. August 2023
androidx.navigation:navigation-*:2.7.1
wird freigegeben. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in der Navigation mit der Funktion "Compose" behoben, bei dem bei Verwendung eines
Scaffold
ein Fehler für den Versuch, aufLifecycle.State.DESTROYED
-ViewModel
zuzugreifen, angezeigt wurde. (I1dc11, b/268422136)
Version 2.7.0
Version 2.7.0
9. August 2023
androidx.navigation:navigation-*:2.7.0
wird freigegeben. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
Animationen des Begleiters
Da AnimatedContent
nun stabil ist, können wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.
Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge in AnimatedNavHost
direkt in NavHost
unterstützt wird.
An der Animation der Accompanist Navigation wird es keine weiteren Änderungen geben, diese sowie eine Anleitung zur Migration zurück zu Navigation Compose werden bald offiziell eingestellt. Es sind aber keine weiteren API-Änderungen erforderlich, wenn du bereits die neueste Alphaversion von Accompanist (0.31.2-alpha
) verwendest. (b/197140101)
Fehlerkorrekturen
- NavHost in Navigation Compose fängt jetzt Systemrückaufrufe korrekt ab, auch wenn die Aktivität BEENDET und FORTGEFAHRT WURDE. (Icb6de, b/279118447)
Aktualisierungen von Abhängigkeiten
- Für die Navigation ist jetzt die Funktion „Schreiben“
1.5.0
ab1.1.0
erforderlich.
Version 2.7.0-rc01
26. Juli 2023
androidx.navigation:navigation-*:2.7.0-rc01
wird freigegeben. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Lambdas
EnterTransition
undExitTransition
, die als Teil vonNavHost
erstellt wurden, konnten möglicherweise auch dann im Speicher verbleiben, wenn dieNavHost
aus der Zusammensetzung entfernt wurde. Dieses Problem wurde behoben. (I893d0)
Bekannte Probleme
- In Navigation 2.6.x gibt es ein Problem, dass beim Navigieren mit einem Pop-Up-To ein
IllegalArgumentException
ausgelöst werden kann. Diese Ausnahme lässt sich eventuell vermeiden, indem Sie die Grafik ähnlich wie hier umstrukturieren. (b/287133013)
Version 2.7.0-beta02
28. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta02
wird freigegeben. Version 2.7.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Funktion „Schreibassistent“ hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, für die die Option „
popUpTo
“ verwendet wird (/Ib1c3a, b/285153947).
Version 2.7.0-beta01
7. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta01
wird freigegeben. Version 2.7.0-beta01 enthält diese Commits.
Fehlerkorrekturen
NavHost
in der Funktion „Schreibassistent“ fängt Systemrückaufrufe jetzt auch dann korrekt ab, wennActivity
den Status „STOPPED
“ und „RESUMED
“ hat. (Icb6de, b/279118447)
Version 2.7.0-alpha01
24. Mai 2023
androidx.navigation:navigation-*:2.7.0-alpha01
wird freigegeben. Version 2.7.0-alpha01 enthält diese Commits.
Animationen des Begleiters
Da AnimatedContent
nun stabil ist, können wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.
Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge in AnimatedNavHost
direkt in NavHost
unterstützt wird.
An der Animation der Accompanist Navigation wird es keine weiteren Änderungen geben, diese sowie eine Anleitung zur Migration zurück zu Navigation Compose werden bald offiziell eingestellt. Es sind aber keine weiteren API-Änderungen erforderlich, wenn du bereits die neueste Alphaversion von Accompanist (0.31.2-alpha
) verwendest. (b/197140101)
Fehlerkorrekturen
- Von Navigation
2.6.0-rc02
: Ein Problem mit der Navigation in Fragmenten wurde behoben, bei dem das Navigieren mitpopUpTo
und das Entfernen eines Fragments aus dem Back-Stack ohne Neuerstellung der Ansicht dazu führten, dass das System wieder nicht mehr funktionierte. (Ieb8d4, b/281726455)
Aktualisierungen von Abhängigkeiten
- Für die Navigation ist jetzt die Funktion „Schreiben“ (
1.5.0-beta01
) erforderlich.
Version 2.6.0
Version 2.6.0
7. Juni 2023
androidx.navigation:navigation-*:2.6.0
wird freigegeben. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen an Navigation seit Version 2.5.0
- Die
arguments
vonNavBackStackEntry
und die an einOnDestinationChangedListener
übergebenenarguments
sind jetzt nur eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen, die an diesen Bundles vorgenommen werden, nicht bei nachfolgenden Zugriffen auf die Instanzarguments
oder andereOnDestinationChangedListener
berücksichtigt werden. NavDeepLink
unterstützt jetzt Standardwerte für Arrays. Dadurch werden wiederholte Abfrageparameter unterstützt, die dem Arraytyp des Arguments zugeordnet werden.NavType
enthält außerdem eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren.- Benutzerdefinierte abgeleitete Klassen von
NavType
können jetztserializeAsValue
überschreiben, um einen Wert in einen String zu serialisieren. Dadurch kann sowohl die Serialisierung als auch die Deserialisierung (überparseValue
) vollständig in derNavType
-Klasse gekapselt werden.StringType
überschreibt jetzt diese Methode, umUri.encode
für die angegebeneString
aufzurufen.
Wichtige Änderungen an „Navigation Compose“ seit Version 2.5.0
- In der Vorschau einer zusammensetzbaren Funktion mit
NavHost
wird jetzt standardmäßig diestartDestination
von NavGraph angezeigt. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen.- Wenn Sie versuchen, mit der Kotlin-DSL von
navDeepLink
eine leereNavDeepLink
zu erstellen, wird jetzt eine Lint-Warnung ausgegeben, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein.
Wichtige Änderungen an der Navigation mit Fragmenten seit Version 2.5.0
NavHostFragment
fängt die Zurück-Taste des Systems nicht mehr ab. Dadurch kann das zugrunde liegendeFragmentManager
das System wieder verarbeiten. Dadurch kann mit Fragment1.7.0-alpha01
und höher eine In-App-Animation mit Prognose auf Android U-Geräten erstellt werden.- Wenn Sie bei der Navigation mit Fragmenten versuchen, manuell ein
FragmentTransaction
auszuführen, mit dem ein Fragment zum Back-Stack derFragmentManager
hinzugefügt wird, wird jetzt einIllegalArgumentException
ausgegeben. Fragmente sollten immer über dienavigate()
API hinzugefügt werden. - Wenn Sie im Aktivitätselement einer Navigations-XML-Datei genau den String
${applicationId}
als Platzhalter in den Attributenapp:data
undapp:dataPattern
verwenden, wird der Platzhalter beim Inflation automatisch mit dempackageName
des Kontexts ausgefüllt. - Die
FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
navigiert und aufgerufen wird. Das bedeutet, dass dasNavBackStackEntry
-Lifecycle
jetzt darauf wartet, dass die Spezialeffekte für das Eintreten und Beenden des Fragments abgeschlossen sind, bevor die letztenLifecycle.State
verschoben werden. - Die
DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
navigiert und aufgerufen wird. Das bedeutet, dass dasNavBackStackEntry
-Lifecycle
jetzt darauf wartet, dass dasDialogFragment
-Lifecycle
in dieDESTROYED
verschoben wird, bevor es zuDESTROYED
selbst wechselt. - Mit
NavHostFragment
können Sie dasNavController
jetzt abrufen, sobald dasNavHostFragment
mit demFragmentManager
verknüpft ist, und nicht erst nachonCreate()
. - Die Unterstützung der Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab.
- Navigation Safe Args hängt jetzt von der Android-Gradle-Plug-in-Version 7.3.0 ab. Das bedeutet, dass sie jetzt nur noch mit der Version 7.3.0 und höher kompatibel ist.
Wichtige Änderungen an NavigationUI seit Version 2.5.0
- Wenn die ID einer Navigationsgrafik an
AppBarConfiguration
übergeben wird (z. B. überMenu
), berücksichtigtNavigationUI
jetzt nur das Startziel dieser Navigationsgrafik als Ziel auf oberster Ebene. Es wird nicht mehr jedes Ziel in der Grafik als Ziel auf oberster Ebene markiert. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Dieselben Funktionen stehen Ihnen über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
für Ihren eigenen Code zur Verfügung. - Die
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste parsen jetztR.string
-Werte fürReferenceType
-Argumente, die in deinerandroid:label
gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. NavigationUI
stellt jetzt Logs bereit, wenn keine Navigation über eine ausgewählteMenuItem
möglich ist.
Version 2.6.0-rc02
24. Mai 2023
androidx.navigation:navigation-*:2.6.0-rc02
wird freigegeben. Version 2.6.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit der Navigation in Fragmenten behoben, bei dem das Navigieren mit
popUpTo
und das Herausnehmen eines Fragments aus dem Back-Stack ohne Neuerstellung der Ansicht dazu führten, dass das System wieder nicht mehr funktionierte. (Ieb8d4, b/281726455)
Version 2.6.0-rc01
10. Mai 2023
androidx.navigation:navigation-*:2.6.0-rc01
wird freigegeben. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem in der Navigation mit Fragmenten behoben, bei dem das Entfernen eines Fragments über die Navigation mit
popUpTo
imonResume()
-Lebenszyklus-Callback zu einemIllegalStateException
führte. (I21884, b/279644470)
Version 2.6.0-beta01
19. April 2023
androidx.navigation:navigation-*:2.6.0-beta01
wird freigegeben. Version 2.6.0-beta01 enthält diese Commits.
Neue Funktionen
NavBackStackEntry
bietet jetzt eine benutzerdefiniertetoString
-Implementierung. (Iff00b)
Fehlerkorrekturen
- Wenn Sie bei der Navigation mit Fragmenten versuchen, manuell ein
FragmentTransaction
auszuführen, mit dem ein Fragment zum Back-Stack derFragmentManager
hinzugefügt wird, wird jetzt einIllegalArgumentException
ausgegeben. Fragmente sollten immer über dienavigate()
API hinzugefügt werden. (I6d38e) - Wenn es ein
navigate
gibt, das einen Eintrag hinzufügt, und einpopBackStack
, das ihn im selben Frame entfernt, wird der resultierende oberste Eintrag im Back-Stack nun konsistent wieder in dieRESUMED
Lifecycle.State
verschoben. (Id8067, b/276495952)
Version 2.6.0-alpha09
5. April 2023
androidx.navigation:navigation-*:2.6.0-alpha09
wird freigegeben. Version 2.6.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit der Prüfung auf ungültige Route wurde behoben: Wenn ein
NavDestination
NavArgument
enthält, die keine Nullwerte zulässig sind, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die genauso benannt sind wie dieNavArgument
, die keine Nullwerte zulässig sind. (Ic62bf, b/274697949) - Deeplink-Navigationen auf der Grundlage von „
Action/MimeType
“ schlagen jetzt fehl, wenn im Navigationsvorgang eineNavArgument
fehlt, die von derNavDestination
verlangt wird und mit derAction/MimeType
übereinstimmt. (Ibfa17, b/271777424) - Wenn
NavController
einen Graphen mit derselben Route und Zielen wie der vorherige Grafik festlegt, werden die aktuellen Grafikknoten und die Back-Stack-Ziele nun ordnungsgemäß durch neue Instanzen ersetzt. Dadurch wird ein Absturz behoben, wennonLaunchSingleTop
verwendet wird, ohne den Status in Navigation Compose zu speichern. Dadurch wird auch ein Fehler behoben, bei dem beim Aufrufen von Zielen, die mit der Stammgrafik verknüpft sind, ein falscher Back-Stack erstellt wird. (I5bc58, b/275258161, b/275407804)
Version 2.6.0-alpha08
22. März 2023
androidx.navigation:navigation-*:2.6.0-alpha08
wird freigegeben. Version 2.6.0-alpha08 enthält diese Commits.
Neue Funktionen
- Mit
NavHostFragment
können Sie dasNavController
jetzt abrufen, sobald dasNavHostFragment
mit demFragmentManager
verknüpft ist, und nicht erst nachonCreate()
. (Ic6382, b/220186282)
Fehlerkorrekturen
- Ein
NullPointerException
wurde korrigiert, wenn ein verschachteltes Diagramm mit einem Argument gesendet wird, das keine Nullwerte zulässt. (6b3581, b/249988437) - Wenn das System nach einer Navigation mit
popUpTo
wieder verwendet wird, wird der Status vonNavController
auf den richtigen Eintrag aktualisiert. (I3a8ec, b/270447657) - In
FragmentNavigator
werden Einträge jetzt korrekt abgelegt, wenn der Back-Stack über das System oder überpopBackStack()
per Pop-up geöffnet wird. Dabei spielt es keine Rolle, ob bei der Transaktion Effekte für das Fragment verwendet werden. (I81bdf) - Das Hinzufügen von Fragmenten zu
FragmentManager
derFragmentNavigator
, ohne die Navigation zu verwenden, führt nicht mehr zu einem Absturz. (b17204, b/274167493)
Aktualisierungen von Abhängigkeiten
- Die Navigation ist jetzt vom Lebenszyklus
2.6.1
abhängig. (586fe7) - Die Navigation hängt jetzt von SavedState
1.2.1
ab. (078e4e) - Die Navigation hängt jetzt vom ProfileInstaller
1.3.0
ab. 512f0c
Version 2.6.0-alpha07
8. März 2023
androidx.navigation:navigation-*:2.6.0-alpha07
wird freigegeben. Version 2.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Die API-Varianten
getBackStackEntry
,popBackStack
undclearBackStack
, die Routen nehmen, verwenden jetzt Routenmuster mit Argumenten, in denen Nullwerte zulässig sind, und Abfrageparameter, bei denen Nullwerte zulässig sind (I22294, b/269302500). - Ein Problem wurde behoben, bei dem durch das Aufrufen von
clearBackStack()
aus demNavController
der gespeicherte Status im Fragmentmanager, der mit dem gelöschten Back-Stack verknüpft ist, nicht gelöscht wurde. (Ic1cce, b/271190202) - Eine Regression in 2.6.0-alpha06 wurde behoben, bei der der falsche
MenuItem
in derBottomNavigationView
hervorgehoben wurde, wenn das System wieder zwischen Tabs verwendet wurde. (I634f6, b/270447657) - Die Regression in Version 2.6.0-alpha06 wurde behoben, die dazu führte, dass
NavBackStackEntry
-Werte bei Verwendung vonAnimation
-Werten nicht in den Status WIEDERGEFÜHRT verschoben wurden. (Ib3589, b/269646882)
Version 2.6.0-alpha06
22. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha06
wird freigegeben. Version 2.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- In der Vorschau einer zusammensetzbaren Funktion mit
NavHost
wird jetzt standardmäßig diestartDestination
von NavGraph angezeigt. (I2b89f)
API-Änderungen
- Alle
NavController
-navigate
-Überladungen werden jetzt mit@MainThread
gekennzeichnet, damit sie im Hauptthread aufgerufen werden. (I2c0b0, b/263427111)
Fehlerkorrekturen
- Ein Absturz beim Navigieren bei Verwendung der dynamischen Fragmentnavigation wurde behoben. (I3ee29, b/268360479)
- Es wurde ein Fehler behoben, bei dem beim Navigieren zu einem anderen Fragment über die Schaltfläche „Zurück“ des Systems die untere Leiste nicht auf das richtige ausgewählte Element aktualisiert wurde (If559f, b/269044426).
Bekannte Probleme
- Wenn Sie die Navigation mit Fragmenten verwenden, kann der Lebenszyklus von
NavBackStackEntry
RESUMED
nicht erreichen, wennAnimation
APIs verwendet werden. (b/269646882) - Wenn Sie beim Verwenden der Navigation mit Fragmenten und beim Navigieren mit
BottomNavigation
versuchen, einen Back-Stack mit mehreren Einträgen wiederherzustellen, wirdBottomMenuItem
nicht korrekt aktualisiert. (b/270447657) - Wenn Sie die Navigation mit Fragmenten verwenden, erhält der
NavBackStackEntry
-Lifecycle
nach dem Wiederherstellen des StatusDESTROYED
nicht mehr, wenn sein FragmentDESTROYED
ist . (b/270610768)
Version 2.6.0-alpha05
8. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha05
wird freigegeben. Version 2.6.0-alpha05 enthält diese Commits.
Neue Funktionen
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen. (Iebd28, Ic678c, I3b37b, b/257514373)- Die
FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
navigiert und aufgerufen wird. Das bedeutet, dass dasNavBackStackEntry
-Lifecycle
jetzt darauf wartet, dass die Spezialeffekte für das Eintreten und Beenden des Fragments abgeschlossen sind, bevor die letztenLifecycle.State
verschoben werden. (I3cb19, b/238686802) - Die
DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
navigiert und aufgerufen wird. Das bedeutet, dass dasNavBackStackEntry
-Lifecycle
jetzt darauf wartet, dass dasDialogFragment
-Lifecycle
in dieDESTROYED
verschoben wird, bevor es zuDESTROYED
selbst wechselt. (I53ee5, b/261213893)
API-Änderungen
NavigatorState
stellt jetzt dieprepareForTransition
API bereit, damitNavigator
sNavBackStackEntries
in zwischengeschalteteLifecycle.State
s verschieben können. (I42c21, b/238686802)- Sie können jetzt über eine
backstack
-Property auf den Back-Stack zugreifen, der mit einemNavGraphNavigator
oder einemComposeNavigator
verknüpft ist.ComposeNavigator
macht jetzt auch denonTransitionComplete()
-Callback verfügbar, um einNavBackStackEntry
-Element zu markieren, das einen Navigations- oderpopBackStack
-Vorgang als abgeschlossen ausgeführt hat. (I02062, I718db, b/257519195)
Fehlerkorrekturen
- Der Navigatorstatus ist jetzt bei Verwendung der
push/popWithTransition
APIs inaktiv und der Eintrag wird bereits verarbeitet. (Iadbfa, b/261213893) - Wenn Sie
launchSingleTop
mit einem verschachteltenNavGraph
verwenden, werden alle Ziele, die vom ursprünglichen Ziel bis zum zugehörigenstartDestination
beginnen, nur ordnungsgemäß zum Anfang des Backstacks hinzugefügt. (Id4bea, b/253256629) - Bei der Navigation zum selben Ziel wird jetzt die Instanz
DialogFragment
ordnungsgemäß ersetzt, wobei das FlaglaunchSingleTop
auf „true“ gesetzt ist. (I45b5a, b/149572817) - Navigations-SafeArgs verursachen keinen Kompilierungsfehler mehr, wenn Argumente mit genau 19 Zeichen verwendet werden. (Id60bc, b/257110095)
Version 2.6.0-alpha04
9. November 2022
androidx.navigation:navigation-*:2.6.0-alpha04
wird freigegeben. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
- Benutzerdefinierte abgeleitete Klassen von
NavType
können jetztserializeAsValue
überschreiben, um einen Wert in einen String zu serialisieren. Dadurch kann sowohl die Serialisierung als auch die Deserialisierung (überparseValue
) vollständig in derNavType
-Klasse gekapselt werden.StringType
überschreibt jetzt diese Methode, umUri.encode
für die angegebeneString
aufzurufen. (Ie5213, b/247637434) NavigationUI
stellt jetzt Logs bereit, wenn keine Navigation über eine ausgewählteMenuItem
möglich ist. (I2af5a, b/247730357)
Fehlerkorrekturen
- Navigations-Deeplinks werden jetzt verzögert und nicht mehr bei der Diagramminitialisierung geparst, wodurch die App-Leistung beim Start verbessert werden könnte. (Iab0ab)
- Ein Absturz wurde behoben, der durch das Aufrufen nach oben nach einem Deeplink zu einem Ziel mit null Standardargumenten verursacht wurde. (I51c24, b/243183636)
Abhängigkeitsaktualisierung
- Die Unterstützung der Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. Ib4ddc
- Navigation Safe Args hängt jetzt von der Android-Gradle-Plug-in-Version 7.3.0 ab. Das bedeutet, dass es jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist. (I47e49)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha03
wird freigegeben. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Von Navigation
2.5.3
:NavHost
löst keinenNoSuchElementException
mehr aus, wenn kein Ziel zum Schreiben vonCrossfade
verfügbar ist. Die Komposition wird jetzt übersprungen. (Ieb46e, b/253299416) - Aus Navigation
2.5.3
: Ein Problem wurde behoben, bei dem der gespeicherte Status der Erstellung (z.B. Nutzungen vonrememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back-Stack entfernt wurde. (I64949)
Aktualisierungen von Abhängigkeiten
- Die Navigation hängt jetzt vom Fragment
1.5.4
ab. (Icd424)
Version 2.6.0-alpha02
5. Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha02
wird freigegeben. Version 2.6.0-alpha02 enthält diese Commits.
Änderungen des Verhaltens
- Wenn die ID einer Navigationsgrafik an
AppBarConfiguration
übergeben wird (z. B. überMenu
), berücksichtigtNavigationUI
jetzt nur das Startziel dieser Navigationsgrafik als Ziel auf oberster Ebene. Es wird nicht mehr jedes Ziel in der Grafik als Ziel auf oberster Ebene markiert. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Dieselben Funktionen stehen Ihnen über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
für Ihren eigenen Code zur Verfügung. (Ie936e, b/238496771)
Fehlerkorrekturen
- Die Komponente „
navigation:navigation-fragment
“ hängt jetzt von der Fragmentversion1.5.2
ab. (I00ba4) - Der ausgewählte Menüpunkt wird nicht mehr aktualisiert, wenn du zu einem
FloatingWindow
-Ziel navigierst, z. B. zu einem Dialogfeld. (I4cde8, b/240308330)
Version 2.6.0-alpha01
7. September 2022
androidx.navigation:navigation-*:2.6.0-alpha01
wird freigegeben. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste parsen jetztR.string
-Werte fürReferenceType
-Argumente, die in deinerandroid:label
gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. (I5f803, b/167959935) NavDeepLink
unterstützt jetzt Standardwerte für Arrays. Dadurch werden wiederholte Abfrageparameter unterstützt, die dem Arraytyp des Arguments zugeordnet werden.NavType
enthält außerdem eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren. (Id68c3, b/209977108)- Wenn Sie im Aktivitätselement einer Navigations-XML-Datei genau den String
${applicationId}
als Platzhalter in den Attributenapp:data
undapp:dataPattern
verwenden, wird der Platzhalter beim Inflation automatisch mit dempackageName
des Kontexts ausgefüllt. (Iaabde, b/234223561) - Wenn Sie versuchen, mit der Kotlin-DSL von
navDeepLink
eine leereNavDeepLink
zu erstellen, wird jetzt eine Lint-Warnung ausgegeben, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein. (I08d2f, b/154038883)
API-Änderungen
- Es wurde eine neue
NavDestination
-Erweiterungsfunktion hinzugefügt, um dynamische Labels mit Argumenten in Form vonandroid:label="{arg}"
in einen String zu parsen. UnterstütztReferenceType
-Argumente, indemR.string
-Werte in ihre String-Werte geparst werden. (I07d89, b/236269380)
Änderungen des Verhaltens
- Die
arguments
von NavBackStackEntry und die anOnDestinationChangedListener
übergebenenarguments
sind jetzt nur eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen, die an diesen Bundles vorgenommen werden, nicht bei nachfolgenden Zugriffen auf die Instanzarguments
oder andereOnDestinationChangedListener
berücksichtigt werden. (I676f5)
Fehlerkorrekturen
- Von Navigation
2.5.2
: Die dynamische Navigation versucht nun ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor sie aufgerufen werden. (Ia2c16, b/240292838) - Von Navigation
2.5.2
: Die Navigation ersetzt jetzt ordnungsgemäß die Fragmentinstanz, wenn Sie zum selben Ziel navigieren und das FlaglaunchSingleTop
auf „true“ setzen. (I5a2f1, b/237374580) - Von Navigation
2.5.2
: Das ProblemIllegalStateException
wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, in der ein übergeordnetes Element mit einem neuen Startziel geteilt wurde. (I9f7cb, b/243778589)
Version 2.5
Version 2.5.3
24. Oktober 2022
androidx.navigation:navigation-*:2.5.3
wird freigegeben. Version 2.5.3 enthält diese Commits.
Fehlerkorrekturen
- „
NavHost
“ verursacht keinenNoSuchElementException
mehr, wenn kein Ziel für die Nachricht „Crossfade
“ verfügbar ist. Die Komposition wird jetzt übersprungen. (Ieb46e, b/253299416) - Ein Problem wurde behoben, bei dem der gespeicherte Status der Erstellung (z.B. Verwendungen von
rememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back-Stack entfernt wurde. (I64949)
Version 2.5.2
7. September 2022
androidx.navigation:navigation-*:2.5.2
wird freigegeben. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Die dynamische Navigation versucht nun ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor sie geöffnet werden. (Ia2c16, b/240292838)
- Die Fragmentinstanz wird jetzt korrekt ersetzt, wenn Sie zum selben Ziel navigieren und das Flag
launchSingleTop
auf „true“ setzen. (I5a2f1, b/237374580) - Das Problem mit
IllegalStateException
wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, in der ein übergeordnetes Element mit einem neuen Startziel geteilt wurde. (I9f7cb, b/243778589)
Abhängigkeitsaktualisierung
- Die Navigation
2.5.2
hängt jetzt von Fragment1.5.2
ab. (aosp/2178734)
Version 2.5.1
27. Juli 2022
androidx.navigation:navigation-*:2.5.1
wird freigegeben. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
Navigation Safe Args
gibt in generierten Klassen keine Einstellungswarnungen mehr aus, wenn benutzerdefinierte Argumenttypen verwendet werden, die in einemBundle
gespeichert sind. (Id86ed, b/237725966)
Aktualisierungen von Abhängigkeiten
- Die Navigationsbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Ib4451) - Die Navigationsbibliothek hängt jetzt von der Aktivität
1.5.1
ab. (I3efe8) - Die Navigationsbibliothek hängt jetzt vom Fragment
1.5.1
ab. (I56177)
Version 2.5.0
29. Juni 2022
androidx.navigation:navigation-*:2.5.0
wird freigegeben. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- CreationExtras-Integration:
Navigation
bietet jetzt die Möglichkeit, eine zustandsloseViewModelProvider.Factory
über dieCreationExtras
des Lebenszyklus2.5.0
bereitzustellen.
NavigationssafeArgs
Navigation Safe Args
hat dieAndroid Gradle Plugin
-Abhängigkeit aktualisiert, sodass sie auf7.0.4
basiert. Dadurch wird die Kompatibilität für AGP-Versionen vor dem7.0
verringert.- Das Attribut „build.gradle“ im Namespace, das anstelle der Anwendungs-ID verwendet werden soll, wird jetzt unterstützt.
Weitere Änderungen
- Die
visibleEntries
API ist nicht mehr experimentell und bietet eine Funktion zum Abrufen aller Einträge, deren Ziel lautNavController
derzeit sichtbar ist.
Version 2.5.0-rc02
15. Juni 2022
androidx.navigation:navigation-*:2.5.0-rc02
wird freigegeben. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit einem Absturz behoben, der durch schnelles Wechseln zwischen den unteren Zielen bei Verwendung der Funktion „Navigationserstellung“
NavHost
verursacht wurde. (I3979a, b/234054916) Navigation SafeArgs
stürzt nicht mehr ab, wenn einapplicationIdSuffix
und ein Namespace verwendet werden, wenn keinapplicationId
vorhanden ist oder wenn sichapplicationId
und Namespace unterscheiden. (I754b1, b/233119646)NavArgument
verfügt jetzt über eine benutzerdefiniertetoString()
-Funktion, um die internen Werte des Arguments anzuzeigen. (I900a8)
Version 2.5.0-rc01
11. Mai 2022
androidx.navigation:navigation-*:2.5.0-rc01
wird freigegeben. Version 2.5.0-rc01 enthält diese Commits.
Neue Funktionen
- Eine neue Lint-Regel wurde hinzugefügt, um vor der Platzierung von
<deeplink>
-Elementen innerhalb von<activity>
-Elementen in Ihrernavigation.xml
-Datei zu warnen.(Ic15a5, b/178403185)
Fehlerkorrekturen
- Zusammensetzbare Bereiche in
NavHost
undDialogHost
werden jetzt in der erwarteten Reihenfolge gelöscht, d.h., innere zusammensetzbare Funktionen werden vor äußeren zusammensetzbaren Funktionen entsorgt. (I157e6) - Die SafeArgs-Navigationsfunktion verwendet jetzt
PathSensitivity.RELATIVE
imArgumentsGenerationTask
, um die Cache-Neulokalisierung zu ermöglichen. Das bedeutet, dass der Cache-Eintrag jetzt von einem CI-Build in einem lokalen Build wiederverwendet werden kann. (I5f67c, b/173420454) - Die Lint-Regel
UnrememberedGetBackStackEntryDetector
wurde aktualisiert, damit derremember
-Aufruf, der den Aufruf vongetBackStackEntry()
umgibt, auch einNavBackStackEntry
-Objekt als Schlüssel übergibt (Ib7081, b/227382831).
Version 2.5.0-beta01
20. April 2022
androidx.navigation:navigation-*:2.5.0-beta01
wird freigegeben. Version 2.5.0-beta01 enthält diese Commits.
Fehlerkorrekturen
DialogNavigator
verwendet jetztpopWithTransition
, wenn eindismiss()
-Aufruf ausgeführt wird. Dadurch wird eine Race-Bedingung bei Verwendung einesViewModel
innerhalb desdialog
-Ziels behoben, die beim Schließen des Dialogfelds entweder durch eine Systemrückgabe oder durch Tippen außerhalb des Dialogfelds zum Beenden einIllegalStateException
verursacht. (Id7376, b/226552301)
Aktualisierungen von Abhängigkeiten
- Die Navigation hängt jetzt vom Lebenszyklus
2.5.0-beta01
ab. Dabei wird einIllegalStateException
behoben, wenn eineNavHost
in einer anderenNavHost
in einem nicht primären Navigations-Tab am unteren Rand verschachtelt ist und wenn mehrere Back-Stacks verwendet werden.
Version 2.5.0-alpha04
6. April 2022
androidx.navigation:navigation-*:2.5.0-alpha04
wird freigegeben. Version 2.5.0-alpha04 enthält diese Commits.
API-Änderungen
visibleEntries
ist nicht mehr experimentell. (I4829f, b/225394514)
Fehlerkorrekturen
- NavHost hängt jetzt von
visibleEntries
ausNavController
ab, um zu bestimmen, welche Einträge erstellt werden sollen. Das bedeutet, dass bei Verwendung des verschachtelten NavHosts das innereNavHost
-Element jetzt korrekt heraus animiert werden sollte. (I4ba2b, b/225394514) - Der von
NavController
bereitgestelltevisibleEntries
StateFlow
basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags und nicht auf dem aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren Gesamtelemente auch dann unverändert bleibt, wenn der Hostlebenszyklus vonnavController
unter „STARTED“ fällt. (I9e2a8, b/225394514) SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)NavDeepLink
kann jetzt URIs mit einem einzelnen Abfrageparameter ohne Wert parsen. (I0efe8, b/148905489)- Leere Strings werden in Deeplinks jetzt als gültige Argumente betrachtet. (I70a0d, b/217399862)
Navigation Safe Args
stürzt bei der Verwendung von Namespaces nicht mehr ab und es ist keinAndroidManifest.xml
vorhanden. (I17ccf, b/227229815)
Version 2.5.0-alpha03
23. Februar 2022
androidx.navigation:navigation-*:2.5.0-alpha03
wird freigegeben. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtras
anby navGraphViewModels
übergeben, um eineViewModel
zu erstellen. (I29217, b/217618359)
Fehlerkorrekturen
NavDeepLinks
unterstützt jetzt codierte Zeilenzeichen, die in Routen/Deeplink-URIs eingebettet sind, korrekt. (I513d1, b/217815060)CreationExtras
funktioniert jetzt korrekt, wenn er zusammen mitNavBackStackEntries
zum Erstellen von ViewModels verwendet wird. (I69161, b/217617710)- Navigation Safe Args unterstützt jetzt die Verwendung des in
build.gradle
definierten Namespace anstelle des Pakets in AndroidManifest. (I659ef, b/217414933)
Version 2.5.0-alpha02
9. Februar 2022
androidx.navigation:navigation-*:2.5.0-alpha02
wird freigegeben. Version 2.5.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Von der Navigation
2.4.1
:NavHostFragment
legt denOnBackPressedDispatcher
jetzt korrekt fest, wenn ViewBinding mit verschachtelten Diagrammen verwendet wird. (Ifbb51, b/214577959) - Von der Navigation
2.4.1
: Wenn Deeplinks über mehrere verschachtelteNavGraph
s erstellt werden, enthält der Back-Stack jetzt ordnungsgemäß zwischengeschaltete Startziele. (I504c0, b/214383060)
Version 2.5.0-alpha01
26. Januar 2022
androidx.navigation:navigation-*:2.5.0-alpha01
wird freigegeben. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
NavBackStackEntry
ist jetzt in ViewModel CreationExtras eingebunden, die im Rahmen des Lebenszyklus2.5.0-alpha01
eingeführt wurden. (Ib9fe2, b/207012490)
Fehlerkorrekturen
- Der Zugriff auf ein
ViewModel
, das überby navGraphViewModels()
über dieonCreate()
eines Fragments erstellt wurde, schlug mitIllegalStateException
fehl. Dieses Problem wurde behoben. (I8a14d) NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal, sodass die richtigen Argumente jetzt an das endgültige Ziel übergeben werden. (I31b0a, b/210711399)
Sichere Argumente
- Safe Args hängt jetzt von der Android-Gradle-Plug-in-Version 7.0.4 ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0, sondern mit dem Android Gradle-Plug-in 7.1.0 und höher kompatibel ist. (I41c88, b/213086135, b/207670704)
Version 2.4.2
Version 2.4.2
6. April 2022
androidx.navigation:navigation-*:2.4.2
wird freigegeben. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Von Navigation
2.5.0-alpha03
zurückportiert:NavDeepLinks
unterstützt jetzt codierte Zeilenzeichen, die in Routen/Deeplink-URIs eingebettet sind, korrekt. (I513d1, b/217815060) - Von Navigation
2.5.0-alpha03
zurückportiert: Navigation SafeArgs unterstützt jetzt die Verwendung des inbuild.gradle
definierten Namespace anstelle des Pakets in AndroidManifest. (I659ef, b/217414933) - Von der Navigation
2.5.0-alpha04
zurückportiert:Navigation Safe Args
stürzt bei der Verwendung von Namespaces nicht mehr ab und es ist keinAndroidManifest.xml
vorhanden. (I17ccf, b/227229815) - Von Navigation
2.5.0-alpha04
rückportiert: Leere Strings werden jetzt in Deeplinks als gültige Argumente betrachtet. (I70a0d, b/217399862)
Version 2.4.1
Version 2.4.1
9. Februar 2022
androidx.navigation:navigation-*:2.4.1
wird freigegeben. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
NavHostFragment
legtOnBackPressedDispatcher
jetzt korrekt fest, wenn Viewbinding mit verschachtelten Grafiken verwendet wird. (Ifbb51, b/214577959)- Bei Deeplinks über mehrere verschachtelte
NavGraph
s enthält der Back Stack jetzt korrekt zwischengeschaltete Startziele. (I504c0, b/214383060) - Von Navigation
2.5.0-alpha01
rückportiert: Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das überby navGraphViewModels()
über dieonCreate()
eines Fragments erstellt wurde, mit einemIllegalStateException
fehlgeschlagen ist. (I8a14d) - Von der Navigation
2.5.0-alpha01
zurückportiert:NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal, sodass die ordnungsgemäß decodierten Argumente jetzt an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399) - Aus Navigation
2.5.0-alpha01
zurückportiert: Safe Args hängt jetzt von der Version 7.0.4 des Android-Gradle-Plug-ins ab. Das bedeutet, dass „Navigation Safe Args“ nicht mehr mit Android Studio-Versionen vor 7.0, sondern mit dem Android Gradle-Plug-in 7.1.0 und höher kompatibel ist. (I41c88, b/213086135, b/207670704)
Version 2.4.0
Version 2.4.0
26. Januar 2022
androidx.navigation:navigation-*:2.4.0
wird freigegeben. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dies hat die Null-Zulässigkeit von Klassen mit generischen Elementen (z. B.
NavType
-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der-ktx
-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. - Das Artefakt
navigation-fragment
enthält jetzt eine vordefinierte Implementierung eines Zweifensterlayouts über das neueAbstractListDetailFragment
. Dieses Fragment verwendet einSlidingPaneLayout
zum Verwalten eines Listenbereichs, den Ihre Unterklasse bereitstellt, und einem Detailbereich, in demNavHostFragment
als Implementierung verwendet wird, wie in unserer Beispielimplementierung dargestellt. - Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt eineFlow
bereit, die ausgelöst wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einesOnDestinationChangedListener
verwendet werden. - NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren
NavBackStackEntry
-Instanzen alsStateFlow
über die experimentelle EigenschaftvisibleEntries
abzurufen. - Die
NavType
-Klasse kann jetzt erweitert werden, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie die Navigationsgrafik programmatisch erstellen, z. B. über Navigation Graph Kotlin DSL. Navigation bietet jetzt
findStartDestination()
- undgetHierarchy()
-APIs, mit denen benutzerdefinierte NavigationUI implementiert werden kann.findStartDestination()
ist eine Erweiterungsfunktion aufNavGraph
, mit der das tatsächliche Startziel ermittelt wird, das angezeigt wird, wenn du zur Grafik navigierst, auch wennstartDestination
selbst eine verschachtelteNavGraph
ist.getHierarchy()
ist eine Funktion fürNavDestination
, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI
-Methoden, für die eineBottomNavigationView
erforderlich war, wurden aktualisiert. Stattdessen wird jetzt die in Material1.4.0
,NavigationBarView
, eingeführte Basisklasse verwendet. Dadurch können diese Methoden mit demNavigationRailView
verwendet werden.Wenn ein
<action>
-Element über XML infließt, können Animationsattribute Attribute verwenden, die mithilfe derapp:enterAnim="?attr/transitionEnter"
-Syntax aus dem Design abgerufen wurden.Safe Args generiert nun eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Navigationsrouten und Kotlin-DSL
In früheren Versionen von Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen gleichgeordneten Zielen identifizieren würde und es Ihnen ermöglicht, dieses Ziel entweder direkt oder über eine Aktion mit navigate()
zu identifizieren. Dies ist weiterhin gültig und nützlich, insbesondere in Fällen, in denen Sie Ihre Navigationsgrafik in XML definieren und automatisch generierte R.id
-Konstanten oder Safe Args verwenden können, das diese Konstanten zum Generieren von Code während der Build-Erstellung verwendet. Dieses System mit eindeutigen Ganzzahlen erfasst jedoch nicht die semantische Bedeutung und Aussagekraft, die zur Unterstützung vollständig dynamischer Diagramme, die programmatisch zur Laufzeit über die Navigation Kotlin DSL erstellt wurden, erforderlich ist.
Mit dieser Version wird eine neue Option eingeführt, mit der ein Ziel in einer Navigationsgrafik anhand seiner route eindeutig identifiziert werden kann. Eine Route ist eine String
, die den eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, für die eine Ziel-ID verwendet wurde, wurden eingestellt und durch eine entsprechende API ersetzt, die eine Route verwendet.
Jede Route sollte als der „path“-Teil eines Uri
behandelt werden, der das Ziel definiert. Beispiel: home
, profile/{userId}
, profile/{userId}/friends
usw. Wenn die Identität eines Ziels mit einem bestimmten Inhalt verknüpft ist, sollten diese dynamischen Argumente Teil der Route sein. Dabei gelten dieselben Regeln wie für implizite Deeplinks.
Alle NavController
APIs, die bisher nur eine ID verwendet haben, haben jetzt eine Überlastung, die die Route String
nimmt. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Dies hatte einige API-Auswirkungen:
- Die Kotlin-Eigenschaft
popUpTo
der Kotlin-DSL wurde zugunsten vonpopUpToId
eingestellt. - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt.
Anders als bei der Navigation nach ID gelten für das Navigieren nach Routen dieselben Regeln wie für implizite Deeplinks. Sie können also direkt zu einem beliebigen Ziel in einer verschachtelten Grafik navigieren. Dadurch wird sichergestellt, dass diese Routen in Projekten mit mehreren Modulen verwendet werden können, ohne explizit einen extern sichtbaren Deeplink zu jedem Ziel hinzuzufügen.
Navigationserstellung
Das Artefakt navigation-compose
ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Diese Version bietet Folgendes:
- Eine zusammensetzbare
NavHost
-Funktion, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL mitcomposable
- unddialog
-Zielen erstellen können. Außerdem unterstützt sie optionale Navigatoren, z. B. aus Accompanist Navigation Material. - Obligatorische Unterstützung für Übergänge zwischen Zielen. Die Navigationsanimation für Begleitpersonen kann zur Steuerung der Ein- und Ausstiegsübergänge mithilfe von experimentellen Compose-APIs verwendet werden.
- Geltungsbereich eines
Lifecycle
zu jedem zusammensetzbaren Ziel. Jedes Ziel erreicht den StatusRESUMED
erst, wenn eine Übergangsphase abgeschlossen ist, und fällt sofort aufSTARTED
, wenn ein abspringender Wechsel beginnt. So können Sie alleIllegalStateException
- und Multi-Touch-Probleme vermeiden, indem Sie nur einennavigate
-Aufruf auslösen, wennLifecycle
den WertRESUMED
hat. - Zugehörigkeit von
ViewModel
(über dieviewModel()
API von Lifecycle ViewModel Compose2.4.0
oderhiltViewModel()
von Hilt Navigation Compose1.0.0
auf Zielebene, wobei ein Bereich bereitgestellt wird, der Konfigurationsänderungen übersteht und auf dem Back-Stack liegt (wenn Ihr zusammensetzbarer Inhalt anderweitig entsorgt wird) und ein Signal inonCleared()
des ViewModel, das die dauerhafte Entsorgung und Bereinigung des mit diesemNavBackStackEntry
verknüpften Zustands anzeigt. - Umfang des Status
rememberSaveable
auf Zielebene, damit der gesamte zusammensetzbare Status gespeichert und wiederhergestellt wird, wenn Sie zu einem Ziel zurückkehren. - Vollständige Unterstützung zum Speichern und Wiederherstellen des Status von
NavController
und des Status des Ziels nach dem Tod und der Neuerstellung des Prozesses. - Automatische Integration mit der Zurück-Schaltfläche des Systems.
Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben von Ergebnissen an vorherige Ziele.
Erstellen Sie spezifische Hilfsprogramme in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Windstatus zuzulassen und dieNavController
mit zusammensetzbaren Funktionen außerhalb desNavHost
zu verbinden (z. B. eine untere Navigationsleiste).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Weitere Informationen finden Sie in der Navigationshilfe für die Inhaltserstellung.
Mehrere Back-Stacks
NavController ist für die Verwaltung des Back-Stacks der Ziele verantwortlich und fügt dem Back-Stack Ziele hinzu, wenn Sie navigate()
zu ihnen hinzufügen, und sie zu entfernen, wenn Sie popBackStack()
aufrufen oder die System-Zurück-Schaltfläche auslösen. Die vorhandene NavOptions
-Klasse und die Integration in <action>
-Elemente in der XML-Navigationsgrafik wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen.
Im Rahmen dieser Änderung wird mit den NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt der Status der Pop-up-Ziele automatisch gespeichert und wiederhergestellt. Dadurch werden mehrere Back-Stacks ohne Codeänderungen unterstützt. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration in mehrere Back-Stacks.
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:
In der Navigations-XML-Datei kann das
<action>
-Element jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele zu speichern, die überapp:popUpTo
per Pop-up abgerufen wurden, und den Status wiederherzustellen, der mit dem Ziel verknüpft ist, das alsapp:destination
übergeben wurde:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
In der
navOptions
Kotlin-DSL können Sie die booleschen AttributerestoreState
undsaveState
impopUpTo
-Builder hinzufügen:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Wenn Sie ein
NavOptions
-Objekt manuell über denNavOptions.Builder
erstellen, können SiesetRestoreState()
und die neue ÜberlastungsetPopUpTo()
verwenden, für die ein zusätzlichersaveState
-Parameter benötigt wird.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Programmatische Aufrufe von
popBackStack()
können jetzt einen zusätzlichensaveState
-Parameter enthalten.Sie können die Methode
clearBackStack()
verwenden, um jeden Status zu löschen, der mitpopBackStack()
oderpopUpToSaveState
gespeichert wurde.
In allen Fällen wird der Status jeder NavBackStackEntry
in der NavController
gespeichert und wiederhergestellt, einschließlich aller ViewModel
-Instanzen, die auf das Navigationsziel beschränkt sind. Die Navigator
APIs wurden aktualisiert, damit jeder Navigator
den eigenen Status speichern und wiederherstellen kann.
Änderungen des Verhaltens
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
zu der voncreatePendingIntent()
zurückgegebenenPendingIntent
hinzu, damit diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist.- Die Navigation hängt jetzt vom Lebenszyklus
2.3.1
ab und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, dieNavBackStackEntry
Lifecycle
aktualisieren, als@MainThread
, wodurch die Navigation mit der im Lebenszyklus2.3.0
eingeführten Erzwingung des Hauptthreads ausgerichtet wird. - Deeplinks prüfen jetzt, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. - In
NavDeepLink
geparste Argumente betrachten das Rautezeichen jetzt auf dieselbe Weise wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten. Dadurch wird verhindert, dass sich ein Argument über das Rautezeichen erstreckt. - Beim Generieren von Aktionen werden mit dem von Safe Args generierten Kotlin-Code jetzt Argumente ohne Standardwerte vor denen mit Standardwerten als Parameter platziert.
- Beim Generieren von Argumenten werden von Safe Args jetzt Parameter ohne Standardwerte vor denen mit Standardwerten platziert.
- Safe-Args hängt jetzt vom Android-Gradle-Plug-in 4.2.0 ab. Das bedeutet, dass du die Warnung „
applicationIdTextResource
“ nicht mehr erhalten solltest.
Bekannte Probleme
- Problem in Navigation
2.5.0-alpha01
behoben: Der Zugriff auf einViewModel
, das überby navGraphViewModels()
aus demonCreate()
eines Fragments erstellt wurde, schlägt mitIllegalStateException
fehl. (b/213504272) - Fehlerkorrektur in Navigation
2.5.0-alpha01
: Safe Args 2.4.0 ist nicht mit dem Android Gradle-Plug-in 7.1.0 und höher kompatibel. (b/213086135) - Durch Deeplinks mit mehreren verschachtelten Navigationsdiagrammen wird nicht der vollständige Backstack korrekt erstellt. (b/214383060)
Version 2.4.0-rc01
15. Dezember 2021
androidx.navigation:navigation-*:2.4.0-rc01
wird freigegeben. Version 2.4.0-rc01 enthält diese Commits.
Änderungen des Verhaltens
- In
NavDeepLink
geparsten Argumenten werden jetzt Rautezeichen auf dieselbe Weise wie Fragezeichen als Trennzeichen zwischen Argumenten behandelt. (I21309, b/180042703)
Fehlerkorrekturen
- Es werden keine Argumente mit Werten mehr ignoriert, die mit dem Namen des Platzhalters übereinstimmen. (If8017, b/207389470)
NavController
stürzt nach der Wiederherstellung vonNavController
nicht mehr ab, wenn ein verschachteltes Ziel mithilfe von Übergängen per Pop-up aufgerufen wird. (I0f7c9, b/205021623)- Die Fehlermeldung bei Verwendung eines ungültigen
startDestination
-Werts wird jetzt standardmäßig auf die Route des Startziels gesetzt, sofern eine verfügbar ist. (I86b9d, b/208041894)
Fehlerkorrekturen bei der Navigation beim Verfassen
- Das Problem mit dem potenziellen Absturz, der durch einen schnellen Wechsel zwischen dem Start- und einem anderen Ziel über die Elemente des unteren Navigationsmenüs verursacht wurde, wurde behoben. (Ic8976, b/208887901)
- Dialogfeldziele werden jetzt korrekt oben auf dem Bildschirm wiederhergestellt, nachdem die Konfiguration geändert wurde oder der Prozess beendet wurde. (I4c0dc, b/207386169)
- Der Versuch, eine
ViewModel
aus demNavBackStackEntry
eines Dialogfelds abzurufen, schlug fehl, wenn das Dialogfeld geschlossen wurde. Dieses Problem wurde behoben. (I6b96d, b/206465487) - Ein Problem wurde behoben, das bei der Verwendung von
activity
-Zielen mit derNavHost
von Navigation Compose zu unendlichen Neuzusammensetzungen führte. (I8f64c) - Ein Speicherleck in der Funktion „Navigation Compose“ wurde behoben, bei dem eine Referenz der alten Aktivität nach einer Konfigurationsänderung oder einem Prozesstod beibehalten wurde. (I4efcb, b/204905432)
Safe Args – Fehlerkorrekturen
SafeArgs
stürzt nicht mehr ab, wenn versucht wird, benutzerdefinierte Parzellen-Arrays nach dem Beenden des Prozesses wiederherzustellen. (I618e8, b/207315994)- Es wurde ein Fehler in sicheren Argumenten behoben, bei denen boolesche Arrays keinen
null
-Wert hatten. (I8c396, b/174787525)
Version 2.4.0-beta02
3. November 2021
androidx.navigation:navigation-*:2.4.0-beta02
wird freigegeben. Version 2.4.0-beta02 enthält diese Commits.
API-Änderungen
- Durch die Verarbeitung von expliziten und impliziten Deeplinks wird jetzt automatisch das Flag
saveState
hinzugefügt, wenn zu einer anderen Grafik navigiert wird. Dadurch wird sichergestellt, dass Code wieNavigationUI.setupWithNavController
und Code mit mehreren Back-Stacks wie erwartet funktionieren. (Ic8807)
Änderungen des Verhaltens
- Deeplink-Muster werden in NavDeepLink jetzt verzögert und nicht mehr während der Inflation kompiliert. Dadurch sollte die Inflationszeit von Navigationsdiagrammen mit Deeplinks verbessert werden. (b8d257, b/184149935)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem NavBackStackEntries nach unten in
Lifecycle.State.CREATED
verschoben wurden, nachdem es nachLifecycle.State.STARTED
verschoben wurde, wenn derNavHost
direkt zumsetContent()
der Aktivität hinzugefügt wurde. (Ia5ac1, b/203536683) - Es wurde eine Race-Bedingung behoben, bei der das Dialogfeld nicht tatsächlich geschlossen werden konnte, wenn ein
DialogFragment
-Ziel aus dem Back-Stack entfernt wurde, bevor das Dialogfeld tatsächlich angezeigt wurde. Dies führte zu einem Absturz, wenn das fehlerhafte Dialogfeld vom Nutzer manuell geschlossen wurde. (I687e5) - Ein Problem wurde behoben, bei dem die
onNavDestinationSelected
API aufNavigationUI
true
zurückgegeben hat, auch wenn Sie für diese Navigationsgrafik nichtnavigate()
angegeben haben. Es verwendet jetzt dieselbe Logik, die intern vonsetupWithNavController
verwendet wird, um nur dieMenuItem
auszuwählen, die dem aktuellen Ziel unter Verwendung deshierarchy
des Ziels zugeordnet sind. (I2b053)
Version 2.4.0-beta01
27. Oktober 2021
androidx.navigation:navigation-*:2.4.0-beta01
wird freigegeben. Version 2.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
by navGraphViewModel
als Alternative zur Verwendung einer ID mit einer Route verwenden, um die Verwendung der Navigations-Kotlin-DSL mit Fragmenten zu verbessern. (I901e3, b/201446416)
API-Änderungen
- Die
visibleEntries
API ist jetzt experimentell. (I93f6f)
Fehlerkorrekturen
- ViewModels werden nicht mehr gelöscht, wenn Übergänge durch das Wechseln zwischen denselben Bildschirmen unterbrochen werden (Id52d8, b/200817333).
NavDeepLink
-Argumente, für die Nullwerte zulässig sind, erfordern beim Hinzufügen von Deeplinks zuNavDestination
s keinen Standardwert mehr. (I5aad4, b/201320030)- NavBackStackEntries, die jetzt verschiedene Lebenszyklen haben, gelten nicht mehr als gleich. Das bedeutet, dass NavHost alle Ziele ordnungsgemäß neu zusammenstellt, wenn die Navigation mit singleTop ausgeführt wird und wenn die unteren Menüelemente neu ausgewählt werden. (I1b351, b/196997433)
- Ein Problem mit
AbstractListDetailFragment
wurde behoben, bei dem die Attributelayout_width
undlayout_weight
im vononCreateListPaneView()
zurückgegebenen Listenbereich falsch verarbeitet oder ignoriert wurden. f5fbf3 - Der visuelle Status der Dialogziele bleibt jetzt korrekt mit dem Status von
DialogFragmentNavigator
synchron. Das bedeutet, dass durch manuelles Aufrufen der asynchronendismiss()
API fürDialogFragment
jetzt alle Dialogfeldziele über dem jetzt geschlossenen Dialogfeld ordnungsgemäß gelöscht werden. Dies hat keine Auswirkungen auf Fälle, in denen Sie das Dialogfeld mitpopUpTo
oderpopBackStack()
schließen. (I77ba2) AbstractAppBarOnDestinationChangedListener
enthält jetzt klarere Fehlermeldungen füronDestinationChanged()
. (Ie742d)
Version 2.4.0-alpha10
29. September 2021
androidx.navigation:navigation-*:2.4.0-alpha10
wird freigegeben. Version 2.4.0-alpha10 enthält diese Commits.
Neue Funktionen
- NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren
NavBackStackEntry
-Instanzen über denvisibleEntries
-StateFlow (Ia964e) abzurufen rememberNavController()
verwendet jetzt einen optionalen Satz vonNavigator
-Instanzen, die dem zurückgegebenenNavController
hinzugefügt werden, um optionale Navigatoren, z. B. aus Accompanist Navigation Material, besser zu unterstützen. (I4619e)
Fehlerkorrekturen
- Die dynamische Navigation stürzt nicht mehr ab, wenn die Aktivität neu erstellt wird. (Ifa6a3, b/197942869)
- Es wurde ein Problem mit der Systemschaltfläche „Zurück“ behoben, das nur nach einem Pop-up zu einem zusammensetzbaren Ziel mit einem
NavHost
-Element aufgetreten ist. (3ed148, b/195668143) - SafeArgs generiert jetzt die Argumente für
fromBundle()
undfromSavedStateHandle()
in der richtigen Parameterreihenfolge. (I824a8, b/200059831)
Version 2.4.0-alpha09
15. September 2021
androidx.navigation:navigation-*:2.4.0-alpha09
wird freigegeben. Version 2.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt die Methode
clearBackStack()
verwenden, um jeden Status zu löschen, der mitpopBackStack()
oderpopUpToSaveState
gespeichert wurde. (I80a0f) - Sie können jetzt eine Liste von Argumenten und/oder Deeplinks an den Builder Ihrer verschachtelten Navigationsgrafik übergeben. Diese werden dann automatisch der Grafik hinzugefügt. (I8a470, b/182545357)
API-Änderungen
- Die Kotlin-DSL-Funktion
navArgument
ist jetzt Teil vonnavigation-common
anstelle vonnavigation-compose
. Damit diese Funktion weiterhin verwendet werden kann, müssen Importe aktualisiert werden. (I1d095)
Änderungen des Verhaltens
- Beim Generieren von Argumenten werden von Safe Args jetzt Parameter ohne Standardwerte vor denen mit Standardwerten platziert. (I89709, b/198493585)
Fehlerkorrekturen
- Wenn Sie Navigation Compose verwenden, ist NavGraphs erst
DESTROYED
, wenn alle untergeordneten ElementeDESTROYED
sind. (I86552, b/198741720) NavDeepLink
-Argumente, in denen Nullwerte zulässig sind, erfordern keinen Standardwert mehr. (Ia14ef, b/198689811)- Wenn Sie
setGraph()
mit einem neuen Diagramm aufrufen, werden jetzt zusätzlich zum vorherigen Pop-up des Back-Stacks auch alle gespeicherten Back-Stacks gelöscht. (I97f96) - Es wurde ein Problem behoben, bei dem
OnDestinationChangedListener
-Instanzen und dercurrentBackStackEntryFlow
bei der Verwendung vonlaunchSingleTop
nicht benachrichtigt wurden. (Iaaebc)
Aktualisierungen von Abhängigkeiten
- Die Funktion „Schreibassistent“ hängt jetzt von Activity Compose 1.3.1 ab. (I05829)
- Die Funktion „Navigation erstellen“ hängt jetzt von der Funktion Lifecycle ViewModel Compose
2.4.0-beta01
ab. (Ib86a3)
Version 2.4.0-alpha08
1. September 2021
androidx.navigation:navigation-*:2.4.0-alpha08
wird freigegeben. Version 2.4.0-alpha08 enthält diese Commits.
Neue Funktionen
- Die
NavType
-Klasse kann jetzt erweitert werden, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie die Navigationsgrafik programmatisch erstellen, z. B. über Navigation Graph Kotlin DSL. (I78440, b/196871885)
Änderungen des Verhaltens
- Beim Generieren von Aktionen werden mit dem von Safe Args generierten Kotlin-Code jetzt Argumente ohne Standardwerte vor denen mit Standardwerten als Parameter platziert. (Idb697, b/188855904)
- Deeplinks prüfen jetzt, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. (#204, b/185527157)
Fehlerkorrekturen
- Die Verwendung von
getBackStackEntry
undpreviousBackStackEntry
innerhalb von composable() in Verbindung mitremember()
führt nicht mehr zu einer Ausnahme, weil sich kein Ziel im Back-Stack befindet. (I75138, b/194313238) - Die Funktion „Navigation Compose“ wird jetzt korrekt neu zusammengesetzt, wenn Backstack-Argumente geändert und
launchSingleTop=true
verwendet werden. (Iebd69, b/186392337) - Es gibt kein
ArrayIndexOutOfBoundsException
mehr, wennsetGraph
mit einem Diagramm mit 13 oder 29 Zielen aufgerufen wird. (I1a9f1, b/195171984) - Der SafeArgs-Java-Generator sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr auslösen. (I1a666, b/185843837)
Externer Beitrag
- Vielen Dank an ospixd, dass Sie mithilfe von Deeplinks prüfen, ob alle erforderlichen Argumente (ohne Standardwert) in der
Uri
vorhanden sind. (#204, b/185527157)
Version 2.4.0-alpha07
18. August 2021
androidx.navigation:navigation-*:2.4.0-alpha07
wird freigegeben. Version 2.4.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Die Funktion „Navigation Compose“ speichert jetzt den Status nach Konfigurationsänderungen und beim Ändern von Grafiken bei Verwendung der Multi-Back-Stack-Funktion ordnungsgemäß. (If5a3d, b/195141957)
- Wenn beim Verwenden der Navigation zum Schreiben mit mehreren Back-Stacks derselbe Tab noch einmal ausgewählt wird, wird kein leerer Bildschirm mehr angezeigt. (I860dc, b/194925622)
NavHost
überwacht jetzt Änderungen anLifecycle.State
vonNavBackStackEntry
-Werten. Das bedeutet, dass die Verwendung einesNavHost
in einem Fragment jetzt ordnungsgemäß neu zusammengesetzt wird, wenn sich der Lebenszyklus ändert, anstatt einen leeren Bildschirm zu erhalten. (I4eb85, b/195864489)- Ein Problem wurde behoben, bei dem das Schließen eines
DialogFragment
-Objekts nach der Neuerstellung der Aktivität (z.B. nach einer Konfigurationsänderung) der StatusNavController
nicht korrekt aktualisiert wurde. (Icd72b) - Ein Problem wurde behoben, bei dem durch das Pop-up eines Dialogfeldziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Back-Stack vorhanden ist. (If3b34)
- Safe-args generiert jetzt automatisch eine
toSavedStateHandle
-Methode für Argumente, mit denen Sie IhrenViewModel
-Code testen können. (If1e2d, b/193353880)
Version 2.4.0-alpha06
4. August 2021
androidx.navigation:navigation-*:2.4.0-alpha06
wird freigegeben. Version 2.4.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Methoden
requireSlidingPaneLayout()
undrequireDetailPaneNavHostFragment()
fürAbstractListDetailFragment
wurden ingetSlidingPaneLayout()
bzw.getDetailPaneNavHostFragment()
umbenannt. (I34a08)
Änderungen des Verhaltens
- Beim Navigieren mit Animationen (z. B.
Crossfade
) erreicht dieLifecycle
des neuen Ziels nur noch denRESUMED
, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889) - Mit der Funktion
NavHost
für Navigation Compose wird die Grafik jetzt als Teil der ersten Komposition festgelegt. (Ieb7be)
Fehlerkorrekturen
- Wenn das letzte Ziel eines Navigationsdiagramms aufgerufen wird, wird kein
ClassCastException
mehr ausgegeben. (If0543, b/172112072, b/194301889) - Ein
NullPointerException
wurde behoben, das beim Hinzufügen eines Deeplinks ohneUri
und beim Navigieren über eine Route oder einen Deeplink aufgetreten ist. (938a0c, b/193805425) - Es wurde ein Problem in „Navigation Compose“ behoben, bei dem ein mit Deeplink verknüpftes
NavBackStackEntry
den StatusRESUMED
nicht erreichte. (I192c5) - Ein Problem wurde behoben, bei dem durch das Pop-up eines Dialogfeldziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Back-Stack vorhanden ist, der angezeigt werden kann. (aosp/1782668)
Version 2.4.0-alpha05
21. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha05
wird freigegeben. Version 2.4.0-alpha05 enthält diese Commits.
Änderungen des Verhaltens
- In
NavHost
von Navigation Compose werden jetzt beim Navigieren durch Ziele immer Überblendungen verwendet. (I07049, b/172112072) - Sie können jetzt Änderungen an der Grafik eines NavHosts vornehmen. Grafiken mit demselben Start-Ziel und denselben Zielen in der Grafik werden als gleich angesehen und der Back-Stack
NavController
wird nicht gelöscht. (I0b8db, b/175392262)
Fehlerkorrekturen
- Ein
NoSuchElementException
wurde behoben, wennpopBackStack()
aus einemLifecycleObserver
aufgerufen wurde, das an eineNavBackStackEntry
angehängt ist, was durch erneute Aktualisierungen des NavController-Status verursacht wurde. (I64621) AbstractListDetailFragment
lässt jetzt zu, dassSlidingPaneLayout
vollständig aus deinem APK entfernt wird, wennAbstractListDetailFragment
nicht verwendet wird. (I611ad)NavGraph
undNavDestination
überschreiben jetzt die Gleichheitsmethode, sodass zwei Objekte mit denselben Werten als gleich angesehen werden. (I166eb, b/175392262)
Version 2.4.0-alpha04
1. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha04
wird freigegeben. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das Artefakt
navigation-fragment
enthält jetzt eine vordefinierte Implementierung eines Zweifensterlayouts über das neueAbstractListDetailFragment
. Dieses Fragment verwendet einSlidingPaneLayout
zum Verwalten eines Listenbereichs, den Ihre Unterklasse bereitstellt, und einem Detailbereich, in demNavHostFragment
als Implementierung verwendet wird, wie in unserer Beispielimplementierung dargestellt. (Iac4be, b/191276636) NavHost
desnavigation-compose
-Artefakts unterstützt jetzt zusätzlich zucomposable
-Zielendialog
-Ziele. Diese Dialogziele werden jeweils in einer zusammensetzbarenDialog
über dem aktuellencomposable
-Ziel angezeigt. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
API-Änderungen
- Die Funktion
add
inNavigatorState
wurde inpush
umbenannt. Alle aktuellen Aufrufe vonadd()
müssen in push() geändert werden. (Ie89fc, b/172112072) - Benutzerdefinierte
Navigator
-Instanzen können jetzt mit den APIspushWithTransaction
undpopWithTransition
aufNavigatorState
ein Ziel asynchron per Push oder Pop übertragen. Beachten Sie, dass diese APIs noch von keinem der enthaltenen Navigatoren verwendet werden. (Ic4d7c, b/172112072)
Änderungen des Verhaltens
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
zu der voncreatePendingIntent()
zurückgegebenenPendingIntent
hinzu, damit diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist. (If8c52)
Fehlerkorrekturen
- Ein Problem mit
<include-dynamic>
wurde behoben, bei dem an die Grafik übergebene Argumente nicht korrekt an die dynamisch eingefügte Grafik übergeben wurden. (I3e115) - Ein
NullPointerException
beim Aufrufen eines Ziels mit einemstring[]
-Argument mit dem Standardwert@null
wurde behoben. I1fbe8 - Fügen Sie ProGuard-Regeln für
@Navigator.Name
hinzu, um Probleme bei der Verwendung des vollständigen Modus von R8 3.1 zu beheben. (I2add9, b/191654433) - SafeArgs scheitert nicht mehr, wenn Sie Ihre Anwendung mit
Kotlin
-Versionen vor dem1.5.0
erstellen. (Icd1ff, b/190739257)
Version 2.4.0-alpha03
16. Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha03
wird freigegeben. Version 2.4.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem zwei
navigate()
-Aufrufe erforderlich waren, um zu einem enthaltenen dynamischen Diagramm zu wechseln. (I7785c, b/188859835) - Es wurde eine Regression behoben, die in der Navigation
2.4.0-alpha01
eingeführt wurde, bei dersetupActionBarWithNavController()
das Aufwärtspfeil-Symbol nicht ordnungsgemäß entfernt hat, wenn Sie sich an einem Ziel auf oberster Ebene befinden. (I5d443, b/189868637) - Ein
IllegalStateException
wurde korrigiert, wennpopBackStack()
aufgerufen wurde, nachdem die Stammgrafik von NavController zuvor per Pop-up abgerufen wurde. (I2a330, b/190265699) - Die ProGuard-Regeln für
by navArgs()
werden jetzt korrekt angewendet, wennnavigation-common
oder davon abhängige Artefakte verwendet werden. (I68800, b/190082521) - Ein
OnDestinationChangedListener
, dasnavigate()
beim ersten Empfang eines Callbacks aufruft, erhält jetzt ordnungsgemäß einen zweiten Callback mit dem Ziel, zu dem es navigiert ist. (Ie5f9e, b/190228815) - Safe Args stürzt nicht mehr ab, wenn er mit dynamischen Funktionsmodulen und AGP 7.0 oder höher verwendet wird. (I69518, b/189966576)
Bekanntes Problem
- Safe Args schlagen bei der Verwendung von Gradle
6.7.0
aufgrund einer Abhängigkeit von einer älteren Version von Kotlin mit dem FehlerUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
fehl. Sie können das Problem umgehen, indem Sie auf Gradle 7.0 aktualisieren. (b/190739257)
Version 2.4.0-alpha02
2. Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha02
wird freigegeben. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Routen werden jetzt für Aktivitäts-, Fragment- und Dialogziele sowie in der gesamten DynamicNavigation Kotlin-DSL unterstützt. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
hat vorübergehend experimentelle APIs hinzugefügt, mit denen das Speichern Ihres Status deaktiviert werden kann. Obwohl das Speichern des Status immer richtig ist, gibt es immer noch verworfene Bibliotheken (d. h. beibehaltene Fragmente), die beim Speichern des Status nicht unterstützt werden können. Dies gibt Apps die Möglichkeit, nach und nach von nicht unterstützten APIs zu konvertieren. (Idf93c)Navigation bietet jetzt
findDestination()
- undgetHierarchy()
-APIs, mit denen benutzerdefinierte NavigationUI implementiert werden kann.findDestination()
ist eine Erweiterungsfunktion fürNavGraph
, mit der ein Ziel in der Grafik ermittelt wird.getHierarchy()
ist eine Funktion inNavDestination
, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI-Methoden, für die ein
BottomNavigationView
verwendet wurde, wurden aktualisiert. Stattdessen wird die in Material1.4.0
,NavigationBarView
, eingeführte Basisklasse verwendet. Dadurch können diese Methoden mit demNavigationRailView
verwendet werden. (Ib0b36, b/182938895)Wenn ein
<action>
-Element über XML infließt, können Animationsattribute Attribute verwenden, die mithilfe derapp:enterAnim="?attr/transitionEnter"
-Syntax aus dem Design abgerufen wurden. (I07bc1, b/178291654)
API-Änderungen
- Kotlin-DSL-Builder, die eine ID verwenden, wurden eingestellt und sollten durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479) (I9f58f, b/188816479).
Fehlerkorrekturen
DialogFragmentNavigator
verwendet jetzt dieNavigatorState.pop()
API, umNavController
zu informieren, wenn ein Dialogfeld geschlossen wird. Dazu wird auf die Schaltfläche „Zurück“ des Systems oder außerhalb davon geklickt. Dadurch wird sichergestellt, dass derNavController
-Status immer mit dem Status des Navigators synchron ist. (I2ead9)Die Navigation gibt kein
ConcurrentModificationException
mehr zurück, wenn die Liste vonOnDestinationChangedListeners
mit einemonDestinationChanged
-Callback bearbeitet wird. (Ib1707, b/188860458)Safe Args stürzt nicht mehr ab, wenn Richtungsattribute in Kotlin generiert werden sollen. (Id2416, b/188564435)
Die Methode „setId“ in NavDestination ist jetzt korrekt mit
@IdRes
annotiert, sodass nur Ressourcen-IDs akzeptiert werden. (I69b80)Der int-Parameter von
findNode
ist jetztresId
anstelle vonresid
. (I7711d)
Abhängigkeitsaktualisierung
- Safe-Args hängt jetzt vom Android-Gradle-Plug-in 4.2.0 ab. Das bedeutet, dass du die Warnung „
applicationIdTextResource
“ nicht mehr erhalten solltest. (I6d67b, b/172824579)
Version 2.4.0-alpha01
18. Mai 2021
androidx.navigation:navigation-*:2.4.0-alpha01
wird freigegeben. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt eineFlow
bereit, die ausgelöst wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einesOnDestinationChangedListener
verwendet werden. (I19c4a, #89, b/163947280)
Mehrere Back-Stacks
NavController ist für die Verwaltung des Back-Stacks der Ziele verantwortlich und fügt dem Back-Stack Ziele hinzu, wenn Sie navigate()
zu ihnen hinzufügen, und sie zu entfernen, wenn Sie popBackStack()
aufrufen oder die System-Zurück-Schaltfläche auslösen. Die vorhandene NavOptions
-Klasse und die Integration in <action>
-Einträge in der XML-Navigationsgrafik wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen. (b/80029773)
Im Rahmen dieser Änderung wird mit den NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt der Status der Pop-up-Ziele automatisch gespeichert und wiederhergestellt. Dadurch werden mehrere Back-Stacks ohne Codeänderungen unterstützt. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration in mehrere Back-Stacks. (Ie07ca)
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:
In der Navigations-XML-Datei kann das
<action>
-Element jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele zu speichern, die überapp:popUpTo
per Pop-up abgerufen wurden, und den Status wiederherzustellen, der mit dem Ziel verknüpft ist, das alsapp:destination
übergeben wurde:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
In der
navOptions
Kotlin-DSL können Sie die booleschen AttributerestoreState
undsaveState
impopUpTo
-Builder hinzufügen:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Wenn Sie ein
NavOptions
-Objekt manuell über denNavOptions.Builder
erstellen, können SiesetRestoreState()
und die neue ÜberlastungsetPopUpTo()
verwenden, für die ein zusätzlichersaveState
-Parameter benötigt wird.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Programmatische Aufrufe von
popBackStack()
können jetzt einen zusätzlichensaveState
-Parameter enthalten.
In allen Fällen wird der Status jeder NavBackStackEntry
in der NavController
gespeichert und wiederhergestellt, einschließlich aller ViewModel
-Instanzen, die auf das Navigationsziel beschränkt sind. Die Navigator
APIs wurden aktualisiert, damit jeder Navigator
den eigenen Status speichern und wiederherstellen kann.
Die ComposeNavigator
, die in Navigation Compose für composable
-Ziele sowie FragmentNavigator
und DynamicFragmentNavigator
für <fragment>
-Ziele in Navigation mit Fragmenten verwendet werden, wurden beide aktualisiert, um die neuen Navigator APIs zu verwenden und das Speichern und Wiederherstellen des Status zu unterstützen.
Navigationsrouten
Eine Route ist eine String
, die ein Ziel eindeutig identifiziert. Dieses Konzept, das bisher nur bei der Funktion Navigation Compose verwendet wurde, wurde inzwischen zu einem Teil der zentralen Navigations-APIs entwickelt. Dies ist eine Alternative zur Verwendung von Ganzzahl-IDs, wenn Sie das Diagramm über die Navigations-Kotlin-DSL erstellen. (b/172823546)
Alle APIs, die bisher nur eine ID verwendet haben, haben jetzt eine Überlastung, die die Route String
nimmt. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Dies hatte einige API-Auswirkungen:
- Die Kotlin-Eigenschaft
popUpTo
in der Kotlin-DSL wurde zugunsten vonpopUpToId
eingestellt. (I59c73, b/172823546) - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt. (I0887f, b/172823546)
Für Entwickler, die von früheren Versionen von „Navigation Compose“ auf „Navigation Compose“ 2.4.0-alpha01
aktualisieren, sind die folgenden Importe für Erweiterungsmethoden nicht mehr erforderlich und sollten entfernt werden:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
Das Argument KEY_ROUTE
wurde durch die Eigenschaft route
auf NavDestination
ersetzt, sodass Sie navBackStackEntry.destination.route
direkt aufrufen können.
API-Änderungen
- Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dies hat die Null-Zulässigkeit von Klassen mit generischen Elementen (z. B.
NavType
-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der-ktx
-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. (b/184292145) NavDeepLinkBuilder
unterstützt jetzt das Hinzufügen mehrerer einzelner Ziele zum generierten Back-Stack. (I3ee0d, b/147913689)- Werkseinstellungen für
DynamicNavHostFragment
hinzufügen (Icd515, b/175222619) - Die eindeutige ID eines
NavBackStackEntry
wird jetzt im Rahmen der zugehörigen öffentlichen API bereitgestellt. (Ie033a) - Die Felder
name
undargument
sowie die destruktiven Funktionen vonNamedNavArgument
sind jetzt öffentlich. (Nr. 174, b/181320559) - Es wurde eine neue
NavBackStackEntry#provideToCompositionLocals
-Erweiterung eingeführt, mit derNavBackStackEntry
den relevanten Kompositions-Lokalen zur Verfügung gestellt wird. (#175, b/187229439)
Sichere Argumente
Safe Args generiert nun eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Sichere Args wurden aktualisiert und hängen von KotlinPoet
1.8.0
ab. (Nr. 172, b/183990444)
Änderungen des Verhaltens
- Die Navigation hängt jetzt vom Lebenszyklus
2.3.1
ab und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, dieNavBackStackEntry
Lifecycle
aktualisieren, als@MainThread
, wodurch die Navigation mit der im Lebenszyklus2.3.0
eingeführten Erzwingung des Hauptthreads ausgerichtet wird. (b/171125856) - Beim Parsen von Enum-Argumenten aus Deeplinks wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So kann ein Deeplink wie
http://www.example.com/red
auch dann mit einemwww.example.com/{color}
-Deeplink übereinstimmen, wenn die Enumeration den WertRED
hat. (#152, b/135857840)
Kompatibilität der Funktion „Compose“
androidx.navigation:navigation-compose:2.4.0-alpha01
ist nur mit dem Tool „Compose“ ab Version1.0.0-beta07
kompatibel.
Fehlerkorrekturen
- Platzhalter für nachgestellte Argumente haben Vorrang vor Deeplinks mit genau übereinstimmendem Suffix. Das Problem wurde behoben. (#153, b/184072811)
NavHostFragment
unterstützt jetzt benutzerdefinierte Navigatoren, die denselben@Navigator.Name("dialog")
wie die Standard-DialogFragmentNavigator
verwenden. (Ib1c2c, b/175979140)- Das Verhalten von
NavigatorProvider#addNavigator
wurde verbessert, damit kein wiederholter Aufruf mit derselben Instanz zu Problemen führt. (#176, b/187443146)
Externe Unterstützung
- Vielen Dank, simonschiller hat die Unterstützung für Safe Args entwickelt, die eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse generieren. (#122, b/136967621) - Bradleycorn hat dafür gesorgt, dass beim Parsen von Enum-Argumenten aus Deeplinks die Groß-/Kleinschreibung nicht berücksichtigt wird. (#152, b/135857840)
- Vielen Dank, dass osipxd das Problem behoben hat, bei dem nachgestellte Argumentplatzhalter Vorrang vor Deeplinks mit exakt übereinstimmendem Suffix haben. (#153, b/184072811)
- Vielen Dank, dass tatocaster Safe Args so aktualisiert hat, dass sie von KotlinPoet
1.8.0
abhängig sind. (Nr. 172, b/183990444) - Vielen Dank, jossiwolf, dass die Felder
name
undargument
sowie die zerstörerischen Funktionen vonNamedNavArgument
öffentlich gemacht wurden. (Nr. 174, b/181320559) - Vielen Dank, jossiwolf, für die Einführung der neuen
NavBackStackEntry#provideToCompositionLocals
-Erweiterung, mit derNavBackStackEntry
den entsprechenden lokalen Kompositionen zur Verfügung gestellt wird. (#175, b/187229439) - Vielen Dank, jossiwolf hat das Verhalten von
NavigatorProvider#addNavigator
verbessert, damit es keine Probleme mehr verursacht, wenn es wiederholt mit derselben Instanz aufgerufen wird. (#176, b/187443146)
Navigation Compose Version 1.0.0
Version 1.0.0-alpha10
7. April 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
wird freigegeben. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
NavHost
akzeptiert jetzt eineModifier
, die an den zusammensetzbaren Container übergeben wird, der die zusammensetzbaren Zielfunktionen umschließt. (I85aca, b/175125483)
Fehlerkorrekturen
NavHost
funktioniert jetzt auch dann, wenn keinOnBackPressedDispatcherOwner
gefunden wird, wie bei der Vorschau vonNavHost
. (I7d8b4)- Die Funktion „Schreibassistent“ hängt jetzt von der Navigation
2.3.5
ab. Dadurch wird ein Problem bei der Verwendung vonBackHandler
in einemNavHost
-Ziel behoben. (I7e63b, b/182284739)
Version 1.0.0-alpha09
10. März 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
wird freigegeben. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner.current
gibt jetzt eineViewModelStoreOwner
zurück, bei der Nullwerte zulässig sind, um besser feststellen zu können, ob eineViewModelStoreOwner
in der aktuellen Zusammensetzung verfügbar ist. APIs, die einViewModelStoreOwner
erfordern, z. B.viewModel()
undNavHost
, geben trotzdem eine Ausnahme aus, wennViewModelStoreOwner
nicht festgelegt ist. (Idf39a)
Fehlerkorrekturen
- Die Erstellung der Navigation hängt jetzt von Navigation 2.3.4 ab. Diese enthält die Fehlerkorrektur für den Versuch, dasselbe ViewModelStore-Objekt festzulegen, nachdem die Grafik festgelegt wurde. (I65c24, b/177825470)
Version 1.0.0-alpha08
24. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
wird freigegeben. Version 1.0.0-alpha08 enthält diese Commits.
Neue Funktionen
NavHost
füllt nun das CompositionLocal-Element vonLocalSavedStateRegistryOwner
mitNavBackStackEntry
dieses Ziels aus, um sicherzustellen, dass jeder Bundesstaat, der direkt inSavedStateRegistry
gespeichert ist, gespeichert und zusammen mit dem Ziel wiederhergestellt wird. (I435d7, b/179469431)
Version 1.0.0-alpha07
10. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
wird freigegeben. Version 1.0.0-alpha07 enthält diese Commits.
Aktualisierungen von Abhängigkeiten
- Die Funktion „Navigation Compose“ hängt jetzt von Lifecycle ViewModel Compose 1.0.0-alpha01 ab, um
viewModel()
-Unterstützung fürcomposable
-Ziele zu bieten. (I7a374) NavHost
verwendet jetzt das neueLocalOnBackPressedDispatcherOwner
aus Activity-Compose 1.3.0-alpha01, um dasOnBackPressedDispatcher
abzurufen, das fürNavController
festgelegt ist. (I65b12)
Version 1.0.0-alpha06
28. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
wird freigegeben. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Eine
getBackStackEntry(route: String)
-Erweiterungsmethode fürNavController
hinzugefügt, die die verknüpfteNavBackStackEntry
zurückgibt. (If8931)
Version 1.0.0-alpha05
13. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
wird freigegeben. Version 1.0.0-alpha05 enthält diese Commits.
Aktualisiert, um von Compose 1.0.0-alpha10 abhängig zu sein.
Version 1.0.0-alpha04
16. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
wird freigegeben. Version 1.0.0-alpha04 enthält diese Commits.
- Für Kompatibilität mit „Compose“ (
1.0.0-alpha09
) aktualisiert.
Version 1.0.0-alpha03
2. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
wird freigegeben. Version 1.0.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
popBackStack()
undnavigateUp()
nach einer Konfigurationsänderung oder nach dem Tod und der Neuerstellung nicht funktionierten. (Icea47, b/173281473) - Das Navigieren zu verschachtelten Diagrammen auf Ihrem NavHost funktioniert jetzt ordnungsgemäß. (I0948d, b/173647694)
Version 1.0.0-alpha02
11. November 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
wird freigegeben. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Das Schreiben der Navigation unterstützt jetzt NavOptions zur Verwendung von popUpTo- und startSingleTop-Vorgängen (If96c3, b/171468994).
- Es wurde eine Navigationsfunktion hinzugefügt, die eine Route anstelle einer ID verwendet, mit der Sie verschachtelte Grafiken in der Navigation Compose-DSL erstellen können. (I1661d)
- In der Liste der Parameter für einen NavHost (Ie620e) steht nun "startDestination" vor der Route.
- Sie können jetzt außerhalb einer zusammensetzbaren NavHost-Funktion ein Diagramm mit der Route als Startziel erstellen. (Iceb75)
Version 1.0.0-alpha01
28. Oktober 2020
android.navigation:navigation-compose:1.0.0-alpha01
wird freigegeben. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
Das Artefakt navigation-compose
ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Diese erste Version bietet Folgendes:
- Eine zusammensetzbare
NavHost
-Funktion, mit der Sie eine Navigationsgrafik über eine Kotlin-DSL erstellen können - Bereich des Lebenszyklus,
ViewModel
und des gespeicherten Status auf Zielebene. - Automatische Integration mit der Zurück-Schaltfläche des Systems.
- Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben von Ergebnissen an vorherige Ziele.
- Erstellen Sie spezifische Hilfsprogramme in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Windstatus zuzulassen und dieNavController
mit zusammensetzbaren Funktionen außerhalb desNavHost
zu verbinden (z. B. eine untere Navigationsleiste).
Weitere Informationen finden Sie in der Navigationshilfe für die Inhaltserstellung.
Version 2.3.5
Version 2.3.5
7. April 2021
androidx.navigation:navigation-*:2.3.5
wird freigegeben. Version 2.3.5 enthält diese Commits.
Neue Funktionen
- Wenn Sie mit einem
NavDeepLinkRequest
oderUri
navigieren, können Sie jetzt auf denUri
-, Aktions- und MIME-Typ im resultierenden Ziel zugreifen. Dazu rufen Sie den Intent überKEY_DEEP_LINK_INTENT
aus Argumenten ab, was der Funktionalität entspricht, die bereits für externe Deeplinks verfügbar ist. (I975c3, b/181521877)
Fehlerkorrekturen
OnBackPressedCallbacks
wurde einem Disponenten mit der RolleNavBackStackEntry
als LifecycleOwner hinzugefügt, fängt jetzt korrekt ab, nachdem der AktivitätslebenszyklusSTOPPED
ist, dannSTARTED
(Iff94f, b/182284739)- Beim Parsen von Deeplink-Domains wird jetzt die Groß-/Kleinschreibung nicht mehr berücksichtigt, sodass
www.example.com
sowohl mitwww.example.com
als auch mitwww.Example.com
übereinstimmt. Bei Namen von Suchparametern wird nach wie vor die Groß-/Kleinschreibung beachtet. (#144, b/153829033) - Ein
NullPointerException
wurde behoben, das auftreten konnte, wenn ein Ziel mehrere Standardargumente hat, die keine Nullwerte zulassen, und Sie zu diesem Ziel navigieren, während nur eine Teilmenge dieser Argumente überschrieben wird. (aosp/1644827)
Aktualisierungen von Abhängigkeiten
- Das Navigation Safe Args Gradle-Plug-in hängt jetzt vom Kotlin-Gradle-Plug-in 1.4.31 ab. (aosp/1661058, b/181156413)
Externer Beitrag
- Vielen Dank
bentrengrove
für die Pull-Anfrage, bei der die Groß-/Kleinschreibung der Deeplink-Domain nicht berücksichtigt wird. (#144, b/153829033)
Version 2.3.4
Version 2.3.4
10. März 2021
androidx.navigation:navigation-*:2.3.4
wird freigegeben. Version 2.3.4 enthält diese Commits.
Neue Funktionen
ReferenceType
-Argumente können jetzt korrekt geparst werden, wenn sie als Teil eines Deeplink-URI gesendet werden. Unterstützt sowohl den ganzzahligen Rohwert als auch Hexadezimalwerte mit dem Präfix0x
. (#127, b/179166693)- Die
android:defaultValue
für ein Argument mitapp:argType="float"
unterstützt jetzt ganzzahlige Standardwerte, sodass Sieandroid:defaultValue="0"
statt0.0
verwenden können. (#117, b/173766247)
Fehlerkorrekturen
- Probleme mit hängen gebliebenem Installationsfortschritt bei Nutzung der Navigation-Unterstützung für dynamische Funktionen wurden behoben. (Ib27a7, b/169636207)
- Der Aufruf von
setViewModelStore
odersetLifecycleOwner
mit demselben Objekt, das bereits festgelegt wurde, ist jetzt ein Nullbefehl (Idf491, b/177825470). - SafeArgs fügt bei Verwendung von Java nun Unterdrücken-Annotationen für die richtigen Methoden hinzu. (I8fbc5, b/179463137)
Externe Unterstützung
- Vielen Dank für die Pull-Anfrage an
JvmName
, damitReferenceType
-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URI gesendet werden. (#127, b/179166693) - Vielen Dank,
tatocaster
für die Pull-Anfrage, die dendefaultValue
für ein Argument mitapp:argType=”float”
zulässt, unterstützt jetzt ganzzahlige Standardwerte. (#117, b/173766247)
Version 2.3.3
Version 2.3.3
27. Januar 2021
androidx.navigation:navigation-*:2.3.3
wird freigegeben. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Es kommt nicht mehr zu einem Absturz, wenn ein
NavBackStackEntry
per Pop-up aufgerufen wird, bevor seineLifecycle
inCREATED
verschoben wird. (Ie3ba3) - Die durch b/171364502 verursachte Regression wurde behoben, bei der das Aufrufen einer Aktivität mit dem Animationsressourcenwert
0
zuResourceNotFoundException
geführt hat. (I7aedb, b/176819931)
Version 2.3.2
Version 2.3.2
2. Dezember 2020
androidx.navigation:navigation-*:2.3.2
wird freigegeben. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression in
NavigationUI
wurde behoben, bei der bei Verwendung eines<activity>
-Ziels mitonNavDestinationSelected
die Aktivität nicht aufgerufen werden konnte. (I22e34, b/171364502) - Es wurde ein Problem behoben, bei dem
navigation-dynamic-features-fragment
dazu führte, dass das neu installierte Ziel mehrmals aufgerufen wurde. (aosp/1486056, b/169636207) - Ein Problem wurde behoben, bei dem Standardargumente bei Verwendung von
launchSingleTop
nicht anOnDestinationChangedListener
-Instanzen gesendet wurden. (I2c5cb) - Beim Wechseln zu einer verschachtelten Navigationsgrafik wurde keine neue Grafikinstanz im Back-Stack erstellt. Dieses Problem wurde behoben. (Ifc831)
- Ein Problem wurde behoben, bei dem die Navigationsgrafik bei der Verwendung von
navigate()
mit einempopUpTo
, durch das das letzte Ziel in einer Navigationsgrafik entfernt wurde, nicht sofort zerstört und aus dem Back Stack entfernt wurde. (I910a3) - Navigation SafeArgs verwendet jetzt KotlinPoet Version 1.7.2, die Unterstützung für den expliziten API-Modus von Kotlin bietet. (I918b5)
NavHostFragment.findNavController(Fragment)
prüft jetzt neben den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die Stammdekor-Ansicht eines DialogFragment-Elements. Auf diese Weise können Sie Dialogfragmente, die die Navigation verwenden, mitFragmentScenario
undNavigation.setViewNavController()
testen. (I69e0d)
Version 2.3.1
Version 2.3.1
14. Oktober 2020
androidx.navigation:navigation-*:2.3.1
wird freigegeben. Version 2.3.1 enthält diese Commits.
Neue Funktionen
- Standard-Animator-Ressourcen wurden der Navigations-UI hinzugefügt und werden gegenüber den Standard-Animationsressourcen empfohlen. (b/167430145)
- NavOptions überschreibt jetzt den Hashcode und die Gleichheitsmethoden (b/161586466).
- In der Navigation ist jetzt das aktuelle Ziel in der Ausnahme „= Ausnahme“ („Kein Ziel mit ID“) enthalten, wodurch das Debugging für Entwickler verbessert werden sollte. (b/168311416)
Fehlerkorrekturen
- Sichere Argumente fassen die Rückgabezeile nicht mehr um, auch wenn der generierte Argumentklassenname mehr als 100 Zeichen umfasst. (b/168584987)
Änderungen bei Abhängigkeiten
navigation-ui
hängt jetzt von DrawerLayout 1.1.1 ab, damitNavigationUI
die Leiste auch dann öffnen kann, wennLOCK_MODE_LOCKED_CLOSED
oderLOCK_MODE_LOCKED_OPEN
verwendet wird. (b/162253907)- Safe Args hängt jetzt von KotlinPoet 1.6.0 (aosp/1435911) ab.
- Safe Args hängt jetzt von AGP 4.0.1 (aosp/1442337) ab.
Version 2.3.0
Version 2.3.0
24. Juni 2020
androidx.navigation:navigation-*:2.3.0
wird freigegeben. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Einbindung von Funktionsmodulen: Mit den Artefakten
navigation-dynamic-features-runtime
undnavigation-dynamic-features-fragment
können Sie zu Zielen navigieren, die in Funktionsmodulen definiert sind. Die Installation der Funktionsmodule wird automatisch nach Bedarf durchgeführt. Weitere Informationen findest du unter Mit Funktionsmodulen navigieren. - Navigationstests: Das Artefakt
navigation-testing
bietet eineTestNavHostController
, mit der Sie das aktuelle Ziel festlegen und den Back Stack nach Navigationsvorgängen überprüfen können. Weitere Informationen finden Sie unter Testnavigation. - Ergebnis zurückgeben: Über die
NavBackStackEntry
, die jedem Ziel im Back-Stack Navigation zugewiesen ist, können Sie jetzt auf eineSavedStateHandle
zugreifen, die sich zum Speichern kleiner Mengen an gespeicherten Statusangaben eignet, die mit einem bestimmten Back-Stack-Eintrag verknüpft sein sollen. Weitere Informationen finden Sie unter Ergebnisse an das vorherige Ziel zurückgeben. NavigationUI
-Unterstützung fürOpenable
: Alle Verwendungen vonDrawerLayout
inNavigationUI
wurden durch die allgemeinereOpenable
-Oberfläche ersetzt, die in CustomView1.1.0
hinzugefügt und vonDrawerLayout
in DrawerLayout1.1.0
implementiert wurde.- Unterstützung für Aktions- und MIME-Typ in Deeplinks: Deeplinks wurden so erweitert, dass neben den bisher verfügbaren
app:uri
auchapp:action
undapp:mimeType
unterstützt werden.NavController
unterstützt jetzt über die neueNavDeepLinkRequest
-Klasse das Navigieren in einer beliebigen Kombination dieser Felder. Weitere Informationen finden Sie unter NavDeepLinkRequest verwenden.
Bekannte Probleme
- In Manifest Merger werden Deeplink-Aktionen und MIME-Typen noch nicht unterstützt. Bis dahin enthalten generierte
<intent-filter>
-Elemente aus dem<nav-graph>
-Element in deinem Manifest nicht deinen MIME-Typ im<data>
-Element oder im benutzerdefinierten<action>
. Du musst deinem Manifest manuell eine geeignete<intent-filter>
hinzufügen.
Version 2.3.0-rc01
10. Juni 2020
androidx.navigation:navigation-*:2.3.0-rc01
wird freigegeben. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein
NullPointerException
wurde behoben, wenn eine Instanz eines Ziels ohne Argumente durch eine andere Instanz mit Argumenten durchsingleTop
ersetzt wurde. (b/158006669) - Alle von
NavController
ausgelöstendestination is unknown
-Ausnahmen enthalten jetzt zusätzliche Debugging-Informationen, mit denen der Status vonNavController
ermittelt werden kann. (b/157764916)
Version 2.3.0-beta01
20. Mai 2020
androidx.navigation:navigation-*:2.3.0-beta01
werden freigegeben. Version 2.3.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Das Problem, dass
Lifecycle
desNavBackStackEntry
nach dem Beenden des Prozesses nicht richtig aktualisiert wurde, wurde behoben. (b/155218371) OnDestinationChangedListener
-Instanzen, die vor dem Aufruf vonsetGraph()
registriert wurden, werden nach dem Beenden des Prozesses korrekt an das wiederhergestellte Ziel gesendet. (b/155218371)- Bei der Verwendung von
singleTop
werden die Argumente vonNavBackStackEntry
jetzt korrekt aktualisiert und die aktualisierten Argumente werden an alleOnDestinationChangeListener
-Instanzen gesendet. (b/156545508)
Aktualisierungen von Abhängigkeiten
- Das Artefakt
NavigationUI
hängt jetzt von CustomView1.1.0-rc01
und DrawerLayout1.1.0-rc01
ab. (aosp/1309696)
Version 2.3.0-alpha06
29. April 2020
androidx.navigation:navigation-*:2.3.0-alpha06
wird freigegeben. (Version 2.3.0-alpha06 enthält diese Commits.)
Neue Funktionen
- Deeplink wurde erweitert, um zusätzlich zu den bisher verfügbaren
app:uri
app:action
undapp:mimeType
zu unterstützen. NavController unterstützt jetzt das Navigieren in einer beliebigen Kombination dieser Felder mithilfe der neuenNavDeepLinkRequest
-Klasse. (b/136573074 und b/135334841)
API-Änderungen
- Die Kotlin-DSL-Unterstützung für Ziele der dynamischen Navigation wurde erheblich erweitert. (b/148969800)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Deeplink-Intents bei Verwendung eines verschachtelten Startziels ignoriert wurden. (b/154532067)
Version 2.3.0-alpha05
15. April 2020
androidx.navigation:navigation-*:2.3.0-alpha05
wird freigegeben. Version 2.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Für dynamische Graphen mit
<include-dynamic>
mussapp:graphPackage
nicht mehr angegeben werden. Es wird ein Standardwert verwendet, indem das SuffixmoduleName
nach einem Punkt an dieapplicationId
angehängt wird. Wenn dugraphPackage
anpassen musst, wird jetzt ein${applicationId}
-Platzhalter unterstützt. (b/152696768) - Die DSL für Navigationsdiagramme in Kotlin bietet jetzt einen
defaultArguments
Map
für Aktionen, was die Fähigkeit widerspiegelt, Standardwerte für<action>
-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)
Fehlerkorrekturen
- Ab Navigation 2.2.2: Ein
IllegalStateException
wurde korrigiert, wenn ein Deeplink zum Startziel Ihrer Grafik angezeigt wurde, wenn Ihre Aktivität mehrereNavHostFragment
-Instanzen enthält. (b/147378752)
Aktualisierungen von Abhängigkeiten
- Die Navigation hängt jetzt vom Fragment
1.2.4
ab. (aosp/1277325) - Die dynamische Navigation hängt jetzt von Play Core
1.7.2
ab. (aosp/1282257)
Version 2.3.0-alpha04
18. März 2020
androidx.navigation:navigation-*:2.3.0-alpha04
wird freigegeben. Version 2.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- In der Navigation Kotlin-DSL werden jetzt Feature-Modul-Aktivitäten und Fragmentziele unterstützt. (b/148969800)
API-Änderungen
- Die
DynamicExtras
-Klasse verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671) DynamicActivityNavigator
verwendet jetzt im Konstruktor einenContext
anstelle einesActivity
. (aosp/1250252)
Fehlerkorrekturen
NavigationUI
ignoriert keine leeren Labels mehr (d.h. ein Ziel mitandroid:label=””
) und legt jetzt korrekt für den Titel einen leeren String fest. (b/148679860)
Aktualisierungen von Abhängigkeiten
- Die Artefakte der dynamischen Navigationsfunktionen hängen jetzt vom Play Core-
1.6.5
ab. (b/149556401)
Version 2.3.0-alpha03
4. März 2020
androidx.navigation:navigation-*:2.3.0-alpha03
wird freigegeben. Version 2.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Anstatt sich auf die konkrete
DrawerLayout
-Klasse zu verlassen, verwendetAppBarConfiguration
jetzt die in CustomView1.1.0-alpha02
eingeführteOpenable
-Schnittstelle, dieDrawerLayout
mit dem DrawerLayout1.1.0-alpha04
implementiert. So können Sie benutzerdefinierte Implementierungen vonOpenable
mitNavigationUI
verwenden. (b/129030452)
Fehlerkorrekturen
- Die ProGuard-Regeln für
navigation-common-ktx
behalten jetzt nur noch die verwendetenNavArgs
-Klassen bei und nicht alleNavArgs
-Instanzen. (b/150213558)
Abhängigkeitsänderungen
- Navigation hat seine Abhängigkeit vom Core-
1.2.0
zurückgesetzt und hängt jetzt von Core1.1.0
ab, um Entwickler nicht zu einer neueren Abhängigkeit zu zwingen, wenn Navigation nicht von neuen APIs im Core1.2.0
abhängig ist.
Version 2.3.0-alpha02
19. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha02
wird freigegeben. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Mit
NavBackStackEntry
können Sie jetzt auf einSavedStateHandle
zugreifen, das sich zum Speichern kleiner Mengen eines gespeicherten Status eignet, der mit einem bestimmten Back-Stack-Eintrag verknüpft sein sollte. Ein Anwendungsbeispiel finden Sie unter Ergebnis zurückgeben. (b/79672220)
API-Änderungen
- Die praktischen Methoden
getCurrentBackStackEntry()
undgetPreviousBackStackEntry()
wurden hinzugefügt, um das Abrufen vonNavBackStackEntry
für das aktuelle und das vorherige Ziel zu vereinfachen. (b/79672220)
Fehlerkorrekturen
- Beim Starten der App in Ihrem eigenen Aufgabenstack übergibt
navigateUp()
jetzt die Argumente des aktuellen Ziels undKEY_DEEP_LINK_INTENT
an das vorherige Ziel. (b/147456890)
Abhängigkeitsänderungen
- Die Navigation hängt jetzt vom Kern-
1.2.0
ab.
Version 2.3.0-alpha01
5. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha01
wird freigegeben. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Das neue
navigation-testing
-Artefakt stellt eineTestNavHostController
-Klasse bereit. Diese Klasse bietet eine Alternative zur Verwendung eines simuliertenNavController
beim Testen der Navigation. Damit können Sie das aktuelle Ziel festlegen und den Back Stack nach Navigationsvorgängen überprüfen. (b/140884273) - Mit dem neuen
navigation-dynamic-features-fragment
(und seiner vorübergehenden Abhängigkeitnavigation-dynamic-features-runtime
) kannst du Ziele oder vollständige Navigationsdiagramme (über<include-dynamic>
) aus Funktionsmodulen einbinden und so beim Aufrufen dieser Ziele On-Demand-Funktionsmodule nahtlos installieren. Weitere Informationen findest du unter Mit Funktionsmodulen navigieren. (b/132170186)
Fehlerkorrekturen
- Von der Navigation
2.2.1
: Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt und hängen sie nicht an nachgestellte{argument}
-Elemente an oder stimmen nicht mit dem Deeplink überein. (b/147447512) - Von Navigation
2.2.1
: Dienavigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, um sicherzustellen, dassandroid.enableJetifier=true
nicht erforderlich ist. (b/147610424) - Aus der Navigation
2.2.1
: Das Modulnavigation-common-ktx
hat jetzt einen eindeutigen Manifest-Paketnamen und nicht denselben Manifest-Paketnamen wienavigation-runtime-ktx
. (aosp/1141947)
Aktualisierungen von Abhängigkeiten
- Von der Navigation
2.2.1
: Die Navigation2.2.1
hängt jetzt von dem gespeicherten Status des Lebenszyklus-ViewModel-2.2.0
und Fragment1.2.1
ab.
Version 2.2.2
Version 2.2.2
15. April 2020
androidx.navigation:navigation-*:2.2.2
werden freigegeben. Version 2.2.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
IllegalStateException
behoben, der bei Deeplinks zum Startziel der Grafik auftrat, wenn in deiner Aktivität mehrereNavHostFragment
-Instanzen vorhanden waren. (b/147378752) NavigationUI
ignoriert keine leeren Labels mehr (d.h. ein Ziel mitandroid:label=””
) und legt jetzt korrekt für den Titel einen leeren String fest. Dies wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860)- Die ProGuard-Regeln für
navigation-common-ktx
behalten jetzt nur noch die verwendetenNavArgs
-Klassen bei und nicht alleNavArgs
-Instanzen. Dies wurde bereits in Navigation 2.3.0-alpha03 veröffentlicht. (b/150213558
Aktualisierungen von Abhängigkeiten
- Die Navigation hängt jetzt vom Fragment
1.2.4
ab. (aosp/1277325)
Version 2.2.1
Version 2.2.1
5. Februar 2020
androidx.navigation:navigation-*:2.2.1
wird freigegeben. Version 2.2.1 enthält diese Commits.
Fehlerkorrekturen
- Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt und hängen sie nicht an die
{argument}
-Elemente am Ende an oder stimmen nicht mit dem Deeplink überein. (b/147447512) - Die
navigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, damitandroid.enableJetifier=true
nicht mehr benötigt wird. (b/147610424) - Das Modul „
navigation-common-ktx
“ hat jetzt einen eindeutigen Manifestpaketnamen und hat nicht mehr denselben Manifestpaketnamen wie „navigation-runtime-ktx
“. (aosp/1141947)
Aktualisierungen von Abhängigkeiten
- Die Navigation
2.2.1
hängt jetzt von Lifecycle ViewModel SavedState2.2.0
und Fragment1.2.1
ab.
Version 2.2.0
Version 2.2.0
22. Januar 2020
androidx.navigation:navigation-*:2.2.0
wird freigegeben. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- NavBackStackEntry: Sie können jetzt
NavController.getBackStackEntry()
aufrufen und die ID eines Ziels oder Navigationsdiagramms im Back Stack übergeben. Der zurückgegebeneNavBackStackEntry
enthält neben den Argumenten für den Start des Ziels einen navigationsbasiertenLifecycleOwner
,ViewModelStoreOwner
(der vonNavController.getViewModelStoreOwner()
zurückgegeben wird) undSavedStateRegistryOwner
. - Lebenszyklus-ViewModel-Integration:
SavedStateViewModelFactory
ist jetzt die standardmäßige Factory, die verwendet wird, wennby navGraphViewModels()
oder derViewModelProvider
-Konstruktor mit einemViewModelStoreOwner
zurückgegeben wird, der vonNavController.getBackStackEntry()
oderNavController.getViewModelStoreOwner()
zurückgegeben wird. - Unterstützung von Suchparametern für Deeplinks: Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente mit einem Standardwert oder Nullwerten sind beim Abgleich von Deeplinks jetzt optional.
- Verbesserte Unterstützung für Animationen:
NavHostFragment
verwendet jetztFragmentContainerView
aus Fragment 1.2.0. Damit werden Probleme bei der Z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben.
Version 2.2.0-rc04
18. Dezember 2019
androidx.navigation:navigation-*:2.2.0-rc04
wird freigegeben. Version 2.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die von
navigation-ui
verwendeten Standardanimationen zum Ausblenden wurden so angepasst, dass sie den angepassten Ausblendanimationen in Fragment1.2.0-rc04
entsprechen. (b/145769814)
Version 2.2.0-rc03
4. Dezember 2019
androidx.navigation:navigation-*:2.2.0-rc03
wird freigegeben. Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem beim Parsen von Deeplinks behoben, bei dem Abfrageparameter und ein Argument als letzter Teil des Pfads verwendet wurden, bei dem nicht mehr als ein Zeichen des endgültigen Pfadarguments geparst werden konnte. (b/144554689)
- Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter
"@null"
stattnull
erhalten haben. (b/141613546) NavHostFragment
stellt das Diagramm jetzt nach einer Konfigurationsänderung korrekt wieder her, wenn es mitFragmentContainerView
verwendet wird. (b/143752103)
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von Lebenszyklus
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Aktivität1.1.0-rc03
und Fragment1.2.0-rc03
ab, sofern zutreffend.
Version 2.2.0-rc02
7. November 2019
androidx.navigation:navigation-*:2.2.0-rc02
wird freigegeben. Version 2.2.0-rc02 enthält diese Commits.
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von androidx.lifecycle
2.2.0-rc02
ab.
Version 2.2.0-rc01
23. Oktober 2019
androidx.navigation:navigation-*:2.2.0-rc01
wurde ohne Änderungen seit 2.2.0-beta01
veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.
Version 2.2.0-beta01
9. Oktober 2019
androidx.navigation:navigation-*:2.2.0-beta01
wird freigegeben. Version 2.2.0-beta01 enthält diese Commits.
Neue Funktionen
NavDestination
und seine abgeleiteten Klassen überschreiben jetzttoString()
, um bei der Fehlerbehebung hilfreichere Informationen bereitzustellen. (b/141264986)
Änderungen des Verhaltens
- Zusätzliche Abfrageparameter werden jetzt ignoriert, wenn Deeplinks abgeglichen werden. Ein Fehler führt nicht mehr dazu. (b/141482822)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Suchparameter angegeben wurden. (b/141505755)
- Die Kotlin-Erweiterung
navArgs()
aufActivity
gibt jetzt eine bessere Fehlermeldung, wenn es keine Extras gibt. (b/141408999) - Von Safe Args generierte
Directions
-Java-Klassen enthalten jetzt Standardwerte. (b/141099045) - Von Safe Args generierte
Args
-Java-Klassen enthalten jetzt Standardwerte. (b/140123727) - Bei Verwendung von
Toolbar
animiertNavigationUI
die Textänderung beim Wechseln zwischen zwei Zielen auf oberster Ebene nicht mehr. (b/140848160)
Version 2.2.0-alpha03
18. September 2019
androidx.navigation:navigation-*:2.2.0-alpha03
wird freigegeben. Version 2.2.0-alpha03 enthält diese Commits.
Änderungen des Verhaltens
- Der Aufruf von
setViewModelStore()
nach dem Aufrufen vonsetGraph
führt jetzt zu einemIllegalStateException
. Dieser sollte bei der Ersteinrichtung immer durchNavHost
festgelegt werden, damit alleNavBackStackEntry
-Instanzen einen konsistenten Speicher fürViewModel
-Instanzen haben. (aosp/1111821)
Fehlerkorrekturen
- Ein
ConcurrentModificationException
wurde behoben, wennViewModel
-Instanzen verwendet wurden, die an mehrereViewModelStore
-Instanzen in Bezug auf Navigationsgrafiken angehängt sind. (aosp/1112257)
Version 2.2.0-alpha02
5. September 2019
androidx.navigation:navigation-*:2.2.0-alpha02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente, die einen Standardwert haben oder Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional. (b/133273839)
- Sie können jetzt
NavController.getBackStackEntry()
aufrufen und die ID eines Ziel- oder Navigationsdiagramms auf dem Back-Stack übergeben. Der zurückgegebeneNavBackStackEntry
enthält neben den Argumenten für den Start des Ziels einen navigationsbasiertenLifecycleOwner
,ViewModelStoreOwner
(der vonNavController.getViewModelStoreOwner()
zurückgegeben wird) undSavedStateRegistryOwner
. (aosp/1101691, aosp/1101710)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Hinzufügen einer
NavHostFragment
zuViewPager2
mit einerIllegalArgumentException
fehlgeschlagen ist. (b/133640271) NavInflater
vermeidet jetzt, unnötigerweisegetResourceName()
anzurufen, wodurch die Inflationszeit um bis zu 40 % beschleunigt wird. (b/139213740)
Version 2.2.0-alpha01
7. August 2019
androidx.navigation:navigation-*:2.2.0-alpha01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die verwendet wird, wennby navGraphViewModels()
oder derViewModelProvider
-Konstruktor mit einemViewModelStoreOwner
verwendet wird, der vonNavController.getViewModelStoreOwner()
zurückgegeben wird. (b/135716331)
API-Änderungen
- Aus der Navigation
2.1.0-rc01
: Die in2.1.0-alpha02
eingeführtegetViewModelStore()
API fürNavController
wurde eingestellt. (aosp/1091021)
Fehlerkorrekturen
NavHostFragment
verwendet jetztFragmentContainerView
. Dadurch werden Probleme mit der Z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben. (b/137310379)
Version 2.1.0
Version 2.1.0
5. September 2019
androidx.navigation:navigation-*:2.1.0
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 2.0.0
- Zuordnen von ViewModels zu Navigationsdiagrammen: Sie können jetzt ViewModels erstellen, die den Geltungsbereich auf Navigationsgrafikebene mit dem
by navGraphViewModels()
-Attribut-Delegaten für Kotlin-Nutzer mithilfe der-ktx
-Bibliotheken oder mit dergetViewModelStoreOwner()
API definieren, dieNavController
hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen freigeben. - Dialogziele: Sie können jetzt
<dialog>
-Ziele erstellen, bei denen einDialogFragment
angezeigt wird, wenn Sienavigate
dafür auswählen.NavHostFragment
unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel aus einem DialogFragment erstellen. - Über URI navigieren: Sie können jetzt
navigate
mit einemUri
verwenden, das die<deepLink>
verwendet, die Sie einem Ziel hinzugefügt haben, um dorthin zu navigieren. Weitere Informationen zur Navigation mit URI - NavHostController: APIs, die speziell zum Erstellen einer benutzerdefinierten
NavHost
verwendet wurden, wurden inNavHostController
verschoben. Dadurch können Implementierungen ihreNavController
mit dem Hosting-GerätLifecycleOwner
,OnBackPressedDispatcher
undViewModelStore
verbinden.
Version 2.1.0-rc01
7. August 2019
androidx.navigation:navigation-*:2.1.0-rc01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Das veraltete
getViewModelStore()
API inNavController
, das in2.1.0-alpha02
eingeführt wurde, wurde entfernt. (aosp/1091021)
Version 2.1.0-beta02
19. Juli 2019
androidx.navigation:*:2.1.0-beta02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacquard-Abhängigkeit, die in
2.1.0-beta01
eingeführt wurde, wurde entfernt. (b/137782950)
Version 2.1.0-beta01
17. Juli 2019
androidx.navigation:*:2.1.0-beta01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
NavigationUI
animiert jetzt das Entfernen der Schaltfläche „Nach oben“, wennsetupWithNavController()
mit einemToolbar
oderCollapsingToolbarLayout
verwendet wird. (b/131403621)
Fehlerkorrekturen
- Zeitproblem bei Verwendung mehrerer NavHostFragments mit demselben Container mit
findNavController()
wurde behoben. (b/136021571)
Version 2.1.0-alpha06
2. Juli 2019
androidx.navigation:*:2.1.0-alpha06
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Das von NavHostFragment verwendete Attribut
app:navGraph
wurde jetzt in das Artefaktnavigation-runtime
verschoben. Benutzerdefinierte navigatoren, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um die Integration in das Host-Steuerfeld des Navigationseditors zu ermöglichen. (b/133880955)
API-Änderungen
- Die
getViewModelStore()
API fürNavController
wurde zugunsten der neuen MethodegetViewModelStoreOwner()
eingestellt, die einenViewModelStoreOwner
zurückgibt. (aosp/987010) - Die Implementierung von Zielen für unverankerte Fenster, wie z. B.
<dialog>
-Ziele, wurde in die MarkierungsschnittstelleFloatingWindow
verallgemeinert, die jetzt von allen<dialog>
-Zielen implementiert wird. Navigations-UI-Methoden für die Interaktion mit der oberen App-Leiste ignorieren jetztFloatingWindow
-Ziele. (b/133600763)
Änderungen des Verhaltens
- Die Navigation stimmt jetzt korrekt mit dem überein, was auf dem Bildschirm angezeigt wird, wenn ein
<dialog>
-Ziel verwendet wird. Daher werden bei der Navigation jetzt automatisch<dialog>
-Ziele angezeigt, wenn Sie zu einem Ziel ohne Dialog und ohne Aktivität, wie einem<fragment>
-Ziel, navigieren. (b/134089818)
Fehlerkorrekturen
- Bei der Navigation wird jetzt die Animation unterdrückt, die bei der Neuerstellung der Aktivität bei der Verarbeitung eines Deeplinks stattfindet, sodass ein visuelles Flash behoben wird. (b/130362979)
- Ein Fehler wurde behoben, bei dem der Back-Stack Navigation nicht synchronisiert war, wenn ein Fragment per Pop-up geöffnet wurde, während das ursprüngliche Fragment hinzugefügt wurde. (b/133832218)
Version 2.1.0-alpha05
5. Juni 2019
androidx.navigation:*:2.1.0-alpha05
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Host-APIs unter
NavController
wurden umbenannt und in eine neue abgeleitete Klasse vonNavController
,NavHostController
, verschoben. (aosp/966091) - Die Methode
NavController
setHostOnBackPressedDispatcherOwner()
wurde durch die MethodesetOnBackPressedDispatcher()
vonNavHostController
ersetzt. Jetzt müssen Sie vor dem AufrufsetLifecycleOwner()
aufrufen. (aosp/965409) NavHostController
enthält jetzt eineenableOnBackPressed(boolean)
-Methode, die die zuvor vonsetHostOnBackPressedDispatcherOwner()
zurückgegebeneNavHostOnBackPressedManager
-Klasse ersetzt. (aosp/966091)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Back-Stack nach dem Navigieren über URI nicht korrekt war. (b/132509387)
- Von NavController automatisch verarbeitete Deeplinks werden jetzt nur einmal ausgelöst. (b/132754763)
Version 2.1.0-alpha04
16. Mai 2019
androidx.navigation:*:2.1.0-alpha04
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
NavHostFragment
respektiertapp:defaultNavHost
korrekt, wenn es die Systemereignisse für die Zurück-Schaltfläche abfängt. Damit wird eine Regression in der Navigation2.1.0-alpha03
behoben. b/132077777DialogFragmentNavigator
verarbeitet jetztpopBackStack()
- undnavigateUp()
-Vorgänge korrekt. b/132576764- Das Problem
IllegalStateException: unknown destination during restore
beim wiederholten Wechseln zwischen verschachtelten Diagrammen wurde behoben. b/131733658
Version 2.1.0-alpha03
7. Mai 2019
androidx.navigation:*:2.1.0-alpha03
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Bekannte Probleme
- NavHostFragment fängt trotz Verwendung von
app:defaultNavHost="false"
b/132077777 weiterhin die Zurück-Schaltfläche des Systems ab
Neue Funktionen
- Sie können jetzt
<dialog>
-Ziele erstellen, die eineDialogFragment
anzeigen, wenn Sie aufnavigate
klicken.NavHostFragment
unterstützt standardmäßig Dialogziele. b/80267254 - Sie können jetzt nicht nur
navigate
mit einer Ressourcen-ID oder einerNavDirections
-Instanz aufrufen, sondern auch über eineUri
-Instanz, die die<deepLink>
verwendet, die Sie einem Ziel hinzugefügt haben, um zum richtigen Ziel zu gelangen. b/110412864
Änderungen des Verhaltens
- Die von NavigationUI bereitgestellten Standardanimationen wurden von 400 ms auf 220 ms beschleunigt, um der Standardanimationsgeschwindigkeit von Aktivitäten und Fragmenten zu entsprechen. b/130055522
API-Änderungen
- Die
createFragmentNavigator()
-Methode vonNavHostFragment
wurde eingestellt und ihre Funktionalität wurde in die neueonCreateNavController()
-Methode verschoben, um deutlicher zu machen, dass dies der richtige Einstiegspunkt für das Hinzufügen benutzerdefinierter Navigatoren ist, wennNavHostFragment
Unterklassen erstellt werden. b/122802849 NavDestination
wurde einehasDeepLink()
-Methode hinzugefügt, mit der Sie prüfen können, ob eine bestimmteUri
von diesem Ziel oder, im Fall vonNavGraph
, von einem beliebigen Ziel im Navigationsdiagramm verarbeitet werden kann. b/117437718
Fehlerkorrekturen
- Standardargumente werden jetzt korrekt an
OnDestinationChangedListener
-Instanzen übergeben. b/130630686 NavHostFragment
fängt jetzt System-Back-Ereignisse mitOnBackPressedDispatcher
ab. Dadurch wird ein Problem behoben, das beim Ausführen der bedingten Navigation in Fragment-Lebenszyklusmethoden nach der Rückkehr zu einem Fragment aufgetreten ist. b/111598096- Für sichere Args wird ein
android:defaultValue=”@null”
mit einer nicht angegebenenapp:argType
jetzt korrekt alsstring
-Argument abgeleitet. b/129629192
Version 2.1.0-alpha02
3. April 2019
androidx.navigation:*:2.1.0-alpha02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt ViewModels erstellen, die auf Navigationsdiagrammebene bereichsbezogen sind. Dazu verwenden Sie den Property-Delegaten
by navGraphViewModels()
für Kotlin-Nutzer oder diegetViewModelStore()
API, dieNavController
hinzugefügt wurde. b/111614463
API-Änderungen
- Du kannst jetzt einem
<activity>
-Ziel einapp:targetPackage
hinzufügen, um den übereinstimmenden Paketnamen einzuschränken. Sie unterstütztapp:targetPackage="${applicationId}"
zur Beschränkung des Pakets auf Ihre eigene Anwendungs-ID. b/110975456
Fehlerkorrekturen
- Die
android:name
für<activity>
-Ziele wird zum Zeitpunkt der Inflation nicht mehr in eine Klasse geparst, wodurch bei Verwendung von dynamischen Funktionen ClassNotFoundExceptions verhindert werden. b/124538597
Version 2.1.0-alpha01
19. März 2019
Dies ist die erste Alphaversion von Navigation 2.1.0
.
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von
androidx.core:core:1.0.1
undandroidx.fragment:fragment:1.1.0-alpha05
ab. In dieser Version wird auch die Abhängigkeit vonandroidx.legacy:legacy-support-core-utils:1.0.0
aufgehoben. b/128632612
API-Änderungen
- Statt eines Klick-Listeners mit einer Ressourcen-ID und einem Bundle wurde eine neue
Navigation.createNavigateOnClickListener(NavDirections)
-Methode hinzugefügt. b/127631752 FragmentNavigator.instantiateFragment
wurde eingestellt. In der Standardimplementierung wird jetztFragmentFactory
verwendet, um Fragmente zu instanziieren. b/119054429
Fehlerkorrekturen
- Die Navigation sendet keinen Null-
Bundle
mehr, wenn Argumente an ein Ziel angehängt sind. Dadurch wird ein Problem bei der Verwendung vonandroid:defaultValue="@null"
behoben. b/128531879 - Safe Args hängt jetzt von KotlinPoet 1.1.0 ab, das ein Problem mit extrem langen Paketnamen behebt. b/123654948
Version 2.0.0
Version 2.0.0
14. März 2019
Die Navigation "2.0.0
" wird ohne Änderungen gegenüber 2.0.0-rc02
veröffentlicht.
Version 2.0.0-rc02
6. März 2019
Navigation 2.0.0-rc02 stellt neue Artefakte mit der Gruppen-ID androidx.navigation
bereit und ändert seine Abhängigkeiten auf die AndroidX-Äquivalente.
Das Verhalten von 2.0.0-rc02 ist mit dem Verhalten von Navigation 1.0.0-rc02 identisch. Es sollten keine Änderungen an Ihrem Code erforderlich sein, um von 1.0.0-rc02 zu aktualisieren. Abgesehen von der Aktualisierung der Abhängigkeiten, die den neuen Abhängigkeiten entsprechen, sind keine Änderungen erforderlich.
Ihr Projekt muss zu Android X migriert sein, um Navigation 2.X verwenden zu können. Navigation 1.0 (stabile Version) ist die letzte Version, in der die Abhängigkeiten der Supportbibliothek verwendet werden. Alle zukünftigen Entwicklungen nach Version 1.0 basieren auf AndroidX und basieren auf der stabilen Version 2.0.
Abhängigkeiten vor AndroidX
Beziehen Sie für Vor-AndroidX-Versionen von Navigation die folgenden Abhängigkeiten ein:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Fügen Sie für sichere Argumente den folgenden Klassenpfad in die Datei oberster build.gradle
-Datei hinzu
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Version 1.0.0
Version 1.0.0
14. März 2019
Die Navigation "1.0.0
" wird ohne Änderungen gegenüber 1.0.0-rc02
veröffentlicht.
Version 1.0.0-rc02
26. Februar 2019
Dies ist der zweite Release-Kandidaten für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Reihe von Fehlerbehebungen.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
popBackStack()
ignoriert wurde, wenn die Stammgrafik keine ID b/126251695 hatte. navigateUp()
kann jetzt korrekt zur Aufgabe Ihrer App zurückkehren, wenn es nach der Verarbeitung eines Deeplinks ohneFLAG_ACTIVITY_NEW_TASK
b/126082008 aufgerufen wird.- Es wurde ein Problem behoben, bei dem
ActivityNavigator.applyPopAnimationsToPendingTransition
nicht die richtige Pop-Exit-Animation b/126237567 angewendet hat. - Von Safe Args generierter Kotlin-Code maskiert Kotlin-Schlüsselwörter wie
in
undfun
korrekt im Paketnamen, der derR
-Klasse zugeordnet ist. b/126020455
Version 1.0.0-rc01
21. Februar 2019
Dies ist ein Releasekandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Ein Problem bei der Verwendung von Fragmenten und
singleTop
-Navigationsvorgängen wurde behoben: b/124294805
Version 1.0.0-beta02
12. Februar 2019
Diese Version enthält eine Reihe kleinerer Verbesserungen und wichtige Fehlerbehebungen.
Neue Funktionen
- Sie können jetzt
0
alsandroid:defaultValue
fürreference
-Argumente verwenden. b/124248602
Änderungen des Verhaltens
- Genaue Deeplink-Übereinstimmungen werden jetzt gegenüber Deeplinks mit
.*
- oder Argumentübereinstimmungen priorisiert. b/123969518
Fehlerkorrekturen
popBackStack()
undnavigateUp
geben jetzt korrektfalse
zurück, wenn das letzte Ziel im Back-Stack abgelegt wird. Damit wird eine Regression behoben, die in1.0.0-beta01
eingeführt wurde. b/123933201- In der Navigation wird
ClassLoader
jetzt bei der Wiederherstellung des Status der gespeicherten Instanz korrekt festgelegt. Dadurch werden Probleme bei der Verwendung benutzerdefinierter Klassen im gespeicherten StatusNavigator
oder in Argumenten vermieden, die an eineNavDestination
gesendet werden. b/123893858 - Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein
Parcelable[]
-Argument aus dem Status der gespeicherten Instanz wiederhergestellt wird. b/123963545 - Safe Args bereinigt jetzt nicht mehr benötigte Kotlin-Klassen ordnungsgemäß. b/124120883
Version 1.0.0-beta01
4. Februar 2019
Dies ist die erste Betaversion von Navigation. Für die Zukunft wird erwartet, dass die Navigation API bis zur nächsten Version stabil bleibt, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.
Änderungen des Verhaltens
- Die Navigation stellt nun sicher, dass Standardwerte von Argumenten zur Laufzeit und über sichere Args identisch behandelt werden. Daher können nur Argumente mit einem
app:argType="reference"
einen Standardwert haben, der auf eine andere Ressource verweisen kann (z. B.@color/colorPrimary
). Der Versuch, einen Referenzstandardwert mit einer anderenapp:argType
zu verwenden, führt beim Parsen der Navigations-XML zu einer Ausnahme. b/123551990 - Safe Args hängt jetzt von dem Android Gradle-Plug-in 3.3.0 aosp/888413 ab.
- Safe Args hängt jetzt von Kotlin 1.3.20 ab aosp/888414
Fehlerkorrekturen
- Safe Args können jetzt in Bibliotheks- und Funktionsmodulen aller Versionen des Android-Gradle-Plug-ins verwendet werden. b/121304903
- Eine Regression wurde behoben, bei der ein einzelner
popBackStack()
-Vorgang dazu geführt hat, dass alle Kopien eines Ziels aus dem Back Stack oben auf dem Back-Stack verschoben werden und nicht nur ein einziges Ziel. b/123552990 - Ein Problem wurde behoben, bei dem der Status
FragmentNavigator
mit dem Status derNavController
desynchronisiert wurde, was beim Versuch, den Back-Stack wiederherzustellen, zu einemIllegalStateException
führte. b/123803044 - Ein Problem wurde behoben, bei dem der Zurückpfeil für
NavigationUI
bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431 - Der von Safe Args generierte Code verarbeitet jetzt ein
app:argType
korrekt, das auf eine statische innere Klasse im Format.OuterClass$InnerClass
verweist. b/123736741 - Der von Safe Args generierte Java-Code verarbeitet jetzt globale Aktionen und tief verschachtelte Ziele ordnungsgemäß. b/123347762
Version 1.0.0-alpha11
23. Januar 2019
Dies ist ein Hotfix-Release von 1.0.0-alpha10
, der ein Problem mit sicheren Args behebt.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Safe Args die mit globalen Aktionen verknüpfte Directions-Klasse nicht importieren konnte. b/123307342
Version 1.0.0-alpha10
23. Januar 2019
Bekannte Probleme
- Safe Args kann die mit globalen Aktionen verknüpfte Directions-Klasse nicht importieren. b/123307342
Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.
Neue Funktionen
- Kotlin-Nutzer können jetzt den
by navArgs()
-Property-Delegaten verwenden, um verzögert einen Verweis auf eine Safe Args-generierteNavArgs
-Klasse in einemActivity
- oderFragment
-Element abzurufen. b/122603367 - Mit Safe Args können Sie jetzt mit dem Plug-in
androidx.navigation.safeargs.kotlin
Kotlin-Code generieren. Der Kotlin-Code wurde speziell für Kotlin-Module erstellt. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster verwendet, das weiterhin über das vorherigeandroidx.navigation.safeargs
-Plug-in verfügbar ist. b/110263087
Änderungen des Verhaltens
- Übereinstimmende Deeplinks werden jetzt nach dem Deeplink mit den meisten übereinstimmenden Argumenten gewichtet. b/118393029
- Durch das Aufrufen von
setGraph()
in einemNavController
wird jetzt der Back Stack zurückgesetzt. b/111450672 - Unbekannte Deeplinks lösen kein
IllegalStateException
mehr aus, werden aber ignoriert, um Probleme mit verschachtelten oder mehrerenNavHostFragment
s zu beheben. b/121340440
Wichtige Änderungen
- Die Methode
NavOptions.applyPopAnimationsToPendingTransition()
zum Anwenden von Pop-Animationen auf eine Aktivität wurde nachActivityNavigator
verschoben. b/122413117 - Safe Args vermeidet jetzt das Duplizieren identischer Klassen für Aktionen ohne Argumente. Der Rückgabetyp für Methoden ohne Argumenten in generierten NavDirections-Klassen ist jetzt
NavDirections
. b/123233147 - Von Safe Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr – Sie sollten nur mit den generierten statischen Methoden interagieren. b/123031660
- Von Safe Args generierte
NavDirections
-Klassen haben keinen öffentlichen Konstruktor mehr – sie sollten nur über die statischen Methoden in den generierten Directions-Klassen generiert werden. b/122963206 - Die aus dem
getArguments()
vonNavDirections
zurückgegebeneBundle
wird jetzt als@NonNull
und nicht mehr als@Nullable
gekennzeichnet. b/123243957
Fehlerkorrekturen
NavDeepLinkBuilder
verarbeitet jetzt mehrere gleichzeitigePendingIntent
s für dasselbe Ziel korrekt. Dazu werden die von Ihnen übergebenen Argumente zur Bestimmung der Eindeutigkeit verwendet. b/120042732NavController
verarbeitet jetztpopBackStack()
-Vorgänge korrekt, wenn ein verschachteltesNavHostFragment
oder andere untergeordnete Fragmente mit einem Back-Stack verwendet werden. b/122770335- Mit
NavigationUI
wird die Inhaltsbeschreibung der Schaltfläche „Nach oben“ jetzt korrekt festgelegt. b/120395362 - Von Safe Args generierte Directions-Klassen verarbeiten jetzt globale Aktionen, die dieselbe ID wie eine Aktion für ein Ziel haben. b/122962504
- Safe Args-generierte
NavDirections
-Klassen haben jetzt korrekt gleichehashCode()
-Werte, wennequals()
„true“ zurückgeben würde. b/123043662 FragmentNavigator
gibt jetzt eine bessere Fehlermeldung aus, wenn Sie versuchen, benutzerdefinierteFragmentTransactions
für dieFragmentManager
derNavHostFragment
zu erstellen. Du solltest immergetChildFragmentManager()
verwenden. b/112927148
Version 1.0.0-alpha09
18. Dezember 2018
Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.
Wir haben uns entschlossen, die Entwicklung des Artefakts android.arch.navigation:navigation-testing
nicht fortzusetzen. Obwohl sich diese Methode für interne Tests von NavController
als hilfreich erwiesen hat, empfehlen wir dringend alternative Teststrategien, z. B. das Mockieren der NavController
-Instanz, um zu prüfen, ob die richtigen navigate()
-Aufrufe ausgeführt werden. Dieser Ansatz wird im Single Activity Talk beim AndroidDevSummit 2018 ausführlich erläutert. Außerdem arbeiten wir an zusätzlichen Dokumentationen speziell zu Tests mit Navigation.
Neue Funktionen
MenuItem
s mitmenuCategory="secondary"
lösen den Backstack nicht mehr aus, wenn sie mitNavigationUI
-Methoden verwendet werden. b/120104424- Mit
AppBarConfiguration
können Sie jetzt eineOnNavigateUpListener
-Fallback-Instanz festlegen, die aufgerufen wird, wennnavController.navigateUp()
false
zurückgibt. b/79993862 b/120690961
Wichtige Änderungen
- Wenn ein
<argument>
mit einemargType="reference"
verwendet wird, parst Navigation nicht mehr die Referenz, sondern stellt die Rohressourcen-ID selbst bereit. b/111736515 onNavDestinationSelected()
kehrt jetzt standardmäßig zum Startziel des Navigationsdiagramms zurück, sodass sie densetup
-Methoden entsprechen. Fügen SiemenuCategory="secondary"
zuMenuItem
hinzu, damit der Back-Stack nicht überschritten wird. aosp/852869- Die
fromBundle()
-Methoden generierterArgs
-Klassen verwenden jetzt eine Nicht-Null-Bundle
anstelle einerBundle
-aosp/845616, in der Nullwerte zulässig sind.
Fehlerkorrekturen
- Argumente werden jetzt korrekt aus Deeplinks als korrekte
argType
und nicht immer als Strings b/110273284 geparst - Die Navigation exportiert jetzt die öffentlichen Ressourcen korrekt b/121059552
- Safe Args ist jetzt mit dem Android Gradle-Plug-in 3.4 Canary 4 und höher kompatibel b/119662045
Version 1.0.0-alpha08
6. Dezember 2018
Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.
Neue Funktionen
- Wenn Ziellabels mit
NavigationUI
-Methoden verwendet werden, ersetzen sie jetzt automatisch{argName}
-Instanzen in derandroid:label
durch das richtige Argument b/80267266. - Die Navigation hängt jetzt von der Supportbibliothek 28.0.0 b/120293333 ab.
Wichtige Änderungen
OnNavigatedListener
wurde inOnDestinationChangedListener
b/118670572 umbenannt.OnDestinationChangedListener
übergibt jetzt auch dasBundle
der Argumente aosp/837142.- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen Methoden wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm des Diagramms, um alle Ziele aus dem Back-Stack zu entfernen. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet die Möglichkeit, beliebigeIntent.FLAG_ACTIVITY_
-Flags aosp/828140 festzulegen.NavController.onHandleDeepLink
wurde inhandleDeepLink
aosp/836063 umbenannt.- Viele Klassen und Methoden, die nicht für Unterklassen vorgesehen sind, wie
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden infinal
aosp/835681 geändert. - Die verworfene Methode
NavHostFragment.setGraph()
wurde entfernt: aosp/835684 - Die verworfene Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Fragmenterstellung wurde nach
FragmentNavigator
verschoben. Damit ist es einfacher, die Fragmenterstellung an einFragmentFactory
zu delegieren. b/119054429 - Im Konstruktor für
NavGraphNavigator
wird keinContext
aosp/835340 mehr benötigt. - NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle. Die Funktionalität des von
getNavigatorProvider()
zurückgegebenenNavigatorProvider
-Objekts hat sich nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt. Rufen Sie stattdessennavigate()
imNavigator
auf. aosp/830663- Erhebliche Refaktorierung von
Navigator
, wodurchOnNavigatorNavigatedListener
nicht mehr benötigt wird und stattdessennavigate
die aufgerufeneNavDestination
zurückgibt. Navigator
-Instanzen können keine Pop-Ereignisse mehr an dieNavController
senden. Sie können einOnBackPressedCallback
verwenden, um das Drücken der Zurück-Schaltfläche abzufangen undnavController.popBackStack()
aufzurufen. aosp/833716
Fehlerkorrekturen
popUpTo
funktioniert jetzt konsistent, wenn das Ziel ein<navigation>
-Element ist b/116831650- Mehrere Fehler behoben, die bei der Verwendung verschachtelter Grafiken zu einem
IllegalArgumentException
führten b/118713731 b/113611083 b/113346925 b/113305559 - Das Attribut
dataPattern
von<activity>
-Zielen füllt nun Argumente aus Nicht-String-Argumenten durch Aufrufen vontoString()
b/120161365 aus.
Sichere Argumente
- Safe Args unterstützt Serializable -Objekte, einschließlich Enum-Werte. Für Enum-Typen kann ein Standardwert festgelegt werden, indem das Enum-Literal ohne Klassennamen verwendet wird (z. B.
app:defaultValue="READ"
). b/111316353 - Safe Args unterstützt Arrays aller unterstützten Typen. b/111487504
- Safe Args ignoriert jetzt Unterordner von Ressourcenverzeichnissen b/117893516.
- Sichere Args fügt gegebenenfalls
@Override
-Annotationen hinzu: b/117145301
Version 1.0.0-alpha07
29. Oktober 2018
Neue Funktionen
- Mit der neuen Klasse AppBarConfiguration können Sie anpassen, welche Ziele als Ziele der obersten Ebene betrachtet werden sollen. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
- Sie können jetzt Argumente an das Startziel des Graphen übergeben b/110300470
- Deeplinks unterstützen jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen. b/112806402
Wichtige Änderungen
- Das Modul
navigation-testing-ktx
wurde innavigation-testing artifact
eingeklappt und wird nicht mehr veröffentlicht. - Das Artefakt
navigation-testing
ist jetzt von der Kotlin-Standardbibliothek abhängig. Die API wurde geändert, um die Kotlin-Konventionen besser zu unterstützen. Sie kann jedoch weiterhin für Tests verwendet werden, die in Java geschrieben wurden. - Navigationsdiagramme, die im Metadatenmanifest registriert sind, werden nicht mehr unterstützt. b/118355937
- Aktionen können nicht mehr an <activity>-Ziele angehängt werden. aosp/785539
Fehlerkorrekturen
- Deeplinks parsen Abfrageparameter jetzt korrekt. b/110057514
- Aktivitätsziele wenden jetzt alle Animationen zum Ein- und Beenden korrekt an. b/117145284
- Ein Absturz wurde behoben, der nach Konfigurationsänderungen bei der Verwendung benutzerdefinierter Navigatoren auftrat. b/110763345
Sichere Argumente
- Sichere Argumente sind jetzt fest vom Android Gradle-Plug-in 3.2.1 abhängig. b/113167627
- Für innere Klassen können jetzt Wegbeschreibungen generiert werden. b/117407555
- Ein Problem beim Generieren von Wegbeschreibungen in eine <include>-Grafik wurde behoben. b/116542123
Version 1.0.0-alpha06
20. September 2018
Neue Funktionen
- Übergänge für gemeinsame Elemente für Fragment- und Aktivitätsziele werden jetzt unterstützt b/79665225. Weitere Informationen finden Sie unter Navigation mit der Navigationsarchitekturkomponente implementieren.
- Wenn Sie ein Element in
NavigationView
auswählen, werden alle Elemente am unteren Rand, die das Element b/112158843 enthalten, geschlossen
API-Änderungen
- Nicht funktionsgefährdende Änderung: Die
navigate()
-Methode des Navigators verwendet jetzt einenNavigator.Extras
-Parameter. - Die Methode
getGraph()
von NavController ist jetztNonNull
b/112243286
Fehlerkorrekturen
NavigationUI.setupWithNavController()
gibt keine Aufrufe mehr ab, wenn sie mit Aufrufen von einzelnen Zielen verwendet wird b/111961977- Navigator
onSaveState()
wird jetzt nur einmal aufgerufen b/112627079
Sichere Argumente
- Die Directions-Klassen für Navigationsziele erweitern jetzt die Directions-Klasse der übergeordneten Klasse, wenn diese vorhanden ist b/79871405.
- Die Directions- und Args-Klassen verfügen jetzt über eine nützliche
toString()
-Implementierung b/111843389.
Version 1.0.0-alpha05
10. August 2018
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zu einem falschen Backstack-Verhalten geführt hat. b/111907708
- Ein Fehler in
equals()
der generierten Args-Klassen wurde behoben. b/111450897 - Build-Fehler in Safe Args beheben. b/109409713
- Konvertierung von Ressourcenkennungen in Java-Namen b/111602491 korrigieren
- Fehlermeldungen bezüglich Null-Zulässigkeit im Safe Args-Plug-in beheben
- Fügen Sie fehlende Anmerkungen zur Null-Zulässigkeit hinzu.
Version 1.0.0-alpha04
July 19, 2018
Die Navigation 1.0.0-alpha04
und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
Änderungen bei APIs und des Verhaltens
- NavHostFragment legt das aktuelle Fragment immer als primäres Navigationsfragment fest, sodass die untergeordneten Fragmentmanager per Pop-up vor dem äußeren NavController-Element übertragen werden b/111345778.
Sichere Argumente
- Nicht funktionsgefährdende Änderung:
app:type
wurde zuapp:argType
geändert, um Konflikte mit anderen Bibliotheken wie ConstraintLayout 2.0.0-alpha1 b/111110548 zu vermeiden - Fehlermeldungen von Safe Args sind jetzt anklickbar b/111534438
- Args-Klassen bestätigen jetzt, dass
NonNull
-Attribute nicht null sind b/111451769 - Zu den mit NavDirections und Args generierten Klassen b/111455455 b/111455456 wurden zusätzliche
NonNull
-Annotationen hinzugefügt.
Fehlerkorrekturen
- Ein Problem mit der Systemschaltfläche „Zurück“ nach Deeplink zu einem Fragmentziel b/111515685 wurde behoben.
Version 1.0.0-alpha03
12. Juli 2018
Die Navigation 1.0.0-alpha03
und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
Änderungen bei APIs und des Verhaltens
- Eine NavigationUI.setupWithNavController-Methode für die Toolbar wurde hinzugefügt: b/109868820
- Die Methode „NavigationUI.setupWithNavController“ für das CollapsingToolbarLayout wurde hinzugefügt: b/110887183
- popBackStack() gibt jetzt „false“ zurück, wenn der Back Stack leer ist oder wenn sich die angegebene Ziel-ID nicht im Back Stack befindet b/110893637
- FragmentNavigator ignoriert jetzt Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, und vermeidet Ausnahmen vom Typ „Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden“ b/110987825
Sichere Argumente
- Wichtige Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den jeweiligen NavDirections-Methodennamen durch die Camel-Case-Schreibweise ersetzt.
- Beispiel:
DemoController.index
wird zusetDemoControllerIndex
b/79995048. - Beispiel:
action_show_settings
wird zuactionShowSettings
b/79642240
- Beispiel:
- Wichtige Änderung: Argumente werden jetzt standardmäßig als ungleich null betrachtet. Fügen Sie
app:nullable="true"
b/79642307 hinzu, um Nullwerte für String- und parcelable-Argumente zuzulassen. - Sie können jetzt
app:type="long"
mit Standardwerten im Format „123L“ verwenden b/79563966 - Argumente vom Typ „Parcelable“ werden jetzt unterstützt. Dabei wird ein voll qualifizierter Klassenname für
app:type
verwendet. Der einzige unterstützte Standardwert ist"@null"
b/79563966 - Args-Klassen implementieren jetzt
equals()
undhashCode()
b/79642246 - Das SafeArgs-Plug-in kann jetzt auf Bibliotheksprojekte b/80036553 angewendet werden.
- Das Plug-in „Safe Args“ kann jetzt auf Featureprojekte b/110011752 angewendet werden.
Fehlerkorrekturen
- Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
- Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken wurden behoben. b/110178671
- Probleme bei der Verwendung von
setPopUpTo
mit dem ersten Ziel in der Grafik b/109909461 behoben - Problem behoben, bei dem alle
app:defaultValue
-Werte als Strings b/110710788 übergeben wurden - Mit aapt2 im Bundle mit Android Gradle-Plug-in 3.2 Beta 01 werden jetzt für jedes
android:name
-Attribut in Navigations-XML-Dateien Keep-Regeln hinzugefügt (b/79874119). - Speicherleck beim Ersetzen des Standard-FragmentNavigators b/110900142 behoben
Version 1.0.0-alpha02
7. Juni 2018
Änderungen des Verhaltens
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Navigation jetzt URLDecodiert Argumente, die von Deeplinks-URLs geparst wurden. b/79982454
Fehlerkorrekturen
Ein
IllegalStateException
beim Aufrufen von Navigation über Fragment-Lebenszyklusmethoden wurde behoben. b/79632233Die Navigation hängt jetzt von der Supportbibliothek 27.1.1 ab, um Flackern bei der Verwendung von Animationen zu beheben. b/80160903
Ein
IllegalArgumentException
wurde behoben, wenn defaultNavHost="true" als untergeordnetes Fragment verwendet wurde. b/79656847Ein
StackOverflowError
bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
beim Zurückkehren zu einem verschachtelten Diagramm wurde behoben. b/80453447Ein Problem mit sich überschneidenden Fragmenten bei Verwendung von
launchSingleTop
wurde behoben. b/79407969Durch die Navigation wird jetzt der richtige synthetische Back-Stack für verschachtelte Grafiken erstellt. b/79734195
Über NavigationUI wird jetzt das richtige Element hervorgehoben, wenn ein verschachteltes Diagramm als
MenuItem
verwendet wird. b/109675998
API-Änderungen
Das Attribut
clearTask
für Aktionen und die zugehörige API inNavOptions
wurde eingestellt. b/80338878Das Attribut
launchDocument
für Aktionen und die zugehörige API inNavOptions
wurde eingestellt. b/109806636
Version 1.0.0-alpha01
8. Mai 2018
Die Navigation bietet ein Framework zum Erstellen der In-App-Navigation. Dieser erste Release ist 1.0.0-alpha01
.