Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
30. Oktober 2024 | 2.8.3 | - | - | 2.9.0-alpha02 |
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 erforderlichen Artefakte hinzu:
Cool
dependencies { def nav_version = "2.8.0" // 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" }
Kotlin
dependencies { val nav_version = "2.8.0" // 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") }
Safe Args
Um sichere Argumente hinzuzufügen
fügen Sie folgendes classpath
in Ihre übergeordnete build.gradle
-Datei ein:
Cool
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Sie müssen außerdem eines der beiden verfügbaren Plug-ins anwenden.
Um für Java oder gemischte Java- und Kotlin-Module den Java-Sprachcode zu generieren,
diese Zeile in die build.gradle
-Datei Ihrer App oder Ihres Moduls ein:
Cool
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternativ können Sie folgenden Code hinzufügen, um Kotlin-Code zu generieren, der für reine Kotlin-Module geeignet ist:
Cool
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
android.useAndroidX=true
muss in deinem
gradle.properties
Datei gemäß
Zu AndroidX migrieren
Weitere 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. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen 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 einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 2.9
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.
Externer Beitrag
- Neue gängige
NavController.handleDeepLink(request: NavDeepLinkRequest)
-Methode. Vielen Dank, Konstantin Zchowrebov! (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 Navigationssysteme können ihre Ziele jetzt als Implementierung der
SupportingPane
-Benutzeroberfläche kennzeichnen. Dadurch wird derNavController
mitgeteilt, dass diese Ziele neben anderen Zielen angezeigt werden. Über diese Schnittstelle können beispielsweise mehrere Ziele gleichzeitigRESUMED
sein. (ID5559) - Unter Navigation
2.8.3
: Es wurden neue Lint-Prüfungen für die Modulenavigation-common
,navigation-runtime
undnavigation-compose
hinzugefügt, um typsichere 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) - In Navigation
2.8.3
: Neue Lint-Prüfungen für die Modulenavigation-common
,navigation-runtime
undnavigation-compose
wurden hinzugefügt, um typsichere 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)
Verhaltensänderungen
- Wenn Sie versuchen, eine
NavController
zu verwenden, die zuvorDESTROYED
war, wird jetzt eineIllegalStateException
ausgegeben. (I520da, b/369616172)
Fehlerkorrekturen
- Die Ausnahme „Enumerationsklasse nicht gefunden“ wurde aktualisiert, um die Verwendung der
@Keep
-Anmerkung vorzusehen, falls die Enumerationsklasse 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. Beim Versuch, Lint mit dem Android Gradle-Plug-in 8.4 oder höher auszuführen, wird einObsolete custom lint check
-Fehler ausgegeben. (b/368070326, b/371463741)
Version 2.8
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
- Neue Lint-Prüfungen für die Module
navigation-common
,navigation-runtime
undnavigation-compose
wurden hinzugefügt, um typsichere 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 typsichere Routen mit Enum-Argumenten zu identifizieren, die nicht korrekt mit@Keep
annotiert sind. Diese Prüfung wird auf alle Erweiterungsfunktionen vonNavGraphBuilder
undNavDeepLinkBuilder
angewendet. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Fehlerkorrekturen
- Die neuen Lint-Regeln, die in
Navigation 2.8.*
hinzugefügt wurden, führten zum FehlerObsolete custom lint check
, wenn versucht wurde, Lint mit dem Android-Gradle-Plug-in 8.4 oder höher auszuführen. (I1be3d, b/368070326, b/371463741)
Bekannte Probleme
- Beim Versuch, Lint mit Lint 16 (AGP 8.7) oder höher auszuführen, wird von Navigation Lint der Fehler „Obsolete custom lint check“ 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 Navigationstypsicherheit unterstützt jetzt serialisierbare Klassen, die
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
undList<Double>?
enthalten, ohne dass eine benutzerdefinierteNavType
erforderlich ist. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Fehlerkorrekturen
- Die Fehlermeldung wurde verbessert, wenn die Navigation das Argument einer Route nicht einem
NavType
zuordnen kann. Die neue Fehlermeldung enthält den Argumentnamen, den voll qualifizierten Argumentnamen und den voll qualifizierten 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
popBackStack
-Funktion zu erzwingen, die einen reifierten Klassentyp annimmt, wenn versucht wird,popBackStack
mit typsicheren APIs zu verwenden. (Ief161, b/358095343)
Fehlerkorrekturen
- Für die Navigation ist jetzt erforderlich, dass die an die
startDestination
einesNavGraph
übergebene Route die Werte für alle erforderlichen Argumente enthält. Dazu gehören auch Argumente, die nicht null sein dürfen und keinen Standardwert haben. (I18e74, b/362594265) - Für Navigationsargumente, die für die Navigation sicher sind, wurde die Unterstützung für nicht nullwertige Strings hinzugefügt. „Null“-Werte werden jetzt so geparst und im Bundle gespeichert, wie sie sind. Das unterscheidet sich vom bisherigen Verhalten, bei dem „Null“-Werte in ein Nullobjekt geparst wurden. Diese Änderung gilt nur für Stringtypen, die nicht null sein dürfen. Nullbare Strings bleiben unverändert. (I08b4a, b/348936238)
- Ein
NavDestination
kann nur noch über einen Deeplink aufgerufen werden, der dem Ziel explizit hinzugefügt wurde. Das bedeutet auch, dass Sie nur mit der Überladung der Navigationsfunktion, die eine Stringroute annimmt, zur Route eines Ziels navigieren können. Dadurch wird eine Sicherheitslücke geschlossen, die es ermöglichte, Deeplinks zu einem potenziell geschützten Ziel zu erstellen. (Ie30e6)
Abhängigkeitsupdate
- Navigation Safe Args sind jetzt nicht mehr von Kotlin 2.X, sondern von Kotlin 1.9.24 abhängig. So müssen Entwickler nicht zwangsweise ein Update durchführen. (a4129a)
- Die Navigation „Schreiben“ hängt jetzt von Schreiben
1.7.2
ab.
Version 2.8.0
4. September 2024
androidx.navigation:navigation-*:2.8.0
wurde veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
Typsicherheit der Kotlin-DSL für Navigation
- Navigation bietet jetzt Typsicherheit für die Kotlin DSL, die von Navigation Compose verwendet wird, und verwendet die Kotlin-Serialisierung. Damit 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( 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 Vorhersage der In-App-Rückkehr über die neuen
SeekableTransitionState
APIs von compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Überleitung aufrufen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen.
Navigationsfragment – Composeable
- 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. Jedecomposable
-Zieladresse muss als@Composable
-Methode auf oberster Ebene ohne Argument angegeben werden, deren vollständig qualifizierter Name alsandroid:name
-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele wechseln, 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 eine neue
CollectionNavType<T>
-Klasse, 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 von Ganzzahlen, Strings, Booleschen Werten, Gleitkommazahlen und Ganzzahlen vom Typ „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, der beim Übergeben von Enumerationsklassen der obersten Ebene als typsichere Argumente auftrat. (I0ba76, b/358137294)
- Navigation 2.8 funktioniert jetzt richtig mit SDK 34 und wird erst mit der 2.9-Version zusammen mit den restlichen AndroidX-Bibliotheken auf SDK 35 umgestellt. (b/358798728)
Version 2.8.0-beta07
7. August 2024
androidx.navigation:navigation-*:2.8.0-beta07
wurde veröffentlicht. Version 2.8.0-beta07 enthält diese Commits.
Bekannte Probleme
- Aufgrund von b/358137294 werden standardmäßig nur in einer anderen Klasse verschachtelte Enums unterstützt. Enums der obersten Ebene werden in der nächsten Version unterstützt.
Fehlerkorrekturen
- Bei der Navigation zu doppelten oder gemeinsamen Zielen wird das Ziel ausgewählt, das dem aktuellen Standort im Graphen am nächsten ist. (Ic89a4, b/352006850)
- Für die Navigation in sicheren Argumenten wurde jetzt ein neues
NavType.EnumType
hinzugefügt. Das bedeutet, dass fürEnum
-Typen keine benutzerdefiniertenNavType
s mehr erforderlich sind. Beachten Sie, dassSerialName
derEnum
der voll qualifizierte Standardname sein muss. (I66d22, b/346475493) - Für die Navigation in sicheren Argumenten wurde die Unterstützung für typisierte Argumente mit Nullwert wie
Int?
,Long?
,Float?
,Boolean?
undEnum<*>?
hinzugefügt. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Für die
startDestination
vonNavGraph
werden jetzt die Standardargumentwerte verwendet, wenn die anNavGraph
übergebenestartDestination
-Route genau mitstartDestination.route
übereinstimmt. (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 auf Companion-Objekte für den übergebenen Klassentyp geprüft wurden, wodurch der Fehler von Lint nicht erkannt wurde. (I92b09)
Version 2.8.0-beta05
10. Juli 2024
androidx.navigation:navigation-*:2.8.0-beta05
wurde veröffentlicht. Version 2.8.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Behebung des Absturzes der
singleTop
-Navigation, wenn verschachtelteNavGraphs
dieselbestartDestination
-Route teilen. (I17b94, b/294408596)
Version 2.8.0-beta04
26. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta04
wurde 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 Serializer, die direkt über
@Serializable(with =...)
in Klassenfeldern deklariert werden, wurde verbessert, um klarzustellen, dass diese Funktion derzeit nicht unterstützt wird. (I052b0, b/341319151) - Die
SavedStateHandleFactory
-Test-API kann jetzt auch in nicht-Android-Tests verwendet werden. Dazu muss Robolectric das Argument-Parsing mit Bundles unterstützen. (I76cdc, b/340966212) - Der Absturz beim Wiederherstellen des Status beim Fortsetzen der App nach dem Prozesstod bei Verwendung der typsicheren Navigation in Compose wurde behoben. (Ia8f38, b/341801005)
- Ein Problem in der Navigationsleiste wurde behoben, bei dem nach dem Abbrechen der Geste „Zurückvorhersagen“ die
NavBackStackEntry
, zu der der Nutzer zurückkehrt, nie wieder in den LebenszyklusstatusRESUMED
zurückkehrt. Auf diese Weise wird auch sichergestellt, dass das Rückkehrziel korrekt wieder animiert wird und nicht nach dem Flimmern einrastet. (I97a0c, b/346608857) - Wenn Sie die Funktion „Vorhersage zurück“ mit Navigation Compose verwenden, hat das eingeblendete Ziel jetzt die richtige Z-Reihenfolge und wird richtig ü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 abstrakteemptyCollection()
-Methode. Überschreiben Sie dies, um eine leere Sammlung zu verarbeiten, die als Argument übergeben wird. (Ie4d84, b/341723133)
Fehlerkorrekturen
- Die Dokumentation zu
NavType.serializeAsValue
undserializeAsValues
wurde ergänzt, 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-CollectionNavType
-Argument wurde behoben. Wenn Sie mit einem Nullwert fürCollectionNavType
navigieren, ist das Ausgabeargument der in Ihrer serialisierbaren Klasse deklarierte Standardwert oder der Rückgabewert vonemptyCollection()
, falls 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 einer benutzerdefiniertenNavType
, in der Nullwerte zulässig waren, wurde behoben. (I1c29b, b/342239473) - Probleme beim Wiederherstellen des Navigations-Backstack-Status wurden behoben, die beim Versuch aufgetreten sind, einen Backstack-Eintrag wiederherzustellen, der vom aktuellen Ziel aus nicht über die ID erreichbar ist. Da Routen von IDs unterstützt werden, waren auch Ziele betroffen, die mit Routen erstellt wurden. Außerdem wird ein Absturz behoben, der durch den Aufruf von
clearBackStack()
verursacht wurde und auf demselben zugrunde liegenden Problem beruhte. (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()
verwendet jetzt einentypeMap
-Parameter für benutzerdefinierte Argumenttypen. (Ie39fb, b/339026523)navigation-testing
wurde eine Test-API hinzugefügt, um einSavedStateHandle
aus einem serialisierbaren Kotlin-Objekt zu erstellen. (Id4867, b/339080702)
Fehlerkorrekturen
- Die Dokumentation zu fehlenden Parametern für Navigations-Kotlin-DSL-Funktionen wurde hinzugefügt. (I26a36)
Version 2.8.0-alpha08
1. Mai 2024
androidx.navigation:navigation-*:2.8.0-alpha08
wurde veröffentlicht. Version 2.8.0-alpha08 enthält diese Commits.
Safe Args in Navigation Compose
- Die Arbeiten zur Unterstützung der Typsicherheit zur Kompilierungszeit für Navigation Compose und Nutzer der Navigation Kotlin DSL basierend auf der Kotlin-Serialisierung sind abgeschlossen. Die zuvor experimentellen APIs sind jetzt stabil. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Bei dieser Funktion wird die Kotlin-Serialisierung verwendet, damit Sie Ziele in Ihrem Navigationsgraphen ü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( 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 lokal für kombinierbare Methoden innerhalb einerComposableFragment
gilt. (If35e5) NavType
bietet jetzt integrierte Unterstützung für Listen von Ganzzahlen, Strings, Booleschen Werten, Gleitkommazahlen und Ganzzahlen vom Typ „Long“. (I4b6dd, Ia914c, b/188693139)
Version 2.8.0-alpha07
17. April 2024
androidx.navigation:navigation-*:2.8.0-alpha07
wurde veröffentlicht. Version 2.8.0-alpha07 enthält diese Commits.
Neue Funktionen
Es wird ein neues
navigation-fragment-compose
-Artefakt hinzugefügt, das eineComposableNavHostFragment
-Alternative zuNavHostFragment
enthält. Damit können Sie Ihren Navigations-XML-Dateiencomposable
-Ziele hinzufügen. Jedescomposable
Ziel muss als Top-Level-Methode ohne Argument@Composable
ausgedrückt werden, deren vollständig qualifizierter Name als Attributandroid:name
für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele wechseln, 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 von Safe Args in Navigation Compose mit einem Ansatz, der auf der Kotlin-Serialisierung basiert, wurde fortgesetzt. Diese APIs sind noch nicht fertiggestellt und sind mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. {Iefd95, I409c8, I409c8, I5b5b5ac, I7e7e753, I960f8, I3eabd, I8ed5a, Ied2c9, und 17}17}17.17.17.17.1.14}.
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 Ansatz, der auf der Kotlin-Serialisierung basiert, wurde eingeführt. Diese APIs sind noch nicht fertiggestellt und sind mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertig ist.
Fehlerkorrekturen
NavHost
verwendet jetztAlignment.TopStart
als Standardargument für „contentAlignment“. Dadurch entspricht sie dem Standard fürAnimatedContent
und einige Fälle mit unerwarteter Skalierung beim Übergang von der Mitte werden behoben. (I09e72, b/330111602)- Wenn Sie die Touch-Geste „Zurück“ verwenden, während Sie die Funktion „Navigationseingabe“ verwenden, wird der benutzerdefinierte Übergang durch
NavHost
jetzt korrekt und nicht sofort abgeschlossen. (I99017, b/327292110)
Version 2.8.0-alpha05
20. März 2024
androidx.navigation:navigation-*:2.8.0-alpha05
wurde veröffentlicht. Version 2.8.0-alpha05 enthält diese Commits.
Neue Funktionen
- Sie können jetzt Argumente direkt in der
startDestination
-Route anstartDestination
vonNavGraph
übergeben, ohnedefaultValue
verwenden zu müssen. Das gilt auch für verschachtelteNavGraph
startDestinations
. (I0e0b5, b/109505019, b/188693139)
API-Änderungen
- Neue abstrakte
CollectionNavType<T>
-Klasse 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, die bestimmt, ob zwei Werte desselben Typs einander entsprechen. (I6cb97, b/327229511)
Fehlerkorrekturen
- Für Abfrageparameter 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. Dadurch 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 ArraysNavTypes
richtig abgleichen. (Iea805, b/327229511)
Version 2.8.0-alpha04
6. März 2024
androidx.navigation:navigation-*:2.8.0-alpha04
wurde veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
Neue Funktionen
- Sie können die
SizeTranform
für Ihre Übergänge jetzt 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 bei der Navigation in der Compose-Ansicht mit der Schaltfläche „Zurück“ des Systems ohne Geste der Übergang nicht richtig angezeigt wurde.
NavHost
(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
gekennzeichnet, da sie Code verwendet, der sich trotzdem im Hauptthread befinden muss. (Ibb988, b/299523245)
Fehlerkorrekturen
- Ein Problem in der Navigation wurde behoben, durch das
NavGraph
-ViewModels zu frühDESTROYED
wurden, weil dieViewModel
des zugehörigen Eintrags nicht Teil des gespeicherten Zustands war. (Ib6bb7, b/317581849)
Abhängigkeitsupdate
- Die Navigationsfunktion „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 Vorhersage der In-App-Rückkehr über die neuen
SeekableTransitionState
APIs von compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Überleitung aufrufen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen. (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
- Behoben wurde ein
BackStackState
-Leak, bei dem mehreresaveState
-Aufrufe für ein Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste wiederhergestellt werden konnte. (I598b0, b/309559751) - Ein Problem wurde behoben, durch das Argumente, die keine Strings sind, nicht richtig angezeigt wurden, wenn die
NavigationUI
-Hilfsfunktionen zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)
Abhängigkeitsupdate
- Die Navigationsfunktion „Compose“ hängt jetzt von Compose
1.7.0-alpha01
ab. Dadurch wurde ein Problem behoben, das zu einer unerwarteten Skalierungsanimation führen konnte. (b/297258205)
Externer Beitrag
- Danke, SimonMarquis, dass das Anzeigeproblem für Nicht-String-Argumente behoben wurde, wenn die Helper
NavigationUI
zum Ausfüllen des Titels von App-Leisten verwendet wurden.
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 aus Navigation
2.8.0-alpha01
: BehobenerBackStackState
-Leak, bei dem mehreresaveState()
-Aufrufe für eine einzelneNavBackStackEntry
dazu führten, dass mehrere Zustände gespeichert wurden, aber nur der erste gespeicherte Zustand wiederhergestellt werden konnte. (I598b0, b/309559751) - Backport aus Navigation
2.8.0-alpha01
: Ein Problem wurde behoben, bei dem Argumente, die keine Strings sind, nicht richtig angezeigt wurden, wenn der Titel von App-Leisten mithilfe derNavigationUI
-Hilfsfunktionen ausgefüllt wurde. (#636, b/316676794)
Externer Beitrag
- Vielen Dank an SimonMarquis für die Behebung des Anzeigeproblems bei nicht stringbasierten Argumenten, wenn der Titel von App-Leisten mithilfe der
NavigationUI
-Hilfsfunktionen ausgefüllt wird.
Version 2.7.6
Version 2.7.6
13. Dezember 2023
androidx.navigation:navigation-*:2.7.6
wurde veröffentlicht. Version 2.7.6 enthält diese Commits.
Fehlerkorrekturen
- Bei der Funktion
NavGraph
equals()
werden jetzt die Knoten des anderen Graphen korrekt berücksichtigt, nicht nur der aufrufende Graph. Dadurch wird sichergestellt, dass Diagramme mit Knoten mit unterschiedlichen IDs nicht mehr als gleich angesehen werden (I401cb, b/311414915).
Version 2.7.5
Version 2.7.5
1. November 2023
androidx.navigation:navigation-*:2.7.5
wurde veröffentlicht. Version 2.7.5 enthält diese Commits.
Leistungsverbesserungen
- Die Leistung beim Vergleich von zwei Grafiken wurde erheblich verbessert (sowohl in Bezug auf die Zeit als auch in Bezug auf die Anzahl der Zuweisungen). Das bedeutet, dass Aufrufe wie
setGraph
, bei denen die neue Grafik intern mit der vorhandenen verglichen wird, viel schneller sind und zu weniger übersprungenen Frames führen. Vielen Dank an Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62) NavHost
rendert jetzt das Startziel im ersten Compose-Pass, anstatt auf den zweiten Pass zu warten, um den aktualisierten Status zu lesen. (I439a7, b/304852206)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem der Rückstapel entfernt wurde, wenn
setGraph
mehrmals mit dem exakt gleichen Diagramm aufgerufen wurde, nur wenn es in Ihrem Diagramm ein Ziel gab, das eine Aktion enthielt, die zwei Ziele verknüpfte. (Beispiel 7) - Dialoge, die in schneller Folge aufgerufen und geschlossen wurden, werden nicht mehr in die Liste der
NavController.visibleEntries
aufgenommen. (I67586, b/287969970) - Wenn ein Eintrag gefolgt von einer Konfigurationsänderung per Pop-up eingefügt wird, wird der
ViewModel
des Eintrags jetzt korrekt gelöscht, wennsaveState
"false" ist. (Idf242, b/298164648) - Es wurde ein Problem behoben, bei dem
NavController
denselben Deeplink mehr als einmal verarbeiten konnte, wenn der Back-Stack vor einer Konfigurationsänderung vollständig leer war, odersetGraph
nur dann aufruft, wenn für den eingehenden Intent das FlagFLAG_ACTIVITY_NEW_TASK
gesetzt war. (I73c7f)
Abhängigkeitsupdates
- Die Navigation mit Fragmenten hängt jetzt von Fragment 1.6.2 ab. Dadurch wurde ein Problem behoben, bei dem die
ViewModel
-Instanzen verschachtelter Fragmente beim Aufrufen vonclearBackStack
nicht gelöscht wurden.
Version 2.7.4
Version 2.7.4
4. Oktober 2023
androidx.navigation:navigation-*:2.7.4
wird veröffentlicht. Version 2.7.4 enthält diese Commits.
Neue Funktionen
- Für
popUpTo
wurde die Unterstützung für Routen mit Argumenten hinzugefügt, um zu einem bestimmten Eintrag zurückzukehren, der genau diese Argumente verwendet. Dies entspricht der Unterstützung inpopBackStack
. (I731f4, b/299255572)
Fehlerkorrekturen
- Problem behoben, bei dem die Unterbrechung einer Navigation durch eine andere Navigation mit
popUpTo
zum Absturz vonFragmentNavigator
führte. (I3c848, b/301887045) - Ein Problem wurde behoben, durch das die
currentDestination
nach dem Drücken der Rücktaste nicht richtig aktualisiert wurde, um dem angezeigten Fragment zu entsprechen. (Id0d6c, b/289877514) - Der
DialogFragment
-Lebenszyklus wechselt jetzt ordnungsgemäß in den StatusRESUMED
, wenn das Dialogfeld darüber geschlossen wird. (I88f0d, b/301811387)
Version 2.7.3
Version 2.7.3
20. September 2023
androidx.navigation:navigation-*:2.7.3
wird veröffentlicht. Version 2.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem bei der Navigation mit Fragmenten wurde behoben, durch das die Liste
visibleEntries
falsche Einträge enthielt. (I5caa9, b/288520638) - Ein Problem wurde behoben, bei dem für das Ziel „Floating Window“ (z. B.
Dialogs
,Bottomsheets
usw.) nie einRESUMED
-Lebenszyklusereignis zurückgegeben wurde. (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 vom Lebenszyklus
2.6.2
ab. Dabei wird eine Interaktion zwischenrememberSaveable
und demNavHost
von Navigation Compose behoben, die dazu führt, dass derrememberSaveable
-Status von Zielen und alleSavedStateHandle
-Instanzen, die zuViewModel
gehören, nach dem Beenden eines Prozesses und der Neuerstellung nicht ordnungsgemäß wiederhergestellt werden. (b/298059596, b/289436035) - Ein Problem wurde behoben, bei dem bei der gleichzeitigen Anzeige mehrerer Dialogfelder in Navigation Compose die teilweise verdeckten Dialogfelder (z.B. nicht das oberste Dialogfeld) den Lebenszyklusstatus
CREATED
stattSTARTED
hatten. (aosp/2728520, b/289257213) - Ein Problem wurde behoben, bei dem beim gleichzeitigen Anzeigen mehrerer Dialogfelder in Navigation Compose das oberste Dialogfeld geschlossen wurde, wodurch das neue oberste Dialogfeld im Lebenszyklusstatus
STARTED
hängen blieb, anstatt korrekt zuRESUMED
zu wechseln. (aosp/2629401, b/286371387) - Die Funktion „Navigation Safe Args“ instanziiert ihre Aufgabe nicht mehr sofort, wenn sie nicht tatsächlich ausgeführt wird. (I0e385, b/260322841)
Aktualisierung der Abhängigkeit
- Die Navigationsfunktion „Compose“ hängt jetzt von Compose-Version 1.5.1 ab.
Version 2.7.1
Version 2.7.1
23. August 2023
androidx.navigation:navigation-*:2.7.1
wurde veröffentlicht. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem bei der Navigation mit Compose wurde behoben, bei dem bei Verwendung einer
Scaffold
ein Fehler beim Zugriff auf eineLifecycle.State.DESTROYED
ViewModel
ausgegeben werden konnte. (I1dc11, b/268422136)
Version 2.7.0
Version 2.7.0
9. August 2023
androidx.navigation:navigation-*:2.7.0
wurde 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 der Navigationsanimation für Begleiter wieder in Navigation Compose verschieben.
Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost
verfügbar waren, in NavHost
direkt unterstützt werden.
An der Navigationsanimation von Accompanist werden keine weiteren Änderungen vorgenommen. Wir werden sie bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose veröffentlichen. Diese Anleitung ist jedoch genau umgekehrt wie die im Migrationsleitfaden beschriebene und es sind keine weiteren API-Änderungen erforderlich, wenn Sie bereits die neueste Alphaversion von Accompanist (0.31.2-alpha
) verwenden. (b/197140101)
Fehlerkorrekturen
- NavHost in Navigation Compose fängt jetzt System-Back-Aufrufe korrekt ab, auch nachdem die Aktivität ANGEHALTEN und WIEDERGEFÜHRT wurde. (Icb6de, b/279118447)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von „
1.5.0
zusammenstellen“ von1.1.0
ab.
Version 2.7.0-rc01
26. Juli 2023
androidx.navigation:navigation-*:2.7.0-rc01
wurde veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die im Rahmen der
NavHost
erstelltenEnterTransition
- undExitTransition
-Lambdas möglicherweise im Arbeitsspeicher verbleiben, auch nachdem dieNavHost
aus der Komposition entfernt wurde. (I893d0)
Bekannte Probleme
- Bei Navigation 2.6.x kann es beim Navigieren mit „popUpTo“ zu einem
IllegalArgumentException
kommen. Möglicherweise lässt sich diese Ausnahme vermeiden, indem Sie Ihren Graphen umstrukturieren. Hier finden Sie entsprechende Tipps. (b/287133013)
Version 2.7.0-beta02
28. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta02
wurde veröffentlicht. Version 2.7.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Navigations-Compose-Funktion hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, bei denen die Option „Mit
popUpTo
navigieren“ verwendet wird.(/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 Systemrückrufe auch dann korrekt ab, wenn dieActivity
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 der Navigationsanimation für Begleiter wieder in Navigation Compose verschieben.
Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost
verfügbar waren, in NavHost
direkt unterstützt werden.
An der Navigationsanimation von Accompanist werden keine weiteren Änderungen vorgenommen. Wir werden sie bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose veröffentlichen. Diese Anleitung ist jedoch genau umgekehrt wie die im Migrationsleitfaden beschriebene und es sind keine weiteren API-Änderungen erforderlich, wenn Sie bereits die neueste Alphaversion von Accompanist (0.31.2-alpha
) verwenden. (b/197140101)
Fehlerkorrekturen
- Unter Navigation
2.6.0-rc02
: Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn Sie mitpopUpTo
navigiert und ein Fragment aus dem Backstack entfernt haben, ohne die Ansicht neu zu erstellen, funktionierte das System nicht mehr. (Ieb8d4, b/281726455)
Abhängigkeitsupdates
- Die Navigation hängt jetzt von der Funktion „Schreiben“ (
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 diearguments
, die an eineOnDestinationChangedListener
übergeben werden, sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass alle Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf diearguments
- oder andereOnDestinationChangedListener
-Instanzen berücksichtigt werden. NavDeepLink
unterstützt jetzt Standardwerte für Arrays, wodurch wiederholte Suchparameter unterstützt werden, die dem Arraytyp des Arguments zugeordnet sind.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 derNavType
-Klasse gekapselt werden.StringType
überschreibt jetzt diese Methode, umUri.encode
für die angegebeneString
aufzurufen.
Wichtige Änderungen an Navigation Compose seit Version 2.5.0
- In der Vorschau eines
NavHost
-kompositables wird jetzt standardmäßig diestartDestination
des Navigationsgraphen angezeigt. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
undNavController.clearBackStack(route)
unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen.- Beim Versuch, ein leeres
NavDeepLink
mit der Kotlin DSL vonnavDeepLink
zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein.
Wichtige Änderungen an der Navigation mit Fragmenten seit Version 2.5.0
NavHostFragment
fängt die Zurück-Schaltfläche des Systems selbst nicht mehr ab. So kann die zugrunde liegendeFragmentManager
den Systemrückgang verarbeiten. So können mit Fragment1.7.0-alpha01
und höher eine In-App-Animation für die Vorhersage der Rückwärtsnavigation auf Android U-Geräten bereitgestellt werden.- Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell eine
FragmentTransaction
auszuführen, die dem Backstack derFragmentManager
ein Fragment hinzufügt, wird jetzt eineIllegalArgumentException
geworfen. Sie sollten Fragmente immer über dienavigate()
API hinzufügen. - Wenn Sie den exakten String
${applicationId}
als Platzhalter in den Attributenapp:data
undapp:dataPattern
im Aktivitätselement einer XML-Navigationsdatei verwenden, wird der Platzhalter beim Auffließen automatisch mitpackageName
des Kontexts ausgefüllt. - Die
FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und minimiert wird. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor sie die endgültigeLifecycle.State
verschiebt. - Die
DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und minimiert wird. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt darauf wartet, dass dieDialogFragment
Lifecycle
zuDESTROYED
wechselt, bevor sie selbst zuDESTROYED
wechselt. - Mit
NavHostFragment
können Sie dieNavController
jetzt abrufen, sobald dieNavHostFragment
an dieFragmentManager
angehängt ist, und nicht erst nachonCreate()
. - Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab.
- Die Funktion „Sichere Args“ für Navigation hängt jetzt von Version 7.3.0 des Android-Gradle-Plug-ins ab. Das bedeutet, dass es jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist.
Wichtige Änderungen an NavigationUI seit Version 2.5.0
- Wenn die ID eines Navigationsgraphen an
AppBarConfiguration
übergeben wird (z. B. über eineMenu
), betrachtetNavigationUI
jetzt nur das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene, anstatt fälschlicherweise jedes Ziel innerhalb des Graphen als Ziel der obersten Ebene zu kennzeichnen. Das Übergeben der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neueisTopLevelDestination
-Funktion aufAppBarConfiguration
verfügbar. - Bei den
setupWithNavController
-Integrationen inNavigationUI
für die obere App-Leiste werdenR.string
-Werte fürReferenceType
-Argumente, die in Ihrerandroid:label
gefunden werden, jetzt in ihre Stringwerte geparst, anstatt die automatisch generierte Ressourcenganzzahl 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
wurde veröffentlicht. Version 2.6.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn Sie mit
popUpTo
navigiert und ein Fragment aus dem Backstack entfernt haben, ohne die Ansicht neu zu erstellen, funktionierte das System 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
- Es wurde ein Problem in der Navigation mit Fragmenten behoben, bei dem das Entfernen eines Fragments über die Navigation mit
popUpTo
imonResume()
-Lebenszyklus-Callback zu einemIllegalStateException
führte. (I21884, b/279644470)
Version 2.6.0-beta01
19. April 2023
androidx.navigation:navigation-*:2.6.0-beta01
wurde 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 eine
FragmentTransaction
auszuführen, die dem Backstack derFragmentManager
ein Fragment hinzufügt, wird jetzt eineIllegalArgumentException
geworfen. Sie sollten Fragmente immer über dienavigate()
API hinzufügen. (I6d38e) - Wenn es einen
navigate
gibt, der einen Eintrag hinzufügt, und einenpopBackStack
, der ihn im selben Frame entfernt, gelangt der resultierende oberste Eintrag im Backstack jetzt immer wieder zumRESUMED
Lifecycle.State
. (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
- Die Prüfung auf ungültige Routen wurde korrigiert. Wenn eine
NavDestination
eine nicht nullwertigeNavArgument
enthält, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die mit der nicht nullwertigenNavArgument
übereinstimmen. (Ic62bf, b/274697949) - Deeplink-Navigationen auf Grundlage von
Action/MimeType
schlagen jetzt fehl, wenn für den Navigationsvorgang eine nicht nullwertigeNavArgument
fehlt, die von derNavDestination
, mit der dieAction/MimeType
übereinstimmt, benötigt wird. (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 bei Verwendung vononLaunchSingleTop
ohne Speichern des Status in Navigation Compose auftritt. Außerdem wird ein Fehler behoben, bei dem beim Wechseln zu Zielen, die mit dem Stammgraphen verknüpft sind, ein falscher Rückstapel erstellt wird. (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 dieNavController
jetzt abrufen, sobald dieNavHostFragment
an dieFragmentManager
angehängt ist, und nicht erst nachonCreate()
. (Ic6382, b/220186282)
Fehlerkorrekturen
- Ein
NullPointerException
-Fehler beim Pop-up eines verschachtelten Diagramms mit einem nicht nullwertigen Argument wurde behoben. (6b3581, b/249988437) - Wenn Sie nach der Navigation mit
popUpTo
die Schaltfläche „Zurück“ verwenden, wird der Status derNavController
auf den richtigen Eintrag gesetzt. (I3a8ec, b/270447657) FragmentNavigator
entfernt jetzt ordnungsgemäß Einträge, wenn der Rückstapel über das System-Back-Symbol oderpopBackStack()
entfernt wird, unabhängig davon, ob die Transaktion Effekte für das Fragment verwendet. (I81bdf)- Das Hinzufügen von Fragmenten zum
FragmentNavigator
-FragmentManager
ohne Navigation führt nicht mehr zu einem Absturz. (b17204, b/274167493)
Abhängigkeitsupdates
- Die Navigation hängt jetzt vom Lebenszyklus
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
getBackStackEntry
-,popBackStack
- undclearBackStack
-API-Varianten, die Routen annehmen, unterstützen jetzt Routenmuster mit nicht beschreibbaren Argumenten und nicht beschreibbaren Abfrageparametern (I22294, b/269302500) - Ein Problem wurde behoben, durch das beim Aufrufen von
clearBackStack()
ausNavController
der gespeicherte Status im Fragmentmanager nicht gelöscht wurde, der mit dem gelöschten Rückstapel verknüpft ist. (Ic1cce, b/271190202) - Eine Regression in 2.6.0-alpha06 wurde behoben, durch die bei Verwendung des Systems zurück zwischen Tabs das falsche
MenuItem
inBottomNavigationView
hervorgehoben wurde. (I634f6, b/270447657) - Behobene Regression in 2.6.0-alpha06, die dazu führte, dass
NavBackStackEntry
s bei Verwendung vonAnimation
s nicht in den Status „FORTGESETZT“ 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
- In der Vorschau eines
NavHost
-kompositables wird jetzt standardmäßig diestartDestination
des Navigationsgraphen angezeigt. (I2b89f)
API-Änderungen
- Alle
NavController
navigate
-Überladungen sind jetzt mit@MainThread
annotiert, damit sie im Hauptthread aufgerufen werden. (I2c0b0, b/263427111)
Fehlerkorrekturen
- Absturz beim Navigieren bei Verwendung der dynamischen Fragmentnavigation wurde behoben. (I3ee29, b/268360479)
- Ein Fehler wurde behoben, durch den die untere Leiste beim Wechseln zu einem anderen Fragment über die System-Schaltfläche „Zurück“ nicht mit dem korrekt ausgewählten Element aktualisiert wurde (If559f, b/269044426)
Bekannte Probleme
- Wenn Sie die Navigation mit Fragmenten verwenden, wird bei Verwendung von
Animation
APIs der Lifecycle vonNavBackStackEntry
nicht aufRESUMED
gesetzt. (b/269646882) - Wenn Sie die Navigation mit Fragmenten oder
BottomNavigation
verwenden und versuchen, einen Back Stack mit mehreren Einträgen wiederherzustellen, wirdBottomMenuItem
nicht korrekt aktualisiert. (b/270447657) - Wenn Sie die Navigation mit Fragmenten verwenden, wird nach dem Wiederherstellen des Status für
NavBackStackEntry
Lifecycle
nichtDESTROYED
zurückgegeben, wenn das FragmentDESTROYED
ist . (b/270610768)
Version 2.6.0-alpha05
8. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha05
wurde 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 alle 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)- Die
FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und minimiert wird. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor sie die endgültigeLifecycle.State
verschiebt. (I3cb19, b/238686802) - Die
DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und minimiert wird. Das bedeutet, dass dieNavBackStackEntry
Lifecycle
jetzt darauf wartet, dass dieDialogFragment
Lifecycle
zuDESTROYED
wechselt, bevor sie selbst zuDESTROYED
wechselt. (I53ee5, b/261213893)
API-Änderungen
NavigatorState
stellt jetzt dieprepareForTransition
API bereit, damitNavigator
sNavBackStackEntries
in ZwischenLifecycle.State
s verschieben können. (I42c21, b/238686802)- Sie können jetzt über eine
backstack
-Property auf den Backstack zugreifen, der mit einerNavGraphNavigator
- oderComposeNavigator
-Property verknüpft ist.ComposeNavigator
stellt jetzt auch denonTransitionComplete()
-Callback bereit, um eineNavBackStackEntry
, die einen Navigations- oderpopBackStack
-Vorgang ausgeführt hat, als abgeschlossen zu markieren. (I02062, I718db, b/257519195)
Fehlerkorrekturen
- Der Navigationsstatus ist jetzt inaktiv, 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 zu seinerstartDestination
nur richtig oben im Backstack hinzugefügt. (Id4bea, b/253256629) - Bei der Navigation wird die
DialogFragment
-Instanz jetzt richtig ersetzt, wenn das Ziel mit dem FlaglaunchSingleTop
festgelegt ist. (I45b5a, b/149572817) - Navigation SafeArgs führen nicht mehr zu einem Kompilierungsfehler, wenn Argumente verwendet werden, die genau 19 Zeichen lang sind. (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 abgeleitete Klassen von
NavType
können jetztserializeAsValue
überschreiben, um einen Wert in einen String zu serialisieren. Dadurch können sowohl Serialisierung als auch Deserialisierung (überparseValue
) vollständig in die KlasseNavType
gekapselt werden.StringType
überschreibt diese Methode jetzt, umUri.encode
für die angegebeneString
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 geparst und nicht mehr bei der Diagramminitialisierung. Dadurch kann die App-Leistung beim Start verbessert werden. (Iab0ab)
- Ein Absturz wurde behoben, der durch das Scrollen nach oben nach dem Deeplink zu einem Ziel mit null Standardargumenten verursacht wurde. (I51c24, b/243183636)
Abhängigkeitsupdate
- Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. (Ib4ddc)
- Navigation Safe Args ist jetzt von der Android Gradle-Plug-in-Version 7.3.0 abhängig. Das bedeutet, dass es jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist. (I47e49)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha03
wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Unter Navigation
2.5.3
:NavHost
führt nicht mehr zu einerNoSuchElementException
, wenn kein Ziel für dieCrossfade
verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416) - Unter Navigation
2.5.3
: Ein Problem wurde behoben, durch das gespeicherte Zustände des Compose-Modus (z.B. Verwendungen vonrememberSaveable
) nicht vergessen und entfernt wurden, 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.
Verhaltensänderungen
- Wenn die ID eines Navigationsgraphen an
AppBarConfiguration
übergeben wird (z. B. über eineMenu
), betrachtetNavigationUI
jetzt nur das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene, anstatt fälschlicherweise jedes Ziel innerhalb des Graphen als Ziel der obersten Ebene zu kennzeichnen. Das Übergeben der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neueisTopLevelDestination
-Funktion aufAppBarConfiguration
verfügbar. (Ie936e, b/238496771)
Fehlerkorrekturen
- Die
navigation:navigation-fragment
-Komponente hängt jetzt von der Fragmentversion1.5.2
ab. (I00ba4) - Der ausgewählte Menüpunkt wird nicht mehr aktualisiert, wenn Sie zu einem
FloatingWindow
-Ziel wie einem Dialogfeld wechseln. (I4cde8, b/240308330)
Version 2.6.0-alpha01
7. September 2022
androidx.navigation:navigation-*:2.6.0-alpha01
wurde veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Bei den
setupWithNavController
-Integrationen inNavigationUI
für die obere App-Leiste werdenR.string
-Werte fürReferenceType
-Argumente, die in Ihrerandroid:label
gefunden werden, jetzt in ihre Stringwerte geparst, anstatt die automatisch generierte Ressourcenganzzahl auszugeben. (I5f803, b/167959935) NavDeepLink
unterstützt jetzt Standardwerte für Arrays. Dadurch können wiederholte Abfrageparameter unterstützt werden, 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
im Aktivitätselement einer Navigations-XML-Datei verwenden, wird der Platzhalter beim Aufblasen automatisch mit dempackageName
des Kontexts ausgefüllt. (Iaabde, b/234223561) - Beim Versuch, ein leeres
NavDeepLink
mit der Kotlin DSL vonnavDeepLink
zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein. (I08d2f, b/154038883)
API-Änderungen
- Neue Erweiterungsfunktion
NavDestination
hinzugefügt, um dynamische Labels mit Argumenten in Form vonandroid:label="{arg}"
in einen String zu parsen. UnterstütztReferenceType
-Argumente, indemR.string
-Werte in ihre String-Werte geparst werden. (I07d89, b/236269380)
Änderungen im Verhalten
- Die
arguments
von NavBackStackEntry und diearguments
, die an eineOnDestinationChangedListener
übergeben werden, sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Wechseln zum Ziel erstellt wurden. Das bedeutet, dass alle Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf diearguments
- oder andereOnDestinationChangedListener
-Instanzen berücksichtigt werden. (I676f5)
Fehlerkorrekturen
- Über Navigation
2.5.2
: Die dynamische Navigation versucht jetzt ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor Sie zu ihnen navigieren. (Ia2c16, b/240292838) - In Navigation
2.5.2
: Die Navigation ersetzt jetzt korrekt die Fragmentinstanz, wenn zum selben Ziel navigiert und das FlaglaunchSingleTop
auf „true“ gesetzt wird. (I5a2f1, b/237374580) - In Navigation
2.5.2
: Das ProblemIllegalStateException
, das durch das Aufrufen eines doppelt verschachtelten Diagramms verursacht wurde, das ein übergeordnetes Element mit einem neuen Pop-up-Startziel teilt. (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 zuNoSuchElementException
, wenn kein Ziel für dieCrossfade
verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416)- Ein Problem wurde behoben, durch das der gespeicherte Erstellungsstatus (z.B. Verwendung von
rememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back Stack entfernt wurde. (I64949)
Version 2.5.2
7. September 2022
androidx.navigation:navigation-*:2.5.2
wird veröffentlicht. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Bei der dynamischen Navigation wird jetzt richtig versucht, Aktivitätsziele aus anderen Modulen zu installieren, bevor die Navigation zu ihnen erfolgt. (Ia2c16, b/240292838)
- Bei der Navigation wird die Fragmentinstanz jetzt richtig ersetzt, wenn Sie zum selben Ziel navigieren und das Flag
launchSingleTop
auf „wahr“ setzen. (I5a2f1, b/237374580) - Behoben wurde ein
IllegalStateException
, das beim Aufrufen einer doppelt verschachtelten Grafik auftrat, die ein übergeordnetes Element mit einem neuen Pop-up-Startziel gemeinsam hat. (I9f7cb, b/243778589)
Abhängigkeitsupdate
- 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
löst bei Verwendung benutzerdefinierter Argumenttypen, die in einerBundle
gespeichert sind, keine Warnungen zur Einstellung mehr in generierten Klassen aus. (Id86ed, b/237725966)
Abhängigkeitsupdates
- Die Navigationsbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Ib4451) - Die Navigationsbibliothek hängt jetzt von Aktivität
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
- Integration von CreationExtras:
Navigation
kann jetzt über dieCreationExtras
von Lifecycle2.5.0
einen zustandslosenViewModelProvider.Factory
bereitstellen.
SafeArgs Navigation
Navigation Safe Args
hat dieAndroid Gradle Plugin
-Abhängigkeit aktualisiert, um sich auf7.0.4
zu verlassen. Dadurch wurde die Kompatibilität für AGP-Versionen vor dem7.0
aufgehoben.- Das Attribut „build.gradle“ wird jetzt anstelle von „applicationId“ unterstützt.
Weitere Änderungen
- Die
visibleEntries
API ist nicht mehr experimentell und bietet eine Funktion zum Abrufen aller Einträge, deren Ziel 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 Zielen unten bei Verwendung der Navigationsfunktion „Compose“
NavHost
verursacht wurde, wurde behoben. (I3979a, b/234054916) Navigation SafeArgs
stürzt nicht mehr ab, wenn einapplicationIdSuffix
und ein Namespace verwendet werden, in dem entweder keineapplicationId
vorhanden ist oder sichapplicationId
und Namespace unterscheiden. (I754b1, b/233119646)NavArgument
hat jetzt eine benutzerdefiniertetoString()
-Funktion, mit der die internen Werte des Arguments angezeigt werden. (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 vor dem Einfügen von
<deeplink>
-Elementen in<activity>
-Elemente in Ihrernavigation.xml
-Datei warnt.(Ic15a5, b/178403185)
Fehlerkorrekturen
- Composeable-Scopes in
NavHost
undDialogHost
werden jetzt in der erwarteten Reihenfolge entsorgt, d.h. innere Composeables werden vor äußeren Composeables entsorgt. (I157e6) - Navigation SafeArgs verwendet jetzt
PathSensitivity.RELATIVE
inArgumentsGenerationTask
, um die Positionierung aus dem 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
UnrememberedGetBackStackEntryDetector
-Lint-Regel wurde aktualisiert, damit derremember
-Aufruf um den Aufruf vongetBackStackEntry()
herum auch einNavBackStackEntry
-Objekt als Schlüssel übergibt.(Ib7081, b/227382831)
Version 2.5.0-beta01
20. April 2022
androidx.navigation:navigation-*:2.5.0-beta01
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
Fehlerkorrekturen
DialogNavigator
verwendet jetztpopWithTransition
beim Ausführen einesdismiss()
-Aufrufs. Dadurch wird eine Race-Bedingung bei Verwendung einesViewModel
innerhalb einesdialog
-Ziels behoben, die zu einerIllegalStateException
führt, wenn der Dialog entweder über die Systemrück-Schaltfläche oder durch Tippen außerhalb des Dialogfelds geschlossen wird. (Id7376, b/226552301)
Aktualisierung der Abhängigkeiten
- Die Navigation hängt jetzt vom Nutzerlebenszyklus
2.5.0-beta01
ab. Wenn Sie mehrere Backstacks verwenden, wird einIllegalStateException
fixiert, wenn Sie einenNavHost
in einem anderenNavHost
in einem nicht primären Navigations-Tab unten verschachteln.
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
befindet sich nicht mehr in der Testphase. (I4829f, b/225394514)
Fehlerkorrekturen
- NavHost hängt jetzt von
visibleEntries
aus derNavController
ab, um zu bestimmen, welche Einträge erstellt werden sollen. Das bedeutet, dass bei Verwendung eines verschachtelten NavHost die innereNavHost
jetzt richtig animiert werden sollte. (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 auch dann unverändert bleibt, wenn der Host-Lebenszyklus dernavController
unter „STARTED“ fällt. (I9e2a8, b/225394514) SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einerSavedStateRegistryOwner
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
wurde veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtras
bisby navGraphViewModels
übergeben, um eineViewModel
zu erstellen. (I29217, b/217618359)
Fehlerkorrekturen
NavDeepLinks
codierte Zeilenumbruchzeichen, die in Routen-/Deeplink-URIs eingebettet sind, werden jetzt korrekt unterstützt. (I513d1, b/217815060)CreationExtras
funktioniert jetzt richtig, wenn es mitNavBackStackEntries
zum Erstellen von ViewModels verwendet wird. (I69161, b/217617710)- Navigation Safe Args unterstützt jetzt die Verwendung des in
build.gradle
definierten Namespace anstelle des Pakets 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
- Unter Navigation
2.4.1
: DieNavHostFragment
setzt jetzt bei Verwendung von View-Binding mit verschachtelten Diagrammen dieOnBackPressedDispatcher
richtig. (Ifbb51, b/214577959) - Über Navigation
2.4.1
: Wenn Deeplinks über mehrere verschachtelteNavGraph
s erstellt werden, schließt der Back-Stack nun wie vorgesehen Zwischenstartziele ein. (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
kann jetzt mit ViewModel CreationExtras verwendet werden, 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
fehlschlägt. (I8a14d) NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal, d. h., die richtigen Argumente werden jetzt an Ihr endgültiges Ziel übergeben. (I31b0a, b/210711399)
Safe Args
- Safe Args ist jetzt auf die Version 7.0.4 des Android Gradle-Plug-ins angewiesen. 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 kompatibel ist. (I41c88, b/213086135, b/207670704)
Version 2.4.2
Version 2.4.2
6. April 2022
androidx.navigation:navigation-*:2.4.2
wird veröffentlicht. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Backport aus Navigation
2.5.0-alpha03
:NavDeepLinks
unterstützt jetzt korrekt codierte Zeichen für neue Zeilen, die in Routen-/Deeplink-URIs eingebettet sind. (I513d1, b/217815060) - Backport aus Navigation
2.5.0-alpha03
: Navigation SafeArgs unterstützt jetzt die Verwendung des imbuild.gradle
definierten Namespace anstelle des Pakets im AndroidManifest. (I659ef, b/217414933) - Backport aus 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 aus 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
wurde veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Bei Verwendung von Viewbinding mit verschachtelten Diagrammen wird die
OnBackPressedDispatcher
jetzt korrekt durch dieNavHostFragment
festgelegt. (Ifbb51, b/214577959) - Bei Deeplinks über mehrere verschachtelte
NavGraph
s enthält der Backstack jetzt korrekt Zwischenziele. (I504c0, b/214383060) - Backport aus Navigation
2.5.0-alpha01
: Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das überby navGraphViewModels()
aus deronCreate()
eines Fragments erstellt wurde, mit einerIllegalStateException
fehlgeschlagen ist. (I8a14d) - Backport aus Navigation
2.5.0-alpha01
:NavDeepLink
s decodieren Argumente nicht mehr unnötigerweise zweimal. Das bedeutet, dass die korrekt decodierten Argumente jetzt an das endgültige Ziel übergeben werden. (I31b0a, b/210711399) - Backport aus Navigation
2.5.0-alpha01
: Safe Args hängt jetzt vom Android Gradle-Plug-in in Version 7.0.4 ab. Navigation Safe Args sind also nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel, aber mit dem 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 Nullbarkeit von Klassen mit Generiken (z. B.
NavType
-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der-ktx
-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. - Das Artefakt
navigation-fragment
enthält jetzt eine vordefinierte Implementierung eines Zwei-Bereichs-Layouts über die neueAbstractListDetailFragment
. In diesem Fragment wird einSlidingPaneLayout
verwendet, um einen Listenbereich (der von Ihrer Unterklasse bereitgestellt wird) und einen Detailbereich zu verwalten, der eineNavHostFragment
als Implementierung verwendet, wie in unserer Beispielimplementierung zu sehen. - 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. - Über die experimentelle Eigenschaft
visibleEntries
können Sie jetzt mit dem NavController eine Liste aller sichtbarenNavBackStackEntry
-Instanzen alsStateFlow
abrufen. - Es ist jetzt möglich, die Klasse
NavType
zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie den Navigationsgraphen programmatisch erstellen, z. B. über die Navigationsgraph-Kotlin-DSL. Für die Navigation gibt es jetzt die APIs
findStartDestination()
undgetHierarchy()
, mit denen sich eine benutzerdefinierte Navigations-UI implementieren lässt.findStartDestination()
ist eine Erweiterungsfunktion vonNavGraph
, mit der das tatsächliche Startziel ermittelt wird, das angezeigt wird, wenn Sie zum Diagramm wechseln, auch wenn diestartDestination
selbst eine verschachtelteNavGraph
ist.getHierarchy()
ist eine Funktion inNavDestination
, mit der überprü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
als Argument erwarteten, wurden aktualisiert, sodass stattdessen die Superklasse verwendet wird, die in Material1.4.0
,NavigationBarView
eingeführt wurde. So können diese Methoden mit derNavigationRailView
verwendet werden.Wenn ein
<action>
-Element über XML maximiert wird, können Animationen Attribute verwenden, die mithilfe derapp:enterAnim="?attr/transitionEnter"
-Syntax aus Ihrem Design gezogen 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 Kotlin DSL
In früheren Versionen der Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen übergeordneten Zielen unterscheiden ließ und es ermöglichte, direkt oder über eine Aktion zu diesem Ziel zu navigate()
. Dies ist zwar weiterhin gültig und nützlich, insbesondere in Fällen, in denen Sie Ihren Navigationsdiagramm in XML definieren und automatisch generierte R.id
-Konstanten oder Safe Args verwenden können, die diese Konstanten zum Generieren von Code zum Build-Zeitpunkt verwenden. Dieses System aus eindeutigen Ganzzahlen erfasst jedoch nicht die semantische Bedeutung und Aussagekraft, die erforderlich ist, um vollständig dynamische Grafiken zu unterstützen, die zur Laufzeit über Navigation Kotlin DSL programmatisch erstellt werden.
In dieser Version wird eine neue Option eingeführt, mit der ein Ziel in einem Navigationsgraphen anhand seiner Route eindeutig identifiziert werden kann. Eine Route ist eine String
, die den eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, die eine Ziel-ID akzeptierten, wurden eingestellt und durch eine entsprechende API ersetzt, die eine Route akzeptiert.
Jede Route sollte als „path“-Teil eines Uri
behandelt werden, das dieses 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 verwendet wurde, haben jetzt eine Überladung, die eine Route String
annimmt. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Dies hatte einige Auswirkungen auf die API:
- Das Kotlin-Attribut
popUpTo
in Kotlin DSL wurde zugunsten vonpopUpToId
eingestellt. - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt.
Im Gegensatz zur Navigation per ID folgt die Navigation per Route denselben Regeln wie implizite Deeplinks, da Sie direkt zu einem beliebigen Ziel in einem verschachtelten Diagramm wechseln können. So können diese Routen in mehrmoduligen Projekten verwendet werden, ohne dass jedem Ziel explizit ein extern sichtbarer Deeplink hinzugefügt werden muss.
Navigation – Verfassen
Das Artefakt navigation-compose
ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Dieser Release bietet Folgendes:
- Ein
NavHost
-Komposit, mit dem Sie Ihren Navigationsgraphen über eine Kotlin-DSL mitcomposable
- unddialog
-Zielen erstellen können, sowie Unterstützung für optionale Navigationselemente wie die aus dem Material zur Navigation mit Begleitern. - Erforderliche Unterstützung für Crossfading zwischen Zielen. Mit der Begleitnavigationsanimation können Sie die Ein- und Ausblendübergänge mithilfe experimenteller Compose APIs steuern.
- Geltungsbereich einer
Lifecycle
zu jedem zusammensetzbaren Ziel. Jedes Ziel erreicht erst dann denRESUMED
-Status, wenn alle eingehenden Übergänge abgeschlossen sind, und fällt sofort aufSTARTED
, wenn alle übergehenden Übergänge beginnen. Auf diese Weise können Sie alleIllegalStateException
- und Multi-Touchpoint-Probleme vermeiden, indem Sie nur einennavigate
-Aufruf auslösen, wennLifecycle
den WertRESUMED
hat. - Geltungsbereich von
ViewModel
(über dieviewModel()
API von Lifecycle ViewModel Compose2.4.0
oderhiltViewModel()
von Hilt Navigation Compose1.0.0
auf Zielebene; es wird ein Bereich angegeben, der Konfigurationsänderungen übersteht und sich im Back-Stack befindet (wenn Ihre zusammensetzbaren Inhalte anderweitig entnommen werden) sowie ein Signal imonCleared()
des ViewModel, das die dauerhafte Entsorgung und Bereinigung des mit diesemNavBackStackEntry
verknüpften Zustands angibt. - Der
rememberSaveable
-Status wird auf Zielebene festgelegt, damit der gesamte Composeable-Status 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 Neustarten des Prozesses. - Automatische Integration in die Schaltfläche „Zurück“ des Systems
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 spezielle Helpers in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Status zu heben und dieNavController
mit Composeables außerhalb derNavHost
zu verbinden (z. B. eine untere Navigationsleiste).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Weitere Informationen finden Sie im Leitfaden zum Erstellen von Navigationselementen.
Mehrere Back Stacks
Der NavController ist für die Verwaltung des Backstacks der Ziele verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate()
zu ihnen aufrufen, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene NavOptions
-Klasse und die Einbindung in <action>
-Elemente im Navigationsgraphen-XML wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen.
Im Rahmen dieser Änderung wird der Status der eingeblendeten Ziele jetzt automatisch von den NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
gespeichert und 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 zur Integration mehrerer Back Stacks.
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Zustands sind über verschiedene Oberflächen verfügbar:
In Navigation XML können im Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwendet werden, um den Status aller überapp:popUpTo
eingeblendeten Ziele zu speichern und den Status des Ziels wiederherzustellen, das alsapp:destination
übergeben wurde:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
In der
navOptions
Kotlin DSL können Sie die booleschen PropertiesrestoreState
undsaveState
zumpopUpTo
-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 überNavOptions.Builder
erstellen, können Sie diesetRestoreState()
- und die neue Überladung fürsetPopUpTo()
verwenden, die einen zusätzlichensaveState
-Parameter annimmt.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 den Status löschen, der mitpopBackStack()
oderpopUpToSaveState
gespeichert wurde.
In allen Fällen speichert und stellt NavController
den Status jeder NavBackStackEntry
wieder her, einschließlich aller ViewModel
-Instanzen auf Navigationszielebene. Die Navigator
APIs wurden aktualisiert, damit jedes Navigator
seinen eigenen Status speichern und wiederherstellen kann.
Verhaltensänderungen
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
dem voncreatePendingIntent()
zurückgegebenenPendingIntent
hinzu. Dadurch wird sichergestellt, dass diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert.- Die Navigation hängt jetzt vom Lebenszyklus
2.3.1
ab und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, dieNavBackStackEntry
Lifecycle
aktualisieren, als@MainThread
. Dadurch wird die Navigation an die im Lebenszyklus2.3.0
eingeführte Hauptthreaderzwingung angepasst. - Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. - In
NavDeepLink
geparste Argumente betrachten jetzt Rautezeichen genauso wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten, wodurch verhindert wird, dass sich ein Argument über das Rautezeichen erstreckt. - Beim Generieren von Aktionen werden Argumente ohne Standardwerte jetzt vor denen mit Standardwerten als Parameter in Kotlin-Code eingefügt, der aus Safe Args generiert wurde.
- Bei der Generierung von Argumenten stellt Safe Args jetzt Parameter ohne Standardwerte vor Parameter mit Standardwerten.
- Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, wenn Sie
applicationIdTextResource
verwenden.
Bekannte Probleme
- Behoben in Navigation
2.5.0-alpha01
: Der Zugriff auf eineViewModel
, die überby navGraphViewModels()
aus deronCreate()
eines Fragments erstellt wurde, schlägt mit einerIllegalStateException
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) - Bei Deeplinks mit mehreren verschachtelten Navigationsgrafiken wird der vollständige Backstack nicht korrekt 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 Analyse von
NavDeepLink
-Argumenten werden Hashzeichen jetzt genauso wie Fragezeichen als Trennzeichen zwischen Argumenten verwendet. (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 mithilfe von Übergängen eingeblendet wird, nachdemNavController
wiederhergestellt wurde. (I0f7c9, b/205021623)- Die Fehlermeldung bei Verwendung einer ungültigen
startDestination
verweist jetzt standardmäßig auf die Route des Startziels, sofern verfügbar. (I86b9d, b/208041894)
Fehlerkorrekturen für die Navigation und das Verfassen von E-Mails
- Behoben wurde ein möglicher Absturz, der durch schnelles Wechseln zwischen dem Startziel und einem anderen Ziel über die Menüpunkte in der unteren Navigationsleiste verursacht wurde. (Ic8976, b/208887901)
- Das Ziel des Dialogfelds wird jetzt korrekt oben auf dem Bildschirm wiederhergestellt, nachdem die Konfiguration geändert oder der Prozess beendet wurde. (I4c0dc, b/207386169)
- Das Problem wurde behoben, dass der Abruf einer
ViewModel
aus derNavBackStackEntry
eines Dialogfelds fehlgeschlagen ist, wenn das Dialogfeld geschlossen wurde. (I6b96d, b/206465487) - Ein Problem wurde behoben, bei dem die Verwendung von
activity
-Zielen mitNavHost
von Navigation Compose zu einer endlosen Neuzusammensetzung führte. (I8f64c) - Ein Leck in Navigation Compose wurde 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 Absturz des Prozesses wiederherzustellen. (I618e8, b/207315994)- Ein Fehler in sicheren Argumenten wurde behoben, durch den boolesche Arrays keinen
null
-Wert haben konnten. (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
- Bei der Verarbeitung sowohl expliziter als auch impliziter Deeplinks wird beim Wechseln zu einer anderen Grafik jetzt automatisch das Flag
saveState
hinzugefügt. So wird sichergestellt, dass Code wieNavigationUI.setupWithNavController
und Code mit mehreren Backstacks wie erwartet funktioniert. (Ic8807)
Änderungen im Verhalten
- Deeplink-Muster werden jetzt in NavDeepLink statt während der Inflation träge kompiliert. Dadurch sollte sich die Aufblühzeit von Navigationsgrafiken mit Deeplinks verbessern. (b8d257, b/184149935)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das NavBackStackEntries nach dem Wechsel zu
Lifecycle.State.STARTED
nachLifecycle.State.CREATED
verschoben wurden, wenn dieNavHost
direkt dersetContent()
der Aktivität hinzugefügt wird. (Ia5ac1, b/203536683) - Es wurde eine Race-Condition behoben, bei der ein
DialogFragment
-Ziel aus dem Rückstapel entfernt wurde, bevor das Dialogfeld tatsächlich angezeigt wurde. Das Dialogfeld wurde dadurch nicht geschlossen, was zu einem Absturz führte, wenn das fehlerhafte Dialogfeld vom Nutzer manuell geschlossen wurde. (I687e5) - Behoben: Die
onNavDestinationSelected
API aufNavigationUI
gabtrue
zurück, auch wenn Sie nicht tatsächlichnavigate()
zu diesem Navigationsgraphennavigate()
. Es wird jetzt dieselbe Logik verwendet, die intern vonsetupWithNavController
verwendet wird, um nur dasMenuItem
auszuwählen, das mit dem aktuellen Ziel verknüpft ist, und zwar anhand deshierarchy
des Ziels. (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 als Alternative zur Verwendung 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 derzeit in der Testphase. (I93f6f)
Fehlerkorrekturen
- ViewModels werden nicht mehr zerstört, wenn Übergänge unterbrochen werden, indem zwischen denselben Bildschirmen hin- und hergewechselt wird (Id52d8, b/200817333)
- Für änderbare
NavDeepLink
-Argumente ist beim Hinzufügen von Deeplinks zuNavDestination
s kein Standardwert mehr erforderlich. (I5aad4, b/201320030) - NavBackStackEntries mit unterschiedlichen Lebenszyklen werden jetzt nicht mehr als gleich betrachtet. Das bedeutet, dass NavHost alle Ziele bei der Navigation mit „singleTop“ und beim erneuten Auswählen von Menüpunkten unten korrekt neu zusammensetzt. (I1b351, b/196997433)
- Es wurde ein Problem mit
AbstractListDetailFragment
behoben, das dazu führte, dass die Attributelayout_width
undlayout_weight
im vononCreateListPaneView()
zurückgegebenen Listenbereich falsch verarbeitet oder ignoriert wurden. (f5fbf3) - Der visuelle Status von Dialog-Zielen bleibt jetzt korrekt mit dem Status von
DialogFragmentNavigator
synchronisiert. Das bedeutet, dass beim manuellen Aufruf der asynchronendismiss()
API fürDialogFragment
jetzt alle Dialogziele über dem jetzt geschlossenen Dialogfeld korrekt gelöscht werden. Das gilt nicht, wenn Sie das Dialogfeld mitpopUpTo
oderpopBackStack()
schließen. (I77ba2) AbstractAppBarOnDestinationChangedListener
enthält jetzt klarere Fehlermeldungen füronDestinationChanged()
. (Ie742d)
Version 2.4.0-alpha10
29. September 2021
androidx.navigation:navigation-*:2.4.0-alpha10
wird veröffentlicht. Version 2.4.0-alpha10 enthält diese Commits.
Neue Funktionen
- NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren
NavBackStackEntry
-Instanzen übervisibleEntries
StateFlow (Ia964e) abzurufen. - Für
rememberNavController()
wird jetzt ein optionaler Satz vonNavigator
-Instanzen verwendet, der der zurückgegebenenNavController
hinzugefügt wird, um optionale Navigationselemente wie die aus dem Material zur Navigation für Begleiter 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 Schaltfläche „Zurück“ des Systems wurde behoben, das nur auftrat, wenn man zu einem zusammensetzbaren Ziel mit einer
NavHost
zurückkehrte. (3ed148, b/195668143) - SafeArgs generiert die Argumente für
fromBundle()
undfromSavedStateHandle()
jetzt 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
- Mit der Methode
clearBackStack()
können Sie jetzt den Status löschen, der mitpopBackStack()
oderpopUpToSaveState
gespeichert wurde. (I80a0f) - Sie können jetzt eine Liste von Argumenten und/oder Deeplinks an den Builder der verschachtelten Navigationsgrafik übergeben. Diese werden dann automatisch der resultierenden Grafik hinzugefügt. (I8a470, b/182545357)
API-Änderungen
- Die Kotlin-DSL-Funktion
navArgument
ist jetzt Teil vonnavigation-common
stattnavigation-compose
. In diesem Fall müssen Sie die Importe aktualisieren, um diese Funktion weiterhin nutzen zu können. (I1d095)
Änderungen im Verhalten
- Bei der Generierung von Argumenten stellt Safe Args jetzt Parameter ohne Standardwerte vor Parameter mit Standardwerten. (I89709, b/198493585)
Fehlerkorrekturen
- Bei Verwendung von Navigation Compose sind NavGraphs erst dann
DESTROYED
, wenn alle untergeordneten ElementeDESTROYED
sind. (I86552, b/198741720) NavDeepLink
-Argumente, für die Nullwerte zulässig sind, erfordern keinen Standardwert mehr. (Ia14ef, b/198689811)- Wenn
setGraph()
mit einer neuen Grafik aufgerufen wird, werden jetzt zusätzlich zu dem vorherigen Verhalten, bei dem der Rückstapel geleert wird, alle gespeicherten Rückstapel gelöscht. (I97f96) - Ein Problem wurde behoben, bei dem
OnDestinationChangedListener
-Instanzen und diecurrentBackStackEntryFlow
nicht benachrichtigt wurden, wennlaunchSingleTop
verwendet wurde. (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 den Navigationsgraphen programmatisch erstellen, z. B. über die Navigationsgraph-Kotlin-DSL. (I78440, b/196871885)
Verhaltensänderungen
- Beim Generieren von Aktionen werden Argumente ohne Standardwerte jetzt vor denen mit Standardwerten als Parameter in Kotlin-Code eingefügt, der aus Safe Args generiert wurde. (Idb697, b/188855904)
- Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) in
Uri
vorhanden sind. (#204, b/185527157)
Fehlerkorrekturen
- Wenn Sie
getBackStackEntry
undpreviousBackStackEntry
in Kombination mitremember()
in „composable()“ verwenden, wird keine Ausnahme mehr ausgelöst, wenn sich kein Ziel im Backstack befindet. (I75138, b/194313238) - Navigation Compose wird jetzt richtig neu erstellt, wenn Stack-Argumente zurückgegeben und
launchSingleTop=true
verwendet wird. (Iebd69, b/186392337) - Wenn
setGraph
mit einem Graphen mit 13 oder 29 Zielen aufgerufen wird, wirdArrayIndexOutOfBoundsException
nicht mehr zurückgegeben. (I1a9f1, b/195171984) - Der Java-Generator „SafeArgs“ sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr verursachen. (I1a666, b/185843837)
Externer Beitrag
- Vielen Dank an ospixd, dass Sie dafür gesorgt haben, dass bei Deeplinks geprüft wird, ob alle erforderlichen Argumente (ohne Standardwerte) in der
Uri
vorhanden sind. (#204, b/185527157)
Version 2.4.0-alpha07
18. August 2021
androidx.navigation:navigation-*:2.4.0-alpha07
wurde veröffentlicht. Version 2.4.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- In Navigation Compose wird der Status jetzt nach Konfigurationsänderungen und beim Wechseln von Diagrammen bei Verwendung der Funktion „Mehrere Backstacks“ korrekt gespeichert. (If5a3d, b/195141957)
- Wenn Sie bei der Navigationszusammenstellung mit mehreren Backstacks denselben Tab noch einmal auswählen, wird nicht mehr ein leerer Bildschirm angezeigt. (I860dc, b/194925622)
NavHost
prüft jetzt auf Änderungen amLifecycle.State
vonNavBackStackEntry
s. Das bedeutet, dass einNavHost
in einem Fragment jetzt bei Änderungen des Lebenszyklus korrekt neu zusammengesetzt wird, anstatt zu einem leeren Bildschirm zu führen. (I4eb85, b/195864489)- Ein Problem wurde behoben, durch das der Status
NavController
nach dem Erstellen Ihrer Aktivitäten (d.h. nach einer Konfigurationsänderung) nicht korrekt aktualisiert wurde, wenn Sie eineDialogFragment
-Benachrichtigung geschlossen hatten. (Icd72b) - Ein Problem wurde behoben, bei dem durch das Öffnen eines Dialogziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte dazu, dass NavController die Schaltfläche „Zurück“ abfängt, obwohl kein Back-Stack vorhanden ist. (If3b34)
- Safe-args generiert jetzt automatisch eine
toSavedStateHandle
-Methode für Argumente, mit der IhrViewModel
-Code getestet werden kann. (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()
vonAbstractListDetailFragment
wurden ingetSlidingPaneLayout()
undgetDetailPaneNavHostFragment()
umbenannt. (I34a08)
Verhaltensänderungen
- Bei der Navigation mit Animationen (z. B.
Crossfade
) erreicht dieLifecycle
des neuen Ziels jetzt erst dieRESUMED
, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889) - Mit der Navigationsleiste „Compose“ (Erstellen) wird jetzt mit
NavHost
der Graph als Teil der ersten Komposition festgelegt. (Ieb7be)
Fehlerkorrekturen
- Wenn das letzte Ziel in einem Navigationsdiagramm angezeigt wird, wird kein
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 wurde behoben, bei dem ein Deeplink zu
NavBackStackEntry
den StatusRESUMED
nicht erreichte. (I192c5) - Ein Problem wurde behoben, durch das die Verarbeitung der Systemrückwärtsschaltfläche des NavControllers beim Aufrufen eines Dialogfelds nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Rückwärtsschaltfläche abfängt, obwohl kein Rückstapel vorhanden ist, der aufgepoppt werden kann. (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.
Verhaltensänderungen
- Bei der Navigationsfunktion „Compose“ wird für
NavHost
jetzt immer ein Crossfade verwendet, wenn zwischen Zielen gewechselt wird. (I07049, b/172112072) - Sie können jetzt Änderungen an der Grafik eines NavHosts vornehmen. Grafiken mit demselben Startziel und denselben Zielen in der Grafik gelten als gleichwertig und löschen den Back-Stack
NavController
nicht. (I0b8db, b/175392262)
Fehlerkorrekturen
- Es wurde ein
NoSuchElementException
-Fehler behoben, der beim Aufrufen vonpopBackStack()
aus einerLifecycleObserver
, die mit einemNavBackStackEntry
verknüpft ist, verursacht wurde, der durch nicht wiederkehrende Aktualisierungen des NavController-Status verursacht wurde. (I64621) - Mit
AbstractListDetailFragment
können SieSlidingPaneLayout
jetzt vollständig aus Ihrem APK entfernen, wennAbstractListDetailFragment
nicht verwendet wird. (I611ad) NavGraph
undNavDestination
überschreiben jetzt die Gleichheitsmethode, 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
wurde veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das
navigation-fragment
-Artefakt enthält jetzt eine vorkonfigurierte Implementierung eines Layouts mit zwei Ansichten über die neueAbstractListDetailFragment
. Dieses Fragment verwendet einSlidingPaneLayout
, um einen Listenbereich (den von Ihrer Unterklasse bereitgestellt wird) und einen Detailbereich zu verwalten, für den eineNavHostFragment
als Implementierung verwendet wird, wie in unserer Beispielimplementierung gezeigt. (Iac4be, b/191276636) - Die
NavHost
desnavigation-compose
-Artefakts unterstützt jetzt nebencomposable
-Zielen auchdialog
-Zielvorhaben. Diese Dialogziele werden jeweils in einem zusammensetzbarenDialog
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 zu „push()“ geändert werden. (Ie89fc, b/172112072) - Bei benutzerdefinierten
Navigator
-Instanzen können jetzt diepushWithTransaction
- undpopWithTransition
-APIs aufNavigatorState
verwendet werden, um ein Ziel asynchron zu pushen oder zu poppen. Diese APIs werden noch von keinem der enthaltenen Navigationselemente verwendet. (Ic4d7c, b/172112072)
Verhaltensänderungen
NavDeepLinkBuilder
fügt jetztPendingIntent.FLAG_IMMUTABLE
dem voncreatePendingIntent()
zurückgegebenenPendingIntent
hinzu. Dadurch wird sichergestellt, dass diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert. (If8c52)
Fehlerkorrekturen
- Ein Problem mit
<include-dynamic>
wurde behoben, bei dem Argumente, die an den Graphen übergeben wurden, nicht korrekt an den dynamisch eingebundenen Graphen übergeben wurden. (I3e115) - Fehlerkorrektur für
NullPointerException
beim Aufrufen eines Ziels mithilfe einesstring[]
-Arguments mit dem Standardwert@null
. (I1fbe8) - Fügen Sie ProGuard-Regeln für
@Navigator.Name
hinzu, um Probleme bei der Verwendung des R8 3.1-Modus im Vollbildmodus zu beheben. (I2add9, b/191654433) - SafeArgs schlägt beim Erstellen Ihrer App mit
Kotlin
-Versionen vor1.5.0
nicht mehr fehl. (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
- Ein Problem wurde behoben, durch das zwei
navigate()
-Aufrufe erforderlich waren, um zu einem enthaltenen dynamischen Diagramm zu gelangen. (I7785c, b/188859835) - Es wurde eine Regression behoben, die in der Navigation
2.4.0-alpha01
eingeführt wurde, bei dersetupActionBarWithNavController()
das Aufwärtssymbol nicht korrekt entfernt hat, wenn man sich an einem Ziel auf oberster Ebene befindet. (I5d443, b/189868637) - Ein Fehler beim Aufrufen von
popBackStack()
wurde behoben, wenn zuvor der Stammgraph des NavControllers gepoppt wurde.IllegalStateException
(I2a330, b/190265699) - Die ProGuard-Regeln für
by navArgs()
gelten jetzt ordnungsgemäß, wennnavigation-common
oder andere Artefakte verwendet werden, die davon abhängen. (I68800, b/190082521) - Ein
OnDestinationChangedListener
, dasnavigate()
zum ersten Mal aufruft, wenn es einen Callback erhält, erhält jetzt korrekt einen zweiten Callback mit dem Ziel, zu dem es weitergeleitet wurde. (Ie5f9e, b/190228815) - Safe Args stürzt nicht mehr ab, wenn es mit dynamischen Funktionsmodulen und AGP 7.0 oder höher verwendet wird. (I69518, b/189966576)
Bekanntes Problem
- Bei Verwendung von Gradle
6.7.0
schlägt Safe Args aufgrund einer Abhängigkeit von einer älteren Version von Kotlin mit dem FehlerUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
fehl. Sie können das Problem umgehen, indem Sie auf Gradle 7.0 umstellen. (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 Aktivitäts-, Fragment- und Dialogziele sowie in der DynamicNavigation-Kotlin-DSL unterstützt. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
hat vorübergehend experimentelle APIs hinzugefügt, um das Speichern Ihres Status zu deaktivieren. Das Speichern des Status ist zwar das richtige Verhalten, aber es gibt immer noch veraltete Bibliotheken (beibehaltene Fragmente), die beim Speichern des Status nicht unterstützt werden. So haben Apps die Möglichkeit, langsam von nicht unterstützten APIs zu konvertieren. (Idf93c)Für die Navigation gibt es jetzt die APIs
findDestination()
undgetHierarchy()
, mit denen sich eine benutzerdefinierte Navigations-UI implementieren lässt.findDestination()
ist eine Erweiterungsfunktion vonNavGraph
, mit der ein Ziel innerhalb des Graphen ermittelt wird.getHierarchy()
ist eine Funktion vonNavDestination
, mit der überprüft werden kann, ob sich ein bestimmtes Ziel in der Hierarchie eines anderen befindet.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI-Methoden, die ein
BottomNavigationView
verwendet haben, wurden aktualisiert, sodass nun die in Material1.4.0
eingeführte übergeordnete KlasseNavigationBarView
verwendet wird. So können diese Methoden mit derNavigationRailView
verwendet werden. (Ib0b36, b/182938895)Wenn Sie ein
<action>
-Element über XML einfügen, können für die Animation Attribute verwendet werden, die mit derapp:enterAnim="?attr/transitionEnter"
-Syntax aus Ihrem Design gezogen werden. (I07bc1, b/178291654)
API-Änderungen
- Kotlin-DSL-Builder, die eine ID verwenden, wurden eingestellt und sollten durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479) (I9f58f, b/188816479)
Fehlerkorrekturen
DialogFragmentNavigator
verwendet jetzt dieNavigatorState.pop()
API, umNavController
darüber zu informieren, wenn ein Dialogfeld durch Drücken der Schaltfläche „Zurück“ oder Klicken außerhalb des Dialogfelds geschlossen wird. So ist der Status vonNavController
immer mit dem Status des Navigators synchronisiert. (I2ead9)Bei der Navigation wird keine
ConcurrentModificationException
mehr ausgegeben, wenn die Liste derOnDestinationChangedListeners
über einenonDestinationChanged
-Callback manipuliert 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“ von „NavDestination“ ist jetzt korrekt mit
@IdRes
annotiert, sodass nur Ressourcen-IDs akzeptiert werden. (I69b80)Der int-Parameter von
findNode
ist jetztresId
anstelle vonresid
. (I7711d)
Aktualisierung der Abhängigkeit
- Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Das bedeutet, dass Sie die Warnung „
applicationIdTextResource
“ nicht mehr erhalten sollten. (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
currentBackStackEntryAsFlow()
-Methode vonNavController
liefert eineFlow
, die jedes Mal ausgegeben wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einerOnDestinationChangedListener
verwendet werden. (I19c4a, #89, b/163947280)
Mehrere Rückstapel
Der NavController ist für die Verwaltung des Backstacks der Ziele verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate()
zu ihnen aufrufen, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene NavOptions
-Klasse und die Einbindung in <action>
-Einträge im Navigationsgraphen-XML wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen. (b/80029773)
Im Rahmen dieser Änderung wird der Status der eingeblendeten Ziele jetzt automatisch von den NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
gespeichert und 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, um mehrere Backstacks zu integrieren. (Ie07ca)
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Zustands sind über verschiedene Oberflächen verfügbar:
In Navigation XML können im Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwendet werden, um den Status aller überapp:popUpTo
eingeblendeten Ziele zu speichern und den Status des Ziels wiederherzustellen, das alsapp:destination
übergeben wurde:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
In der
navOptions
Kotlin DSL können Sie die booleschen PropertiesrestoreState
undsaveState
zumpopUpTo
-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 überNavOptions.Builder
erstellen, können Sie diesetRestoreState()
- und die neue Überladung fürsetPopUpTo()
verwenden, die einen zusätzlichensaveState
-Parameter annimmt.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 speichert und stellt NavController
den Status jeder NavBackStackEntry
wieder her, einschließlich aller ViewModel
-Instanzen auf Navigationszielebene. Die Navigator
APIs wurden aktualisiert, damit jedes Navigator
seinen eigenen Status speichern und wiederherstellen kann.
Die ComposeNavigator
, die für composable
-Ziele in Navigation Compose verwendet wird, und die FragmentNavigator
und DynamicFragmentNavigator
, die für <fragment>
-Ziele in Navigation with Fragments verwendet werden, wurden aktualisiert, um die neuen Navigator APIs zu verwenden und den Status zu speichern und wiederherzustellen.
Navigationsrouten
Eine Route ist eine String
, die ein Ziel eindeutig identifiziert. Dieses Konzept wurde bisher nur in Navigation Compose verwendet, ist jetzt aber Teil der Navigation 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 APIs:
- Die Kotlin-Eigenschaft
popUpTo
in der Kotlin-DSL wurde zugunsten vonpopUpToId
eingestellt. (I59c73, b/172823546) - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt. (I0887f, b/172823546)
Für Entwickler, die von früheren Versionen von Navigation Compose auf Navigation Compose 2.4.0-alpha01
umstellen, bedeutet das, dass die folgenden Importe von 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 route
-Attribut auf NavDestination
ersetzt. Sie können navBackStackEntry.destination.route
jetzt direkt aufrufen.
API-Änderungen
- Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dadurch wurde die Null-Zulässigkeit von Klassen mit generischen Werten (z. B. abgeleitete
NavType
-Klassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die zuvor Teil der-ktx
-Artefakte waren, wurden in die jeweiligen Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber völlig leer. (b/184292145) NavDeepLinkBuilder
unterstützt jetzt das Hinzufügen mehrerer verschiedener Ziele zum generierten Rückstapel. (I3ee0d, b/147913689)- Standardfunktionen für
DynamicNavHostFragment
hinzufügen (Icd515, b/175222619) - Die eindeutige ID einer
NavBackStackEntry
wird jetzt als Teil der öffentlichen API freigegeben. (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
den entsprechenden Kompositionen zur Verfügung stellt. (#175, b/187229439)
Sichere Argumente
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, sodass es jetzt von KotlinPoet
1.8.0
abhängt. (#172, b/183990444)
Verhaltensänderungen
- Die Navigation hängt jetzt vom Lifecycle
2.3.1
ab undsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, die Methoden, mit denen dieNavBackStackEntry
Lifecycle
aktualisiert wird, werden jetzt als@MainThread
gekennzeichnet. Damit wird die Navigation an die in Lifecycle2.3.0
eingeführte Erzwingung des Hauptthreads angepasst. (b/171125856) - Beim Parsen von Enum-Argumenten aus Deeplinks wird jetzt die Groß- und Kleinschreibung nicht berücksichtigt. So kann ein Deeplink wie
http://www.example.com/red
mit einem Deeplink vonwww.example.com/{color}
übereinstimmen, auch wenn das 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 Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks hatten, die mit einem genau übereinstimmenden Suffix versehen waren. (#153, b/184072811)
NavHostFragment
unterstützt jetzt benutzerdefinierte Navigationselemente, die dieselbe@Navigator.Name("dialog")
wie die StandardDialogFragmentNavigator
verwenden. (Ib1c2c, b/175979140)- Das Verhalten von
NavigatorProvider#addNavigator
wurde verbessert, sodass ein wiederholtes 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, der das Parsen von Enum-Argumenten aus Deeplinks jetzt unabhängig von der Groß- und Kleinschreibung ermöglicht. (#152, b/135857840)
- Vielen Dank an osipxd für die Behebung eines Problems, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks hatten, die ein exakt übereinstimmendes Suffix haben. (#153, b/184072811)
- Vielen Dank an tatocaster, dass er Safe Args so aktualisiert hat, dass es von KotlinPoet
1.8.0
abhängt. (#172, b/183990444) - Vielen Dank an jossiwolf, der die Felder
name
undargument
sowie die Destrukturierungsfunktionen vonNamedNavArgument
veröffentlicht hat. (#174, b/181320559) - Vielen Dank an jossiwolf für die Einführung einer neuen
NavBackStackEntry#provideToCompositionLocals
-Erweiterung, die dieNavBackStackEntry
für die entsprechenden Kompositions-Locals bereitstellt. (#175, b/187229439) - Danke, jossiwolf, dass du das Verhalten von
NavigatorProvider#addNavigator
verbessert hast, 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 eineModifier
, die an den zusammensetzbaren Container übergeben wird, der die zusammensetzbaren Zielanwendungen zusammenfasst. (I85aca, b/175125483)
Fehlerkorrekturen
NavHost
funktioniert jetzt auch dann, wenn keinOnBackPressedDispatcherOwner
gefunden wird, z. B. in der Vorschau derNavHost
. (I7d8b4)- „Navigation Compose“ hängt jetzt von Navigation
2.3.5
ab. Dadurch wurde 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 einenViewModelStoreOwner
-Wert zurück, der Nullwerte zulässt, um besser festzustellen, ob einViewModelStoreOwner
in der aktuellen Zusammensetzung verfügbar ist. Bei APIs, für die eineViewModelStoreOwner
erforderlich ist, z. B.viewModel()
undNavHost
, wird weiterhin eine Ausnahme ausgelöst, wenn keineViewModelStoreOwner
festgelegt ist. (Idf39a)
Fehlerkorrekturen
- Navigation Compose hängt jetzt von Navigation 2.3.4 ab. Diese Version enthält eine Fehlerkorrektur für den Versuch, dasselbe ViewModelStore-Objekt festzulegen, nachdem die Grafik festgelegt wurde. (I65c24, b/177825470)
Version 1.0.0-alpha08
24. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
Neue Funktionen
NavHost
gibt nun dieNavBackStackEntry
des Ziels fürLocalSavedStateRegistryOwner
CompositionLocal an. Dadurch wird sichergestellt, dass jeder direkt inSavedStateRegistry
gespeicherte Status gespeichert und zusammen mit dem Ziel wiederhergestellt wird. (I435d7, b/179469431)
Version 1.0.0-alpha07
10. Februar 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
wurde 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 zu bieten. (I7a374) NavHost
verwendet jetzt das neueLocalOnBackPressedDispatcherOwner
aus Activity-Compose 1.3.0-alpha01, um dasOnBackPressedDispatcher
abzurufen, das fürNavController
festgelegt ist. (I65b12)
Version 1.0.0-alpha06
28. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Es wurde eine
getBackStackEntry(route: String)
-Erweiterungsmethode fürNavController
hinzugefügt, die die zugehörigeNavBackStackEntry
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.
Aktualisiert, um von Compose 1.0.0-alpha10 abhängig zu sein.
Version 1.0.0-alpha04
16. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
- Aktualisiert, um die Kompatibilität mit „Compose“ (
1.0.0-alpha09
) zu verbessern.
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
- Es wurde ein Problem behoben, bei dem
popBackStack()
undnavigateUp()
nach einer Konfigurationsänderung nicht funktionierten oder dass der Vorgang beendet und die Wiederherstellung durchgeführt wurde. (Icea47, b/173281473) - Das Navigieren zu einer verschachtelten Grafik 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
- Navigations-Compose-Elemente unterstützen 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, mit der sich verschachtelte Grafiken in der DSL „Navigation Compose“ erstellen lassen. (I1661d)
- „startDestination“ steht jetzt in der Liste der Parameter für einen NavHost vor der Route (Ie620e)
- Sie können jetzt einen Graphen erstellen, der die Route als Start- oder Ziel außerhalb eines NavHost-Kompositionselements verwendet. (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 ermöglicht die Integration der Navigationskomponente in Jetpack Compose. Dabei werden @Composable
-Funktionen als Ziele in Ihrer Anwendung verwendet.
Diese erste Version bietet Folgendes:
- Ein
NavHost
-Komposit, mit dem Sie Ihren Navigationsgraphen über eine Kotlin-DSL erstellen können. - Begrenzung des Lebenszyklus, von
ViewModel
und des gespeicherten Status auf Zielebene. - Automatische Integration in die Schaltfläche „Zurück“ des Systems
- 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 spezielle Helpers in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Status zu heben und dieNavController
mit Composeables außerhalb derNavHost
zu verbinden (z. B. eine untere Navigationsleiste).
Weitere Informationen finden Sie in der Anleitung zur Navigation erstellen.
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 mithilfe von
NavDeepLinkRequest
oderUri
navigieren, können Sie jetzt auf denUri
, die Aktion und den Mime-Typ im resultierenden Ziel zugreifen, indem Sie die Absicht über Argumente überKEY_DEEP_LINK_INTENT
abrufen. Diese Funktion ist bereits für externe Deeplinks verfügbar. (I975c3, b/181521877)
Fehlerkorrekturen
OnBackPressedCallbacks
wurde einem Dispatcher mitNavBackStackEntry
als LifecycleOwner hinzugefügt. Jetzt wird nach dem AktivitätslebenszyklusSTOPPED
und dannSTARTED
richtig zurückgefiltert. (Iff94f, b/182284739)- Beim Parsen von Deeplink-Domains wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So wird sichergestellt, dass
www.example.com
sowohl mitwww.example.com
als auch mitwww.Example.com
übereinstimmt. Bei Abfrageparameternamen wird weiterhin zwischen Groß- und Kleinschreibung unterschieden. (#144, b/153829033) - Ein
NullPointerException
wurde behoben, das auftreten konnte, wenn ein Ziel mehrere nicht nullwertige Standardargumente hat und Sie zu diesem Ziel wechseln, während Sie nur einen Teil dieser Argumente überschreiben. (aosp/1644827)
Abhängigkeitsupdates
- Das Gradle-Plug-in „Navigation Safe Args“ ist jetzt für die Version 1.4.31 des Kotlin-Gradle-Plug-ins erforderlich. (aosp/1661058, b/181156413)
Externer Beitrag
- Vielen Dank an
bentrengrove
für den Pull-Request, durch den das Parsen von Deeplink-Domains jetzt unabhängig von der Groß- und Kleinschreibung erfolgt. (#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 korrekt geparst werden, wenn sie als Teil eines Deeplink-URI gesendet werden. Es werden sowohl der Ganzzahlwert als auch Hexadezimalwerte mit dem Präfix0x
unterstützt. (#127, b/179166693)- Die
android:defaultValue
für ein Argument mitapp:argType="float"
unterstützt jetzt ganzzahlige Standardwerte, sodass Sieandroid:defaultValue="0"
anstelle von0.0
verwenden können. (#117, b/173766247)
Fehlerkorrekturen
- Behebung eines Fehlers, bei dem der Installationsvorgang bei Verwendung der Navigationsunterstützung für dynamische Funktionen hängen blieb (Ib27a7, b/169636207)
- Der Aufruf von
setViewModelStore
odersetLifecycleOwner
mit demselben Objekt, das bereits festgelegt wurde, ist nun ein No-Op (Idf491, b/177825470). - Safe-Args fügt jetzt Unterdrückungsannotationen zu den richtigen Methoden hinzu, wenn Java verwendet wird. (I8fbc5, b/179463137)
Externe Beiträge
- Vielen Dank an
JvmName
für den Pull-Request, durch denReferenceType
-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URIs gesendet werden. (#127, b/179166693) - Vielen Dank an
tatocaster
für den Pull-Request, mit demdefaultValue
für ein Argument zugelassen wird.app:argType=”float”
unterstützt jetzt Ganzzahl-Standardwerte. (#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 gibt keinen Absturz mehr, wenn ein
NavBackStackEntry
per Pop-up aufgerufen wird, bevor seineLifecycle
nachCREATED
verschoben wird. (Ie3ba3) - Das Problem einer durch b/171364502 verursachten Regression wurde behoben, bei der das Aufrufen einer Aktivität mit dem Wert
0
für die Animationsressource den FehlerResourceNotFoundException
verursachte. (I7aedb, b/176819931)
Version 2.3.2
Version 2.3.2
2. Dezember 2020
androidx.navigation:navigation-*:2.3.2
wurde veröffentlicht. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression in
NavigationUI
wurde behoben, bei der bei Verwendung eines<activity>
-Ziels mitonNavDestinationSelected
nicht zur Aktivität gelangt wurde. (I22e34, b/171364502) navigation-dynamic-features-fragment
hat dazu geführt, dass mehrmals zum neu installierten Ziel navigiert wurde. Dieses Problem wurde behoben. (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, durch das beim Wechsel zu einem verschachtelten Navigationsgraphen keine neue Graph-Instanz im Backstack erstellt wurde. (Ifc831)
- Ein Problem wurde behoben, bei dem bei Verwendung von
navigate()
mit einempopUpTo
, durch das das letzte Ziel in einem Navigationsgraphen entfernt wurde, der Navigationsgraph nicht sofort zerstört und aus dem Backstack entfernt wurde. (I910a3) - Für Navigation SafeArgs wird jetzt KotlinPoet Version 1.7.2 verwendet, 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 Stamm-Dekor-Ansicht eines DialogFragment. 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
wurde veröffentlicht. Version 2.3.1 enthält diese Commits.
Neue Funktionen
- Der Navigationsoberfläche wurden Standard-Animator-Ressourcen hinzugefügt, die den Standard-Animationsressourcen vorgezogen werden sollten. (b/167430145)
- Die Methoden „hashcode“ und „equals“ werden jetzt von NavOptions überschrieben (b/161586466)
- Die Navigation enthält jetzt das aktuelle Ziel in der IllegalArgumentException „Kein Ziel mit ID“. Das sollte die Fehlerbehebung für Entwickler verbessern. (b/168311416)
Fehlerkorrekturen
- Safe Args bricht die Rückgabezeile nicht mehr um, auch wenn der generierte Name der Argumentklasse länger als 100 Zeichen ist. (b/168584987)
Änderungen an Abhängigkeiten
navigation-ui
ist jetzt von DrawerLayout 1.1.1 abhängig. So kannNavigationUI
die Leiste auch bei Verwendung vonLOCK_MODE_LOCKED_CLOSED
oderLOCK_MODE_LOCKED_OPEN
öffnen. (b/162253907)- Safe Args hängt jetzt von KotlinPoet 1.6.0 ab (aosp/1435911)
- Safe Args ist jetzt von AGP 4.0.1 (aosp/1442337) abhängig.
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 erfolgt automatisch nach Bedarf. Weitere Informationen finden Sie unter Mithilfe von Funktionsmodulen navigieren. - Navigationstests: Das Artefakt
navigation-testing
stellt einTestNavHostController
bereit, mit dem Sie das aktuelle Ziel festlegen und den Back-Stack nach Navigationsvorgängen prüfen können. Weitere Informationen finden Sie unter Navigation testen. - Ergebnis zurückgeben: Über die
NavBackStackEntry
, die jedem Ziel im Navigationsrückstack zugeordnet ist, können Sie jetzt auf eineSavedStateHandle
zugreifen, die zum Speichern kleiner Mengen an gespeichertem Status geeignet ist, die einem bestimmten Backstack-Eintrag zugeordnet werden sollten. Weitere Informationen finden Sie unter Ergebnis an das vorherige Ziel zurückgeben. NavigationUI
-Unterstützung fürOpenable
: Alle Verwendungen vonDrawerLayout
inNavigationUI
wurden durch die allgemeinereOpenable
-Oberfläche ersetzt, die in CustomView1.1.0
hinzugefügt und vonDrawerLayout
in DrawerLayout1.1.0
implementiert wurde.- Unterstützung von Aktions- und Mime-Typen in Deeplinks: Deeplinks werden zusätzlich zu den bisher verfügbaren
app:uri
unterstützt, sodass jetztapp:action
undapp:mimeType
unterstützt werden.NavController
unterstützt jetzt die Navigation über eine beliebige Kombination dieser Felder über die neueNavDeepLinkRequest
-Klasse. Weitere Informationen finden Sie unter Über NavDeepLinkRequest navigieren.
Bekannte Probleme
- Die Unterstützung für Deeplink-Aktionen und MIME-Typen ist im Manifest Merger noch nicht verfügbar. Bis diese Schritte abgeschlossen sind, enthalten die generierten
<intent-filter>
-Elemente aus dem<nav-graph>
-Element in deinem Manifest weder deinen MIME-Typ im<data>
-Element noch in deinem benutzerdefinierten<action>
. Sie müssen Ihrem Manifest manuell eine entsprechende<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, bei dem eine Instanz eines Ziels ohne Argumente durch eine andere Instanz mit Argumenten durchsingleTop
ersetzt wurde. (b/158006669) - Alle von
NavController
geworfenendestination is unknown
-Ausnahmen enthalten jetzt zusätzliche Informationen zur Fehlerbehebung, die bei der Bestimmung des Status vonNavController
helfen. (b/157764916)
Version 2.3.0-beta01
20. Mai 2020
androidx.navigation:navigation-*:2.3.0-beta01
wurden freigegeben. 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 Aufruf vonsetGraph()
registriert wurden, werden jetzt nach dem Beenden eines Prozesses ordnungsgemäß an das wiederhergestellte Ziel gesendet. (b/155218371)- Wenn Sie
singleTop
verwenden, werden die Argumente derNavBackStackEntry
jetzt korrekt aktualisiert und 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
wurde veröffentlicht. (Version 2.3.0-alpha06 enthält diese Commits.)
Neue Funktionen
- Deeplinks werden jetzt zusätzlich zu den bisher verfügbaren
app:uri
auch fürapp:action
undapp:mimeType
unterstützt. Der NavController unterstützt jetzt über die neue KlasseNavDeepLinkRequest
die Navigation über eine beliebige Kombination dieser Felder. (b/136573074, b/135334841)
API-Änderungen
- Die Kotlin-DSL-Unterstützung für Ziele der dynamischen Navigation wurde stark erweitert. (b/148969800)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Deeplink-Intents bei Verwendung eines verschachtelten Startziels ignoriert wurden. (b/154532067)
Version 2.3.0-alpha05
15. April 2020
androidx.navigation:navigation-*:2.3.0-alpha05
wurde veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Bei dynamischen Diagramm-Einschlüssen, für die
<include-dynamic>
verwendet wird, müssen Sieapp:graphPackage
nicht mehr angeben. Stattdessen wird ein Standardwert verwendet, indem Sie demapplicationId
nach einem Punkt das SuffixmoduleName
hinzufügen. Wenn Sie IhregraphPackage
anpassen möchten, wird jetzt ein${applicationId}
-Platzhalter unterstützt. (b/152696768) - Die Kotlin-DSL für Navigationsgraphen stellt jetzt ein
defaultArguments
-Map
für Aktionen bereit, was der Möglichkeit entspricht, Standardwerte für<action>
-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)
Fehlerkorrekturen
- In Navigation 2.2.2 wurde ein
IllegalStateException
-Fehler beim Deeplink zum Startziel Ihres Diagramms behoben, 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 Feature-Modulen in der Navigations-Kotlin-DSL hinzugefügt. (b/148969800)
API-Änderungen
- Die
DynamicExtras
-Klasse verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671) DynamicActivityNavigator
nimmt jetzt einenContext
in seinem Konstruktor anstelle einesActivity
an. (aosp/1250252)
Fehlerkorrekturen
- Leere Labels (d. h. Ziele mit
android:label=””
) werden vonNavigationUI
nicht mehr ignoriert. Der Titel wird jetzt korrekt als leere Zeichenfolge festgelegt. (b/148679860)
Abhängigkeitsupdates
- Die Artefakte für dynamische Navigationsfunktionen sind jetzt von Play Core
1.6.5
abhängig. (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 auf die konkrete
DrawerLayout
-Klasse zu setzen, verwendetAppBarConfiguration
jetzt dieOpenable
-Schnittstelle, die in CustomView1.1.0-alpha02
eingeführt wurde (dieDrawerLayout
ab DrawerLayout1.1.0-alpha04
implementiert). So können Sie benutzerdefinierte Implementierungen vonOpenable
mitNavigationUI
verwenden. (b/129030452)
Fehlerkorrekturen
- Die ProGuard-Regeln von
navigation-common-ktx
behalten jetzt korrekt nur die verwendetenNavArgs
-Klassen anstelle allerNavArgs
-Instanzen bei. (b/150213558)
Abhängigkeitsänderungen
- Die Navigation ist jetzt wieder von Core
1.1.0
abhängig, da Entwickler nicht zu einer neueren Abhängigkeit wechseln müssen, wenn die Navigation nicht von neuen APIs in Core1.2.0
abhängt.1.2.0
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 des gespeicherten Status eignet, die mit einem bestimmten Back-Stack-Eintrag verknüpft werden sollen. Ein Anwendungsfall ist unter Ergebnis zurückgeben beschrieben. (b/79672220)
API-Änderungen
- Es wurden praktische Methoden für
getCurrentBackStackEntry()
undgetPreviousBackStackEntry()
hinzugefügt, um den Abruf einerNavBackStackEntry
für das aktuelle und vorherige Ziel zu vereinfachen. (b/79672220)
Fehlerkorrekturen
navigateUp()
übergibt jetzt die Argumente des aktuellen Ziels undKEY_DEEP_LINK_INTENT
an das vorherige Ziel, wenn Ihre App in Ihrem eigenen Task-Stack gestartet wird. (b/147456890)
Abhängigkeitsänderungen
- Die Navigation hängt jetzt vom Haupt-
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 enthält 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 überprüfen. (b/140884273) - Mit der neuen
navigation-dynamic-features-fragment
(und ihrer übertragbaren Abhängigkeitnavigation-dynamic-features-runtime
) können Sie Ziele oder ganze Navigationsgraphen (über<include-dynamic>
) aus Funktionsmodulen einbinden. So wird die Installation von On-Demand-Funktionsmodulen beim Aufrufen dieser Ziele nahtlos ermöglicht. Weitere Informationen finden Sie unter Mithilfe von Funktionsmodulen navigieren. (b/132170186)
Fehlerkorrekturen
- Navigation
2.2.1
: Deeplinks ohne Suchparameter werden jetzt korrekt ignoriert, anstatt sie an nachfolgende{argument}
-Elemente anzuhängen oder nicht mit dem Deeplink abzugleichen. (b/147447512) - Unter Navigation
2.2.1
: Dienavigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, damitandroid.enableJetifier=true
nicht mehr erforderlich ist. (b/147610424) - In der Navigation
2.2.1
: Das Modulnavigation-common-ktx
hat jetzt einen eindeutigen Namen für das Manifestpaket und hat nicht mehr denselben Namen für das Manifestpaket wienavigation-runtime-ktx
. (aosp/1141947)
Aktualisierung der Abhängigkeiten
- Navigation
2.2.1
: 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
- Ein Fehler wurde behoben, der beim Deeplink zum Startziel Ihres Diagramms auftrat, wenn Ihre Aktivität mehrere
NavHostFragment
-Instanzen enthält.IllegalStateException
(b/147378752) - Leere Labels (d. h. Ziele mit
android:label=””
) werden vonNavigationUI
nicht mehr ignoriert. Der Titel wird jetzt korrekt als leere Zeichenfolge festgelegt. Diese Funktion wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860) - Die
navigation-common-ktx
ProGuard-Regeln behalten jetzt nur die verwendetenNavArgs
-Klassen bei, anstatt alleNavArgs
-Instanzen. Dies wurde bereits in Navigation 2.3.0-alpha03 veröffentlicht. (b/150213558
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.2.1 enthält diese Commits.
Fehlerkorrekturen
- Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt, statt sie an nachgestellte
{argument}
-Elemente anzuhängen oder sie nicht mit dem Deeplink übereinzustimmen. (b/147447512) - Die
navigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, damitandroid.enableJetifier=true
nicht mehr erforderlich ist. (b/147610424) - Das
navigation-common-ktx
-Modul hat jetzt einen eindeutigen Manifestpaketnamen, anstatt denselben Manifestpaketnamen wienavigation-runtime-ktx
zu verwenden. (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 dabei die ID eines Ziels oder Navigationsgraphen im Backstack übergeben. Die zurückgegebeneNavBackStackEntry
enthält einLifecycleOwner
, einViewModelStoreOwner
(das gleiche, das vonNavController.getViewModelStoreOwner()
zurückgegeben wird) und einSavedStateRegistryOwner
, die alle von der Navigation gesteuert werden. Außerdem werden die Argumente angegeben, die zum Starten dieses Ziels verwendet wurden. - Integration von Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die bei Verwendung vonby navGraphViewModels()
oder demViewModelProvider
-Konstruktor mit einemViewModelStoreOwner
verwendet wird, das vonNavController.getBackStackEntry()
oderNavController.getViewModelStoreOwner()
zurückgegeben wird. - Unterstützung von Abfrageparametern für Deeplinks: Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente mit einem Standardwert oder mit dem Attribut „nullable“ sind beim Abgleich von Deeplinks jetzt optional.
- Verbesserte Animation –
NavHostFragment
verwendet jetztFragmentContainerView
aus Fragment 1.2.0. Dadurch werden Probleme mit der Z-Reihenfolge von Animationen und Fenster-Inset-Dispatches 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 standardmäßigen Ausblendungsanimationen wurden so angepasst, dass sie den angepassten Ausblendungsanimationen in Fragment1.2.0-rc04
entsprechen. (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 beim Parsen von Deeplinks behoben, bei dem Suchparameter und ein Argument als letzter Teil des Pfads verwendet wurden, wodurch mehr als ein Zeichen des Arguments des finalen Pfads nicht geparst werden konnte. (b/144554689)
- Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter
"@null"
stattnull
erhielten. (b/141613546) NavHostFragment
stellt den Graphen jetzt nach einer Konfigurationsänderung wieder richtig wieder her, wenn er mitFragmentContainerView
verwendet wird. (b/143752103)
Änderungen an Abhängigkeiten
- Die Navigation hängt jetzt von Lebenszyklus
2.2.0-rc03
, Lebenszyklusansichtsmodell SavedState1.0.0-rc03
, Aktivität1.1.0-rc03
und Fragment1.2.0-rc03
ab, sofern zutreffend.
Version 2.2.0-rc02
7. November 2019
androidx.navigation:navigation-*:2.2.0-rc02
wird 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 seit 2.2.0-beta01
unverändert 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
wurde veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.
Neue Funktionen
NavDestination
und seine Unterklassen überschreiben jetzttoString()
, um bei der Fehlerbehebung hilfreichere Informationen bereitzustellen. (b/141264986)
Geändertes Verhalten
- Zusätzliche Suchparameter werden beim Abgleich von Deeplinks jetzt ignoriert, anstatt den Abgleich zu verhindern. (b/141482822)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Abfrageparameter angegeben wurden. (b/141505755)
- Die
navArgs()
Kotlin-Erweiterung fürActivity
hat jetzt eine bessere Fehlermeldung, wenn es keine Extras gibt. (b/141408999) - Von Safe Args generierte
Directions
-Java-Klassen enthalten jetzt Standardwerte. (b/141099045) - Sichere Args generierte
Args
-Java-Klassen enthalten jetzt Standardwerte. (b/140123727) - Bei Verwendung eines
Toolbar
animiertNavigationUI
die Textänderung beim Wechsel zwischen zwei Zielen der obersten Ebene nicht mehr. (b/140848160)
Version 2.2.0-alpha03
18. September 2019
androidx.navigation:navigation-*:2.2.0-alpha03
wurde veröffentlicht. Version 2.2.0-alpha03 enthält diese Commits.
Verhaltensänderungen
- Wenn Sie
setViewModelStore()
nachsetGraph
aufrufen, erhalten Sie jetzt eineIllegalStateException
. Dieser Wert sollte immer von derNavHost
im Rahmen der Ersteinrichtung festgelegt werden, damit alleNavBackStackEntry
-Instanzen einen einheitlichen Speicher fürViewModel
-Instanzen haben. (aosp/1111821)
Fehlerkorrekturen
- Ein
ConcurrentModificationException
wurde behoben, wennViewModel
-Instanzen verwendet wurden, die an mehrereViewModelStore
-Instanzen mit einem Navigationsdiagrammbereich angehängt waren. (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
- Deeplinks mit Suchparametern unterstützen jetzt neu angeordnete Suchparameter. Argumente, die einen Standardwert haben oder bei denen Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional. (b/133273839)
- Sie können jetzt
NavController.getBackStackEntry()
aufrufen und die ID eines Ziels oder eines Navigationsdiagramms im Back-Stack übergeben. Die zurückgegebeneNavBackStackEntry
bietet ein navigationsgesteuertesLifecycleOwner
,ViewModelStoreOwner
(dieselbes wird vonNavController.getViewModelStoreOwner()
zurückgegeben) undSavedStateRegistryOwner
sowie die Argumente, die zum Starten dieses Ziels verwendet werden. (aosp/1101691, aosp/1101710)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das das Hinzufügen einer
NavHostFragment
zu einerViewPager2
mit einerIllegalArgumentException
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 bei Verwendung vonby navGraphViewModels()
oder demViewModelProvider
-Konstruktor mit einem vonNavController.getViewModelStoreOwner()
zurückgegebenenViewModelStoreOwner
verwendet wird. (b/135716331)
API-Änderungen
- Unter Navigation
2.1.0-rc01
: Die veraltetegetViewModelStore()
API fürNavController
, die in2.1.0-alpha02
eingeführt wurde, wurde entfernt. (aosp/1091021)
Fehlerkorrekturen
- In
NavHostFragment
wird jetztFragmentContainerView
verwendet. Dadurch wurden Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinblendungen 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 Navigationsgraphenebene einschränken: Sie können jetzt ViewModels erstellen, die auf Navigationsgraphenebene eingeschränkt sind. Verwenden Sie dazu den
by navGraphViewModels()
-Property-Delegate für Kotlin-Nutzer mit den-ktx
-Bibliotheken oder diegetViewModelStoreOwner()
API, dieNavController
hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen teilen. - Dialogziele: Sie können jetzt
<dialog>
-Ziele erstellen, bei denen eineDialogFragment
angezeigt wird, wenn Sienavigate
aufrufen.NavHostFragment
unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel über DialogFragment erstellen. - Navigation per URI: Sie können jetzt
navigate
mit einemUri
verwenden. Dabei wird der<deepLink>
verwendet, den Sie einem Ziel hinzugefügt haben, um dorthin zu navigieren. Weitere Informationen finden Sie unter Über einen URI navigieren. - NavHostController: APIs, die speziell zum Erstellen einer benutzerdefinierten
NavHost
verwendet werden, wurden zuNavHostController
verschoben. Dadurch können ImplementierungenNavController
mit dem Hosting-ObjektLifecycleOwner
,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 2014 eingeführt wurde, wurde entfernt.2.1.0-alpha02
(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
- 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
NavigationUI
wird jetzt die Entfernung der Schaltfläche „Nach oben“ animiert, wennsetupWithNavController()
mitToolbar
oderCollapsingToolbarLayout
verwendet wird. (b/131403621)
Fehlerkorrekturen
- Ein Timing-Problem bei der Verwendung mehrerer NavHostFragments mit demselben Container mit
findNavController()
wurde behoben. (b/136021571)
Version 2.1.0-alpha06
2. Juli 2019
androidx.navigation:*:2.1.0-alpha06
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Das von NavHostFragment verwendete Attribut
app:navGraph
wurde in dasnavigation-runtime
-Artefakt verschoben. Benutzerdefinierte Navigationselemente, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um sie in den Navigationseditor einzubinden. (b/133880955)
API-Änderungen
- Die
getViewModelStore()
API aufNavController
wurde zugunsten der neuengetViewModelStoreOwner()
-Methode eingestellt, die eineViewModelStoreOwner
zurückgibt. (aosp/987010) - Die Implementierung von Zielen mit schwebendem Fenster, z. B.
<dialog>
-Ziele, wurde in eine Markierungsoberfläche (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
- Der Navigationsstatus wird jetzt bei Verwendung eines
<dialog>
-Ziels korrekt mit dem angezeigten Inhalt synchronisiert. Die Navigation zeigt daher jetzt automatisch<dialog>
-Ziele an, wenn Sie zu einem Ziel ohne Dialog oder zu einem Ziel ohne Aktivität navigieren, z. B. zu einem<fragment>
-Ziel. (b/134089818)
Fehlerkorrekturen
- Bei der Navigation unterdrückt jetzt die Animation, die beim Neuerstellen der Aktivität bei der Verarbeitung eines Deep-Links stattfindet, wodurch ein visuelles Blitzlicht behoben wird. (b/130362979)
- Es wurde ein Fehler behoben, bei dem der Back-Stack der Navigation nicht synchron war, wenn ein Fragment beim Hinzufügen des anfänglichen Fragments per Pop-up angezeigt 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 abgeleitete Klasse vonNavController
,NavHostController
, verschoben. (aosp/966091) - Die Methode
NavController
setHostOnBackPressedDispatcherOwner()
wurde durch die MethodesetOnBackPressedDispatcher()
vonNavHostController
ersetzt. Sie muss jetzt vor dem Aufruf aufgerufen werden.setLifecycleOwner()
(aosp/965409) NavHostController
enthält jetzt eineenableOnBackPressed(boolean)
-Methode, die die KlasseNavHostOnBackPressedManager
ersetzt, die zuvor vonsetHostOnBackPressedDispatcherOwner()
zurückgegeben wurde. (aosp/966091)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das der Rückstapel nach der Navigation über einen URI nicht korrekt war. (b/132509387)
- Deeplinks, die vom NavController automatisch 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
NavHostFragment
berücksichtigtapp:defaultNavHost
beim Abfangen der Systemereignisse der Zurück-Schaltfläche korrekt, wodurch eine Regression in Navigation2.1.0-alpha03
behoben wird. b/132077777DialogFragmentNavigator
verarbeitet jetztpopBackStack()
- undnavigateUp()
-Vorgänge korrekt. b/132576764- Das Problem
IllegalStateException: unknown destination during restore
beim wiederholten Wechseln zwischen verschachtelten Grafiken wurde behoben. 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 Schaltfläche „Zurück“ des Systems ab, obwohl
app:defaultNavHost="false"
b/132077777 verwendet wird
Neue Funktionen
- Sie können jetzt
<dialog>
-Ziele erstellen, bei denen einDialogFragment
angezeigt wird, wenn Sienavigate
.NavHostFragment
unterstützt standardmäßig Dialogziele. b/80267254 - Sie können
navigate
nicht nur mit einer Ressourcen-ID oder einerNavDirections
-Instanz aufrufen, sondern jetzt auch über eineUri
. Dabei wird die<deepLink>
verwendet, die Sie einem Ziel hinzugefügt haben, um zum richtigen Ziel zu gelangen. b/110412864
Geändertes Verhalten
- Die Standardanimationen von NavigationUI wurden von 400 ms auf 220 ms beschleunigt, um der Standardanimation von Aktivitäten und Fragmenten zu entsprechen. b/130055522
API-Änderungen
- Die Methode
createFragmentNavigator()
vonNavHostFragment
wurde eingestellt und ihre Funktionen wurden in die neue MethodeonCreateNavController()
verschoben, um deutlicher zu machen, dass dies der richtige Einstiegspunkt für das Hinzufügen benutzerdefinierter Navigatoren ist, wenn Unterklassen vonNavHostFragment
erstellt werden. b/122802849 NavDestination
wurde die MethodehasDeepLink()
hinzugefügt, mit der Sie prüfen können, ob eine bestimmteUri
von diesem Ziel oder, im Fall einerNavGraph
, von einem beliebigen Ziel im Navigationsgraphen verarbeitet werden kann. b/117437718
Fehlerkorrekturen
- Standardargumente werden jetzt korrekt an
OnDestinationChangedListener
-Instanzen übergeben. b/130630686 NavHostFragment
fängt jetzt System-Back-Ereignisse mithilfe vonOnBackPressedDispatcher
ab. Dadurch wird ein Problem bei der bedingten Navigation in Fragment-Lifecycle-Methoden beim Zurückkehren zu einem Fragment behoben. b/111598096- Bei sicheren Argumenten 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt ViewModels erstellen, die auf Navigationsgraphebene gelten. Verwenden Sie dazu den
by navGraphViewModels()
-Property-Delegate für Kotlin-Nutzer oder diegetViewModelStore()
API, dieNavController
hinzugefügt wurde. b/111614463
API-Änderungen
- Sie können einem
<activity>
-Ziel jetzt einapp:targetPackage
hinzufügen, um den Abgleich des Paketnamens einzuschränken. Es unterstütztapp:targetPackage="${applicationId}"
, um das Paket auf Ihre eigene Anwendungs-ID zu beschränken. b/110975456
Fehlerkorrekturen
- Die
android:name
für<activity>
-Ziele werden zum Zeitpunkt der Inflation nicht mehr in eine Klasse geparst, wodurch ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert werden. b/124538597
Version 2.1.0-alpha01
19. März 2019
Dies ist die erste Alphaversion von Navigation 2.1.0
.
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von
androidx.core:core:1.0.1
undandroidx.fragment:fragment:1.1.0-alpha05
ab. Außerdem wurde die Abhängigkeit vonandroidx.legacy:legacy-support-core-utils:1.0.0
entfernt. b/128632612
API-Änderungen
- Als Alternative zum Erstellen eines Klick-Listeners mit einer Ressourcen-ID und einem Bundle wurde die neue Methode
Navigation.createNavigateOnClickListener(NavDirections)
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 einem Ziel Argumente angehängt sind. Dadurch wird ein Problem bei der Verwendung vonandroid:defaultValue="@null"
behoben. b/128531879 - Safe Args ist jetzt von KotlinPoet 1.1.0 abhängig. Dadurch wurde ein Problem mit extrem langen Paketnamen behoben. b/123654948
Version 2.0.0
Version 2.0.0
14. März 2019
Navigation 2.0.0
wird ohne Änderungen gegenüber 2.0.0-rc02
veröffentlicht.
Version 2.0.0-rc02
6. März 2019
Navigation 2.0.0-rc02 stellt neue Artefakte mit der Gruppen-ID androidx.navigation
bereit und ändert ihre Abhängigkeiten in die AndroidX-Äquivalente.
Das Verhalten von 2.0.0-rc02 ist mit dem von Navigation 1.0.0-rc02 identisch. Für das Upgrade von 1.0.0-rc02 sollten keine Änderungen am Code erforderlich sein, außer dass Sie Ihre Abhängigkeiten an die neuen Abhängigkeiten anpassen.
Ihr Projekt muss zu AndroidX migriert worden sein, um 2.X-Releases von Navigation verwenden zu können. Navigation 1.0 (stabil) ist die letzte Version, die die Support Library-Abhängigkeiten verwendet. Alle zukünftigen Entwicklungen nach Version 1.0 basieren auf AndroidX und bauen auf der stabilen Version 2.0 auf.
Abhängigkeiten vor AndroidX
Fügen Sie für die Navigationsversionen vor Android X die folgenden Abhängigkeiten hinzu:
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 die folgende 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
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 Releasekandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Reihe von Fehlerkorrekturen.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
popBackStack()
ignoriert wurde, wenn die Stammgrafik keine ID b/126251695 hatte. navigateUp()
verarbeitet jetzt korrekt die Navigation zurück zur Aufgabe Ihrer App, wenn sie 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-Ausgangsanimation angewendet wurde b/126237567 - In Kotlin-Code, der mit Safe Args generiert wird, werden Kotlin-Keywords wie
in
undfun
im Paketnamen, der mit der KlasseR
verknüpft ist, jetzt ordnungsgemäß 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 enthält eine Reihe kleinerer Verbesserungen und wichtiger Fehlerkorrekturen.
Neue Funktionen
- Sie können jetzt
0
alsandroid:defaultValue
fürreference
-Argumente verwenden. b/124248602
Verhaltensänderungen
- Übereinstimmungen mit genauen Deeplinks haben jetzt Vorrang vor Deeplinks mit Übereinstimmungen mit
.*
oder Argumenten. b/123969518
Fehlerkorrekturen
popBackStack()
undnavigateUp
geben jetzt beim Poppen des letzten Ziels im Backstack korrektfalse
zurück. Damit wurde eine in1.0.0-beta01
eingeführte Regression behoben. b/123933201- Bei der Navigation wird die
ClassLoader
jetzt beim Wiederherstellen des gespeicherten Instanzstatus korrekt festgelegt. So werden Probleme bei der Verwendung benutzerdefinierter Klassen im gespeichertenNavigator
-Status oder in Argumenten vermieden, die an eineNavDestination
gesendet werden. b/123893858 - Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein
Parcelable[]
-Argument aus dem gespeicherten Instanzstatus wiederhergestellt wird. b/123963545 - Mit Safe Args werden jetzt nicht mehr benötigte generierte Kotlin-Klassen ordnungsgemäß bereinigt. b/124120883
Version 1.0.0-beta01
4. Februar 2019
Dies ist die erste Betaversion der Navigation API. Sofern keine kritischen Probleme auftreten, sollte sie bis zur nächsten Version stabil bleiben. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.
Geändertes Verhalten
- Die Navigation stellt jetzt sicher, dass Standardwerte von Argumenten zur Laufzeit und über sichere Args identisch behandelt werden. Daher kann nur bei Argumenten mit einer
app:argType="reference"
ein Standardwert auf eine andere Ressource verweisen (z. B.@color/colorPrimary
). Der Versuch, einen Standardwert für einen Verweis mit einer anderenapp:argType
zu verwenden, führt beim Parsen der Navigations-XML zu einer Ausnahme. b/123551990 - "Sichere 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 können jetzt in Bibliotheks- und Funktionsmodulen in allen Versionen des Android Gradle-Plug-ins verwendet werden. b/121304903
- Eine Regression behoben, bei der durch einen einzelnen
popBackStack()
-Vorgang alle Kopien eines Ziels vom Backstack entfernt wurden, anstatt nur eines einzelnen Ziels. b/123552990 - Ein Problem wurde behoben, durch das der Status von
FragmentNavigator
nicht mehr mit dem Status vonNavController
synchronisiert wurde, was beim Versuch, den Backstack wiederherzustellen, zu einerIllegalStateException
führte. b/123803044 - Ein Problem wurde behoben, durch das der zurückgestrichelte Pfeil
NavigationUI
bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431 - Der von Safe Args generierte Code verarbeitet jetzt ordnungsgemäß die Verwendung eines
app:argType
, der auf eine statische innere Klasse im Format.OuterClass$InnerClass
verweist. b/123736741 - Der von Safe Args generierte Java-Code verarbeitet jetzt globale Aktionen und tief verschachtelte Ziele richtig. b/123347762
Version 1.0.0-alpha11
23. Januar 2019
Dies ist ein Hotfix für 1.0.0-alpha10
, mit dem ein Problem mit Safe Args behoben wird.
Fehlerkorrekturen
- Behebt ein Problem, bei dem die Klasse „Wegbeschreibungen“, die mit globalen Aktionen verknüpft ist, von Safe Args nicht importiert werden konnte. b/123307342
Version 1.0.0-alpha10
23. Januar 2019
Bekannte Probleme
- Mit Safe Args kann die Klasse „Wegbeschreibungen“ nicht importiert werden, die mit globalen Aktionen verknüpft ist. 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 in einerActivity
oderFragment
einen Verweis auf eine mit Safe Args generierteNavArgs
-Klasse zu erhalten. 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 wurde speziell für Module entwickelt, die nur Kotlin enthalten. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster verwendet, das noch über das vorherigeandroidx.navigation.safeargs
-Plug-in verfügbar ist. b/110263087
Verhaltensänderungen
- Übereinstimmende Deeplinks werden jetzt dem Deeplink zugeordnet, der die meisten übereinstimmenden Argumente hat. b/118393029
- Wenn
setGraph()
auf einerNavController
aufgerufen wird, wird der Rückstapel jetzt zurückgesetzt. b/111450672 - Bei unbekannten Deeplinks wird keine
IllegalStateException
mehr ausgegeben, sondern sie werden ignoriert. So werden Probleme mit verschachtelten oder mehrerenNavHostFragment
s behoben. b/121340440
Wichtige Änderungen
- Die Methode
NavOptions.applyPopAnimationsToPendingTransition()
zum Anwenden von Pop-up-Animationen auf eine Aktivität wurde zuActivityNavigator
verschoben. b/122413117 - Mit Safe Args werden jetzt identische Klassen für Aktionen ohne Argumente nicht mehr dupliziert. Der Rückgabetyp für Methoden ohne Argumente in generierten NavDirections-Klassen ist jetzt
NavDirections
. b/123233147 - Von Safe Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur mit den generierten statischen Methoden interagieren. b/123031660
- Von Safe Args generierte
NavDirections
-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur über die statischen Methoden in den generierten Directions-Klassen generiert werden. b/122963206 - Die zurückgegebene
Bundle
vonNavDirections
'getArguments()
wird jetzt als@NonNull
statt als@Nullable
gekennzeichnet. b/123243957
Fehlerkorrekturen
NavDeepLinkBuilder
verarbeitet jetzt mehrere gleichzeitigePendingIntent
s am selben Ziel korrekt, indem die von Ihnen übergebenen Argumente zur Bestimmung der Eindeutigkeit verwendet werden. b/120042732NavController
verarbeitetpopBackStack()
-Vorgänge jetzt korrekt, wenn ein verschachteltesNavHostFragment
oder andere untergeordnete Fragmente mit einem Back Stack verwendet werden. b/122770335NavigationUI
legt die Inhaltsbeschreibung der Schaltfläche „Nach oben“ jetzt korrekt fest. b/120395362- Von Safe Args generierte Navigationsklassen verarbeiten jetzt globale Aktionen, die dieselbe ID wie eine Aktion für ein Ziel haben, richtig. b/122962504
- Von Safe Args generierte
NavDirections
-Klassen haben jetzt korrekt gleichehashCode()
-Werte, wennequals()
„wahr“ zurückgibt. b/123043662 FragmentNavigator
gibt jetzt eine bessere Fehlermeldung aus, wenn du versuchst, benutzerdefinierteFragmentTransactions
auf demFragmentManager
derNavHostFragment
auszuführen. 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 android.arch.navigation:navigation-testing
-Artefakts nicht fortzusetzen. Diese Methode hat sich zwar für interne Tests von NavController
bewährt, wir empfehlen jedoch dringend alternative Teststrategien, z. B. das Mocking der NavController
-Instanz, um zu prüfen, ob die richtigen navigate()
-Aufrufe ausgeführt werden. Dieser Ansatz wird im Single Activity Talk beim AndroidDevSummit 2018 ausführlich erläutert. Wir arbeiten an einer zusätzlichen Dokumentation speziell zum Testen mit Navigation.
Neue Funktionen
MenuItem
-Objekte mitmenuCategory="secondary"
können nicht mehr als Back-Stack verwendet werden, wenn sie mitNavigationUI
-Methoden verwendet werden. 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
Nicht abwärtskompatible Änderungen
- Wenn ein
<argument>
mit einemargType="reference"
verwendet wird, parst Navigation nicht mehr die Referenz, sondern gibt die Rohressourcen-ID selbst an. b/111736515 onNavDestinationSelected()
wird jetzt standardmäßig zum Startziel des Navigationsdiagramms zurückgegeben, sodass sie mit densetup
-Methoden konsistent sind. Fügen SiemenuCategory="secondary"
zuMenuItem
hinzu, um zu verhindern, dass der Rückstapel aufgerufen wird. aosp/852869- Die
fromBundle()
-Methoden der generiertenArgs
-Klassen nehmen jetzt einen nicht nullwertigenBundle
anstelle eines nullableBundle
entgegen. aosp/845616
Fehlerkorrekturen
- Argumente werden jetzt aus Deeplinks richtig als
argType
und nicht immer als Strings geparst b/110273284 - Die Navigation exportiert jetzt ihre öffentlichen Ressourcen korrekt. b/121059552
- Safe Args ist jetzt mit dem Android Gradle Plugin 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 Sie Ziellabels mit
NavigationUI
-Methoden verwenden, werden{argName}
-Instanzen inandroid:label
jetzt automatisch durch das richtige Argument ersetzt. b/80267266 - Die Navigation hängt jetzt von der Support Library 28.0.0 b/120293333 ab.
Wichtige Ä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 Stammknoten Ihres Graphen, um alle Ziele aus dem Backstack zu entfernen. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und es ist möglich, beliebigeIntent.FLAG_ACTIVITY_
-Flags festzulegen. aosp/828140NavController.onHandleDeepLink
wurde inhandleDeepLink
umbenannt aosp/836063- Viele Klassen und Methoden, die nicht für Unterklassen gedacht sind, wie
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden zufinal
aosp/835681 - Die eingestellte Methode
NavHostFragment.setGraph()
wurde entfernt. aosp/835684 - Die eingestellte Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Erstellung von Fragmenten wurde zu
FragmentNavigator
verschoben. So können Sie die Erstellung von Fragmenten jetzt noch einfacher an einenFragmentFactory
delegieren. b/119054429 - Der Konstruktor für
NavGraphNavigator
akzeptiert keinContext
mehr. aosp/835340 - NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle mehr. Die Funktionsweise von
NavigatorProvider
, die vongetNavigatorProvider()
zurückgegeben wird, hat sich nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt. Rufen Sie stattdessennavigate()
auf demNavigator
an. aosp/830663- Die Funktion
Navigator
wurde erheblich überarbeitet.OnNavigatorNavigatedListener
ist nicht mehr erforderlich. Stattdessen gibtnavigate
dieNavDestination
zurück, zu der die Navigation erfolgt ist. Navigator
-Instanzen können keine Pop-Ereignisse mehr an dieNavController
senden. Du kannst einenOnBackPressedCallback
verwenden, um das Drücken der Schaltfläche „Zurück“ abzufangen undnavController.popBackStack()
aufzurufen. aosp/833716
Fehlerkorrekturen
popUpTo
funktioniert jetzt konsistent, wenn das Ziel ein<navigation>
-Element ist. b/116831650- Es wurden mehrere Fehler behoben, die bei Verwendung verschachtelter Diagramme zu einem
IllegalArgumentException
führten: b/118713731 b/113611083 b/113346925 b/113305559 - Das
dataPattern
-Attribut von<activity>
-Zielen wird jetzt mit Argumenten aus nicht-String-Argumenten gefüllt, indemtoString()
b/120161365 aufgerufen wird.
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 - Sichere Args unterstützt Arrays aller unterstützten Typen. b/111487504
- Unterordner von Ressourcenverzeichnissen werden jetzt von Safe Args ignoriert b/117893516
- Safe Args fügt bei Bedarf
@Override
-Anmerkungen hinzu. b/117145301
Version 1.0.0-alpha07
29. Oktober 2018
Neue Funktionen
- Mit der neuen Klasse AppBarConfiguration können Sie anpassen, welche Ziele als Ziele der obersten Ebene betrachtet werden sollen. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
- Sie können jetzt Argumente an das Startziel der Grafik b/110300470 übergeben.
- Deeplinks unterstützen jetzt benutzerdefinierte Schemas mit Punkten, Bindestriche und Pluszeichen. b/112806402
Wichtige Änderungen
- Das
navigation-testing-ktx
-Modul wurde in dasnavigation-testing artifact
-Modul aufgenommen und wird nicht mehr veröffentlicht. - Das
navigation-testing
-Artefakt hat jetzt eine Abhängigkeit von der Kotlin-Standardbibliothek. Die API wurde so geändert, dass sie den Kotlin-Konventionen entspricht. Sie können sie jedoch 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 in Deeplinks jetzt korrekt geparst. b/110057514
- Bei Zielen für Aktivitäten werden jetzt alle Ein- und Ausblendungsanimationen korrekt angewendet. b/117145284
- Ein Absturz, der nach Konfigurationsänderungen bei Verwendung benutzerdefinierter Navigationselemente auftrat, wurde behoben. b/110763345
Safe Args
- Sichere Argumente 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
- Ein Problem beim Generieren von Wegbeschreibungen zu einem <include>-Graphen wurde behoben. b/116542123
Version 1.0.0-alpha06
20. September 2018
Neue Funktionen
- Übergänge mit freigegebenen Elementen für Fragment- und Aktivitätsziele werden jetzt unterstützt b/79665225. Weitere Informationen finden Sie unter Navigation mit der Navigationsarchitekturkomponente implementieren.
- Wenn Sie ein Element in
NavigationView
auswählen, wird das untere Blatt jetzt geschlossen. b/112158843
API-Änderungen
- Nicht abwärtskompatible Änderung: Die Navigator-Methode
navigate()
verwendet jetzt einenNavigator.Extras
-Parameter. - Die
getGraph()
-Methode von NavController ist jetztNonNull
b/112243286
Fehlerkorrekturen
NavigationUI.setupWithNavController()
leitet keine Aufrufe mehr weiter, wenn er mit Daten aus einzelnen Zielen verwendet wird b/111961977- Navigator
onSaveState()
wird jetzt nur noch einmal aufgerufen b/112627079
Sichere Argumente
- Die „Directions“-Klassen für Navigationsziele erweitern jetzt die „Directions“-Klasse der übergeordneten Elemente, 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 Backstack-Verhalten führte. b/111907708
- Fehlerkorrektur in
equals()
von Generated Args-Klassen. b/111450897 - Behebung eines Buildfehlers bei Safe Args. b/109409713
- Fehler bei der Umwandlung von Ressourcen-IDs in Java-Namen beheben b/111602491
- Fehlermeldungen zur Nullbarkeit im Safe Args-Plug-in behoben.
- Fügen Sie fehlende Anmerkungen für die Null-Zulässigkeit hinzu.
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-/Verhaltensänderungen
- NavHostFragment setzt immer das aktuelle Fragment als primäres Navigationsfragment, damit die untergeordneten Fragmentmanager entfernt werden, bevor der äußere NavController entfernt wird. b/111345778
Sichere Argumente
- Nicht abwärtskompatible Änderung:
app:type
wurde zuapp:argType
geändert, um Konflikte mit anderen Bibliotheken wie ConstraintLayout 2.0.0-alpha1 b/111110548 zu vermeiden. - Fehlermeldungen von Safe Args sind jetzt anklickbar b/111534438
- Die Args-Klassen bestätigen jetzt, dass
NonNull
-Attribute tatsächlich nicht null sind. b/111451769 - Den von NavDirections und Args generierten Klassen b/111455455 b/111455456 wurden zusätzliche
NonNull
-Anmerkungen hinzugefügt.
Fehlerkorrekturen
- Ein Problem mit der System-Zurück-Schaltfläche nach dem Deeplink zu einem Fragmentziel wurde behoben 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-/Verhaltensänderungen
- Die Methode „NavigationUI.setupWithNavController“ für die Symbolleiste wurde hinzugefügt b/109868820
- Die NavigationUI.setupWithNavController-Methode für "CollapsingToolbarLayout" wurde hinzugefügt: b/110887183
- „popBackStack()“ gibt jetzt „false“ zurück, wenn der Backstack leer ist oder die angegebene Ziel-ID nicht im Backstack enthalten ist b/110893637
- FragmentNavigator ignoriert jetzt Navigationsaktionen, nachdem der FragmentManager den Status gespeichert hat. Dadurch werden Ausnahmen vom Typ „Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden“ vermieden. b/110987825
Safe Args
- Nicht abwärtskompatible Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den Namen der entsprechenden NavDirections-Methoden durch die Camel-Case-Schreibweise ersetzt.
- Beispiel:
DemoController.index
wird zusetDemoControllerIndex
b/79995048. - Beispiel:
action_show_settings
wird zuactionShowSettings
b/79642240
- Beispiel:
- Funktionsgefährdende Änderung:Argumente werden jetzt standardmäßig als nicht null betrachtet. Wenn Sie Nullwerte für String- und Parcelable-Argumente zulassen möchten, fügen Sie
app:nullable="true"
b/79642307 hinzu. - Sie können
app:type="long"
jetzt mit Standardwerten in Form von „123L“ verwenden. b/79563966 - Parcelable-Argumente werden jetzt unterstützt. Dabei wird für
app:type
ein vollständig qualifizierter Klassenname verwendet. Der einzige unterstützte Standardwert ist"@null"
b/79563966. - Args-Klassen implementieren jetzt
equals()
undhashCode()
b/79642246 - Das Plug-in "Safe Args" kann jetzt auf Bibliotheksprojekte angewendet werden b/80036553
- Das Safe Args-Plug-in kann jetzt auf Feature-Projekte angewendet werden b/110011752
Fehlerkorrekturen
- Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
- Probleme behoben, die beim mehrmaligen Navigieren durch verschachtelte Grafiken aufgetreten sind b/110178671
- Probleme bei der Verwendung von
setPopUpTo
mit dem ersten Ziel im Diagramm b/109909461 behoben - Problem behoben, bei dem alle
app:defaultValue
-Werte als Strings übergeben wurden b/110710788 - aapt2, das im Android Gradle Plugin 3.2 Beta 01 enthalten ist, fügt jetzt in Navigations-XML-Dateien für jedes
android:name
-Attribut Regeln zum Beibehalten hinzu b/79874119 - Speicherleck beim Ersetzen des Standard-FragmentNavigators behoben b/110900142
Version 1.0.0-alpha02
7. Juni 2018
Verhaltensänderungen
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Bei der Navigation werden jetzt Argumente decodiert, die aus Deeplink-URLs geparst wurden. b/79982454
Fehlerkorrekturen
Ein
IllegalStateException
wurde beim Aufrufen von „navigate“ aus den Lebenszyklusmethoden des Fragments behoben. b/79632233Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um das Flimmern bei Verwendung von Animationen zu beheben. b/80160903
Ein
IllegalArgumentException
wurde korrigiert, das bei Verwendung von „defaultNavHost="true"“ als untergeordnetes Fragment aufgetreten ist. b/79656847Ein
StackOverflowError
bei der Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
wurde behoben, das beim Zurückwechseln zu einem verschachtelten Diagramm angezeigt wurde. b/80453447Ein Problem mit sich überschneidenden Fragmenten bei Verwendung von
launchSingleTop
wurde behoben. b/79407969Bei der Navigation wird jetzt der richtige synthetische Backstack für verschachtelte Diagramme erstellt. b/79734195
In der NavigationUI wird jetzt das richtige Element hervorgehoben, wenn ein verschachtelter Graph als
MenuItem
verwendet wird. b/109675998
API-Änderungen
Das
clearTask
-Attribut für Aktionen und die zugehörige API inNavOptions
wurden eingestellt. 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 für die Erstellung der Navigation in der App. Diese erste Version ist 1.0.0-alpha01
.