Navigation
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
2. Juli 2025 | 2.9.1 | - | – | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Navigation hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.1" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.1" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
Wenn Sie Ihrem Projekt Safe Args hinzufügen möchten, fügen Sie der build.gradle
-Datei auf oberster Ebene die folgende classpath
hinzu:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.1" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Außerdem müssen Sie eines der beiden verfügbaren Plug-ins anwenden.
Wenn Sie Java-Code generieren möchten, der für Java- oder gemischte Java- und Kotlin-Module geeignet ist, fügen Sie der build.gradle
-Datei Ihrer App oder Ihres Moduls diese Zeile hinzu:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternativ können Sie Kotlin-Code generieren, der für reine Kotlin-Module geeignet ist. Fügen Sie dazu Folgendes hinzu:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Gemäß der Anleitung Zu AndroidX migrieren 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
Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es 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 ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 2.9
Version 2.9.1
2. Juli 2025
androidx.navigation:navigation-*:2.9.1
wird veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, das dazu führte, dass
NavEntries
, die mit „single top“ instanziiert wurden, in ihremLifecycle.State
nie über „CREATED“ hinausgingen. (I043ba, b/421095236)
Version 2.9.0
7. Mai 2025
androidx.navigation:navigation-*:2.9.0
wird veröffentlicht. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Navigationsaktionen für Safe Args werden jetzt mit der Annotation
@CheckResult
generiert, damit sie verwendet werden.
SupportingPane-Schnittstelle
- Benutzerdefinierte Navigatoren können ihre Ziele jetzt als Implementierung der
SupportingPane
-Schnittstelle kennzeichnen. Dies signalisiert demNavController
, dass diese Ziele zusammen mit anderen Zielen angezeigt werden. Über diese Schnittstelle können beispielsweise mehrere Ziele gleichzeitigRESUMED
werden.
Compose Kotlin Multiplatform
- Für die Navigation gibt es jetzt eine neue gemeinsame
NavController.handleDeepLink()
-Funktion, die einenNavDeepLinkRequest
anstelle einesIntent
verwendet. So können Deeplinks auch auf anderen Plattformen als Android richtig verarbeitet werden. Vielen Dank, Konstantin Tskhovrebov! - Navigation bietet jetzt
NavUri
, eine neue gemeinsame Parserfunktion, die eine kompatible API für den URI von Android auf anderen Plattformen ist. So kann ein URI plattformunabhängig erstellt werden. Vielen Dank, Konstantin Tskhovrebov!
Typsichere Funktionen
- Die typsicheren APIs, auf die zuvor nur über
reified
-Methoden zugegriffen werden konnte, d.h.composable<YourScreen>
haben jetzt nicht reifizierte Versionen, die direkt eineKClass
-Instanz verwenden. - Die Navigations-Typsicherheit unterstützt jetzt Wertklassen als Route oder als Argumenttyp einer Route.
Version 2.9.0-rc01
23. April 2025
androidx.navigation:navigation-*:2.9.0-rc01
wird veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Alle Nicht-Android-Plattformziele wurden aus Jetpack Navigation entfernt, da sie nicht funktionieren. Stattdessen werden jetzt Stubs für verschiedene Plattformen bereitgestellt.(I2877d)
Version 2.9.0-beta01
9. April 2025
androidx.navigation:navigation-*:2.9.0-beta01
wird veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Die gemeinsame API von
parseStringAsNavUri
wurde in eineNavUri
-Factory-Funktion geändert, die einen String akzeptiert. (I4db6e, b/403616316)
Abhängigkeitsupdates
- Diese Bibliothek ist jetzt auf das Kotlin 2.0-Sprachniveau ausgerichtet und erfordert KGP 2.0.0 oder höher. (Idb6b5)
Version 2.9.0-alpha09
26. März 2025
androidx.navigation:navigation-*:2.9.0-alpha09
wird veröffentlicht. Version 2.9.0-alpha09 enthält diese Commits.
Neue Funktionen
- Das
navigation-testing
-Modul wird jetzt neben Android auch auf Computern, Linux, macOS und iOS unterstützt. (I2b770, b/398265336) NavType
wird jetzt neben Android auch auf Computern, Linux, macOS und iOS unterstützt. (I297d8)
Version 2.9.0-alpha08
12. März 2025
androidx.navigation:navigation-*:2.9.0-alpha08
wird veröffentlicht. Version 2.9.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Navigation
2.8.9
: Es wurde ein Regressionsfehler behoben, der in Navigation 2.8.8 gefunden wurde. Dieser Fehler führte dazu, dass ein Deeplink genau mit allen Feldern einer Deeplink-Anfrage oder eines Intents übereinstimmen musste, um als Übereinstimmung betrachtet zu werden. Das führte dazu, dass Deeplinks, die teilweise Feldübereinstimmungen enthielten und keine anderen, nicht mehr funktionierten. (Ie5e36, b/399826566)
Externe Beiträge
- Neue gemeinsame Parserfunktion zum Erstellen eines
NavUri
. Vielen Dank, Konstantin Tskhovrebov! (If0a6a)
Version 2.9.0-alpha07
26. Februar 2025
androidx.navigation:navigation-*:2.9.0-alpha07
wird veröffentlicht. Version 2.9.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Versuch,
saveState
mit einem nicht inklusiven Pop auszuführen, zu einem Null-savedState führte, der beim Wiederherstellen einen Absturz verursachen konnte. (I9f3e8, b/395091644) - Ab Navigation 2.8.8: Die
NavDeepLink
-Abstimmung wurde korrigiert. Ein Deeplink und eine Deeplinkanfrage müssen in Bezug auf URI, Aktion und MIME genau übereinstimmen. Ein Abgleich ist nicht mehr zulässig, wenn nur ein oder zwei Felder übereinstimmen. (I3b029, b/395712033) - Ab Navigation 2.8.8: Ein Fehler wurde behoben, bei dem Routen mit Platzhalterpfaden nicht mit einem hinzugefügten Deeplink übereinstimmten (I7ea92, b/389970341).
Externe Beiträge
- Extrahieren Sie die APIs „navigation-common“, „navigation-runtime“ und „navigation-compose“ auf die gemeinsame Plattform. Vielen Dank, Konstantin Tskhovrebov! (I1e626, Ica76f, Idf479)
Bekannte Probleme
- Aufgrund der Arbeiten zur Behebung von b/395712033 müssen Deeplinks fälschlicherweise alle Felder der Deeplink-Anfrage und/oder des
Intent
enthalten. Deeplinks sollten nur mit den Feldern übereinstimmen, die sie haben. Die nicht enthaltenen Felder sollten ignoriert werden. Dieses Problem wurde für eine spätere Version im Rahmen von b/399826566 behoben.
Version 2.9.0-alpha06
12. Februar 2025
androidx.navigation:navigation-*:2.9.0-alpha06
wird veröffentlicht. Version 2.9.0-alpha06 enthält diese Commits.
Neue Funktionen
- Navigationsaktionen für Safe Args werden jetzt mit der Annotation
@CheckResult
generiert, damit sie verwendet werden. (I14d4c, b/356323084)
Fehlerkorrekturen
- Es wurde ein Fehler in
NavController
behoben, bei dem versucht wurde, die Backstack-Zustände fälschlicherweise in einem Array wiederherzustellen, obwohl sie in einer Liste gespeichert wurden. (Idfb9b) - Navigation
2.8.7
: Navigation Safe Args bietet jetzt Unterstützung für zusammensetzbare Ziele. (I35320, b/362791955)
Version 2.9.0-alpha05
29. Januar 2025
androidx.navigation:navigation-*:2.9.0-alpha05
wird veröffentlicht. Version 2.9.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, das bei der Verwendung von Navigation Compose zu einer unerwarteten Skalierungsanimation geführt hat. (I480f4, b/353294030)
- Über Navigation
2.8.6
:NavDestination
-Labels, die über XML bereitgestellt werden, werden überNavType.get
geparst, damit die benutzerdefinierteNavType
-Logik berücksichtigt wird. (I7ec2f, b/388100796) - Über Navigation
2.8.6
: Wenn Sie mitdataPattern
zu einer Aktivität navigieren, versuchtActivityNavigator
jetzt, den Argumentwert mit demNavType
des Arguments zu codieren. (I16376, b/383616432) - Navigation
2.8.5
: Es wurde ein Problem behoben, das beim Verwenden von Navigation Compose und Aufrufen von „navigate“ im selben Frame, in dem die aktuelle Animation endet, zu einer unerwarteten Skalierungsanimation geführt hat. (I26cb1, b/353294030)
Version 2.9.0-alpha04
11. Dezember 2024
androidx.navigation:navigation-*:2.9.0-alpha04
wird veröffentlicht. Version 2.9.0-alpha04 enthält diese Commits.
Neue Funktionen
- Die typsicheren APIs, auf die zuvor nur über
reified
-Methoden zugegriffen werden konnte, d.h.composable<YourScreen>
haben jetzt nicht reifizierte Versionen, die direkt eineKClass
-Instanz verwenden.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
Die folgende Tabelle enthält die reifizierten und KClass-APIs.
reifiziert | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
API-Änderungen
- Die Kotlin-spezifische
NavGraph.setStartDestination
-Überladung für Typsicherheit ist für Java-Quellen ausgeblendet. (Ic640c, b/364634035)
Fehlerkorrekturen
- Navigation
2.8.5
: Ein Problem wurde behoben, bei demNavHost
innerhalb vonPredictiveBackHandler
eine Ausnahme auslösen konnte, wenn der Backstack auf einen Eintrag reduziert wurde und im selben Frame ein System-Back ausgelöst wurde. (I1a429, b/375343407) - Navigation
2.8.5
: Das Problem mit dem FixNavDestination
NullPointerException
beim Aktualisieren vonstartDestination
eines Diagramms wurde behoben. (I99421, b/361560785)
Externe Beiträge
- Navigation
2.8.5
: Die Sicherheit des Navigationstyps unterstützt jetztList<Enum>
als Argumenttyp einer Route, ohne dass eine benutzerdefinierteNavType
erforderlich ist. Vielen Dank, Csaba Kozák! (GH-725, b/375559962)
Version 2.9.0-alpha03
13. November 2024
androidx.navigation:navigation-*:2.9.0-alpha03
wird veröffentlicht. Version 2.9.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die Navigations-Typsicherheit unterstützt jetzt Wertklassen als Route oder als Argumenttyp einer Route. (I9344a, b/374347483)
Fehlerkorrekturen
- Es wurde ein
ConcurrentModificationException
behoben, der auftreten konnte, wenn einLifecycleObserver
, das an einNavBackStackEntry
angehängt ist, eine Änderung des Backstacks auslöst, wenn der HostLifecycleOwner
, z. B. die enthaltende Aktivität oder das enthaltende Fragment, seinen Lebenszyklusstatus ändert. (Ia9494)
Version 2.9.0-alpha02
30. Oktober 2024
androidx.navigation:navigation-*:2.9.0-alpha02
wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Externe Beiträge
- Neue gemeinsame
NavController.handleDeepLink(request: NavDeepLinkRequest)
-Methode. Vielen Dank, Konstantin Tskhovrebov! (I3e228)
Version 2.9.0-alpha01
16. Oktober 2024
androidx.navigation:navigation-*:2.9.0-alpha01
wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Neue Funktionen
- Benutzerdefinierte Navigatoren können ihre Ziele jetzt als Implementierung der
SupportingPane
-Schnittstelle kennzeichnen. Dies signalisiert demNavController
, dass diese Ziele zusammen mit anderen Zielen angezeigt werden. Über diese Schnittstelle können beispielsweise mehrere Ziele gleichzeitigRESUMED
werden. (Id5559) - Navigation
2.8.3
: Für die Modulenavigation-common
,navigation-runtime
undnavigation-compose
wurden neue Lint-Prüfungen hinzugefügt, um alle typsicheren Routen zu identifizieren, die nicht korrekt mit@Serializable
annotiert sind. Diese Prüfung wird auf alleNavGraphBuilder
- undNavDeepLinkBuilder
-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Navigation
2.8.3
: Für die Modulenavigation-common
,navigation-runtime
undnavigation-compose
wurden neue Lint-Prüfungen hinzugefügt, um alle typsicheren Routen mit Enum-Argumenten zu identifizieren, die nicht korrekt mit@Keep
annotiert sind. Diese Prüfung wird auf alleNavGraphBuilder
- undNavDeepLinkBuilder
-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Geändertes Verhalten
- Wenn Sie versuchen, eine
NavController
zu verwenden, die zuvorDESTROYED
wurde, wird jetzt einIllegalStateException
ausgelöst. (I520da, b/369616172)
Fehlerkorrekturen
- Die Ausnahme „Enum-Klasse nicht gefunden“ wurde aktualisiert, um die Verwendung der Annotation
@Keep
vorzuschlagen, falls die Enum-Klasse in minimierten Builds gelöscht wird. (I90e79, b/358137294)
Bekannte Probleme
- Es gibt ein Problem mit den neuen Lint-Regeln, die in
Navigation 2.8.*
hinzugefügt wurden. Dieses Problem führt zu einemObsolete custom lint check
-Fehler, wenn versucht wird, Lint mit dem Android-Gradle-Plugin 8.4 oder höher auszuführen. (b/368070326, b/371463741)
Version 2.8
Version 2.8.9
12. März 2025
androidx.navigation:navigation-*:2.8.9
wird veröffentlicht. Version 2.8.9 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Regressionsfehler in Navigation 2.8.8 behoben, bei dem ein Deeplink mit allen Feldern einer Deeplink-Anfrage oder eines Intents genau übereinstimmen musste, um als Übereinstimmung zu gelten. Das führte dazu, dass Deeplinks, die teilweise Feldübereinstimmungen enthielten und keine anderen, nicht mehr funktionierten. (Ie5e36, b/399826566)
Version 2.8.8
26. Februar 2025
androidx.navigation:navigation-*:2.8.8
wird veröffentlicht. Version 2.8.8 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Routen mit Platzhalterpfaden nicht mit einem hinzugefügten Deeplink übereinstimmten. (I7ea92, b/389970341)
- Die
NavDeepLink
-Abstimmung wurde korrigiert. Ein Deeplink und eine Deeplink-Anfrage müssen nun genau in Bezug auf URI, Aktion und MIME übereinstimmen. Ein Abgleich ist nicht mehr zulässig, wenn nur ein oder zwei Felder übereinstimmen. (I3227f, b/395712033)
Bekannte Probleme
- Aufgrund der Arbeiten zur Behebung von b/395712033 müssen Deeplinks fälschlicherweise alle Felder der Deeplink-Anfrage und/oder des
Intent
enthalten. Deeplinks sollten nur mit den Feldern übereinstimmen, die sie haben. Die nicht enthaltenen Felder sollten ignoriert werden. Dieses Problem wurde für eine spätere Version im Rahmen von b/399826566 behoben.
Version 2.8.7
12. Februar 2025
androidx.navigation:navigation-*:2.8.7
wird veröffentlicht. Version 2.8.7 enthält diese Commits.
Fehlerkorrekturen
- Navigation Safe Args unterstützt jetzt zusammensetzbare Ziele. (I35320, b/362791955)
Version 2.8.6
29. Januar 2025
androidx.navigation:navigation-*:2.8.6
wird veröffentlicht. Version 2.8.6 enthält diese Commits.
Fehlerkorrekturen
NavDestination
-Labels, die über XML bereitgestellt werden, werden überNavType.get
geparst, damit die benutzerdefinierteNavType
-Logik berücksichtigt wird. (Id366d, b/388100796)- Wenn Sie mit
dataPattern
zu einer Aktivität navigieren, versuchtActivityNavigator
jetzt, den Argumentwert mit demNavType
des Arguments zu codieren. (I1a71d, b/383616432)
Version 2.8.5
11. Dezember 2024
androidx.navigation:navigation-*:2.8.5
wird veröffentlicht. Version 2.8.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
NavHost
innerhalb vonPredictiveBackHandler
eine Ausnahme auslösen konnte, wenn der Backstack auf einen Eintrag reduziert wurde und im selben Frame ein System-Back ausgelöst wurde. (I1a429, b/375343407) - Der Fehler
NavDestination
NullPointerException
beim Aktualisieren derstartDestination
einer Grafik wurde behoben. (I99421, b/361560785) - Es wurde ein Problem behoben, das zu einer unerwarteten Skalierungsanimation führte, wenn Navigation Compose verwendet und „navigate“ im selben Frame aufgerufen wurde, in dem die aktuelle Animation endet. (I26cb1, b/353294030)
- Es wurde ein
ConcurrentModificationException
behoben, der auftreten konnte, wenn einLifecycleObserver
, das an einNavBackStackEntry
angehängt ist, eine Änderung des Backstacks auslöst, wenn der HostLifecycleOwner
, z. B. die enthaltende Aktivität oder das enthaltende Fragment, seinen Lebenszyklusstatus ändert. (Ia9494)
Externe Beiträge
- Die Typsicherheit für die Navigation unterstützt jetzt
List<Enum>
als Argumenttyp einer Route, ohne dass eine benutzerdefinierteNavType
erforderlich ist. Vielen Dank, Csaba Kozák! (GH-725, b/375559962)
Version 2.8.4
13. November 2024
androidx.navigation:navigation-*:2.8.4
wird veröffentlicht. Version 2.8.4 enthält diese Commits.
Neue Funktionen
- Navigation
2.9.0-alpha03
: Die Sicherheit des Navigationstyps unterstützt jetzt die Wertklasse als Route oder als Argumenttyp einer Route (I9344a, b/374347483)
Fehlerkorrekturen
- Navigation
2.9.0-alpha01
: Wenn Sie versuchen, eineNavController
zu verwenden, die zuvorDESTROYED
wurde, wird jetzt einIllegalStateException
ausgelöst. (I520da, b/369616172)
Version 2.8.3
16. Oktober 2024
androidx.navigation:navigation-*:2.8.3
wird veröffentlicht. Version 2.8.3 enthält diese Commits.
Neue Funktionen
- Es wurden neue Lint-Prüfungen für die Module
navigation-common
,navigation-runtime
undnavigation-compose
hinzugefügt, um alle typsicheren Routen zu identifizieren, die nicht korrekt mit@Serializable
annotiert sind. Diese Prüfung wird auf alleNavGraphBuilder
- undNavDeepLinkBuilder
-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Es wurden neue Lint-Prüfungen für die Module
navigation-common
,navigation-runtime
undnavigation-compose
hinzugefügt, um alle typsicheren Routen mit Enum-Argumenten zu identifizieren, die nicht korrekt mit@Keep
annotiert sind. Diese Prüfung wird auf alleNavGraphBuilder
- undNavDeepLinkBuilder
-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die neuen Lint-Regeln, die in
Navigation 2.8.*
hinzugefügt wurden, beim Ausführen von Lint mit dem Android-Gradle-Plug-in 8.4+ einenObsolete custom lint check
-Fehler verursacht haben. (I1be3d, b/368070326, b/371463741)
Bekannte Probleme
- Bei der Ausführung von Lint mit Lint 16 (AGP 8.7) oder höher wird durch die Navigations-Lint-Prüfung der Fehler „Obsolete custom lint check“ (Veraltete benutzerdefinierte Lint-Prüfung) ausgegeben. (b/371926651)
Version 2.8.2
2. Oktober 2024
androidx.navigation:navigation-*:2.8.2
wird veröffentlicht. Version 2.8.2 enthält diese Commits.
Neue Funktionen
- Die Navigation Type Safety unterstützt jetzt serialisierbare Klassen, die
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
undList<Double>?
enthalten, ohne dass ein benutzerdefiniertesNavType
erforderlich ist. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Fehlerkorrekturen
- Die Fehlermeldung wurde verbessert, die angezeigt wird, wenn ein Argument einer Route nicht auf ein
NavType
abgebildet werden kann. Die neue Fehlermeldung enthält den Argumentnamen, den vollqualifizierten Namen des Arguments und den vollqualifizierten Namen der Route. (Id8416, b/346264232)
Version 2.8.1
18. September 2024
androidx.navigation:navigation-*:2.8.1
wird veröffentlicht. Version 2.8.1 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, um die Verwendung der Funktion
popBackStack
zu erzwingen, die einen reifizierten Klassentyp akzeptiert, wenn versucht wird,popBackStack
mit typsicheren APIs auszuführen. (Ief161, b/358095343)
Fehlerkorrekturen
- Für die Navigation muss die Route, die an die
NavGraph
-MethodestartDestination
übergeben wird, die Werte für alle erforderlichen Argumente enthalten. Dazu gehören Argumente, die nicht nullfähig sind und keinen Standardwert haben. (I18e74, b/362594265) - Für Navigations-Safe Args wurde Unterstützung für nicht nullable Strings hinzugefügt, sodass „null“-Werte unverändert geparst und im Bundle gespeichert werden. Dies weicht vom bisherigen Verhalten ab, bei dem „null“-Werte in ein Null-Objekt geparst wurden. Diese Änderung gilt nur für String-Typen, die nicht nullfähig sind. Nullable-Strings bleiben unverändert. (I08b4a, b/348936238)
- Für
NavDestination
ist kein Deeplinking mehr möglich, es sei denn, dem Ziel wurde explizit ein Deeplink hinzugefügt. Das bedeutet auch, dass Sie nur mit der Überladung der Navigationsfunktion, die eine String-Route verwendet, zu einer Zielroute navigieren können. Damit wird eine Sicherheitslücke behoben, die es ermöglichte, einen Deeplink zu einem potenziell geschützten Ziel zu erstellen. (Ie30e6)
Abhängigkeitsupdate
- Navigation Safe Args hängt jetzt von Kotlin 1.9.24 anstelle von Kotlin 2.X ab. Entwickler sind also nicht gezwungen, ein Update durchzuführen. (a4129a)
- Navigation Compose hängt jetzt von Compose
1.7.2
ab.
Version 2.8.0
4. September 2024
androidx.navigation:navigation-*:2.8.0
wird veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
Typsicherheit des Navigation Kotlin DSL
- Die Navigation bietet jetzt Typsicherheit für die Kotlin-DSL (die von Navigation Compose verwendet wird) mithilfe von Kotlin Serialization. So können Sie Ziele in Ihrem Navigationsdiagramm über typsichere Objekte und Datenklassen definieren:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Weitere Informationen finden Sie im Blogpost Navigation Compose meet Type Safety.
Navigation Compose Predictive Back
- Navigation Compose unterstützt jetzt die vorhersagende In-App-Zurück-Funktion über die neuen
SeekableTransitionState
-APIs aus compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Transition aufrufen, bevor Sie die Transaktion mit der Geste „Abgeschlossen“ bestätigen oder abbrechen.
Composable für Navigationsfragment
- Es wurde ein neues
navigation-fragment-compose
-Artefakt hinzugefügt, das eineComposableNavHostFragment
-Alternative zuNavHostFragment
enthält. Damit können Sie Ihren Navigations-XML-Dateien zusammensetzbare Ziele hinzufügen. Jedescomposable
-Ziel muss als@Composable
-Methode auf oberster Ebene ohne Argumente ausgedrückt werden, deren vollqualifizierter Name alsandroid:name
-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele navigieren, wird ein enthaltendes Fragment erstellt, um die zusammensetzbaren Inhalte anzuzeigen.
// 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" />
Weitere Änderungen
- Navigation Compose hängt jetzt von Compose 1.7.0 ab.
- Für die Navigation gibt es jetzt die neue Klasse
CollectionNavType<T>
, eine Unterklasse vonNavType<T>
für sammlungsbasierte Argumente wie Listen, Arrays und Maps. Alle Standard-NavType
-Arrays (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
undStringArrayType
) werden jetzt von dieser neuen Klasse abgeleitet. NavType
bietet jetzt integrierte Unterstützung für Listen vom Typ „Int“, „String“, „Boolean“, „Float“ und „Long“.
Version 2.8.0-rc01
21. August 2024
androidx.navigation:navigation-*:2.8.0-rc01
wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Navigationsabsturzes beim Übergeben von Enum-Klassen auf oberster Ebene als typsichere Argumente. (I0ba76, b/358137294)
- Navigation 2.8 funktioniert jetzt korrekt mit SDK 34 und wird erst mit der Version 2.9 zusammen mit den anderen AndroidX-Bibliotheken auf SDK 35 umgestellt. (b/358798728)
Version 2.8.0-beta07
7. August 2024
androidx.navigation:navigation-*:2.8.0-beta07
wird veröffentlicht. Version 2.8.0-beta07 enthält diese Commits.
Bekannte Probleme
- Aufgrund von b/358137294 werden nur Enums unterstützt, die in einer anderen Klasse verschachtelt sind. Enums der obersten Ebene werden in der nächsten Version unterstützt.
Fehlerkorrekturen
- Wenn Sie zu doppelten oder geteilten Zielen navigieren, wird in der Navigation das Ziel priorisiert, das dem aktuellen Standort im Diagramm am nächsten ist. (Ic89a4, b/352006850)
- Die Navigation in Safe Args hat jetzt ein neues
NavType.EnumType
. Das bedeutet, dass fürEnum
-Typen keine benutzerdefiniertenNavType
s mehr erforderlich sind. DerSerialName
desEnum
muss der standardmäßige vollqualifizierte Name sein. (I66d22, b/346475493) - Die Navigation in Safe Args bietet jetzt integrierte Unterstützung für Argumenttypen, die Nullwerte zulassen, einschließlich
Int?
,Long?
,Float?
,Boolean?
undEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Die
startDestination
derNavGraph
verwenden jetzt die Standardargumentwerte, wenn die an dieNavGraph
übergebenestartDestination
-Route genau derstartDestination.route
entspricht. (I13762, b/354046047)
Version 2.8.0-beta06
24. Juli 2024
androidx.navigation:navigation-*:2.8.0-beta06
wird veröffentlicht. Version 2.8.0-beta06 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die
WrongStartDestinationType
-Lint-Prüfungen nicht nach Companion-Objekten für den übergebenen Klassentyp gesucht haben. Dadurch konnte der Fehler nicht erkannt werden. (I92b09)
Version 2.8.0-beta05
10. Juli 2024
androidx.navigation:navigation-*:2.8.0-beta05
wird veröffentlicht. Version 2.8.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz bei der
singleTop
-Navigation wurde behoben, wenn verschachtelteNavGraphs
dieselbestartDestination
-Route verwenden. (I17b94, b/294408596)
Version 2.8.0-beta04
26. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta04
wird veröffentlicht. Version 2.8.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Die Navigation unterstützt jetzt die Navigation mit leeren Strings in Pfadargumenten. (Ic5dbd, b/339481310)
- Die Fehlermeldung für benutzerdefinierte Serialisierer, die direkt in Klassenfeldern über
@Serializable(with =...)
deklariert werden, wurde verbessert. Es wird nun klargestellt, dass dies derzeit eine nicht unterstützte Funktion ist. (I052b0, b/341319151) - Die
SavedStateHandleFactory
-Test-API kann jetzt in Nicht-Android-Tests verwendet werden, erfordert aber, dass Robolectric die Argumentanalyse mit Bundles unterstützt. (I76cdc, b/340966212) - Der Absturz beim Wiederherstellen des Status beim Fortsetzen der App nach dem Beenden des Prozesses mit Type-Safe Navigation in Compose wurde behoben. (Ia8f38, b/341801005)
- Ein Problem in Navigation Compose wurde behoben, bei dem die
NavBackStackEntry
, zu der der Nutzer zurückkehrt, nach dem Abbrechen der vorhersagenden Rückwärtsbewegung nie wieder in denRESUMED
-Lebenszyklusstatus zurückkehrt. Außerdem wird so dafür gesorgt, dass das Ziel nach einem Fling korrekt wieder eingeblendet wird, anstatt einfach an die richtige Stelle zu springen. (I97a0c, b/346608857) - Wenn Sie die Funktion „Vorhersagende Zurück-Geste“ mit Navigation Compose verwenden, hat das Pop-Ziel jetzt die richtige Z-Reihenfolge und wird korrekt über dem eingehenden Ziel animiert. (I2077b, b/345993681)
Version 2.8.0-beta03
12. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta03
wird veröffentlicht. Version 2.8.0-beta03 enthält diese Commits.
API-Änderungen
CollectionNavType
hat eine neue abstrakte MethodeemptyCollection()
. Überschreiben Sie diese Methode, um eine leere Sammlung zu verarbeiten, die als Argument übergeben wird. (Ie4d84, b/341723133)
Fehlerkorrekturen
- Dokumentation zu
NavType.serializeAsValue
undserializeAsValues
wurde hinzugefügt, um darauf hinzuweisen, dass die endgültigen Ausgaben URI-codiert sein sollten. (Ida6bd, b/344943214) - Ein Absturz beim Aufrufen von
toRoute<T>
mit einem Null-Argument fürCollectionNavType
wurde behoben. Wenn Sie mit einem Nullwert fürCollectionNavType
navigieren, ist das Ausgabeargument der Standardwert, der in Ihrer serialisierbaren Klasse deklariert ist, oder der Rückgabewert vonemptyCollection()
, wenn kein Standardwert vorhanden ist. (I84158, Id630f, b/342672856)
Version 2.8.0-beta02
29. Mai 2024
androidx.navigation:navigation-*:2.8.0-beta02
wird veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Der
ClassCastException
-Absturz bei Verwendung vonNavBackStackEntry.toRoute
mit einem benutzerdefiniertenNavType
, der Nullwerte zulässt, wurde behoben. (I1c29b, b/342239473) - Es wurden Probleme mit der Wiederherstellung des Navigations-Backstacks behoben, die auftraten, wenn versucht wurde, einen Backstack-Eintrag wiederherzustellen, der über die ID des aktuellen Ziels nicht erreichbar ist. Da Routen auf IDs basieren, waren auch Ziele betroffen, die mit Routen erstellt wurden. Außerdem wird ein Absturz behoben, der durch den Aufruf von
clearBackStack()
verursacht wurde und dasselbe zugrunde liegende Problem hatte. (I423c3, b/339908057)
Version 2.8.0-beta01
14. Mai 2024
androidx.navigation:navigation-*:2.8.0-beta01
wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.
API-Änderungen
SavedStateHandle.toRoute()
akzeptiert jetzt einentypeMap
-Parameter für benutzerdefinierte Argumenttypen. (Ie39fb, b/339026523)- Eine Test-API wurde
navigation-testing
hinzugefügt, um einSavedStateHandle
aus einem serialisierbaren Kotlin-Objekt zu erstellen. (Id4867, b/339080702)
Fehlerkorrekturen
- Es wurden Dokumente für fehlende Parameter für Navigation Kotlin DSL-Funktionen hinzugefügt. (I26a36)
Version 2.8.0-alpha08
1. Mai 2024
androidx.navigation:navigation-*:2.8.0-alpha08
wird veröffentlicht. Version 2.8.0-alpha08 enthält diese Commits.
Safe Args in Navigation Compose
- Die Arbeiten zur Unterstützung der Typsicherheit zur Kompilierzeit für Navigation Compose und Nutzer des Navigation Kotlin DSL basierend auf Kotlin Serialization sind abgeschlossen und zuvor experimentelle APIs sind jetzt stabil. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Diese Funktion verwendet Kotlin Serialization, damit Sie Ziele in Ihrem Navigationsdiagramm über typsichere Objekte und Datenklassen definieren können:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Weitere Informationen finden Sie im Blogpost Navigation Compose meet Type Safety.
Neue Funktionen
- Das
navigation-fragment-compose
-Artefakt bietet jetzt eineLocalFragment
-Komposition, die für zusammensetzbare Methoden innerhalb einesComposableFragment
lokal ist. (If35e5) NavType
bietet jetzt integrierte Unterstützung für Listen vom Typ „Int“, „String“, „Boolean“, „Float“ und „Long“. (I4b6dd, Ia914c, b/188693139)
Version 2.8.0-alpha07
17. April 2024
androidx.navigation:navigation-*:2.8.0-alpha07
wird veröffentlicht. 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. Damit können Sie Ihren Navigations-XML-Dateiencomposable
-Ziele hinzufügen. Jedescomposable
-Ziel muss als@Composable
-Methode auf oberster Ebene ohne Argumente ausgedrückt werden, deren vollqualifizierter Name alsandroid:name
-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele navigieren, wird ein enthaltendes Fragment erstellt, um die zusammensetzbaren Inhalte anzuzeigen. (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
- Die Unterstützung für Safe Args in Navigation Compose wird mit einem Ansatz auf Basis von Kotlin-Serialisierung fortgesetzt. Diese APIs sind noch nicht fertig und mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, wenn die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Version 2.8.0-alpha06
3. April 2024
androidx.navigation:navigation-*:2.8.0-alpha06
wird veröffentlicht. 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 fertig und mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, wenn die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Fehlerkorrekturen
- In
NavHost
wird jetztAlignment.TopStart
als Standardargument für „contentAlignment“ verwendet. Dadurch wird das Verhalten an die Standardeinstellung fürAnimatedContent
angepasst und einige Fälle eines unerwarteten Übergangs von der Mitte aus behoben. (I09e72, b/330111602) - Wenn Sie die Vorhersage-Geste „Zurück“ verwenden, während Sie Navigation Compose nutzen, wird die benutzerdefinierte Übergangsanimation jetzt korrekt abgeschlossen, anstatt sofort beendet zu werden.
NavHost
(I99017, b/327292110)
Version 2.8.0-alpha05
20. März 2024
androidx.navigation:navigation-*:2.8.0-alpha05
wird veröffentlicht. Version 2.8.0-alpha05 enthält diese Commits.
Neue Funktionen
- Sie können jetzt Argumente direkt an
NavGraph
sstartDestination
in derstartDestination
-Route übergeben, ohne aufdefaultValue
angewiesen zu sein. Das gilt auch für verschachtelteNavGraph
startDestinations
. (I0e0b5, b/109505019, b/188693139)
API-Änderungen
- Es wurde eine neue abstrakte Klasse
CollectionNavType<T>
hinzugefügt, eine Unterklasse vonNavType<T>
für sammlungsbasierte Argumente wie Listen, Arrays und Maps. (Ic6d63, b/188693139) - Alle Standard-
NavType
-Arrays (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
undStringArrayType
) haben jetzt den TypCollectionNavType
(Idcf79, b/188693139). NavType
bietet jetzt eine neue offenevalueEquals
API, mit der ermittelt werden kann, ob zwei Werte desselben Typs gleich sind. (I6cb97, b/327229511)
Fehlerkorrekturen
- Bei Abfrageparametern in Deeplinks sind jetzt Werte in Form von geschweiften Klammern um den Argumentnamen (z.B.
{argName}
) als gültige Werte für stringbasierteNavTypes
zulässig. Damit wird ein Problem behoben, bei dem ein solcher Wert für alle Typen als ungültig oder als fehlender Wert betrachtet wurde. (I18302, b/327274038) NavController
-Funktionen, die Routen wienavigate
oderpopBackStack
unterstützen, können jetzt Routen mit Argumenten des Typs „Array“NavTypes
richtig abgleichen. (Iea805, b/327229511)
Version 2.8.0-alpha04
6. März 2024
androidx.navigation:navigation-*:2.8.0-alpha04
wird veröffentlicht. 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 als Teil der Initialisierung für die Funktionencomposable
und/odernavigation
definieren. (I91062, b/296912651)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
NavHost
in Compose Navigation den Übergang nicht richtig angezeigt hat, wenn „System Back“ ohne Geste verwendet wurde. (Iceeae, b/325998468)
Version 2.8.0-alpha03
21. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha03
wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
API-Änderungen
NavBackStackEntry.savedStateHandle
ist jetzt als@MainThread
markiert, da darin Code verwendet wird, der ohnehin im Hauptthread ausgeführt werden muss. (Ibb988, b/299523245)
Fehlerkorrekturen
- Ein Problem in Navigation wurde behoben, das dazu führte, dass
NavGraph
-ViewModels zu frühDESTROYED
wurden, weil dieViewModel
des zugehörigen Eintrags nicht Teil des gespeicherten Status war. (Ib6bb7, b/317581849)
Abhängigkeitsupdate
- Navigation Compose 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 veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Navigation Compose unterstützt jetzt die vorhersagende In-App-Zurück-Funktion über die neuen
SeekableTransitionState
-APIs aus compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Transition aufrufen, bevor Sie die Transaktion mit der Geste „Abgeschlossen“ bestätigen oder abbrechen. (I8b8e9)
Version 2.8.0-alpha01
24. Januar 2024
androidx.navigation:navigation-*:2.8.0-alpha01
wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit dem
BackStackState
-Leck wurde behoben. Wenn mehreresaveState
-Aufrufe für ein Ziel erfolgen, werden mehrere Status gespeichert, aber nur der erste kann wiederhergestellt werden. (I598b0, b/309559751) - Ein Problem wurde behoben, bei dem Argumente, die keine Strings sind, nicht richtig angezeigt wurden, wenn die Titel von App-Leisten mit den
NavigationUI
-Helfern ausgefüllt wurden. (#636, b/316676794)
Abhängigkeitsupdate
- Navigation Compose hängt jetzt von Compose
1.7.0-alpha01
ab. Damit wird ein Problem behoben, das eine unerwartete Skalierungsanimation verursachen konnte. (b/297258205)
Externe Beiträge
- Vielen Dank an SimonMarquis, der das Anzeigeproblem für Nicht-String-Argumente bei der Verwendung der
NavigationUI
-Helfer zum Festlegen des Titels von App-Leisten behoben hat.
Version 2.7.7
Version 2.7.7
7. Februar 2024
androidx.navigation:navigation-*:2.7.7
wird veröffentlicht. Version 2.7.7 enthält diese Commits.
Fehlerkorrekturen
- Backport von Navigation
2.8.0-alpha01
: Es wurde einBackStackState
-Leck behoben, bei dem mehreresaveState()
-Aufrufe für ein einzelnesNavBackStackEntry
dazu führten, dass mehrere Zustände gespeichert wurden, aber nur der erste gespeicherte Zustand wiederhergestellt werden konnte. (I598b0, b/309559751) - Backport von Navigation
2.8.0-alpha01
: Ein Problem wurde behoben, bei dem Nicht-String-Argumente nicht richtig angezeigt wurden, wenn die Titel von App-Leisten mit denNavigationUI
-Helfern ausgefüllt wurden. (#636, b/316676794)
Externe Beiträge
- Vielen Dank an SimonMarquis, der das Anzeigeproblem für Nicht-String-Argumente bei der Verwendung der
NavigationUI
-Helfer zum Festlegen des Titels von App-Leisten behoben hat.
Version 2.7.6
Version 2.7.6
13. Dezember 2023
androidx.navigation:navigation-*:2.7.6
wird veröffentlicht. Version 2.7.6 enthält diese Commits.
Fehlerkorrekturen
- Die Funktion
NavGraph
equals()
berücksichtigt jetzt korrekt die Knoten des anderen Diagramms anstelle nur des aufrufenden Diagramms. So wird dafür gesorgt, dass Diagramme mit Knoten mit unterschiedlichen IDs nicht mehr als gleich betrachtet werden (I401cb, b/311414915).
Version 2.7.5
Version 2.7.5
1. November 2023
androidx.navigation:navigation-*:2.7.5
wird veröffentlicht. Version 2.7.5 enthält diese Commits.
Leistungsverbesserungen
- Die Leistung beim Vergleichen von zwei Grafiken wurde erheblich verbessert (sowohl in Bezug auf die Zeit als auch auf die Anzahl der Zuweisungen). Das bedeutet, dass Aufrufe wie
setGraph
, bei denen der neue Graph intern mit dem vorhandenen verglichen wird, viel schneller sind und weniger übersprungene Frames zur Folge haben. Vielen Dank an Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62) - Mit
NavHost
wird das Startziel jetzt im ersten Kompositionsdurchlauf gerendert. Es muss nicht mehr auf den zweiten Durchlauf gewartet werden, um den aktualisierten Status zu lesen. (I439a7, b/304852206)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem der Backstack geleert wurde, wenn Sie
setGraph
mit genau demselben Diagramm mehr als einmal aufgerufen haben, sofern im Diagramm ein Zielvorhaben mit einer Aktion vorhanden war, die zwei Zielvorhaben verknüpft hat. (Ieaed7) - Dialogfelder, die schnell nacheinander aufgerufen und geschlossen wurden, werden nicht mehr in der Liste der
NavController.visibleEntries
angezeigt. (I67586, b/287969970) - Wenn ein Eintrag entfernt wird und danach eine Konfigurationsänderung erfolgt, wird der
ViewModel
des Eintrags jetzt richtig gelöscht, wennsaveState
„false“ ist. (Idf242, b/298164648) - Ein Problem wurde behoben, bei dem
NavController
denselben Deeplink mehrmals verarbeiten konnte, wenn der Backstack vor einer Konfigurationsänderung oder einem Aufruf vonsetGraph
vollständig leer war, und zwar nur, wenn für den eingehenden Intent das FlagFLAG_ACTIVITY_NEW_TASK
festgelegt war. (I73c7f)
Abhängigkeitsupdates
- Die Navigation mit Fragmenten hängt jetzt von Fragment 1.6.2 ab. Damit wird 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 veröffentlicht. Version 2.7.4 enthält diese Commits.
Neue Funktionen
- Unterstützung für
popUpTo
hinzugefügt, um Routen mit Argumenten zu verwenden, damit zu einem bestimmten Eintrag zurückgekehrt werden kann, der genau diese Argumente verwendet. Dies entspricht der Unterstützung inpopBackStack
. (I731f4, b/299255572)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Unterbrechen einer Navigation mit einer anderen Navigation mit
popUpTo
zum Absturz vonFragmentNavigator
führte. (I3c848, b/301887045) - Ein Problem wurde behoben, bei dem die
currentDestination
durch das Zurückgehen im System nicht richtig aktualisiert wurde, um dem angezeigten Fragment zu entsprechen. (Id0d6c, b/289877514) - Der
DialogFragment
-Lebenszyklus wechselt jetzt ordnungsgemäß in den StatusRESUMED
, wenn das darüber befindliche Dialogfeld geschlossen wird. (I88f0d, b/301811387)
Version 2.7.3
Version 2.7.3
20. September 2023
androidx.navigation:navigation-*:2.7.3
wird veröffentlicht. Version 2.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem in der Navigation mit Fragmenten wurde behoben, das dazu geführt hat, dass die Liste
visibleEntries
falsche Einträge enthielt. (I5caa9, b/288520638) - Es wurde ein Problem behoben, das dazu geführt hat, dass das Ziel des schwebenden Fensters (z. B.
Dialogs
,Bottomsheets
usw.) nie einenRESUMED
-Lifecycle-Callback erhalten hat. (I3b866, b/287505132)
Version 2.7.2
Version 2.7.2
6. September 2023
androidx.navigation:navigation-*:2.7.2
wird veröffentlicht. Version 2.7.2 enthält diese Commits.
Fehlerkorrekturen
- Die Navigation hängt jetzt von Lifecycle
2.6.2
ab. Dadurch wird eine Interaktion zwischenrememberSaveable
undNavHost
von Navigation Compose behoben, die dazu geführt hat, dass derrememberSaveable
-Zustand von Zielen und alleViewModel
-eigenenSavedStateHandle
-Instanzen nach dem Beenden und Neuerstellen des Prozesses nicht richtig wiederhergestellt wurden. (b/298059596, b/289436035) - Es wurde ein Problem behoben, bei dem mehrere Dialogfelder in Navigation Compose gleichzeitig angezeigt wurden und die teilweise verdeckten Dialogfelder (z.B. nicht das oberste Dialogfeld) sich im Lebenszyklusstatus
CREATED
anstatt im StatusSTARTED
befanden. (aosp/2728520, b/289257213) - Ein Problem wurde behoben, bei dem beim gleichzeitigen Anzeigen mehrerer Dialogfelder in Navigation Compose das Schließen des obersten Dialogfelds dazu führte, dass das neue oberste Dialogfeld im Lebenszyklusstatus
STARTED
hängen blieb, anstatt korrekt zuRESUMED
zu wechseln. (aosp/2629401, b/286371387) - Bei Navigation Safe Args wird die Aufgabe nicht mehr sofort instanziiert, wenn sie nicht tatsächlich ausgeführt wird. (I0e385, b/260322841)
Abhängigkeitsupdate
- Navigation Compose hängt jetzt von Compose 1.5.1 ab.
Version 2.7.1
Version 2.7.1
23. August 2023
androidx.navigation:navigation-*:2.7.1
wird veröffentlicht. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem in Navigation mit Compose behoben, bei dem beim Zugriff auf eine
Lifecycle.State.DESTROYED
ViewModel
mit einerScaffold
ein Fehler auftreten konnte. (I1dc11, b/268422136)
Version 2.7.0
Version 2.7.0
9. August 2023
androidx.navigation:navigation-*:2.7.0
wird veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
Animationen von Accompanist
Da AnimatedContent
jetzt stabil ist, konnten wir den Code aus Accompanist Navigation Animation wieder in Navigation Compose verschieben.
Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost
verfügbar waren, direkt in NavHost
unterstützt werden.
Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen. Wir werden die Bibliothek bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose bereitstellen. Diese Anleitung ist das Gegenteil der Migrationsanleitung. Wenn Sie bereits die aktuelle Accompanist-Alphaversion (0.31.2-alpha
) verwenden, sind keine weiteren API-Änderungen erforderlich. (b/197140101)
Fehlerkorrekturen
- „NavHost“ in Navigation Compose fängt jetzt System-Back-Aufrufe auch dann richtig ab, wenn die Aktivität beendet und wieder aufgenommen wurde. (Icb6de, b/279118447)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von Compose
1.5.0
ab, nicht mehr von1.1.0
.
Version 2.7.0-rc01
26. Juli 2023
androidx.navigation:navigation-*:2.7.0-rc01
wird veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die Lambdas
EnterTransition
undExitTransition
, die als Teil vonNavHost
erstellt wurden, möglicherweise im Arbeitsspeicher verblieben sind, auch nachdemNavHost
aus der Komposition entfernt wurde. (I893d0)
Bekannte Probleme
- In Navigation 2.6.x gibt es ein Problem, das beim Navigieren mit „popUpTo“ einen
IllegalArgumentException
verursachen kann. Möglicherweise lässt sich diese Ausnahme vermeiden, indem Sie Ihr Diagramm umstrukturieren. Hier finden Sie entsprechende Hinweise. (b/287133013)
Version 2.7.0-beta02
28. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta02
wird veröffentlicht. Version 2.7.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Navigation Compose hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, die mit der Option
popUpTo
navigieren.(/Ib1c3a, b/285153947)
Version 2.7.0-beta01
7. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta01
wird veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
Fehlerkorrekturen
NavHost
in Navigation Compose fängt jetzt auch dann System-Back-Aufrufe ab, wennActivity
STOPPED
undRESUMED
wurde. (Icb6de, b/279118447)
Version 2.7.0-alpha01
24. Mai 2023
androidx.navigation:navigation-*:2.7.0-alpha01
wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Animationen von Accompanist
Da AnimatedContent
jetzt stabil ist, konnten wir den Code aus Accompanist Navigation Animation wieder in Navigation Compose verschieben.
Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost
verfügbar waren, direkt in NavHost
unterstützt werden.
Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen. Wir werden die Bibliothek bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose bereitstellen. Diese Anleitung ist das Gegenteil der Migrationsanleitung. Wenn Sie bereits die aktuelle Accompanist-Alphaversion (0.31.2-alpha
) verwenden, sind keine weiteren API-Änderungen erforderlich. (b/197140101)
Fehlerkorrekturen
- Navigation
2.6.0-rc02
: Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn mitpopUpTo
navigiert und ein Fragment aus dem Backstack entfernt wurde, ohne seine Ansicht neu zu erstellen, funktionierte die System-Zurück-Schaltfläche nicht mehr. (Ieb8d4, b/281726455)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von Compose
1.5.0-beta01
ab.
Version 2.6.0
Version 2.6.0
7. Juni 2023
androidx.navigation:navigation-*:2.6.0
wird veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen an der Navigation seit Version 2.5.0
- Die
arguments
vonNavBackStackEntry
und die an einOnDestinationChangedListener
übergebenenarguments
sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf diearguments
- oder andereOnDestinationChangedListener
-Instanzen 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 jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren.- Benutzerdefinierte Unterklassen von
NavType
können jetztserializeAsValue
überschreiben, um einen Wert in einen String zu serialisieren. So können sowohl die Serialisierung als auch die Deserialisierung (überparseValue
) vollständig in der KlasseNavType
gekapselt werden.StringType
überschreibt diese Methode jetzt, umUri.encode
für den angegebenenString
aufzurufen.
Wichtige Änderungen an Navigation Compose seit Version 2.5.0
- Wenn Sie eine Composable-Funktion mit
NavHost
in der Vorschau ansehen, wird jetzt standardmäßig derstartDestination
des NavGraph angezeigt. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
undNavController.clearBackStack(route)
unterstützen jetzt Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen.- Wenn Sie versuchen, ein leeres
NavDeepLink
mit demnavDeepLink
-Kotlin-DSL zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink eine 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 System-Zurück-Schaltfläche nicht mehr ab. So kann das zugrunde liegendeFragmentManager
die System-Zurück-Funktion verarbeiten. So kann Fragment1.7.0-alpha01
und höher eine In-App-Animation für die vorhersagende Zurück-Geste auf Android U-Geräten bereitstellen.- Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell ein
FragmentTransaction
auszuführen, das ein Fragment zum Backstack vonFragmentManager
hinzufügt, wird jetzt eineIllegalArgumentException
ausgelöst. Sie sollten Fragmente immer über dienavigate()
API hinzufügen. - Wenn Sie den genauen String
${applicationId}
als Platzhalter in den Attributenapp:data
undapp:dataPattern
des Aktivitätselements einer Navigations-XML-Datei verwenden, wird der Platzhalter beim Inflating automatisch mit dempackageName
des Kontexts gefüllt. - Das
FragmentNavigator
verwendet jetzt die Übergangs-APIs, wennNavBackStackEntries
aufgerufen und wieder geschlossen werden. Das bedeutet, dassNavBackStackEntry
Lifecycle
jetzt wartet, bis die Ein- und Ausblendungseffekte des Fragments abgeschlossen sind, bevor die endgültigeLifecycle.State
verschoben wird. - Das
DialogFragmentNavigator
verwendet jetzt die Übergangs-APIs, wennNavBackStackEntries
aufgerufen und wieder geschlossen werden. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt darauf wartet, dass dieDialogFragment
Lifecycle
zuDESTROYED
wechselt, bevor sie selbst zuDESTROYED
wechselt. - Mit
NavHostFragment
können Sie jetzt dieNavController
abrufen, sobald dieNavHostFragment
an dieFragmentManager
angehängt wird, und nicht erst nachonCreate()
. - Die Unterstützung von Navigations-Apps für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab.
- Navigation Safe Args hängt jetzt vom Android-Gradle-Plug-in in Version 7.3.0 ab. Das bedeutet, dass sie jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist.
Wichtige Änderungen an NavigationUI seit Version 2.5.0
- Wenn Sie die ID eines Navigationsgraphen an
AppBarConfiguration
übergeben (z. B. über einMenu
), wird jetzt nur noch das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene betrachtet. Bisher wurde fälschlicherweise jedes Ziel im Graphen als Ziel der obersten Ebene markiert.NavigationUI
Das Verhalten beim Übergeben der ID eines einzelnen Ziels bleibt unverändert. Dieselbe Funktion ist über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
auch für Ihren eigenen Code verfügbar. - Bei den
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste werden jetztR.string
-Werte fürReferenceType
-Argumente, die in Ihremandroid:label
gefunden werden, in ihre String-Werte geparst, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. NavigationUI
stellt jetzt Protokolle bereit, wenn die Navigation über eine ausgewählteMenuItem
fehlschlägt.
Version 2.6.0-rc02
24. Mai 2023
androidx.navigation:navigation-*:2.6.0-rc02
wird veröffentlicht. Version 2.6.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn mit
popUpTo
navigiert und ein Fragment aus dem Backstack entfernt wurde, ohne seine Ansicht neu zu erstellen, funktionierte die System-Zurück-Schaltfläche nicht mehr. (Ieb8d4, b/281726455)
Version 2.6.0-rc01
10. Mai 2023
androidx.navigation:navigation-*:2.6.0-rc01
wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem in der Navigation mit Fragmenten wurde behoben. Wenn ein Fragment über „navigate“ mit
popUpTo
imonResume()
-Lifecycle-Callback entfernt wurde, wurde einIllegalStateException
ausgelöst. (I21884, b/279644470)
Version 2.6.0-beta01
19. April 2023
androidx.navigation:navigation-*:2.6.0-beta01
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Neue Funktionen
NavBackStackEntry
bietet jetzt eine benutzerdefiniertetoString
-Implementierung. (Iff00b)
Fehlerkorrekturen
- Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell ein
FragmentTransaction
auszuführen, das ein Fragment zum Backstack vonFragmentManager
hinzufügt, wird jetzt eineIllegalArgumentException
ausgelöst. Sie sollten Fragmente immer über dienavigate()
API hinzufügen. (I6d38e) - Wenn in demselben Frame ein
navigate
-Vorgang, der einen Eintrag hinzufügt, und einpopBackStack
-Vorgang, der ihn entfernt, vorhanden sind, wird der resultierende oberste Eintrag im Backstack jetzt immer an dieRESUMED
Lifecycle.State
zurückgegeben. (Id8067, b/276495952)
Version 2.6.0-alpha09
5. April 2023
androidx.navigation:navigation-*:2.6.0-alpha09
wird veröffentlicht. Version 2.6.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Korrekturen an den Prüfungen für ungültige Routen vorgenommen. Wenn ein
NavDestination
nicht nullableNavArgument
enthält, muss die Route dieses Ziels Platzhalter für Argumente mit demselben Namen wie das nicht nullableNavArgument
enthalten. (Ic62bf, b/274697949) - Deeplink-Navigationen, die auf
Action/MimeType
basieren, schlagen jetzt fehl, wenn für den Navigationsvorgang ein nicht nullableNavArgument
fehlt, das für dieNavDestination
erforderlich ist, mit derAction/MimeType
übereinstimmt. (Ibfa17, b/271777424) - Wenn
NavController
ein Diagramm mit derselben Route und denselben Zielen wie das vorherige Diagramm festlegt, werden die aktuellen Diagrammknoten und die Ziele des Backstacks jetzt ordnungsgemäß durch neue Instanzen ersetzt. Dadurch wird ein Absturz behoben, der beim Verwenden vononLaunchSingleTop
ohne Speichern des Status in Navigation Compose auftritt. Außerdem wird ein Fehler behoben, bei dem beim Navigieren zu Zielen, die dem Stammgraphen zugeordnet sind, ein falscher Backstack erstellt wurde. (I5bc58, b/275258161, b/275407804)
Version 2.6.0-alpha08
22. März 2023
androidx.navigation:navigation-*:2.6.0-alpha08
wird veröffentlicht. Version 2.6.0-alpha08 enthält diese Commits.
Neue Funktionen
- Mit
NavHostFragment
können Sie jetzt dieNavController
abrufen, sobald dieNavHostFragment
an dieFragmentManager
angehängt wird, und nicht erst nachonCreate()
. (Ic6382, b/220186282)
Fehlerkorrekturen
- Ein
NullPointerException
wurde behoben, das beim Entfernen eines verschachtelten Diagramms mit einem Argument, das nicht null sein darf, aufgetreten ist. (6b3581, b/249988437) - Wenn Sie nach einer Navigation mit
popUpTo
die System-Zurück-Funktion verwenden, wird der Status vonNavController
auf den richtigen Eintrag gesetzt. (I3a8ec, b/270447657) - Einträge werden jetzt korrekt aus dem Backstack entfernt, wenn der Backstack über die System-Zurück-Taste oder
popBackStack()
entfernt wird, unabhängig davon, ob für das Fragment Effekte verwendet werden.FragmentNavigator
(I81bdf) - Das Hinzufügen von Fragmenten zum
FragmentNavigator
-FragmentManager
ohne Verwendung der Navigation führt nicht mehr zu einem Absturz. (b17204, b/274167493)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von Lifecycle
2.6.1
ab. (586fe7) - Die Navigation hängt jetzt von SavedState
1.2.1
ab. (078e4e) - Die Navigation hängt jetzt von ProfileInstaller
1.3.0
ab. (512f0c)
Version 2.6.0-alpha07
8. März 2023
androidx.navigation:navigation-*:2.6.0-alpha07
wird veröffentlicht. Version 2.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Die API-Varianten
getBackStackEntry
,popBackStack
undclearBackStack
, die Routen verwenden, akzeptieren jetzt Routenmuster mit Argumenten und Abfrageparametern, die Nullwerte zulassen (I22294, b/269302500). - Ein Problem wurde behoben, bei dem durch Aufrufen von
clearBackStack()
überNavController
der gespeicherte Status im Fragmentmanager, der mit dem gelöschten Backstack verknüpft ist, nicht gelöscht wurde. (Ic1cce, b/271190202) - Ein Regressionsfehler in Version 2.6.0-alpha06 wurde behoben, der dazu führte, dass bei der Verwendung der System-Zurück-Geste zwischen Tabs das falsche
MenuItem
imBottomNavigationView
hervorgehoben wurde. (I634f6, b/270447657) - Ein Regressionsfehler in Version 2.6.0-alpha06 wurde behoben, der dazu führte, dass
NavBackStackEntry
s bei Verwendung vonAnimation
s nicht in den Status „RESUMED“ versetzt wurden. (Ib3589, b/269646882)
Version 2.6.0-alpha06
22. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha06
wird veröffentlicht. Version 2.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Wenn Sie eine Composable-Funktion mit
NavHost
in der Vorschau ansehen, wird jetzt standardmäßig derstartDestination
des NavGraph angezeigt. (I2b89f)
API-Änderungen
- Alle
NavController
-navigate
-Überladungen sind jetzt mit@MainThread
annotiert, damit sie im Hauptthread aufgerufen werden. (I2c0b0, b/263427111)
Fehlerkorrekturen
- Ein Absturz beim Navigieren mit der dynamischen Fragmentnavigation wurde behoben. (I3ee29, b/268360479)
- Ein Fehler wurde behoben, durch den die untere Leiste beim Navigieren zu einem anderen Fragment über die System-Zurück-Schaltfläche nicht auf das richtige ausgewählte Element aktualisiert wurde (If559f, b/269044426).
Bekannte Probleme
- Wenn Sie die Navigation mit Fragmenten verwenden, erreicht der Lebenszyklus von
NavBackStackEntry
nichtRESUMED
, wenn SieAnimation
-APIs verwenden. (b/269646882) - Wenn Sie die Navigation mit Fragmenten und
BottomNavigation
verwenden und versuchen, einen Backstack mit mehreren Einträgen wiederherzustellen, wirdBottomMenuItem
nicht richtig aktualisiert. (b/270447657) - Wenn Sie die Navigation mit Fragmenten verwenden, wird nach dem Wiederherstellen des Status nicht
DESTROYED
fürNavBackStackEntry
Lifecycle
aufgerufen, wenn das zugehörige FragmentDESTROYED
ist . (b/270610768)
Version 2.6.0-alpha05
8. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha05
wird veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.
Neue Funktionen
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
undNavController.clearBackStack(route)
unterstützen jetzt Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen. (Iebd28, Ic678c, I3b37b, b/257514373)- Das
FragmentNavigator
verwendet jetzt die Übergangs-APIs, wennNavBackStackEntries
aufgerufen und wieder geschlossen werden. Das bedeutet, dassNavBackStackEntry
Lifecycle
jetzt wartet, bis die Ein- und Ausblendungseffekte des Fragments abgeschlossen sind, bevor die endgültigeLifecycle.State
verschoben wird. (I3cb19, b/238686802) - Das
DialogFragmentNavigator
verwendet jetzt die Übergangs-APIs, wennNavBackStackEntries
aufgerufen und wieder geschlossen werden. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt darauf wartet, dass dieDialogFragment
Lifecycle
zuDESTROYED
wechselt, bevor sie selbst zuDESTROYED
wechselt. (I53ee5, b/261213893)
API-Änderungen
NavigatorState
bietet jetzt dieprepareForTransition
API, mit derNavigator
sNavBackStackEntries
inLifecycle.State
s verschieben können. (I42c21, b/238686802)- Sie können jetzt über eine
backstack
-Property auf den Backstack zugreifen, der mit einemNavGraphNavigator
oder einemComposeNavigator
verknüpft ist.ComposeNavigator
stellt jetzt auch denonTransitionComplete()
-Callback zur Verfügung, um einNavBackStackEntry
, das einen Navigations- oderpopBackStack
-Vorgang ausgeführt hat, als abgeschlossen zu markieren. (I02062, I718db, b/257519195)
Fehlerkorrekturen
- Der Navigator-Status wird jetzt nicht mehr ausgeführt, wenn die
push/popWithTransition
-APIs verwendet werden und der Eintrag bereits verarbeitet wird. (Iadbfa, b/261213893) - Wenn Sie
launchSingleTop
mit einem verschachteltenNavGraph
verwenden, werden alle Ziele vom ursprünglichen Ziel bis zumstartDestination
nur ordnungsgemäß oben im Backstack hinzugefügt. (Id4bea, b/253256629) - Die Navigation ersetzt jetzt die
DialogFragment
-Instanz korrekt, wenn mit dem FlaglaunchSingleTop
auf „true“ gesetzt wird. (I45b5a, b/149572817) - Navigation SafeArgs führt nicht mehr zu einem Kompilierungsfehler, 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 veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
- Benutzerdefinierte Unterklassen von
NavType
können jetztserializeAsValue
überschreiben, um einen Wert in einen String zu serialisieren. So können sowohl die Serialisierung als auch die Deserialisierung (überparseValue
) vollständig in der KlasseNavType
gekapselt werden.StringType
überschreibt diese Methode jetzt, umUri.encode
für den angegebenenString
aufzurufen. (Ie5213, b/247637434) NavigationUI
stellt jetzt Protokolle bereit, wenn die Navigation über eine ausgewählteMenuItem
fehlschlägt. (I2af5a, b/247730357)
Fehlerkorrekturen
- Navigations-Deeplinks werden jetzt verzögert und nicht bei der Initialisierung des Diagramms geparst. Das kann die App-Leistung beim Start verbessern. (Iab0ab)
- Ein Absturz wurde behoben, der durch das Navigieren nach oben nach dem Deeplinking zu einem Ziel mit Null-Standardargumenten verursacht wurde. (I51c24, b/243183636)
Abhängigkeitsupdate
- Die Unterstützung von Navigations-Apps für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. (Ib4ddc)
- Navigation Safe Args hängt jetzt vom Android-Gradle-Plug-in in Version 7.3.0 ab. Das bedeutet, dass sie 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 veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ab Navigation
2.5.3
:NavHost
wird nicht mehr zu einemNoSuchElementException
führen, wenn kein Ziel für die Komposition vonCrossfade
verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416) - Navigation
2.5.3
: Ein Problem wurde behoben, durch das der gespeicherte Compose-Status (z.B. Verwendungen vonrememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Backstack entfernt wurde. (I64949)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von Fragment
1.5.4
ab. (Icd424)
Version 2.6.0-alpha02
5. Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha02
wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Geändertes Verhalten
- Wenn Sie die ID eines Navigationsgraphen an
AppBarConfiguration
übergeben (z. B. über einMenu
), wird jetzt nur noch das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene betrachtet. Bisher wurde fälschlicherweise jedes Ziel im Graphen als Ziel der obersten Ebene markiert.NavigationUI
Das Verhalten beim Übergeben der ID eines einzelnen Ziels bleibt unverändert. Dieselbe Funktion ist über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
auch für Ihren eigenen Code verfügbar. (Ie936e, b/238496771)
Fehlerkorrekturen
- Die Komponente
navigation:navigation-fragment
hängt jetzt von der Fragment-Version1.5.2
ab. (I00ba4) - Das ausgewählte Menüelement wird nicht mehr aktualisiert, wenn Sie zu einem
FloatingWindow
-Ziel wie einem Dialogfeld navigieren. (I4cde8, b/240308330)
Version 2.6.0-alpha01
7. September 2022
androidx.navigation:navigation-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Bei den
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste werden jetztR.string
-Werte fürReferenceType
-Argumente, die in Ihremandroid:label
gefunden werden, in ihre String-Werte geparst, 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 jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren. (Id68c3, b/209977108)- Wenn Sie den genauen String
${applicationId}
als Platzhalter in den Attributenapp:data
undapp:dataPattern
des Aktivitätselements einer Navigations-XML-Datei verwenden, wird der Platzhalter beim Inflating automatisch mit dempackageName
des Kontexts gefüllt. (Iaabde, b/234223561) - Wenn Sie versuchen, ein leeres
NavDeepLink
mit demnavDeepLink
-Kotlin-DSL zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink eine URI, eine Aktion und/oder einen Mime-Typ benötigt, um gültig zu sein. (I08d2f, b/154038883)
API-Änderungen
- Die neue Erweiterungsfunktion
NavDestination
wurde hinzugefügt, um dynamische Labels mit Argumenten im Formatandroid:label="{arg}"
in einen String zu parsen. UnterstütztReferenceType
-Argumente, indemR.string
-Werte in ihre String-Werte geparst werden. (I07d89, b/236269380)
Geändertes Verhalten
arguments
von NavBackStackEntry und das an einOnDestinationChangedListener
übergebenearguments
sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Navigieren zum Ziel erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf diearguments
- oder andereOnDestinationChangedListener
-Instanzen berücksichtigt werden. (I676f5)
Fehlerkorrekturen
- Navigation
2.5.2
: Bei der dynamischen Navigation wird jetzt versucht, Aktivitätsziele aus anderen Modulen zu installieren, bevor zu ihnen navigiert wird. (Ia2c16, b/240292838) - Navigation
2.5.2
: Die Navigation ersetzt jetzt die Fragment-Instanz korrekt, wenn zur selben Ziel-ID navigiert wird und das FlaglaunchSingleTop
auf „true“ gesetzt ist. (I5a2f1, b/237374580) - Navigation
2.5.2
: Der FehlerIllegalStateException
wurde behoben, der beim Navigieren zu einem doppelt verschachtelten Diagramm aufgetreten ist, das ein übergeordnetes Element mit einem neuen Startziel hat, das im Pop-up angezeigt wird. (I9f7cb, b/243778589)
Version 2.5
Version 2.5.3
24. Oktober 2022
androidx.navigation:navigation-*:2.5.3
wird veröffentlicht. Version 2.5.3 enthält diese Commits.
Fehlerkorrekturen
NavHost
führt nicht mehr zu einemNoSuchElementException
, wenn kein Ziel für die Erstellung desCrossfade
verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416)- Ein Problem wurde behoben, bei dem der gespeicherte Compose-Status (z.B. Verwendungen von
rememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Backstack entfernt wurde. (I64949)
Version 2.5.2
7. September 2022
androidx.navigation:navigation-*:2.5.2
wird veröffentlicht. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Bei der dynamischen Navigation wird jetzt versucht, Aktivitätsziele aus anderen Modulen zu installieren, bevor zu ihnen navigiert wird. (Ia2c16, b/240292838)
- Bei der Navigation wird die Fragment-Instanz jetzt richtig ersetzt, wenn zur selben Zieladresse navigiert und das Flag
launchSingleTop
auf „true“ gesetzt wird. (I5a2f1, b/237374580) - Der Fehler
IllegalStateException
wurde behoben, der beim Navigieren zu einem doppelt verschachtelten Diagramm auftrat, das ein übergeordnetes Element mit einem neuen Startziel teilt. (I9f7cb, b/243778589)
Abhängigkeitsupdate
- 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 veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
Navigation Safe Args
führt nicht mehr zu Deprecation-Warnungen in generierten Klassen, wenn benutzerdefinierte Argumenttypen verwendet werden, die in einemBundle
gespeichert sind. (Id86ed, b/237725966)
Abhängigkeitsupdates
- Die Navigationsbibliothek hängt jetzt von Lifecycle
2.5.1
ab. (Ib4451) - Die Navigationsbibliothek hängt jetzt von Activity
1.5.1
ab. (I3efe8) - Die Navigationsbibliothek hängt jetzt von Fragment
1.5.1
ab. (I56177)
Version 2.5.0
29. Juni 2022
androidx.navigation:navigation-*:2.5.0
wird veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- CreationExtras-Integration:
Navigation
kann jetzt über Lifecycle2.5.0
-CreationExtras
ein zustandslosesViewModelProvider.Factory
bereitstellen.
Navigation SafeArgs
- In
Navigation Safe Args
wurde dieAndroid Gradle Plugin
-Abhängigkeit auf7.0.4
aktualisiert. Dadurch wird die Kompatibilität für AGP-Versionen vor7.0
eingestellt. - Es wird jetzt unterstützt, das Attribut „namespace“ in build.gradle anstelle von „applicationId“ zu verwenden.
Weitere Änderungen
- Die
visibleEntries
API ist nicht mehr experimentell und bietet eine Funktion zum Abrufen aller Einträge, deren Zielort gemäß derNavController
derzeit sichtbar ist.
Version 2.5.0-rc02
15. Juni 2022
androidx.navigation:navigation-*:2.5.0-rc02
wird veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz, der durch schnelles Wechseln zwischen unteren Zielen bei Verwendung von Navigation Compose
NavHost
verursacht wurde, wurde behoben. (I3979a, b/234054916) Navigation SafeArgs
stürzt nicht mehr ab, wenn einapplicationIdSuffix
und ein Namespace ohneapplicationId
oder mit einem anderenapplicationId
verwendet werden. (I754b1, b/233119646)NavArgument
hat jetzt 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 veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn
<deeplink>
-Elemente in Ihrernavigation.xml
-Datei in<activity>
-Elemente eingefügt werden.(Ic15a5, b/178403185)
Fehlerkorrekturen
- Zusammensetzbare Bereiche in
NavHost
undDialogHost
werden jetzt in der erwarteten Reihenfolge verworfen, d.h. innere zusammensetzbare Bereiche werden vor äußeren zusammensetzbaren Bereichen verworfen. (I157e6) - Navigation SafeArgs verwendet jetzt
PathSensitivity.RELATIVE
inArgumentsGenerationTask
, um die Verschiebbarkeit des Cache zu ermöglichen. Das bedeutet, dass der Cacheeintrag jetzt von einem CI-Build für einen lokalen Build wiederverwendet werden kann. (I5f67c, b/173420454) - Die Lint-Regel
UnrememberedGetBackStackEntryDetector
wurde aktualisiert, um sicherzustellen, dass beimremember
-Aufruf, der den Aufruf vongetBackStackEntry()
umgibt, auch einNavBackStackEntry
-Objekt als Schlüssel übergeben wird.(Ib7081, b/227382831)
Version 2.5.0-beta01
20. April 2022
androidx.navigation:navigation-*:2.5.0-beta01
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
Fehlerkorrekturen
DialogNavigator
verwendet jetztpopWithTransition
, wenn eindismiss()
-Aufruf ausgeführt wird. Damit wird ein Race-Bedingungsproblem behoben, das bei Verwendung vonViewModel
innerhalb des Zielsdialog
auftreten konnte und beim Schließen des Dialogfelds durch Drücken der System-Zurück-Taste oder durch Tippen außerhalb des Dialogfelds zum Beenden einenIllegalStateException
verursachte. (Id7376, b/226552301)
Abhängigkeitsupdates
- Die Navigation hängt jetzt vom Lifecycle
2.5.0-beta01
ab. Dadurch wird einIllegalStateException
behoben, wenn einNavHost
in einem nicht primären Tab der unteren Navigation in einem anderenNavHost
verschachtelt wird, wenn mehrere Backstacks verwendet werden.
Version 2.5.0-alpha04
6. April 2022
androidx.navigation:navigation-*:2.5.0-alpha04
wird veröffentlicht. 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 zusammengestellt werden sollen. Das bedeutet, dass beim Verwenden von verschachtelten NavHosts das innereNavHost
jetzt richtig animiert wird. (I4ba2b, b/225394514) - Die von
NavController
bereitgestelltevisibleEntries
StateFlow
basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags anstelle des aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren Einträge gleich bleibt, auch wenn der Host-Lebenszyklus vonnavController
unter STARTED liegt. (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 gelten jetzt als gültige Argumente in Deeplinks. (I70a0d, b/217399862)
Navigation Safe Args
stürzt nicht mehr ab, wenn Namespaces verwendet werden und keinAndroidManifest.xml
vorhanden ist. (I17ccf, b/227229815)
Version 2.5.0-alpha03
23. Februar 2022
androidx.navigation:navigation-*:2.5.0-alpha03
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtras
anby navGraphViewModels
übergeben, um einViewModel
zu erstellen. (I29217, b/217618359)
Fehlerkorrekturen
NavDeepLinks
unterstützt jetzt codierte Zeilenumbruchzeichen, die in Routen-/Deeplink-URIs eingebettet sind. (I513d1, b/217815060)CreationExtras
funktioniert jetzt korrekt, wenn es mitNavBackStackEntries
verwendet wird, um ViewModels zu erstellen. (I69161, b/217617710)- Navigation Safe Args unterstützt jetzt die Verwendung des in
build.gradle
definierten Namespace anstelle des Pakets im AndroidManifest. (I659ef, b/217414933)
Version 2.5.0-alpha02
9. Februar 2022
androidx.navigation:navigation-*:2.5.0-alpha02
wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Über Navigation
2.4.1
: MitNavHostFragment
wird jetztOnBackPressedDispatcher
richtig festgelegt, wenn View Binding mit verschachtelten Diagrammen verwendet wird. (Ifbb51, b/214577959) - Über die Navigation
2.4.1
:NavGraph
Wenn Sie über mehrere verschachtelteNavGraph
s Deep-Linking verwenden, enthält der Backstack jetzt auch Zwischenziele. (I504c0, b/214383060)
Version 2.5.0-alpha01
26. Januar 2022
androidx.navigation:navigation-*:2.5.0-alpha01
wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
NavBackStackEntry
ist jetzt in ViewModel CreationExtras integriert, die im Rahmen von Lifecycle2.5.0-alpha01
eingeführt wurden. (Ib9fe2, b/207012490)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Zugriff auf ein
ViewModel
, das überby navGraphViewModels()
aus demonCreate()
eines Fragments erstellt wurde, mit einemIllegalStateException
fehlschlug. (I8a14d) NavDeepLink
s werden nicht mehr unnötig zweimal decodiert. Das bedeutet, dass die richtigen Argumente jetzt an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399)
Safe Args
- Safe Args hängt jetzt vom Android-Gradle-Plug-in in Version 7.0.4 ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel ist, aber jetzt mit Android Gradle-Plug-in 7.1.0 und höher. (I41c88, b/213086135, b/207670704)
Version 2.4.2
Version 2.4.2
6. April 2022
androidx.navigation:navigation-*:2.4.2
wird veröffentlicht. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Backport von Navigation
2.5.0-alpha03
:NavDeepLinks
unterstützt jetzt korrekt codierte Zeilenumbruchzeichen, die in Routen-/Deeplink-URIs eingebettet sind. (I513d1, b/217815060) - Backport von Navigation
2.5.0-alpha03
: Navigation SafeArgs unterstützt jetzt die Verwendung des inbuild.gradle
definierten Namespace anstelle des Pakets im AndroidManifest. (I659ef, b/217414933) - Backport von Navigation
2.5.0-alpha04
:Navigation Safe Args
stürzt nicht mehr ab, wenn Namespaces verwendet werden und keinAndroidManifest.xml
vorhanden ist. (I17ccf, b/227229815) - Backport von Navigation
2.5.0-alpha04
: Leere Strings werden jetzt als gültige Argumente in Deeplinks betrachtet. (I70a0d, b/217399862)
Version 2.4.1
Version 2.4.1
9. Februar 2022
androidx.navigation:navigation-*:2.4.1
wird veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Das
NavHostFragment
legt jetzt dasOnBackPressedDispatcher
bei Verwendung von View Binding mit verschachtelten Diagrammen richtig fest. (Ifbb51, b/214577959) - Beim Deeplinking über mehrere verschachtelte
NavGraph
s enthält der Backstack jetzt Zwischenziele. (I504c0, b/214383060) - Backport von Navigation
2.5.0-alpha01
: Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das überby navGraphViewModels()
erstellt wurde, über dieonCreate()
eines Fragments mit einemIllegalStateException
fehlgeschlagen ist. (I8a14d) - Backport von Navigation
2.5.0-alpha01
:NavDeepLink
s werden nicht mehr unnötig zweimal decodiert. Die korrekt decodiertenNavDeepLink
werden jetzt an das endgültige Ziel übergeben. (I31b0a, b/210711399) - Backport von Navigation
2.5.0-alpha01
: Safe Args hängt jetzt vom Android-Gradle-Plug-in in Version 7.0.4 ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel ist, aber jetzt mit Android Gradle-Plug-in 7.1.0 und höher. (I41c88, b/213086135, b/207670704)
Version 2.4.0
Version 2.4.0
26. Januar 2022
androidx.navigation:navigation-*:2.4.0
wird veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dadurch wurde die Nullable-Eigenschaft von Klassen mit Generics (z. B.
NavType
-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der-ktx
-Artefakte waren, wurden in die entsprechenden Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber leer. - Das
navigation-fragment
-Artefakt enthält jetzt eine vorgefertigte Implementierung eines zweispaltigen Layouts über die neueAbstractListDetailFragment
. In diesem Fragment wird einSlidingPaneLayout
verwendet, um ein Listenbereich (der von Ihrer Unterklasse bereitgestellt wird) und ein Detailbereich zu verwalten. Für den Detailbereich wird einNavHostFragment
verwendet, wie in unserer Beispielimplementierung zu sehen ist. - Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt einenFlow
bereit, der immer dann ausgegeben wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einerOnDestinationChangedListener
verwendet werden. - NavController bietet jetzt die Möglichkeit, über die experimentelle Eigenschaft
visibleEntries
eine Liste aller sichtbarenNavBackStackEntry
-Instanzen alsStateFlow
abzurufen. - Es ist jetzt möglich, die
NavType
-Klasse zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie das Navigationsdiagramm programmatisch erstellen, z. B. über die Kotlin-DSL für Navigationsdiagramme. Für die Navigation sind jetzt die APIs
findStartDestination()
undgetHierarchy()
verfügbar, mit denen sich eine benutzerdefinierte NavigationUI implementieren lässt.findStartDestination()
ist eine Erweiterungsfunktion fürNavGraph
, mit der das tatsächliche Startziel ermittelt wird, das angezeigt wird, wenn Sie zum Diagramm navigieren. Das gilt auch dann, wennstartDestination
selbst ein verschachteltesNavGraph
ist.getHierarchy()
ist eine Funktion fürNavDestination
, mit der geprüft werden kann, ob sich ein bestimmtes Ziel in der Hierarchie eines anderen befindet.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI
-Methoden, die einBottomNavigationView
verwendet haben, wurden aktualisiert, sodass stattdessen die in Material1.4.0
eingeführte SuperklasseNavigationBarView
verwendet wird. So können diese Methoden mit demNavigationRailView
verwendet werden.Wenn Sie ein
<action>
-Element über XML instanziieren, können für Animationsattribute Attribute verwendet werden, die mit derapp:enterAnim="?attr/transitionEnter"
-Syntax aus Ihrem Theme abgerufen werden.Safe Args generiert jetzt 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 die Kotlin-DSL
In früheren Versionen von Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen gleichgeordneten Zielen unterschied und es Ihnen ermöglichte, entweder direkt oder über eine Aktion zu diesem Ziel zu navigate()
. Das ist weiterhin gültig und nützlich, insbesondere wenn Sie Ihren Navigationsgraphen in XML definieren und automatisch generierte R.id
-Konstanten oder Safe Args verwenden können, die diese Konstanten verwenden, um Code zur Build-Zeit zu generieren. Dieses System eindeutiger Ganzzahlen erfasste jedoch nicht die semantische Bedeutung und Ausdruckskraft, die erforderlich sind, um vollständig dynamische Graphen zu unterstützen, die programmatisch zur Laufzeit über die Navigation Kotlin DSL erstellt werden.
In dieser Version wird eine neue Option eingeführt, mit der ein Ziel in einem Navigationsdiagramm anhand seines Pfads eindeutig identifiziert werden kann. Eine Route ist ein String
, das den eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin DSL-Methoden, die eine Ziel-ID verwendet haben, sind jetzt veraltet und wurden durch eine entsprechende API ersetzt, die eine Route verwendet.
Jede Route sollte als „Pfad“-Teil eines Uri
behandelt werden, das das Ziel definiert, z.B. 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 und denselben Regeln wie implizite Deeplinks folgen.
Alle NavController
-APIs, für die bisher nur eine ID erforderlich war, haben jetzt eine Überladung, für die eine Route String
erforderlich ist. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Das hat einige Auswirkungen auf die API:
- Die Kotlin-Eigenschaft
popUpTo
in der Kotlin-DSL wurde zugunsten vonpopUpToId
eingestellt. - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt.
Im Gegensatz zur Navigation nach ID folgt die Navigation nach Route denselben Regeln wie implizite Deeplinks. Sie können also direkt zu jedem Ziel in einem beliebigen verschachtelten Diagramm navigieren. Dadurch sind diese Routen in Projekten mit mehreren Modulen nutzbar, ohne dass Sie jedem Ziel explizit einen extern sichtbaren Deeplink hinzufügen müssen.
Navigation Compose
Das navigation-compose
-Artefakt bietet die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Diese Version bietet:
- Ein
NavHost
-Composable, mit dem Sie Ihren Navigationsgraphen über eine Kotlin-DSL erstellen können. Dabei werdencomposable
- unddialog
-Ziele sowie optionale Navigators wie die aus Accompanist Navigation Material unterstützt. - Obligatorische Unterstützung für das Überblenden zwischen Zielen. Mit Accompanist Navigation Animation können Sie die Ein- und Ausblendeübergänge mithilfe experimenteller Compose-APIs steuern.
- Festlegen des Bereichs eines
Lifecycle
für jedes zusammensetzbare Ziel. Jedes Ziel erreicht den StatusRESUMED
nur, wenn alle eingehenden Übergänge abgeschlossen sind, und wechselt sofort zuSTARTED
, wenn ausgehende Übergänge beginnen. So können Sie alleIllegalStateException
- und Multitouch-Probleme vermeiden, indem Sie einennavigate
-Aufruf nur auslösen, wennLifecycle
RESUMED
ist. - Bereich von
ViewModel
(über dieviewModel()
API von Lifecycle ViewModel Compose2.4.0
oderhiltViewModel()
von Hilt Navigation Compose1.0.0
) auf Ziel-Ebene. Dadurch wird ein Bereich bereitgestellt, der Konfigurationsänderungen und den Backstack überdauert (wenn Ihr zusammensetzbarer Inhalt ansonsten verworfen wird). Außerdem wird ein Signal imonCleared()
des ViewModels bereitgestellt, das das endgültige Verwerfen und Bereinigen des mit diesemNavBackStackEntry
verknüpften Status angibt. - Der
rememberSaveable
-Zustand wird auf Ziel-Ebene festgelegt. So wird sichergestellt, dass der gesamte zusammensetzbare Zustand automatisch gespeichert und wiederhergestellt wird, wenn Sie zu einem Ziel zurückkehren. - Vollständige Unterstützung für das Speichern und Wiederherstellen des Status von
NavController
und des Status des Ziels nach dem Beenden und erneuten Erstellen des Prozesses. - Automatische Integration mit der System-Schaltfläche „Zurück“.
Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben eines Ergebnisses an vorherige Ziele.
Erstellen Sie bestimmte Hilfsfunktionen in
rememberNavController()
undcurrentBackStackEntryAsState()
, um hoisting state zu ermöglichen undNavController
mit Composables außerhalb vonNavHost
(z. B. einer unteren Navigationsleiste) zu verbinden.
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 im Compose-Navigationsleitfaden.
Mehrere Backstacks
Der NavController ist für die Verwaltung des Backstacks von Zielen verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate()
, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die System-Schaltfläche „Zurück“ auslösen. Die vorhandene Klasse NavOptions
und die Einbindung in <action>
-Elemente im XML-Navigationsdiagramm wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen.
Im Rahmen dieser Änderung werden die NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt automatisch gespeichert und der Status von Pop-Zielen wird wiederhergestellt. So wird die Unterstützung mehrerer Backstacks ohne Codeänderungen ermöglicht. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration mit mehreren Backstacks.
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:
Im Navigations-XML-Code kann das Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele zu speichern, die überapp:popUpTo
entfernt wurden, und den Status wiederherzustellen, der dem alsapp:destination
übergebenen Ziel zugeordnet ist:<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 boolesche PropertyrestoreState
und die boolesche PropertysaveState
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 dieNavOptions.Builder
erstellen, können Sie diesetRestoreState()
und die neue Überladung fürsetPopUpTo()
verwenden, die einen zusätzlichensaveState
-Parameter akzeptiert.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.Mit der Methode
clearBackStack()
können Sie alle mitpopBackStack()
oderpopUpToSaveState
gespeicherten Status löschen.
In allen Fällen wird der Status jeder NavBackStackEntry
durch NavController
gespeichert und wiederhergestellt, einschließlich aller ViewModel
-Instanzen mit Navigationszielbereich. Die Navigator
-APIs wurden aktualisiert, damit jeder Navigator
seinen eigenen Status speichern und wiederherstellen kann.
Geändertes Verhalten
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
zu denPendingIntent
hinzu, die voncreatePendingIntent()
zurückgegeben werden. So wird dafür gesorgt, dass diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist.- Die Navigation hängt jetzt vom Lifecycle
2.3.1
ab und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, dieNavBackStackEntry
Lifecycle
aktualisieren, als@MainThread
. Dadurch wird die Navigation an die im Lifecycle2.3.0
eingeführte Erzwingung des Hauptthreads angepasst. - Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) in
Uri
vorhanden sind. NavDeepLink
Beim Parsen von Argumenten werden Rauten jetzt wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten behandelt. So wird verhindert, dass sich ein Argument über die Raute erstreckt.- Beim Generieren von Aktionen werden in Kotlin-Code, der aus Safe Args generiert wird, Argumente ohne Standardwerte jetzt vor Argumenten mit Standardwerten als Parameter platziert.
- Beim Generieren von Argumenten werden Parameter ohne Standardwerte jetzt vor Parametern mit Standardwerten platziert.
- Safe-Args hängt jetzt vom Android-Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, dass
applicationIdTextResource
verwendet wird.
Bekannte Probleme
- Behoben in Navigation
2.5.0-alpha01
: Der Zugriff auf ein überby navGraphViewModels()
erstelltesViewModel
über dieonCreate()
eines Fragments schlägt mit einemIllegalStateException
fehl. (b/213504272) - Behoben 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) - Beim Deeplinking mit mehreren verschachtelten Navigationsgraphen wird der vollständige Backstack nicht richtig erstellt. (b/214383060)
Version 2.4.0-rc01
15. Dezember 2021
androidx.navigation:navigation-*:2.4.0-rc01
wird veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Geändertes Verhalten
- Bei der Verarbeitung von
NavDeepLink
-Argumenten werden Rauten jetzt wie Fragezeichen als Trennzeichen zwischen Argumenten behandelt. (I21309, b/180042703)
Fehlerkorrekturen
- Bei Deeplinks werden Argumente mit Werten, die mit dem Namen des Platzhalters übereinstimmen, nicht mehr ignoriert. (If8017, b/207389470)
NavController
stürzt nicht mehr ab, wenn ein verschachteltes Ziel mit Übergängen nach dem Wiederherstellen vonNavController
entfernt wird. (I0f7c9, b/205021623)- Die Fehlermeldung bei Verwendung eines ungültigen
startDestination
wird jetzt standardmäßig auf die Route des Startziels festgelegt, sofern eine verfügbar ist. (I86b9d, b/208041894)
Fehlerkorrekturen für Navigation Compose
- Ein möglicher Absturz, der durch schnelles Wechseln zwischen dem Startziel und einem anderen Ziel über die Elemente des unteren Navigationsmenüs verursacht wurde, wurde behoben. (Ic8976, b/208887901)
- Dialogziele werden nach Konfigurationsänderungen oder Prozessbeendigung jetzt korrekt oben auf dem Bildschirm wiederhergestellt. (I4c0dc, b/207386169)
- Das Problem wurde behoben, dass der Versuch, ein
ViewModel
aus demNavBackStackEntry
eines Dialogfelds abzurufen, fehlschlug, wenn das Dialogfeld geschlossen wurde. (I6b96d, b/206465487) - Ein Problem wurde behoben, das bei der Verwendung von
activity
-Zielen mitNavHost
von Navigation Compose zu unendlichen Neuzusammenstellungen geführt hat. (I8f64c) - Es wurde ein Speicherleck in Navigation Compose behoben, bei dem nach einer Konfigurationsänderung oder einem Prozessende eine Referenz auf die alte Aktivität beibehalten wurde. (I4efcb, b/204905432)
Fehlerkorrekturen für Safe Args
SafeArgs
stürzt nicht mehr ab, wenn versucht wird, benutzerdefinierte Parcelable-Arrays nach dem Beenden des Prozesses wiederherzustellen. (I618e8, b/207315994)- Ein Fehler in Safe Args wurde behoben, der verhinderte, dass boolesche Arrays einen
null
-Wert haben. (I8c396, b/174787525)
Version 2.4.0-beta02
3. November 2021
androidx.navigation:navigation-*:2.4.0-beta02
wird veröffentlicht. Version 2.4.0-beta02 enthält diese Commits.
API-Änderungen
- Beim Verarbeiten von expliziten und impliziten Deeplinks wird jetzt automatisch das Flag
saveState
hinzugefügt, wenn zu einem anderen Diagramm navigiert wird. So wird dafür gesorgt, dass Code wieNavigationUI.setupWithNavController
und Code, der mehrere Backstacks verwendet, wie erwartet funktioniert. (Ic8807)
Geändertes Verhalten
- Deeplink-Muster werden jetzt verzögert in NavDeepLink kompiliert, anstatt während der Inflation. Dadurch sollte sich die Inflationszeit von Navigationsdiagrammen mit Deeplinks verkürzen. (b8d257, b/184149935)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem NavBackStackEntries nach dem Wechsel zu
Lifecycle.State.STARTED
inLifecycle.State.CREATED
verschoben wurden, wennNavHost
direkt zumsetContent()
der Aktivität hinzugefügt wurde. (Ia5ac1, b/203536683) - Es wurde ein Race Condition-Problem behoben, bei dem das Entfernen eines
DialogFragment
-Ziels aus dem Backstack, bevor das Dialogfeld tatsächlich angezeigt wurde, nicht dazu führte, dass das Dialogfeld geschlossen wurde. Dies führte zu einem Absturz, wenn das fehlerhafte Dialogfeld manuell vom Nutzer geschlossen wurde. (I687e5) - Es wurde ein Problem behoben, bei dem die
onNavDestinationSelected
API aufNavigationUI
true
zurückgegeben hat, auch wenn Sie nicht tatsächlichnavigate()
zu diesem Navigationsdiagramm waren. Dabei wird jetzt dieselbe Logik verwendet, die intern vonsetupWithNavController
genutzt wird, um nur dasMenuItem
auszuwählen, das mit dem aktuellen Ziel verknüpft ist. Dazu wird dashierarchy
des Ziels verwendet. (I2b053)
Version 2.4.0-beta01
27. Oktober 2021
androidx.navigation:navigation-*:2.4.0-beta01
wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
by navGraphViewModel
mit einer Route anstelle einer ID verwenden, um die Verwendung der Navigation Kotlin DSL mit Fragmenten besser zu unterstützen. (I901e3, b/201446416)
API-Änderungen
- Die
visibleEntries
API befindet sich jetzt in der Testphase. (I93f6f)
Fehlerkorrekturen
- ViewModels werden nicht mehr zerstört, wenn Übergänge durch Hin- und Herwechseln zwischen denselben Bildschirmen unterbrochen werden (Id52d8, b/200817333).
- Für nullable
NavDeepLink
-Argumente ist kein Standardwert mehr erforderlich, wenn Deeplinks zuNavDestination
s hinzugefügt werden. (I5aad4, b/201320030) - NavBackStackEntries mit unterschiedlichen Lifecycles werden nicht mehr als gleich betrachtet. Das bedeutet, dass NavHost alle Ziele richtig neu zusammensetzt, wenn die Navigation mit singleTop erfolgt und wenn Elemente des unteren Menüs neu ausgewählt werden. (I1b351, b/196997433)
- Ein Problem mit
AbstractListDetailFragment
wurde behoben, das dazu geführt hat, dass die Attributelayout_width
undlayout_weight
im Listenbereich, der vononCreateListPaneView()
zurückgegeben wurde, falsch verarbeitet oder ignoriert wurden. (f5fbf3) - Der visuelle Status von Dialogzielen wird jetzt korrekt mit dem Status von
DialogFragmentNavigator
synchronisiert. Das bedeutet, dass durch den manuellen Aufruf der asynchronendismiss()
API fürDialogFragment
jetzt alle Dialogziele über dem jetzt geschlossenen Dialogfeld ordnungsgemäß gelöscht werden. Dies hat keine Auswirkungen auf Fälle, in denen SiepopUpTo
oderpopBackStack()
verwenden, um den Dialog zu schließen. (I77ba2) AbstractAppBarOnDestinationChangedListener
bietet jetzt deutlichere Fehlermeldungen füronDestinationChanged()
. (Ie742d)
Version 2.4.0-alpha10
29. September 2021
androidx.navigation:navigation-*:2.4.0-alpha10
wird veröffentlicht. Version 2.4.0-alpha10 enthält diese Commits.
Neue Funktionen
- NavController bietet jetzt die Möglichkeit, über den
visibleEntries
StateFlow (Ia964e) eine Liste aller sichtbarenNavBackStackEntry
-Instanzen abzurufen. rememberNavController()
akzeptiert jetzt eine optionale Gruppe vonNavigator
-Instanzen, die dem zurückgegebenenNavController
hinzugefügt werden, um optionale Navigatoren wie die 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)
- Ein Problem mit der System-Schaltfläche „Zurück“ wurde behoben, das nur auftritt, wenn zu einem zusammensetzbaren Ziel zurückgekehrt wird, das ein
NavHost
enthält. (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 veröffentlicht. Version 2.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt die Methode
clearBackStack()
verwenden, um alle mitpopBackStack()
oderpopUpToSaveState
gespeicherten Status zu löschen. (I80a0f) - Sie können jetzt eine Liste von Argumenten und/oder Deeplinks an den Builder Ihres verschachtelten Navigationsgraphen übergeben. Diese werden dann automatisch dem resultierenden Graphen hinzugefügt. (I8a470, b/182545357)
API-Änderungen
- Die Kotlin DSL-Funktion
navArgument
ist jetzt Teil vonnavigation-common
stattnavigation-compose
. Dazu müssen Sie die Importe aktualisieren, um diese Funktion weiterhin nutzen zu können. (I1d095)
Geändertes Verhalten
- Beim Generieren von Argumenten werden Parameter ohne Standardwerte jetzt vor Parametern mit Standardwerten platziert. (I89709, b/198493585)
Fehlerkorrekturen
- Wenn Sie Navigation Compose verwenden, sind NavGraphs erst dann
DESTROYED
, wenn alle untergeordneten ElementeDESTROYED
sind. (I86552, b/198741720) - Für Argumente vom Typ „Nullable
NavDeepLink
“ ist kein Standardwert mehr erforderlich. (Ia14ef, b/198689811) - Wenn Sie
setGraph()
mit einem neuen Diagramm aufrufen, werden jetzt auch alle gespeicherten Backstacks gelöscht. Bisher wurde nur der Backstack entfernt. (I97f96) - Ein Problem wurde behoben, bei dem
OnDestinationChangedListener
-Instanzen und diecurrentBackStackEntryFlow
bei Verwendung vonlaunchSingleTop
nicht benachrichtigt wurden. (Iaaebc)
Abhängigkeitsupdates
- Navigation Compose hängt jetzt von Activity Compose 1.3.1 ab. (I05829)
- Navigation Compose hängt jetzt von 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 veröffentlicht. Version 2.4.0-alpha08 enthält diese Commits.
Neue Funktionen
- Es ist jetzt möglich, die
NavType
-Klasse zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie das Navigationsdiagramm programmatisch erstellen, z. B. über die Kotlin-DSL für Navigationsdiagramme. (I78440, b/196871885)
Geändertes Verhalten
- Beim Generieren von Aktionen werden in Kotlin-Code, der aus Safe Args generiert wird, Argumente ohne Standardwerte jetzt vor Argumenten mit Standardwerten als Parameter platziert. (Idb697, b/188855904)
- Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) in
Uri
vorhanden sind. (#204, b/185527157)
Fehlerkorrekturen
- Die Verwendung von
getBackStackEntry
undpreviousBackStackEntry
in composable() in Verbindung mitremember()
führt nicht mehr zu einer Ausnahme, wenn sich kein Ziel auf dem Backstack befindet. (I75138, b/194313238) - Navigation Compose wird jetzt richtig neu zusammengestellt, wenn Backstack-Argumente geändert und
launchSingleTop=true
verwendet wird. (Iebd69, b/186392337) - Beim Aufrufen von
setGraph
mit einem Diagramm mit 13 oder 29 Zielen wird keinArrayIndexOutOfBoundsException
mehr zurückgegeben. (I1a9f1, b/195171984) - Der SafeArgs-Java-Generator sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr verursachen. (I1a666, b/185843837)
Externe Beiträge
- Vielen Dank an ospixd, dass du dafür gesorgt hast, dass bei der Überprüfung von Deeplinks alle erforderlichen Argumente (ohne Standardwerte) in
Uri
vorhanden sind. (#204, b/185527157)
Version 2.4.0-alpha07
18. August 2021
androidx.navigation:navigation-*:2.4.0-alpha07
wird veröffentlicht. Version 2.4.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Der Status wird in Navigation Compose jetzt nach Konfigurationsänderungen und beim Ändern von Diagrammen mit der Funktion für mehrere Backstacks richtig gespeichert. (If5a3d, b/195141957)
- Wenn Sie bei der Verwendung von Navigation Compose mit mehreren Backstacks denselben Tab noch einmal auswählen, wird nicht mehr ein leerer Bildschirm angezeigt. (I860dc, b/194925622)
NavHost
berücksichtigt jetzt Änderungen amLifecycle.State
vonNavBackStackEntry
. Das bedeutet, dass die Verwendung vonNavHost
in einem Fragment jetzt richtig neu zusammengesetzt wird, wenn sich der Lebenszyklus ändert, anstatt zu einem leeren Bildschirm zu führen. (I4eb85, b/195864489)- Ein Problem wurde behoben, durch das das Schließen eines
DialogFragment
denNavController
-Status nach dem Neuerstellen Ihrer Aktivität (z.B. nach einer Konfigurationsänderung) nicht korrekt aktualisiert hat. (Icd72b) - Ein Problem wurde behoben, bei dem durch das Schließen eines Dialogzielfensters die Verarbeitung der System-Zurück-Schaltfläche des NavController nicht aktualisiert wurde. Dadurch konnte es passieren, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Backstack zum Schließen vorhanden war. (If3b34)
- Mit Safe Args wird jetzt automatisch eine
toSavedStateHandle
-Methode für Argumente generiert, mit der 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 veröffentlicht. Version 2.4.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Methoden
requireSlidingPaneLayout()
undrequireDetailPaneNavHostFragment()
fürAbstractListDetailFragment
wurden ingetSlidingPaneLayout()
bzw.getDetailPaneNavHostFragment()
umbenannt. (I34a08)
Geändertes Verhalten
- Bei der Navigation mit Animationen (z. B.
Crossfade
) wird dieLifecycle
des neuen Ziels erst dann erreicht, wenn die Animation abgeschlossen ist.RESUMED
(If0543, b/172112072, b/194301889) - Mit
NavHost
von Navigation Compose wird der Graph jetzt als Teil der ersten Komposition festgelegt. (Ieb7be)
Fehlerkorrekturen
- Wenn das letzte Ziel eines Navigationsdiagramms entfernt wird, wird keine
ClassCastException
mehr ausgelöst. (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 auftrat. (938a0c, b/193805425) - Ein Problem in Navigation Compose wurde behoben, bei dem ein per Deeplink verknüpfter
NavBackStackEntry
den StatusRESUMED
nicht erreichte. (I192c5) - Ein Problem wurde behoben, bei dem durch das Schließen eines Dialogzielfelds die Verarbeitung der System-Zurück-Schaltfläche des NavController nicht aktualisiert wurde. Dadurch konnte es passieren, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Backstack zum Schließen vorhanden war. (aosp/1782668)
Version 2.4.0-alpha05
21. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha05
wird veröffentlicht. Version 2.4.0-alpha05 enthält diese Commits.
Geändertes Verhalten
- Für
NavHost
in Navigation Compose werden jetzt immer Crossfades verwendet, wenn zwischen Zielen navigiert wird. (I07049, b/172112072) - Sie können jetzt Änderungen am Diagramm eines NavHost vornehmen. Graphen mit demselben „startDestination“- und „destination“-Attribut werden als gleich betrachtet und löschen den
NavController
-Backstack nicht. (I0b8db, b/175392262)
Fehlerkorrekturen
- Ein
NoSuchElementException
wurde behoben, wennpopBackStack()
aus einemLifecycleObserver
aufgerufen wurde, das an einNavBackStackEntry
angehängt ist. Der Fehler wurde durch reentrant-Aktualisierungen des NavController-Status verursacht. (I64621) AbstractListDetailFragment
kann jetzt vollständig aus Ihrem APK entfernt werden, wennSlidingPaneLayout
nicht verwendet wird.AbstractListDetailFragment
(I611ad)NavGraph
undNavDestination
überschreiben jetzt die Methode „equals“, sodass zwei Objekte mit denselben Werten als gleich betrachtet werden. (I166eb, b/175392262)
Version 2.4.0-alpha04
1. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha04
wird veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das
navigation-fragment
-Artefakt enthält jetzt eine vorgefertigte Implementierung eines zweispaltigen Layouts über die neueAbstractListDetailFragment
. In diesem Fragment wird einSlidingPaneLayout
verwendet, um ein Listenbereich (der von Ihrer Unterklasse bereitgestellt wird) und ein Detailbereich zu verwalten. Für den Detailbereich wird einNavHostFragment
verwendet, wie in unserer Beispielimplementierung zu sehen ist. (Iac4be, b/191276636) - Das
NavHost
desnavigation-compose
-Artefakts unterstützt jetzt nebencomposable
-Zielen auchdialog
-Ziele. Diese Dialogziele werden jeweils in einem ComposableDialog
angezeigt, das über dem aktuellencomposable
-Ziel schwebt. (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 die APIspushWithTransaction
undpopWithTransition
aufNavigatorState
verwenden, um ein Ziel asynchron zu pushen oder zu entfernen. Diese APIs werden noch nicht von den enthaltenen Navigatoren verwendet. (Ic4d7c, b/172112072)
Geändertes Verhalten
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
zu denPendingIntent
hinzu, die voncreatePendingIntent()
zurückgegeben werden. So wird dafür gesorgt, dass diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist. (If8c52)
Fehlerkorrekturen
- Ein Problem mit
<include-dynamic>
wurde behoben. Dabei wurden Argumente, die an das Diagramm übergeben wurden, nicht korrekt an das dynamisch eingebundene Diagramm übergeben. (I3e115) - Es wurde ein
NullPointerException
behoben, der beim Navigieren zu einem Ziel mit dem Argumentstring[]
mit dem Standardwert@null
auftrat. (I1fbe8) - ProGuard-Regeln für
@Navigator.Name
hinzufügen, um Probleme bei der Verwendung von R8 3.1 im vollständigen Modus zu beheben. (I2add9, b/191654433) - SafeArgs schlägt nicht mehr fehl, wenn Sie Ihre App mit
Kotlin
-Versionen vor1.5.0
erstellen. (Icd1ff, b/190739257)
Version 2.4.0-alpha03
16. Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha03
wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem zwei
navigate()
-Aufrufe erforderlich waren, um zu einem eingebundenen dynamischen Diagramm zu navigieren. (I7785c, b/188859835) - Es wurde ein Regressionsfehler behoben, der in Navigation
2.4.0-alpha01
eingeführt wurde. Dabei wurde das Symbol „Nach oben“ (setupActionBarWithNavController()
) nicht richtig entfernt, wenn Sie sich auf einem Ziel der obersten Ebene befanden. (I5d443, b/189868637) - Ein
IllegalStateException
wurde behoben, wennpopBackStack()
aufgerufen wurde, nachdem der Root-Graph des NavController zuvor entfernt wurde. (I2a330, b/190265699) - ProGuard-Regeln für
by navArgs()
werden jetzt richtig angewendet, wennnavigation-common
oder Artefakte verwendet werden, die davon abhängen. (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 es mit dynamischen Funktionsmodulen und AGP 7.0+ verwendet wird. (I69518, b/189966576)
Bekanntes Problem
- Safe Args schlägt mit einem
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
-Fehler fehl, wenn Gradle6.7.0
verwendet wird, da eine Abhängigkeit von einer älteren Version von Kotlin besteht. Dieses Problem lässt sich 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 veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Routen werden jetzt für Activity-, Fragment- und Dialog-Ziele 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 Sie das Speichern Ihres Status deaktivieren können. Das Speichern des Status ist zwar das korrekte Verhalten, aber es gibt immer noch Verwendungen von eingestellten Bibliotheken (z. B. beibehaltene Fragmente), die beim Speichern des Status nicht unterstützt werden können. So haben Apps die Möglichkeit, langsam von nicht unterstützten APIs zu migrieren. (Idf93c)Für die Navigation sind jetzt die APIs
findDestination()
undgetHierarchy()
verfügbar, mit denen sich eine benutzerdefinierte NavigationUI implementieren lässt.findDestination()
ist eine Erweiterungsfunktion fürNavGraph
, mit der ein Ziel im Diagramm gefunden wird.getHierarchy()
ist eine Funktion fürNavDestination
, mit der geprüft werden kann, ob ein bestimmtes Ziel in der Hierarchie eines anderen liegt.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI-Methoden, die ein
BottomNavigationView
verwendet haben, wurden aktualisiert, sodass stattdessen die in Material1.4.0
eingeführte SuperklasseNavigationBarView
verwendet wird. So können diese Methoden mit demNavigationRailView
verwendet werden. (Ib0b36, b/182938895)Wenn ein
<action>
-Element über XML instanziiert wird, können für Animationsattribute Attribute verwendet werden, die mit derapp:enterAnim="?attr/transitionEnter"
-Syntax aus Ihrem Theme abgerufen werden. (I07bc1, b/178291654)
API-Änderungen
- Kotlin DSL-Builder, die eine ID verwenden, sind veraltet und sollten durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479) (I9f58f, b/188816479).
Fehlerkorrekturen
DialogFragmentNavigator
verwendet jetzt dieNavigatorState.pop()
API, umNavController
darüber zu informieren, wenn ein Dialogfeld durch Drücken der System-Zurück-Schaltfläche oder durch Klicken außerhalb des Dialogfelds geschlossen wird. So wird dafür gesorgt, dass derNavController
-Status immer mit dem Status des Navigators synchronisiert ist. (I2ead9)Die Navigation gibt nicht mehr
ConcurrentModificationException
zurück, wenn die Liste derOnDestinationChangedListeners
mit einemonDestinationChanged
-Callback bearbeitet wird. (Ib1707, b/188860458)Safe Args stürzt nicht mehr ab, wenn versucht wird, Richtungseigenschaften in Kotlin zu generieren. (Id2416, b/188564435)
Die Methode „setId“ für „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ängigkeitsupdate
- Safe-Args hängt jetzt vom Android-Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, dass
applicationIdTextResource
verwendet wird. (I6d67b, b/172824579)
Version 2.4.0-alpha01
18. Mai 2021
androidx.navigation:navigation-*:2.4.0-alpha01
wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt einenFlow
bereit, der immer dann ausgegeben wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einerOnDestinationChangedListener
verwendet werden. (I19c4a, #89, b/163947280)
Mehrere Backstacks
Der NavController ist für die Verwaltung des Backstacks von Zielen verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate()
, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die System-Schaltfläche „Zurück“ auslösen. Die vorhandene Klasse NavOptions
und die Einbindung in <action>
-Einträge im XML-Navigationsdiagramm wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen. (b/80029773)
Im Rahmen dieser Änderung werden die NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt automatisch gespeichert und der Status von Pop-Zielen wird wiederhergestellt. So wird die Unterstützung mehrerer Backstacks ohne Codeänderungen ermöglicht. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration mit mehreren Backstacks. (Ie07ca)
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:
Im Navigations-XML-Code kann das Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele zu speichern, die überapp:popUpTo
entfernt wurden, und den Status wiederherzustellen, der dem alsapp:destination
übergebenen Ziel zugeordnet ist:<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 boolesche PropertyrestoreState
und die boolesche PropertysaveState
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 dieNavOptions.Builder
erstellen, können Sie diesetRestoreState()
und die neue Überladung fürsetPopUpTo()
verwenden, die einen zusätzlichensaveState
-Parameter akzeptiert.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
durch NavController
gespeichert und wiederhergestellt, einschließlich aller ViewModel
-Instanzen mit Navigationszielbereich. Die Navigator
-APIs wurden aktualisiert, damit jeder Navigator
seinen eigenen Status speichern und wiederherstellen kann.
Die ComposeNavigator
für composable
-Ziele in Navigation Compose und die FragmentNavigator
und DynamicFragmentNavigator
für <fragment>
-Ziele in Navigation mit Fragmenten wurden beide aktualisiert, um die neuen Navigator-APIs zu verwenden und das Speichern und Wiederherstellen des Status zu unterstützen.
Navigationsrouten
Eine Route ist ein String
, der ein Ziel eindeutig identifiziert. Dieses Konzept wurde zuvor nur in Navigation Compose verwendet, ist jetzt aber Teil der Navigation Core APIs. Dies ist eine Alternative zur Verwendung von Ganzzahl-IDs beim Erstellen des Graphen über die Navigation Kotlin DSL. (b/172823546)
Alle APIs, die bisher nur eine ID akzeptiert haben, haben jetzt eine Überladung, die eine Route String
akzeptiert. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Das hat einige Auswirkungen auf die API:
- 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 ein Upgrade von früheren Versionen von Navigation Compose auf Navigation Compose 2.4.0-alpha01
durchführen, bedeutet das, dass die folgenden Importe für Erweiterungsmethoden nicht mehr erforderlich sind und entfernt werden sollten:
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 das Attribut route
für NavDestination
ersetzt. Dadurch können Sie navBackStackEntry.destination.route
direkt aufrufen.
API-Änderungen
- Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dadurch wurde die Nullable-Eigenschaft von Klassen mit Generics (z. B.
NavType
-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der-ktx
-Artefakte waren, wurden in die entsprechenden Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber leer. (b/184292145) NavDeepLinkBuilder
unterstützt jetzt das Hinzufügen mehrerer unterschiedlicher Ziele zum generierten Backstack. (I3ee0d, b/147913689)- Fabrikfunktionen für
DynamicNavHostFragment
hinzufügen (Icd515, b/175222619) - Die eindeutige ID einer
NavBackStackEntry
ist jetzt Teil der öffentlichen API. (Ie033a) - Die Felder
name
undargument
sowie die Destrukturierungsfunktionen vonNamedNavArgument
sind jetzt öffentlich. (#174, b/181320559) - Es wurde eine neue
NavBackStackEntry#provideToCompositionLocals
-Erweiterung eingeführt, die dieNavBackStackEntry
für die relevanten Kompositions-Locals bereitstellt. (#175, b/187229439)
Safe Args
Safe Args generiert jetzt 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) }
Safe Args wurde aktualisiert und hängt jetzt von KotlinPoet
1.8.0
ab. (#172, b/183990444)
Geändertes Verhalten
- Die Navigation hängt jetzt vom Lifecycle
2.3.1
ab und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, dieNavBackStackEntry
Lifecycle
aktualisieren, als@MainThread
. Dadurch wird die Navigation an die im Lifecycle2.3.0
eingeführte Erzwingung des Hauptthreads angepasst. (b/171125856) - Das Parsen von Enum-Argumenten aus Deeplinks erfolgt jetzt unabhängig von der Groß-/Kleinschreibung. So kann ein Deeplink wie
http://www.example.com/red
mit einemwww.example.com/{color}
-Deeplink übereinstimmen, auch wenn der Enum den WertRED
hat. (#152, b/135857840)
Compose-Kompatibilität
androidx.navigation:navigation-compose:2.4.0-alpha01
ist nur mit Compose-Version1.0.0-beta07
und höher kompatibel.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem nachgestellte Argumentplatzhalter Vorrang vor Deeplinks mit einem passenden genauen Suffix hatten. (#153, b/184072811)
NavHostFragment
unterstützt jetzt benutzerdefinierte Navigatoren, die dieselbe@Navigator.Name("dialog")
wie der Standard-DialogFragmentNavigator
verwenden. (Ib1c2c, b/175979140)- Das Verhalten von
NavigatorProvider#addNavigator
wurde verbessert, sodass das wiederholte Aufrufen mit derselben Instanz keine Probleme verursacht. (#176, b/187443146)
Externe Beiträge
- Vielen Dank an simonschiller für die Unterstützung von Safe Args, die eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse generiert. (#122, b/136967621) - Vielen Dank an Bradleycorn, dass das Parsen von Enum-Argumenten aus Deeplinks nun nicht mehr zwischen Groß- und Kleinschreibung unterscheidet. (#152, b/135857840)
- Vielen Dank an osipxd, der ein Problem behoben hat, bei dem nachgestellte Platzhalter für Argumente Vorrang vor Deeplinks mit einem übereinstimmenden genauen Suffix hatten. (#153, b/184072811)
- Vielen Dank an tatocaster für die Aktualisierung von Safe Args, sodass es von KotlinPoet
1.8.0
abhängt. (#172, b/183990444) - Vielen Dank an jossiwolf, dass er die Felder
name
undargument
sowie die Destrukturierungsfunktionen vonNamedNavArgument
öffentlich gemacht hat. (#174, b/181320559) - Vielen Dank an jossiwolf für die Einführung einer neuen
NavBackStackEntry#provideToCompositionLocals
-Erweiterung, die dieNavBackStackEntry
für die relevanten Kompositions-Locales bereitstellt. (#175, b/187229439) - Vielen Dank an jossiwolf für die Verbesserung des Verhaltens von
NavigatorProvider#addNavigator
, damit das wiederholte Aufrufen mit derselben Instanz keine Probleme verursacht. (#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 veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
NavHost
akzeptiert jetzt einModifier
, das an den zusammensetzbaren Container übergeben wird, der die Ziel-Composables umschließt. (I85aca, b/175125483)
Fehlerkorrekturen
NavHost
funktioniert jetzt auch, wenn keineOnBackPressedDispatcherOwner
gefunden wird, z. B. bei der Vorschau vonNavHost
. (I7d8b4)- Navigation Compose hängt jetzt von Navigation
2.3.5
ab. Dadurch wird ein Problem behoben, das bei der Verwendung vonBackHandler
in einemNavHost
-Ziel aufgetreten ist. (I7e63b, b/182284739)
Version 1.0.0-alpha09
10. März 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
wird veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner.current
gibt jetzt eine nullableViewModelStoreOwner
zurück, um besser zu bestimmen, ob eineViewModelStoreOwner
in der aktuellen Komposition verfügbar ist. APIs, für die einViewModelStoreOwner
erforderlich ist, z. B.viewModel()
undNavHost
, lösen weiterhin eine Ausnahme aus, wenn keinViewModelStoreOwner
festgelegt ist. (Idf39a)
Fehlerkorrekturen
- Navigation Compose hängt jetzt von Navigation 2.3.4 ab. Diese Version enthält den Fix für den Versuch, dasselbe ViewModelStore-Objekt festzulegen, nachdem der Graph festgelegt wurde. (I65c24, b/177825470)
Version 1.0.0-alpha08
24. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
wird veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
Neue Funktionen
NavHost
füllt jetzt dieLocalSavedStateRegistryOwner
-CompositionLocal mit demNavBackStackEntry
des Ziels aus. So wird dafür gesorgt, dass jeder Status, der direkt inSavedStateRegistry
gespeichert wird, zusammen mit dem Ziel gespeichert und wiederhergestellt wird. (I435d7, b/179469431)
Version 1.0.0-alpha07
10. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Abhängigkeitsupdates
- Navigation Compose hängt jetzt von Lifecycle ViewModel Compose 1.0.0-alpha01 ab, um
viewModel()
-Unterstützung fürcomposable
-Ziele bereitzustellen. (I7a374) NavHost
verwendet jetzt die neueLocalOnBackPressedDispatcherOwner
aus Activity-Compose 1.3.0-alpha01, um dieOnBackPressedDispatcher
abzurufen, die für dieNavController
festgelegt ist. (I65b12)
Version 1.0.0-alpha06
28. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Erweiterungsmethode
getBackStackEntry(route: String)
wurde fürNavController
hinzugefügt, die den zugehörigenNavBackStackEntry
zurückgibt. (If8931)
Version 1.0.0-alpha05
13. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Die Abhängigkeit wurde auf Compose 1.0.0-alpha10 aktualisiert.
Version 1.0.0-alpha04
16. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
- Aktualisiert für die Kompatibilität mit Compose
1.0.0-alpha09
.
Version 1.0.0-alpha03
2. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
wird veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
popBackStack()
undnavigateUp()
nach einer Konfigurationsänderung oder dem Beenden und Neuerstellen eines Prozesses nicht funktionierten. (Icea47, b/173281473) - Das Navigieren zu einem verschachtelten Diagramm in 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 veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Navigation Compose unterstützt jetzt NavOptions für die Verwendung von „popUpTo“- und „launchSingleTop“-Vorgängen (If96c3, b/171468994)
- Es wurde eine Navigationsfunktion hinzugefügt, die eine Route anstelle einer ID verwendet. So können Sie verschachtelte Diagramme in der Navigation Compose-DSL erstellen. (I1661d)
- „startDestination“ steht jetzt vor der Route in der Liste der Parameter für einen NavHost (Ie620e).
- Sie können jetzt einen Graphen erstellen, in dem die Route als Startziel außerhalb eines NavHost-Composable verwendet wird. (Iceb75)
Version 1.0.0-alpha01
28. Oktober 2020
android.navigation:navigation-compose:1.0.0-alpha01
wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
Das navigation-compose
-Artefakt bietet die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Diese erste Version bietet Folgendes:
- Eine
NavHost
-Composable-Funktion, mit der Sie Ihren Navigationsgraphen über eine Kotlin-DSL erstellen können. - Festlegung des Umfangs von Lebenszyklus,
ViewModel
und gespeichertem Status auf der Zielebene. - Automatische Integration mit der System-Schaltfläche „Zurück“.
- Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben eines Ergebnisses an vorherige Ziele.
- Erstellen Sie bestimmte Hilfsfunktionen in
rememberNavController()
undcurrentBackStackEntryAsState()
, um hoisting state zu ermöglichen undNavController
mit Composables außerhalb vonNavHost
(z. B. einer unteren Navigationsleiste) zu verbinden.
Weitere Informationen finden Sie im Compose-Navigationsleitfaden.
Version 2.3.5
Version 2.3.5
7. April 2021
androidx.navigation:navigation-*:2.3.5
wird veröffentlicht. Version 2.3.5 enthält diese Commits.
Neue Funktionen
- Wenn Sie mit einem
NavDeepLinkRequest
oderUri
navigieren, können Sie jetzt überKEY_DEEP_LINK_INTENT
aufUri
, Aktion und MIME-Typ im resultierenden Ziel zugreifen. Das entspricht der Funktionalität, die bereits für externes Deep Linking verfügbar ist. (I975c3, b/181521877)
Fehlerkorrekturen
OnBackPressedCallbacks
, die einem Dispatcher mitNavBackStackEntry
als LifecycleOwner hinzugefügt wurde, fängt jetzt korrekt zurück ab, nachdem der AktivitätslebenszyklusSTOPPED
und dannSTARTED
ist (Iff94f, b/182284739).- Beim Parsen von Deeplink-Domains wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden.
www.example.com
entspricht also sowohlwww.example.com
als auchwww.Example.com
. Bei Namen von Abfrageparametern wird weiterhin zwischen Groß- und Kleinschreibung unterschieden. (#144, b/153829033) - Es wurde ein
NullPointerException
behoben, der auftreten konnte, wenn ein Ziel mehrere Standardargumente hatte, die nicht null sein konnten, und Sie zu diesem Ziel navigiert sind, während nur eine Teilmenge dieser Argumente überschrieben wurde. (aosp/1644827)
Abhängigkeitsupdates
- Das Gradle-Plug-in „Navigation Safe Args“ hängt jetzt vom Kotlin-Gradle-Plug-in 1.4.31 ab. (aosp/1661058, b/181156413)
Externe Beiträge
- Vielen Dank an
bentrengrove
für den Pull-Request, mit dem die Groß-/Kleinschreibung beim Parsen von Deeplink-Domains nicht mehr 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 veröffentlicht. Version 2.3.4 enthält diese Commits.
Neue Funktionen
ReferenceType
-Argumente können jetzt richtig geparst werden, wenn sie als Teil eines Deeplink-URI gesendet werden. Es werden sowohl der rohe Ganzzahlwert als auch Hexadezimalwerte mit dem Präfix0x
unterstützt. (#127, b/179166693)- Der
android:defaultValue
für ein Argument mitapp:argType="float"
unterstützt jetzt ganzzahlige Standardwerte. Sie können alsoandroid:defaultValue="0"
verwenden, anstatt0.0
. (#117, b/173766247)
Fehlerkorrekturen
- Problem behoben, bei dem die Installation bei Verwendung der Unterstützung von Navigation für dynamische Funktionen hängen blieb. (Ib27a7, b/169636207)
- Wenn
setViewModelStore
odersetLifecycleOwner
mit demselben Objekt aufgerufen wird, das bereits festgelegt wurde, wird jetzt nichts mehr ausgeführt (Idf491, b/177825470). - Safe-Args fügt jetzt bei Verwendung von Java Unterdrückungsanmerkungen für die entsprechenden Methoden hinzu. (I8fbc5, b/179463137)
Externe Beiträge
- Vielen Dank
JvmName
für den Pull-Request, mit dem sichergestellt wird, dassReferenceType
-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URI gesendet werden. (#127, b/179166693) - Vielen Dank,
tatocaster
, für den Pull-Request, mit demdefaultValue
für ein Argument mitapp:argType=”float”
jetzt standardmäßige Ganzzahlwerte unterstützt. (#117, b/173766247)
Version 2.3.3
Version 2.3.3
27. Januar 2021
androidx.navigation:navigation-*:2.3.3
wird veröffentlicht. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Es kommt nicht mehr zu einem Absturz, wenn ein
NavBackStackEntry
entfernt wird, bevor seinLifecycle
zuCREATED
verschoben wird. (Ie3ba3) - Eine durch b/171364502 verursachte Regression wurde behoben. Bei dieser Regression führte das Aufrufen einer Aktivität mit dem Animationsressourcenwert
0
zu einemResourceNotFoundException
. (I7aedb, b/176819931)
Version 2.3.2
Version 2.3.2
2. Dezember 2020
androidx.navigation:navigation-*:2.3.2
wird veröffentlicht. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
NavigationUI
wurde behoben, bei dem die Navigation zur Aktivität fehlschlug, wenn ein<activity>
-Ziel mitonNavDestinationSelected
verwendet wurde. (I22e34, b/171364502) - Ein Problem wurde behoben, bei dem
navigation-dynamic-features-fragment
dazu führte, dass das neu installierte Ziel mehrmals angesteuert wurde. (aosp/1486056, b/169636207) - Ein Problem wurde behoben, bei dem Standardargumente bei Verwendung von
launchSingleTop
nicht anOnDestinationChangedListener
-Instanzen gesendet wurden. (I2c5cb) - Ein Problem wurde behoben, bei dem beim Navigieren zu einem verschachtelten Navigationsdiagramm keine neue Diagramminstanz im Backstack erstellt wurde. (Ifc831)
- Ein Problem wurde behoben, bei dem die Verwendung von
navigate()
mit einempopUpTo
, durch das das letzte Ziel in einem Navigationsdiagramm entfernt wurde, nicht dazu führte, dass das Navigationsdiagramm selbst sofort zerstört und aus dem Backstack entfernt wurde. (I910a3) - Navigation SafeArgs verwendet jetzt KotlinPoet Version 1.7.2, die den expliziten API-Modus von Kotlin unterstützt. (I918b5)
NavHostFragment.findNavController(Fragment)
prüft jetzt zusätzlich zu den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die Root-Decor-Ansicht eines DialogFragments. So können Sie Dialogfragmente testen, die die Navigation mitFragmentScenario
undNavigation.setViewNavController()
verwenden. (I69e0d)
Version 2.3.1
Version 2.3.1
14. Oktober 2020
androidx.navigation:navigation-*:2.3.1
wird veröffentlicht. Version 2.3.1 enthält diese Commits.
Neue Funktionen
- Der Navigations-UI wurden Standard-Animator-Ressourcen hinzugefügt, die gegenüber den Standard-Animationsressourcen empfohlen werden. (b/167430145)
- NavOptions überschreibt jetzt die Methoden „hashcode“ und „equals“ (b/161586466).
- Die Navigation enthält jetzt das aktuelle Ziel in der IllegalArgumentException „No destination with ID“, was die Fehlersuche für Entwickler erleichtern sollte. (b/168311416)
Fehlerkorrekturen
- Safe Args umschließt die Rückgabezeile nicht mehr, auch wenn der generierte Argumentklassenname länger als 100 Zeichen ist. (b/168584987)
Änderungen an Abhängigkeiten
navigation-ui
hängt jetzt von DrawerLayout 1.1.1 ab. Dadurch kannNavigationUI
die Navigationsleiste auch dann öffnen, wennLOCK_MODE_LOCKED_CLOSED
oderLOCK_MODE_LOCKED_OPEN
verwendet wird. (b/162253907)- Safe Args hängt jetzt von KotlinPoet 1.6.0 ab (aosp/1435911)
- Safe Args hängt jetzt von AGP 4.0.1 ab (aosp/1442337).
Version 2.3.0
Version 2.3.0
24. Juni 2020
androidx.navigation:navigation-*:2.3.0
wird veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Integration 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 bei Bedarf automatisch durchgeführt. Weitere Informationen finden Sie unter Mit Funktionsmodulen navigieren. - Navigationstests: Das
navigation-testing
-Artefakt bietet eineTestNavHostController
, mit der Sie das aktuelle Ziel festlegen und den Backstack nach Navigationsvorgängen prüfen können. Weitere Informationen finden Sie unter Navigation testen. - Ergebnis zurückgeben: Über die
NavBackStackEntry
, die jeder Ziel-ID im Navigations-Backstack zugeordnet ist, können Sie jetzt auf einSavedStateHandle
zugreifen, das sich zum Speichern kleiner Mengen von gespeichertem Status eignet, der einem bestimmten Backstack-Eintrag zugeordnet werden soll. Weitere Informationen finden Sie unter Ergebnis an das vorherige Ziel zurückgeben. NavigationUI
-Unterstützung fürOpenable
:Openable
Alle Verwendungen vonDrawerLayout
inNavigationUI
wurden durch die allgemeinere Schnittstelle ersetzt, die in CustomView1.1.0
hinzugefügt und vonDrawerLayout
in DrawerLayout1.1.0
implementiert wurde.- Unterstützung von Aktionen und MIME-Typen in Deeplinks: Deeplinks unterstützen jetzt neben dem bisher verfügbaren
app:uri
auchapp:action
undapp:mimeType
.NavController
unterstützt jetzt die Navigation anhand einer beliebigen Kombination dieser Felder über die neue KlasseNavDeepLinkRequest
. Weitere Informationen finden Sie unter Mit NavDeepLinkRequest navigieren.
Bekannte Probleme
- Die Unterstützung für Deeplink-Aktionen und MIME-Typen ist im Manifest Merger noch nicht verfügbar. Bis dahin enthalten alle generierten
<intent-filter>
-Elemente aus dem<nav-graph>
-Element in Ihrem Manifest weder Ihren MIME-Typ im<data>
-Element noch Ihren benutzerdefinierten<action>
. Sie müssen Ihrem Manifest manuell ein entsprechendes<intent-filter>
hinzufügen.
Version 2.3.0-rc01
10. Juni 2020
androidx.navigation:navigation-*:2.3.0-rc01
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein
NullPointerException
wurde behoben, das beim Ersetzen einer Instanz eines Ziels ohne Argumente durch eine andere Instanz mit Argumenten mitsingleTop
auftrat. (b/158006669) - Alle
destination is unknown
-Ausnahmen, die vonNavController
ausgelöst werden, enthalten jetzt zusätzliche Informationen zur Fehlerbehebung, 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 veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die
Lifecycle
derNavBackStackEntry
nach dem Beenden des Prozesses nicht richtig aktualisiert wurde. (b/155218371) OnDestinationChangedListener
-Instanzen, die vor dem Aufrufen vonsetGraph()
registriert wurden, erhalten jetzt nach dem Beenden eines Prozesses das wiederhergestellte Ziel. (b/155218371)- Bei Verwendung von
singleTop
werden die Argumente vonNavBackStackEntry
jetzt korrekt aktualisiert und die aktualisierten Argumente werden an alleOnDestinationChangeListener
-Instanzen gesendet. (b/156545508)
Abhängigkeitsupdates
- Das
NavigationUI
-Artefakt 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 veröffentlicht. Version 2.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Deeplinks unterstützen jetzt neben
app:uri
auchapp:action
undapp:mimeType
. NavController unterstützt jetzt die Navigation anhand einer beliebigen Kombination dieser Felder über die neue KlasseNavDeepLinkRequest
. (b/136573074, b/135334841)
API-Änderungen
- Die Unterstützung für die Kotlin-DSL für dynamische Navigationsziele wurde erheblich erweitert. (b/148969800)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Deeplink-Intents ignoriert wurden, wenn ein verschachteltes Startziel verwendet wurde. (b/154532067)
Version 2.3.0-alpha05
15. April 2020
androidx.navigation:navigation-*:2.3.0-alpha05
wird veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Für dynamische Grafikeinschlüsse mit
<include-dynamic>
müssen Sieapp:graphPackage
nicht mehr angeben. Es wird ein Standardwert verwendet, indem demapplicationId
nach einem Punkt das SuffixmoduleName
hinzugefügt wird. Wenn Sie IhregraphPackage
anpassen müssen, wird jetzt ein${applicationId}
-Platzhalter unterstützt. (b/152696768) - Das Navigation Graph Kotlin DSL bietet jetzt eine
defaultArguments
Map
für Aktionen, die der Möglichkeit entspricht, Standardwerte für<action>
-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)
Fehlerkorrekturen
- Ab Navigation 2.2.2: Ein
IllegalStateException
wurde behoben, das beim Deeplinking zum Startziel Ihres Diagramms auftrat, wenn Sie mehrereNavHostFragment
-Instanzen in Ihrer Aktivität haben. (b/147378752)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von 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 veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Unterstützung für Aktivitäts- und Fragmentziele von Funktionsmodulen im Navigation Kotlin DSL hinzugefügt. (b/148969800)
API-Änderungen
- Die Klasse
DynamicExtras
verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671) DynamicActivityNavigator
verwendet jetzt einenContext
anstelle einesActivity
in seinem Konstruktor. (aosp/1250252)
Fehlerkorrekturen
- Bei
NavigationUI
werden leere Labels (d.h. ein Ziel mitandroid:label=””
) nicht mehr ignoriert und der Titel wird jetzt korrekt auf einen leeren String gesetzt. (b/148679860)
Abhängigkeitsupdates
- Die Artefakte für dynamische Navigationsfunktionen hängen jetzt von 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 veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Anstatt sich auf die konkrete Klasse
DrawerLayout
zu verlassen, verwendetAppBarConfiguration
jetzt die in CustomView1.1.0-alpha02
eingeführte SchnittstelleOpenable
(dieDrawerLayout
ab DrawerLayout1.1.0-alpha04
implementiert), sodass Sie benutzerdefinierte Implementierungen vonOpenable
mitNavigationUI
verwenden können. (b/129030452)
Fehlerkorrekturen
- Die
navigation-common-ktx
-ProGuard-Regeln behalten jetzt nur noch dieNavArgs
-Klassen bei, die verwendet werden, und nicht mehr alleNavArgs
-Instanzen. (b/150213558)
Änderungen an Abhängigkeiten
- Die Navigation hängt nicht mehr von Core
1.2.0
ab, sondern von Core1.1.0
. So wird verhindert, dass Entwickler zu einer neueren Abhängigkeit wechseln müssen, wenn die Navigation nicht von neuen APIs in Core1.2.0
abhängt.
Version 2.3.0-alpha02
19. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha02
wird veröffentlicht. 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 von gespeichertem Status eignet, der einem bestimmten Backstack-Eintrag zugeordnet werden soll. Einen Beispielanwendungsfall finden Sie unter Ergebnis zurückgeben. (b/79672220)
API-Änderungen
- Es wurden Convenience-Methoden für
getCurrentBackStackEntry()
undgetPreviousBackStackEntry()
hinzugefügt, um das Abrufen einesNavBackStackEntry
für die aktuellen und vorherigen Ziele zu vereinfachen. (b/79672220)
Fehlerkorrekturen
navigateUp()
übergibt jetzt die Argumente des aktuellen Ziels und dasKEY_DEEP_LINK_INTENT
an das vorherige Ziel, wenn Ihre App in Ihrem eigenen Task-Stack gestartet wird. (b/147456890)
Änderungen an Abhängigkeiten
- Die Navigation hängt jetzt von Core
1.2.0
ab.
Version 2.3.0-alpha01
5. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha01
wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Das neue
navigation-testing
-Artefakt bietet eineTestNavHostController
-Klasse. Diese Klasse bietet eine Alternative zur Verwendung eines Mock-NavController
beim Testen der Navigation. Damit können Sie das aktuelle Ziel festlegen und den Backstack nach Navigationsvorgängen prüfen. (b/140884273) - Mit dem neuen
navigation-dynamic-features-fragment
(und seiner transitiven Abhängigkeitnavigation-dynamic-features-runtime
) können Sie Ziele oder ganze Navigationsdiagramme (über<include-dynamic>
) aus Funktionsmodulen einfügen. So lassen sich On-Demand-Funktionsmodule nahtlos installieren, wenn zu diesen Zielen navigiert wird. Weitere Informationen finden Sie unter Mit Funktionsmodulen navigieren. (b/132170186)
Fehlerkorrekturen
- Navigation
2.2.1
: Bei Deeplinks ohne Abfrageparameter werden jetzt alle Abfrageparameter korrekt ignoriert, anstatt sie an nachfolgende{argument}
-Elemente anzuhängen oder den Deeplink nicht abzugleichen. (b/147447512) - Über Navigation
2.2.1
: Dienavigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, damitandroid.enableJetifier=true
nicht erforderlich ist. (b/147610424) - Über Navigation
2.2.1
: Das Modulnavigation-common-ktx
hat jetzt einen eindeutigen Manifestpaketnamen und verwendet nicht mehr denselben Manifestpaketnamen wienavigation-runtime-ktx
. (aosp/1141947)
Abhängigkeitsupdates
- Ab Navigation
2.2.1
: Die Navigation2.2.1
hängt jetzt von Lifecycle ViewModel SavedState2.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 veröffentlicht. Version 2.2.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
IllegalStateException
behoben, der beim Deeplinking zum Startziel Ihres Diagramms auftrat, wenn Sie mehrereNavHostFragment
-Instanzen in Ihrer Aktivität haben. (b/147378752) - Bei
NavigationUI
werden leere Labels (d.h. ein Ziel mitandroid:label=””
) nicht mehr ignoriert und der Titel wird jetzt korrekt auf einen leeren String gesetzt. Diese Funktion wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860) - Die
navigation-common-ktx
-ProGuard-Regeln behalten jetzt nur noch dieNavArgs
-Klassen bei, die verwendet werden, und nicht mehr alleNavArgs
-Instanzen. Diese Funktion wurde bereits in Navigation 2.3.0-alpha03 veröffentlicht. (b/150213558
Abhängigkeitsupdates
- Die Navigation hängt jetzt von 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 veröffentlicht. Version 2.2.1 enthält diese Commits.
Fehlerkorrekturen
- Bei Deeplinks ohne Abfrageparameter werden Abfrageparameter jetzt korrekt ignoriert, anstatt an nachfolgende
{argument}
-Elemente angehängt zu werden oder nicht mit dem Deeplink übereinzustimmen. (b/147447512) - Die
navigation-ui
-ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, damitandroid.enableJetifier=true
nicht erforderlich ist. (b/147610424) - Das Modul
navigation-common-ktx
hat jetzt einen eindeutigen Manifestpaketnamen und teilt sich nicht mehr denselben Manifestpaketnamen wienavigation-runtime-ktx
. (aosp/1141947)
Abhängigkeitsupdates
- 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 veröffentlicht. 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 Backstack übergeben. Das zurückgegebeneNavBackStackEntry
enthält ein navigationsbasiertesLifecycleOwner
,ViewModelStoreOwner
(dasselbe wie beiNavController.getViewModelStoreOwner()
) undSavedStateRegistryOwner
sowie die Argumente, die zum Starten des Ziels verwendet wurden. - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die verwendet wird, wennby navGraphViewModels()
oder derViewModelProvider
-Konstruktor mit einemViewModelStoreOwner
verwendet wird, das vonNavController.getBackStackEntry()
oderNavController.getViewModelStoreOwner()
zurückgegeben wird. - Unterstützung von Suchparametern für Deeplinks: Bei Deeplinks mit Suchparametern werden jetzt neu angeordnete Suchparameter unterstützt. Argumente mit einem Standardwert oder Nullable-Argumente sind jetzt optional, wenn Deeplinks abgeglichen werden.
- Verbesserte Unterstützung von Animationen:
NavHostFragment
verwendet jetztFragmentContainerView
aus Fragment 1.2.0. Dadurch werden Probleme mit der Z-Reihenfolge von Animationen und dem Senden von Window Insets an Fragmente behoben.
Version 2.2.0-rc04
18. Dezember 2019
androidx.navigation:navigation-*:2.2.0-rc04
wird veröffentlicht. Version 2.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die von
navigation-ui
verwendeten Standard-Ein- und Ausblendanimationen wurden an die angepassten Ein- und Ausblendanimationen in Fragment1.2.0-rc04
angepasst. (b/145769814)
Version 2.2.0-rc03
4. Dezember 2019
androidx.navigation:navigation-*:2.2.0-rc03
wird veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit dem Parsen von Deeplinks behoben, wenn Abfrageparameter und ein Argument als letzter Teil des Pfads verwendet wurden. Dadurch konnte mehr als ein Zeichen des finalen Pfadarguments nicht geparst werden. (b/144554689)
- Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter
"@null"
anstelle vonnull
erhielten. (b/141613546) - Mit
NavHostFragment
wird der Graph jetzt nach einer Konfigurationsänderung in Kombination mitFragmentContainerView
korrekt wiederhergestellt. (b/143752103)
Änderungen an Abhängigkeiten
- Die Navigation hängt jetzt von Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.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 veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.
Änderungen an Abhängigkeiten
- 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
wird 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 veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.
Neue Funktionen
NavDestination
und seine Unterklassen überschreiben jetzttoString()
, um beim Debuggen hilfreichere Informationen bereitzustellen. (b/141264986)
Geändertes Verhalten
- Zusätzliche Suchparameter werden jetzt beim Abgleich von Deeplinks ignoriert, anstatt dazu zu führen, dass der Abgleich fehlschlägt. (b/141482822)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Abfrageparameter angegeben waren. (b/141505755)
- Die
navArgs()
-Kotlin-Erweiterung fürActivity
hat jetzt eine bessere Fehlermeldung, wenn keine Extras vorhanden sind. (b/141408999) - Die von Safe Args generierten
Directions
-Java-Klassen enthalten jetzt Standardwerte. (b/141099045) - Die von Safe Args generierten
Args
-Java-Klassen enthalten jetzt Standardwerte. (b/140123727) - Wenn Sie
Toolbar
verwenden, wird der Textwechsel beim Wechsel zwischen zwei Zielen der obersten Ebene nicht mehr animiert.NavigationUI
(b/140848160)
Version 2.2.0-alpha03
18. September 2019
androidx.navigation:navigation-*:2.2.0-alpha03
wird veröffentlicht. Version 2.2.0-alpha03 enthält diese Commits.
Geändertes Verhalten
- Wenn Sie
setViewModelStore()
nach dem Aufrufen vonsetGraph
aufrufen, wird jetzt einIllegalStateException
zurückgegeben. Dies sollte immer vonNavHost
im Rahmen der Ersteinrichtung festgelegt werden, damit alleNavBackStackEntry
-Instanzen einen konsistenten Speicher fürViewModel
-Instanzen haben. (aosp/1111821)
Fehlerkorrekturen
- Ein
ConcurrentModificationException
wurde behoben, das bei der Verwendung vonViewModel
-Instanzen aufgetreten ist, die an mehrere verschiedeneViewModelStore
-Instanzen mit Navigationsgraph-Bereich angehängt sind. (aosp/1112257)
Version 2.2.0-alpha02
5. September 2019
androidx.navigation:navigation-*:2.2.0-alpha02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Bei Deeplinks mit Abfrageparametern werden jetzt neu angeordnete Abfrageparameter unterstützt. Argumente mit einem Standardwert oder mit dem Wert „nullable“ sind jetzt optional, wenn Deeplinks abgeglichen werden. (b/133273839)
- Sie können jetzt
NavController.getBackStackEntry()
aufrufen und die ID eines Ziel- oder Navigationsdiagramms im Backstack übergeben. Das zurückgegebeneNavBackStackEntry
enthält ein navigationsbasiertesLifecycleOwner
,ViewModelStoreOwner
(dasselbe wie beiNavController.getViewModelStoreOwner()
) undSavedStateRegistryOwner
sowie die Argumente, die zum Starten des Ziels verwendet wurden. (aosp/1101691, aosp/1101710)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Hinzufügen einer
NavHostFragment
zuViewPager2
mit einemIllegalArgumentException
fehlgeschlagen ist. (b/133640271) NavInflater
ruftgetResourceName()
jetzt nicht mehr unnötig auf, wodurch sich die Inflationszeit um bis zu 40 % verkürzt. (b/139213740)
Version 2.2.0-alpha01
7. August 2019
androidx.navigation:navigation-*:2.2.0-alpha01
wird veröffentlicht. 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 einem vonNavController.getViewModelStoreOwner()
zurückgegebenenViewModelStoreOwner
verwendet wird. (b/135716331)
API-Änderungen
- Aus Navigation
2.1.0-rc01
: Die verworfenegetViewModelStore()
API aufNavController
, die in2.1.0-alpha02
eingeführt wurde, wurde entfernt. (aosp/1091021)
Fehlerkorrekturen
NavHostFragment
verwendet jetztFragmentContainerView
. Dadurch werden Probleme mit der Z-Reihenfolge von Animationen und dem Senden von Window Insets an Fragmente behoben. (b/137310379)
Version 2.1.0
Version 2.1.0
5. September 2019
androidx.navigation:navigation-*:2.1.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 2.0.0
- ViewModels auf einen Navigationsgraphen beschränken: Sie können jetzt ViewModels erstellen, die auf Navigationsebenenebene beschränkt sind. Verwenden Sie dazu das Attributdelegat
by navGraphViewModels()
für Kotlin-Nutzer, die die-ktx
-Bibliotheken verwenden, oder diegetViewModelStoreOwner()
-API, dieNavController
hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen freigeben. - Dialogziele: Sie können jetzt
<dialog>
-Ziele erstellen, für die beimnavigate
einDialogFragment
angezeigt wird.NavHostFragment
unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel aus einem DialogFragment erstellen. - Navigation per URI: Sie können jetzt
navigate
, indem Sie einenUri
verwenden, der die<deepLink>
nutzt, die Sie einem Ziel hinzugefügt haben, um dorthin zu navigieren. Weitere Informationen finden Sie unter Mit URI navigieren. - NavHostController: APIs, die speziell zum Erstellen eines benutzerdefinierten
NavHost
verwendet werden, wurden zuNavHostController
verschoben. Dadurch können Implementierungen ihrNavController
mit dem Hosting-LifecycleOwner
,OnBackPressedDispatcher
undViewModelStore
verbinden.
Version 2.1.0-rc01
7. August 2019
androidx.navigation:navigation-*:2.1.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Die eingestellte
getViewModelStore()
API aufNavController
, die 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 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacoco-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 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Bei Verwendung von
setupWithNavController()
mit einemToolbar
oderCollapsingToolbarLayout
wird das Entfernen der Schaltfläche „Nach oben“ jetzt animiert.NavigationUI
(b/131403621)
Fehlerkorrekturen
- Ein Timing-Problem wurde behoben, das beim Verwenden mehrerer NavHostFragments mit demselben Container mit
findNavController()
auftrat. (b/136021571)
Version 2.1.0-alpha06
2. Juli 2019
androidx.navigation:*:2.1.0-alpha06
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Das von NavHostFragment verwendete Attribut
app:navGraph
wurde in das Artefaktnavigation-runtime
verschoben. Benutzerdefinierte Navigatoren, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um in das Host-Panel des Navigationseditors eingebunden zu werden. (b/133880955)
API-Änderungen
- Die
getViewModelStore()
API aufNavController
wurde zugunsten der neuen MethodegetViewModelStoreOwner()
eingestellt, die einViewModelStoreOwner
zurückgibt. (aosp/987010) - Die Implementierung von Zielen mit gleitendem Fenster, z. B.
<dialog>
-Zielen, wurde in eine Markierungsschnittstelle,FloatingWindow
, verallgemeinert, die jetzt von allen<dialog>
-Zielen implementiert wird. NavigationUI-Methoden für die Interaktion mit der oberen App-Leiste ignorieren jetztFloatingWindow
-Ziele. (b/133600763)
Geändertes Verhalten
- Die Navigation synchronisiert ihren Status jetzt korrekt mit dem, was auf dem Bildschirm zu sehen ist, wenn ein
<dialog>
-Ziel verwendet wird. Daher werden in der Navigation jetzt automatisch<dialog>
-Ziele angezeigt, wenn Sie zu einem Ziel navigieren, das kein Dialogfeld und keine Aktivität ist, z. B. ein<fragment>
-Ziel. (b/134089818)
Fehlerkorrekturen
- Bei der Verarbeitung eines Deeplinks wird die Animation, die beim Neuerstellen der Aktivität auftritt, jetzt unterdrückt. Dadurch wird ein visueller Blitz behoben. (b/130362979)
- Ein Fehler wurde behoben, durch den der Backstack der Navigation nicht synchronisiert wurde, wenn ein Fragment entfernt wurde, während das erste Fragment hinzugefügt wurde. (b/133832218)
Version 2.1.0-alpha05
5. Juni 2019
androidx.navigation:*:2.1.0-alpha05
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Hostbezogene APIs auf
NavController
wurden umbenannt und in eine neue Unterklasse vonNavController
,NavHostController
, verschoben. (aosp/966091) - Die Methode
NavController
setHostOnBackPressedDispatcherOwner()
wurde durch die MethodeNavHostController
setOnBackPressedDispatcher()
ersetzt. Sie müssen jetztsetLifecycleOwner()
aufrufen, bevor Sie sie aufrufen. (aosp/965409) NavHostController
enthält jetzt eineenableOnBackPressed(boolean)
-Methode, die dieNavHostOnBackPressedManager
-Klasse ersetzt, die zuvor vonsetHostOnBackPressedDispatcherOwner()
zurückgegeben wurde. (aosp/966091)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Backstack nach der Navigation per URI nicht korrekt war. (b/132509387)
- Deeplinks, die automatisch von NavController verarbeitet werden, werden jetzt nur noch einmal ausgelöst. (b/132754763)
Version 2.1.0-alpha04
16. Mai 2019
androidx.navigation:*:2.1.0-alpha04
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
NavHostFragment
berücksichtigtapp:defaultNavHost
beim Abfangen der Systemereignisse für die Zurück-Schaltfläche korrekt. Damit wird ein Regressionsfehler in Navigation2.1.0-alpha03
behoben. b/132077777DialogFragmentNavigator
verarbeitet jetztpopBackStack()
- undnavigateUp()
-Vorgänge korrekt. b/132576764- Ein Problem mit
IllegalStateException: unknown destination during restore
wurde behoben, das beim wiederholten Wechsel zwischen verschachtelten Diagrammen aufgetreten ist. b/131733658
Version 2.1.0-alpha03
7. Mai 2019
androidx.navigation:*:2.1.0-alpha03
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Bekannte Probleme
- NavHostFragment fängt weiterhin die System-Zurück-Taste ab, obwohl
app:defaultNavHost="false"
verwendet wird. b/132077777
Neue Funktionen
- Sie können jetzt
<dialog>
-Ziele erstellen, die beimnavigate
zu ihnen einDialogFragment
anzeigen.NavHostFragment
unterstützt standardmäßig Dialogziele. b/80267254 - Zusätzlich zum Aufrufen von
navigate
mit einer Ressourcen-ID oder einerNavDirections
-Instanz können Sie jetzt über einenUri
navigieren, der die<deepLink>
verwendet, die Sie einem Ziel hinzugefügt haben, um zum richtigen Ziel zu navigieren. b/110412864
Geändertes Verhalten
- 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 in die neueonCreateNavController()
-Methode verschoben, um deutlicher zu machen, dass dies der richtige Einstiegspunkt zum Hinzufügen benutzerdefinierter Navigatoren beim Erstellen von Unterklassen vonNavHostFragment
ist. b/122802849 - Der Klasse
NavDestination
wurde die MethodehasDeepLink()
hinzugefügt, mit der Sie prüfen können, ob ein bestimmtesUri
von diesem Ziel oder im Fall einesNavGraph
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-Zurück-Ereignisse mitOnBackPressedDispatcher
ab. Dadurch wird ein Problem behoben, das bei der bedingten Navigation in Fragment-Lifecycle-Methoden beim Zurückkehren zu einem Fragment aufgetreten ist. b/111598096- Bei Safe Args wird ein
android:defaultValue=”@null”
mit einem 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 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt ViewModels erstellen, die auf Navigationsgraphebene festgelegt sind. Verwenden Sie dazu den
by navGraphViewModels()
-Eigenschafts-Delegate für Kotlin-Nutzer oder diegetViewModelStore()
-API, dieNavController
hinzugefügt wurde. b/111614463
API-Änderungen
- Sie können jetzt einem
<activity>
-Ziel einapp:targetPackage
hinzufügen, um den übereinstimmenden Paketnamen einzuschränken. Es wirdapp:targetPackage="${applicationId}"
unterstützt, um das Paket auf Ihre eigene Anwendungs-ID zu beschränken. b/110975456
Fehlerkorrekturen
- Der
android:name
für<activity>
-Ziele wird bei der Inflation nicht mehr in eine Klasse geparst. Dadurch werden ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert. b/124538597
Version 2.1.0-alpha01
19. März 2019
Dies ist der erste Alpharelease von Navigation 2.1.0
.
Änderungen an Abhängigkeiten
- Die Navigation hängt jetzt von
androidx.core:core:1.0.1
undandroidx.fragment:fragment:1.1.0-alpha05
ab. In dieser Version wurde auch die Abhängigkeit vonandroidx.legacy:legacy-support-core-utils:1.0.0
entfernt. b/128632612
API-Änderungen
- Es wurde eine neue
Navigation.createNavigateOnClickListener(NavDirections)
-Methode als Alternative zum Erstellen eines Click-Listeners mit einer Ressourcen-ID und einem Bundle hinzugefügt. b/127631752 FragmentNavigator.instantiateFragment
wurde eingestellt. In der Standardimplementierung wird jetztFragmentFactory
verwendet, um Fragmente zu instanziieren. b/119054429
Fehlerkorrekturen
- Bei der Navigation wird kein Null-
Bundle
mehr gesendet, 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. Damit wird ein Problem mit sehr langen Paketnamen behoben. 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 bietet neue Artefakte mit der Gruppen-ID androidx.navigation
und ändert die Abhängigkeiten in die AndroidX-Entsprechungen.
Das Verhalten von Version 2.0.0-rc02 ist identisch mit dem Verhalten von Navigation 1.0.0-rc02. Für das Update von Version 1.0.0-rc02 sind keine Änderungen an Ihrem Code erforderlich. Sie müssen lediglich Ihre Abhängigkeiten an die neuen Abhängigkeiten anpassen.
Ihr Projekt muss zu AndroidX migriert sein, damit Sie 2.X-Releases von Navigation verwenden können. Navigation 1.0 (stabil) ist der letzte Release, in dem Support Library-Abhängigkeiten verwendet werden. Alle zukünftigen Entwicklungen nach Version 1.0 basieren auf AndroidX und bauen auf dem stabilen Release 2.0 auf.
Abhängigkeiten vor AndroidX
Für die Pre-AndroidX-Versionen von Navigation müssen Sie diese Abhängigkeiten einfügen:
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 Safe Args den folgenden Classpath in die build.gradle
-Datei auf oberster Ebene ein:
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-Kandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Reihe von Fehlerkorrekturen.
Fehlerkorrekturen
- Das Problem wurde behoben, dass
popBackStack()
ignoriert wurde, wenn der Stammgraph keine ID hatte. b/126251695 navigateUp()
verarbeitet jetzt das Zurückkehren zum Task Ihrer App korrekt, wenn es nach der Verarbeitung eines Deeplinks ohneFLAG_ACTIVITY_NEW_TASK
aufgerufen wird. b/126082008- Ein Problem wurde behoben, bei dem mit
ActivityNavigator.applyPopAnimationsToPendingTransition
nicht die richtige Pop-out-Animation angewendet wurde. b/126237567 - In von Safe Args generiertem Kotlin-Code werden Kotlin-Schlüsselwörter wie
in
undfun
im Paketnamen, der mit der KlasseR
verknüpft ist, jetzt richtig maskiert. b/126020455
Version 1.0.0-rc01
21. Februar 2019
Dies ist ein Release-Kandidat 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 umfasst eine Reihe kleinerer Verbesserungen und wichtiger Fehlerbehebungen.
Neue Funktionen
- Sie können
0
jetzt alsandroid:defaultValue
fürreference
-Argumente verwenden. b/124248602
Geändertes Verhalten
- 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 Backstack entfernt wird. Damit wird ein Fehler behoben, der in1.0.0-beta01
eingeführt wurde. b/123933201- Bei der Wiederherstellung des gespeicherten Instanzstatus wird jetzt korrekt
ClassLoader
für die Navigation festgelegt. So werden Probleme bei der Verwendung benutzerdefinierter Klassen im gespeicherten Status vonNavigator
oder in Argumenten, die an einNavDestination
gesendet werden, vermieden. b/123893858 - Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein
Parcelable[]
-Argument aus dem gespeicherten Instanzstatus wiederhergestellt wird. b/123963545 - Mit Safe Args werden jetzt unnötige generierte Kotlin-Klassen ordnungsgemäß bereinigt. b/124120883
Version 1.0.0-beta01
4. Februar 2019
Dies ist die erste Betaversion der Navigation. Die Navigation API wird voraussichtlich bis zur nächsten Version stabil bleiben, sofern kein schwerwiegendes Problem auftritt. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.
Geändertes Verhalten
- Bei der Navigation werden Argumentstandardwerte jetzt zur Laufzeit und über Safe Args identisch behandelt. Daher können nur Argumente mit einem
app:argType="reference"
einen Standardwert haben, der auf eine andere Ressource verweist (z. B.@color/colorPrimary
). Wenn Sie versuchen, einen Standardwert mit einem Verweis mit einem anderenapp:argType
zu verwenden, wird beim Parsen des Navigations-XML eine Ausnahme ausgelöst. b/123551990 - Safe Args hängt jetzt vom Android-Gradle-Plug-in 3.3.0 ab. aosp/888413
- Safe Args ist jetzt von Kotlin 1.3.20 abhängig. aosp/888414
Fehlerkorrekturen
- Safe Args kann jetzt in Bibliotheks- und Funktionsmodulen für alle Versionen des Android Gradle-Plug-ins verwendet werden. b/121304903
- Es wurde ein Regressionsfehler behoben, der dazu führte, dass bei einem einzelnen
popBackStack()
-Vorgang alle Kopien eines Ziels vom Anfang des Backstacks entfernt wurden, anstatt nur jeweils ein einzelnes Ziel. b/123552990 - Ein Problem wurde behoben, bei dem der Status
FragmentNavigator
mit dem Status vonNavController
synchronisiert wurde, was beim Versuch, den Backstack wiederherzustellen, zu einemIllegalStateException
führte. b/123803044 - Ein Problem wurde behoben, bei dem der von
NavigationUI
verarbeitete Zurück-Pfeil bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431 - Der von Safe Args generierte Code verarbeitet jetzt die Verwendung von
app:argType
, die auf eine statische innere Klasse im Format.OuterClass$InnerClass
verweist, korrekt. b/123736741 - Der von Safe Args generierte Java-Code verarbeitet jetzt globale Aktionen und tief verschachtelte Ziele richtig. b/123347762
Version 1.0.0-alpha11
23. Januar 2019
Dies ist ein Hotfix-Release von 1.0.0-alpha10
, in dem ein Problem mit Safe Args behoben wird.
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 Directions-Klasse, die globalen Aktionen zugeordnet ist, nicht importieren. b/123307342
Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Kotlin-Nutzer können jetzt den
by navArgs()
-Property-Delegate verwenden, um verzögert eine Referenz auf eine von Safe Args generierteNavArgs
-Klasse in einemActivity
oderFragment
abzurufen. b/122603367 - Mit Safe Args können Sie jetzt Kotlin-Code generieren, indem Sie das
androidx.navigation.safeargs.kotlin
-Plug-in anwenden. Der Kotlin-Code wird speziell für Module erstellt, die nur Kotlin verwenden. Dabei werden Standardargumente und unveränderliche Klassen anstelle des Builder-Musters verwendet, das weiterhin über das vorherigeandroidx.navigation.safeargs
-Plugin verfügbar ist. b/110263087
Geändertes Verhalten
- Übereinstimmende Deeplinks werden jetzt auf den Deeplink mit den meisten übereinstimmenden Argumenten ausgerichtet. b/118393029
- Wenn Sie
setGraph()
auf einemNavController
aufrufen, wird der Backstack jetzt zurückgesetzt. b/111450672 - Unbekannte Deeplinks führen nicht mehr zu einem
IllegalStateException
, sondern werden ignoriert. Dadurch werden Probleme mit verschachtelten oder mehrerenNavHostFragment
s behoben. b/121340440
Aktuelle Änderungen
- Die
NavOptions.applyPopAnimationsToPendingTransition()
-Methode zum Anwenden von Pop-Animationen auf eine Aktivität wurde zuActivityNavigator
verschoben. b/122413117 - Mit Safe Args wird jetzt vermieden, dass identische Klassen für Aktionen ohne Argumente dupliziert werden. Der Rückgabetyp für Methoden ohne Argumente in generierten NavDirections-Klassen ist jetzt
NavDirections
. b/123233147 - Die von Safe Args generierten Directions-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur mit den generierten statischen Methoden interagieren. b/123031660
- Die von Safe Args generierten
NavDirections
-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur über die statischen Methoden in den generierten Directions-Klassen generiert werden. b/122963206 - Die zurückgegebene
Bundle
ausNavDirections
'getArguments()
ist jetzt als@NonNull
anstatt als@Nullable
gekennzeichnet. b/123243957
Fehlerkorrekturen
- In
NavDeepLinkBuilder
werden jetzt mehrere gleichzeitigePendingIntent
s an dasselbe Ziel korrekt verarbeitet. Die Eindeutigkeit wird anhand der übergebenen Argumente bestimmt. b/120042732 NavController
verarbeitet jetztpopBackStack()
-Vorgänge korrekt, wenn ein verschachteltesNavHostFragment
oder andere untergeordnete Fragmente mit einem Backstack verwendet werden. b/122770335NavigationUI
legt jetzt die Inhaltsbeschreibung der Schaltfläche „Nach oben“ korrekt fest. b/120395362- Die von Safe Args generierten Directions-Klassen verarbeiten jetzt globale Aktionen, die dieselbe ID wie eine Aktion für ein Ziel haben, korrekt. b/122962504
- Die generierten
NavDirections
-Klassen von Safe Args 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 dieNavHostFragment
-FragmentManager
zu erstellen. Sie sollten immergetChildFragmentManager()
verwenden. b/112927148
Version 1.0.0-alpha09
18. Dezember 2018
Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Wir haben uns entschieden, die Entwicklung des Artefakts android.arch.navigation:navigation-testing
nicht fortzusetzen. Obwohl sich diese Methode für interne Tests von NavController
bewährt hat, empfehlen wir dringend alternative Teststrategien, z. B. das Simulieren der NavController
-Instanz, um zu prüfen, ob die richtigen navigate()
-Aufrufe erfolgen. Dieser Ansatz wird im Vortrag zum Thema „Single Activity“ auf dem AndroidDevSummit 2018 ausführlich behandelt. Wir arbeiten an zusätzlicher Dokumentation speziell zum Testen mit Navigation.
Neue Funktionen
MenuItem
s mitmenuCategory="secondary"
werden bei Verwendung mitNavigationUI
-Methoden nicht mehr aus dem Backstack entfernt. b/120104424- Mit
AppBarConfiguration
können Sie jetzt eine Fallback-OnNavigateUpListener
-Instanz festlegen, die aufgerufen wird, wennnavController.navigateUp()
false
zurückgibt. b/79993862 b/120690961
Aktuelle Änderungen
- Wenn Sie ein
<argument>
mit einemargType="reference"
verwenden, wird die Referenz nicht mehr von Navigation geparst, sondern die Rohressourcen-ID selbst wird bereitgestellt. b/111736515 onNavDestinationSelected()
kehrt jetzt standardmäßig zum Startziel Ihres Navigationsdiagramms zurück. Dadurch sind sie mit densetup
-Methoden konsistent. Fügen SiemenuCategory="secondary"
zu IhremMenuItem
hinzu, um zu vermeiden, dass der Backstack geleert wird. aosp/852869- Die
fromBundle()
-Methoden der generiertenArgs
-Klassen akzeptieren jetzt ein nicht leeresBundle
anstelle eines nullableBundle
. aosp/845616
Fehlerkorrekturen
- Argumente werden jetzt korrekt aus Deeplinks geparst, als der richtige
argType
anstatt immer als Strings. b/110273284 - Die Navigation exportiert jetzt ihre ö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
Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Wenn Ziel-Labels mit
NavigationUI
-Methoden verwendet werden, werden{argName}
-Instanzen in Ihremandroid:label
jetzt automatisch durch das richtige Argument ersetzt. b/80267266 - Die Navigation hängt jetzt von der Support Library 28.0.0 ab. b/120293333
Aktuelle Änderungen
OnNavigatedListener
wurde inOnDestinationChangedListener
umbenannt. b/118670572OnDestinationChangedListener
übergibt jetzt auch dieBundle
der Argumente. aosp/837142- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen Methoden wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm Ihres Diagramms, um alle Ziele aus dem Backstack zu entfernen. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet die Möglichkeit, beliebigeIntent.FLAG_ACTIVITY_
-Flags festzulegen. aosp/828140NavController.onHandleDeepLink
wurde inhandleDeepLink
umbenannt. aosp/836063- Viele Klassen und Methoden, die nicht für die Unterklasse vorgesehen sind, z. B.
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden zufinal
geändert. aosp/835681 - Die eingestellte Methode
NavHostFragment.setGraph()
wurde entfernt. aosp/835684 - Die verworfene Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Fragmenterstellung wurde zu
FragmentNavigator
verschoben, sodass sie einfacher an einFragmentFactory
delegiert werden kann. b/119054429 - Der Konstruktor für
NavGraphNavigator
akzeptiert keinContext
mehr. aosp/835340 - NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle mehr. Die von
getNavigatorProvider()
zurückgegebeneNavigatorProvider
hat sich in ihrer Funktionalität nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt. Rufe stattdessennavigate()
imNavigator
auf. aosp/830663Navigator
wurde erheblich umgestaltet, sodassOnNavigatorNavigatedListener
nicht mehr erforderlich ist. Stattdessen gibtnavigate
dasNavDestination
zurück, zu dem navigiert wurde.Navigator
-Instanzen können keine Pop-Ereignisse mehr an dieNavController
senden. Verwenden Sie einOnBackPressedCallback
, um das Drücken der Zurück-Taste abzufangen undnavController.popBackStack()
aufzurufen. aosp/833716
Fehlerkorrekturen
popUpTo
funktioniert jetzt einheitlich, wenn das Ziel ein<navigation>
-Element ist. b/116831650- Es wurden mehrere Fehler behoben, die bei Verwendung verschachtelter Grafiken zu einem
IllegalArgumentException
geführt haben. b/118713731 b/113611083 b/113346925 b/113305559 - Das Attribut
dataPattern
von<activity>
-Zielen füllt jetzt Argumente aus Nicht-String-Argumenten durch Aufrufen vontoString()
. b/120161365
Safe Args
- Safe Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Für Enum-Typen kann ein Standardwert festgelegt werden, indem das Enum-Literal ohne den 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
- Safe Args fügt bei Bedarf
@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 gelten. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
- Sie können jetzt Argumente an das Startziel Ihres Diagramms übergeben. b/110300470
- Deeplinks unterstützen jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen. b/112806402
Aktuelle Änderungen
- Das Modul
navigation-testing-ktx
wurde innavigation-testing artifact
integriert und wird nicht mehr veröffentlicht. - Das
navigation-testing
-Artefakt hat jetzt eine Abhängigkeit von der Kotlin-Standardbibliothek. Die API wurde geändert, um sie besser an die Kotlin-Konventionen anzupassen. Sie können sie aber weiterhin für Tests verwenden, die in Java geschrieben wurden. - Im Metadatenmanifest registrierte Navigationsdiagramme werden nicht mehr unterstützt. b/118355937
- Aktionen können nicht mehr an <activity>-Ziele angehängt werden. aosp/785539
Fehlerkorrekturen
- Abfrageparameter werden jetzt in Deeplinks korrekt geparst. b/110057514
- Bei Aktivitätszielen werden jetzt alle Ein- und Ausblendanimationen korrekt angewendet. b/117145284
- Ein Absturz nach Konfigurationsänderungen bei Verwendung benutzerdefinierter Navigatoren wurde behoben. b/110763345
Safe Args
- Safe Args haben jetzt eine feste Abhängigkeit vom Android-Gradle-Plug-in 3.2.1. b/113167627
- Wegbeschreibungen können jetzt für innere Klassen generiert werden. b/117407555
- Das Problem beim Generieren von Wegbeschreibungen für ein <include>-Diagramm wurde behoben. b/116542123
Version 1.0.0-alpha06
20. September 2018
Neue Funktionen
- Shared Element Transitions für Fragment- und Aktivitätsziele werden jetzt unterstützt b/79665225. Weitere Informationen finden Sie unter Navigation mit der Navigation Architecture Component implementieren.
- Wenn Sie ein Element in
NavigationView
auswählen, wird jetzt das zugehörige Bottom Sheet geschlossen. b/112158843
API-Änderungen
- Funktionsgefährdende Änderung:Die Navigator-Methode
navigate()
verwendet jetzt einenNavigator.Extras
-Parameter. - Die Methode
getGraph()
von NavController ist jetztNonNull
. b/112243286
Fehlerkorrekturen
NavigationUI.setupWithNavController()
Bei Verwendung mit Ansichten aus einzelnen Zielen werden keine Ansichten mehr offengelegt. b/111961977- Navigator
onSaveState()
wird jetzt nur noch einmal aufgerufen b/112627079
Safe Args
- Die Klassen für Navigationsziele erben jetzt die Directions-Klasse des übergeordneten Elements, sofern vorhanden. b/79871405
- Die Klassen „Directions“ und „Args“ haben jetzt eine nützliche
toString()
-Implementierung b/111843389.
Version 1.0.0-alpha05
10. August 2018
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zu einem falschen Verhalten des Backstacks führte. b/111907708
- Fehlerkorrektur für
equals()
der Generated Args-Klassen. b/111450897 - Fehler beim Build in Safe Args behoben. b/109409713
- Fehler bei der Konvertierung von Ressourcen-IDs in Java-Namen behoben b/111602491
- Fehlermeldungen zur Nullable-Annotation im Safe Args-Plug-in beheben
- Fehlende Anmerkungen zur Null-Zulässigkeit hinzufügen
Version 1.0.0-alpha04
July 19, 2018
Navigation 1.0.0-alpha04
und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API- und Verhaltensänderungen
- NavHostFragment legt das aktuelle Fragment immer als primäres Navigationsfragment fest. So wird dafür gesorgt, dass untergeordnete Fragmentmanager geleert werden, bevor der äußere NavController geleert wird. b/111345778
Safe Args
- Funktionsgefährdende Änderung:
app:type
wurde inapp:argType
geändert, um Konflikte mit anderen Bibliotheken wie ConstraintLayout 2.0.0-alpha1 zu vermeiden b/111110548. - Fehlermeldungen von Safe Args sind jetzt klickbar b/111534438
- In Args-Klassen wird jetzt bestätigt, dass
NonNull
-Attribute tatsächlich nicht null sind. b/111451769 - Den generierten Klassen „NavDirections“ und „Args“ wurden zusätzliche
NonNull
-Annotationen hinzugefügt. b/111455455 b/111455456
Fehlerkorrekturen
- Es wurde ein Problem mit der System-Zurück-Schaltfläche behoben, das nach dem Deeplinking zu einem Fragmentziel auftrat. b/111515685
Version 1.0.0-alpha03
12. Juli 2018
Navigation 1.0.0-alpha03
und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API- und Verhaltensänderungen
- Die Methode „NavigationUI.setupWithNavController“ für die Symbolleiste wurde hinzugefügt. b/109868820
- Für CollapsingToolbarLayout wurde die Methode „NavigationUI.setupWithNavController“ hinzugefügt. b/110887183
- popBackStack() gibt jetzt „false“ zurück, wenn der Backstack leer ist oder wenn die angegebene Ziel-ID nicht im Backstack enthalten ist. b/110893637
- FragmentNavigator ignoriert jetzt Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat. So werden Ausnahmen vom Typ „Can not perform this action after onSaveInstanceState“ vermieden. b/110987825
Safe Args
- Breaking Change:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den entsprechenden NavDirections-Methodennamen durch CamelCase ersetzt.
- Aus
DemoController.index
wird beispielsweisesetDemoControllerIndex
b/79995048. - Aus
action_show_settings
wird beispielsweiseactionShowSettings
b/79642240.
- Aus
- Funktionsgefährdende Änderung:Argumente werden jetzt standardmäßig als „nicht null“ betrachtet. Wenn Sie NULL-Werte für String- und Parcelable-Argumente zulassen möchten, fügen Sie
app:nullable="true"
b/79642307 hinzu. - Sie können jetzt
app:type="long"
mit „defaultValues“ in der Form „123L“ verwenden. b/79563966 - Parcelable-Argumente werden jetzt unterstützt. Dazu wird ein vollständig 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 Safe Args-Plug-in kann jetzt auf Bibliotheksprojekte angewendet werden. b/80036553
- Das Safe Args-Plug-in kann jetzt auf Feature-Projekte angewendet werden. b/110011752
Fehlerkorrekturen
- Probleme bei der Navigation während der Fragment-Lebenszyklusmethoden behoben b/109916080
- Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken wurden behoben. b/110178671
- Probleme bei der Verwendung von
setPopUpTo
mit dem ersten Ziel im Diagramm wurden behoben b/109909461. - Ein Problem wurde behoben, bei dem alle
app:defaultValue
-Werte als Strings übergeben wurden b/110710788. - aapt2, das im Android-Gradle-Plug-in 3.2 Beta 01 enthalten ist, fügt jetzt Keep-Regeln für jedes
android:name
-Attribut in Navigations-XML-Dateien hinzu. b/79874119 - Speicherleck beim Ersetzen des Standard-FragmentNavigators behoben b/110900142
Version 1.0.0-alpha02
7. Juni 2018
Geändertes Verhalten
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Beim Navigieren werden jetzt Argumente, die aus Deeplink-URLs geparst wurden, URL-decodiert. b/79982454
Fehlerkorrekturen
Ein
IllegalStateException
wurde behoben, wenn „navigate“ über Fragment-Lebenszyklusmethoden aufgerufen wurde. b/79632233Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um das 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 der Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
wurde behoben, wenn zur Navigation zu einem verschachtelten Diagramm zurückgekehrt wurde. b/80453447Ein Problem mit sich überschneidenden Fragmenten bei der Verwendung von
launchSingleTop
wurde behoben. b/79407969Die Navigation erstellt jetzt den richtigen synthetischen Backstack für verschachtelte Diagramme. b/79734195
NavigationUI hebt jetzt das richtige Element hervor, wenn ein verschachtelter Graph als
MenuItem
verwendet wird. b/109675998
API-Änderungen
Das Attribut
clearTask
für Aktionen und die zugehörige API inNavOptions
sind veraltet. b/80338878Das Attribut
launchDocument
für Aktionen und die zugehörige API inNavOptions
wurden eingestellt. b/109806636
Version 1.0.0-alpha01
8. Mai 2018
Navigation bietet ein Framework zum Erstellen der In-App-Navigation. Diese erste Version ist 1.0.0-alpha01
.