Navigation
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
26. Juni 2024 | 2.7,7 | - | 2.8.0-beta04 | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Navigation hinzufügen möchten, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:
Groovig
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
Fügen Sie die folgende classpath
in die build.gradle
-Datei der obersten Ebene ein, um Ihrem Projekt Safe Args hinzuzufügen:
Groovig
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Sie müssen außerdem eines von zwei verfügbaren Plug-ins anwenden.
Wenn Sie Java-Sprachcode generieren möchten, der für Java oder gemischte Java- und Kotlin-Module geeignet ist, fügen Sie diese Zeile in die Datei build.gradle
Ihrer App oder Ihres Moduls ein:
Groovig
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Zum Generieren von Kotlin-Code, der nur für Kotlin-basierte Module geeignet ist, können Sie alternativ Folgendes hinzufügen:
Groovig
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Wie unter Zu AndroidX migrieren beschrieben, muss android.useAndroidX=true
in Ihrer gradle.properties
-Datei enthalten sein.
Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. 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.8
Version 2.8.0-beta04
26. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta04
wurde veröffentlicht. Die 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)
- Verbesserte Fehlermeldung für benutzerdefinierte Serializer, die direkt in Klassenfeldern über
@Serializable(with =...)
deklariert wurden, um klarzustellen, dass diese Funktion derzeit nicht unterstützt wird. (I052b0, b/341319151) - Die
SavedStateHandleFactory
-Test-API kann jetzt in Nicht-Android-Tests verwendet werden, erfordert aber Robolectric, um das Parsen von Argumenten mit Bundles zu unterstützen. (I76cdc, b/340966212) - Ein Absturz beim Wiederherstellen des Zustands beim Fortsetzen der App nach dem Prozessbeendigung mit der Verwendung von typsicherer Navigation in Compose wurde behoben. (Ia8f38, b/341801005)
- In „Navigation Compose“ wurde ein Problem behoben, bei dem die
NavBackStackEntry
, zu der der Nutzer zurückkehrt, nach dem Abbrechen der proaktiven Zurück-Geste nie in denRESUMED
-Lebenszyklusstatus 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 Predictive Back mit Navigation Compose verwenden, hat das eingeblendete Ziel jetzt die richtige Z-Reihenfolge und wird korrekt über dem eingehenden Ziel animiert. (I2077b, b/345993681)
Version 2.8.0-beta03
12. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta03
wurde veröffentlicht. Die 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
- Eine Dokumentation zu
NavType.serializeAsValue
undserializeAsValues
wurde hinzugefügt, um hervorzuheben, 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 Null-CollectionNavType
navigieren, ist das Ausgabeargument der Standardwert, der in Ihrer serialisierbaren Klasse deklariert wurde, oder der Rückgabewert vonemptyCollection()
, wenn kein Standardwert vorhanden ist. (I84158, Id630f, b/342672856)
Version 2.8.0-beta02
29. Mai 2024
androidx.navigation:navigation-*:2.8.0-beta02
wurde veröffentlicht. Die 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) - Es wurden Probleme bei der Wiederherstellung des Back-Stack-Status der Navigation behoben, die bei dem Versuch aufgetreten sind, einen Back-Stack-Eintrag wiederherzustellen, der nicht über die ID vom aktuellen Ziel aus erreichbar war. Da Routen durch IDs gestützt werden, waren mit Routen erstellte Ziele ebenfalls davon betroffen. Dadurch wird auch ein Absturz behoben, der durch den Aufruf von
clearBackStack()
verursacht wurde, bei dem dasselbe zugrunde liegende Problem aufgetreten ist. (I423c3, b/339908057)
Version 2.8.0-beta01
14. Mai 2024
androidx.navigation:navigation-*:2.8.0-beta01
wurde 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)- Es wurde eine Test-API zu
navigation-testing
hinzugefügt, um eineSavedStateHandle
aus einem Kotlin-Serializable-Objekt zu erstellen. (Id4867, b/339080702)
Fehlerkorrekturen
- Fehlende Parameterdokumente für Navigation Kotlin-DSL-Funktionen wurden 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.
Sichere Argumente in „Navigation Compose“
- Die Arbeit zur Unterstützung der Sicherheit für Kompilierungszeittypen für Navigation Compose und Nutzer der Navigation Kotlin DSL auf Basis der Kotlin-Serialisierung wurde abgeschlossen und die zuvor experimentellen APIs sind jetzt stabil. {Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I8d394, I97I95
Diese Funktion verwendet die Kotlin-Serialisierung, damit Sie Ziele in Ihrer Navigationsgrafik über typsichere Objekte und Datenklassen definieren können:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Weitere Informationen finden Sie im Blogpost „Navigation Compose“ und „Type Safety“.
Neue Funktionen
- Das Artefakt
navigation-fragment-compose
stellt jetzt eineLocalFragment
-Zusammensetzung für zusammensetzbare Methoden in einemComposableFragment
bereit. (If35e5) NavType
bietet jetzt integrierte Unterstützung für Listen vom Typ „Int“, „String“, „Boolesch“, „Float“ und „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
Fügt ein neues
navigation-fragment-compose
-Artefakt hinzu, das eineComposableNavHostFragment
-Alternative zuNavHostFragment
enthält, mit der Sie Ihren Navigations-XML-Dateiencomposable
-Ziele hinzufügen können. Jedescomposable
-Ziel muss als oberste Ebene ohne Argument vom Typ@Composable
ausgedrückt werden, dessen vollständig qualifizierter Name alsandroid:name
-Attribut für jedes Ziel verwendet wird. Beim Navigieren zu einem dieser Ziele wird ein enthaltenes Fragment erstellt, um den zusammensetzbaren Inhalt 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 sicherer Argumente in „Navigation Compose“ mit einem auf Kotlin-Serialisierung basierenden Ansatz wurde fortgesetzt. Diese APIs sind noch nicht fertig und mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I7b394I9b73c
Version 2.8.0-alpha06
3. April 2024
androidx.navigation:navigation-*:2.8.0-alpha06
wurde veröffentlicht. Version 2.8.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Unterstützung sicherer Argumente in „Navigation Compose“ mit einem auf Kotlin-Serialisierung basierenden Ansatz hat begonnen. Diese APIs sind noch nicht fertig und mit der Anmerkung
ExperimentalSafeArgsApi
gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e
Fehlerkorrekturen
NavHost
verwendet jetztAlignment.TopStart
als Standardargument für „contentAlignment“. Damit entspricht sie dem Standardwert fürAnimatedContent
und behebt einige Fälle einer unerwarteten Skalierung vom Mitteübergang. (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 an die
startDestination
vonNavGraph
direkt in der RoutestartDestination
übergeben, ohne sich aufdefaultValue
zu verlassen. Dies gilt auch für das 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 list, Arrays und maps. (Ic6d63, b/188693139) - Alle Standard-
NavType
-Arrays (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
undStringArrayType
) sind jetzt vom TypCollectionNavType
(Idcf79, b/188693139). NavType
bietet jetzt eine neue offenevalueEquals
API, die bestimmt, ob zwei Werte desselben Typs einander entsprechen. (I6cb97, b/327229511)
Fehlerkorrekturen
- Für Abfrageparameter in Deeplinks sind jetzt Werte in Form von geschweiften Klammern um Argumentnamen (z.B.
{argName}
) als gültige Werte für das stringbasierteNavTypes
zulässig. Dadurch wird ein Problem behoben, bei dem ein solcher Wert für alle Typen als ungültig (oder ohne Wert) angesehen wird. (I18302, b/327274038) NavController
-Funktionen, die Routen wienavigate
oderpopBackStack
unterstützen, können jetzt Routen, die mit Argumenten des ArraysNavTypes
ausgefüllt sind, korrekt 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
- Du kannst jetzt in „Navigation Compose“ die
SizeTranform
für deine Übergänge angeben, indem du sie im Rahmen der Initialisierung für diecomposable
- und/odernavigation
-Funktionen definierst. (I91062, b/296912651)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
NavHost
in der Funktion „Navigation erstellen“ den Übergang nicht richtig anzeigte, wenn „System Zurück“ ohne Touch-Geste verwendet wurde. (Iceeae, b/325998468)
Version 2.8.0-alpha03
21. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha03
wurde 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
- Es wurde ein Problem in Navigation behoben, das dazu führte, dass
NavGraph
ViewModels zu früh aufDESTROYED
gesetzt wurden, da dieViewModel
des zugehörigen Eintrags nicht Teil des gespeicherten Status war. (Ib6bb7, b/317581849)
Aktualisierung der Abhängigkeit
- Die Funktion „Schreibassistent“ hängt jetzt von Compose 1.7.0-alpha03 ab.
Version 2.8.0-alpha02
7. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha02
wurde veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Navigation Compose unterstützt jetzt Predictive in der App über die neuen
SeekableTransitionState
APIs von „Compose-Animation“. So können Sie die Zurück-Touch-Geste verwenden, um das vorherige Ziel mit Ihrem benutzerdefinierten Übergang zu sehen, bevor Sie sich entscheiden, die Transaktion entweder mit der abgeschlossenen Bewegung zu bestätigen oder abzubrechen. (I8b8e9)
Version 2.8.0-alpha01
24. Januar 2024
androidx.navigation:navigation-*:2.8.0-alpha01
wurde veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Fehlerkorrekturen
- Das Datenleck
BackStackState
wurde behoben, bei dem mehreresaveState
-Aufrufe an einem Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste Status wiederhergestellt werden konnte. (I598b0, b/309559751) - Es wurde ein Problem behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn die
NavigationUI
-Hilfsprogramme zum Füllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)
Aktualisierung der Abhängigkeit
- Die Funktion „Schreiben“ in Navigation hängt jetzt davon ab, dass mit Schreiben
1.7.0-alpha01
ein Problem behoben wird, das zu einer unerwarteten Skalierungsanimation führen könnte. (b/297258205)
Externer Beitrag
- Danke, SimonMarquis, dass du das Anzeigeproblem für Nicht-String-Argumente behoben hast, bei denen die
NavigationUI
-Hilfsprogramme 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
wurde veröffentlicht. Version 2.7.7 enthält diese Commits.
Fehlerkorrekturen
- Aus Navigation
2.8.0-alpha01
rückportiert: Das LeckBackStackState
wurde behoben, bei dem mehreresaveState()
-Aufrufe auf einem einzelnenNavBackStackEntry
dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste gespeicherte Status wiederhergestellt werden konnte. (I598b0, b/309559751) - Aus der Navigation
2.8.0-alpha01
rückportiert: Es wurde ein Problem behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn dieNavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)
Externer Beitrag
- Danke, SimonMarquis, dass du das Anzeigeproblem für Nicht-String-Argumente behoben hast, bei denen die
NavigationUI
-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden.
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
- Die Funktion
NavGraph
equals()
berücksichtigt jetzt korrekt die Knoten des anderen Graphen anstelle des aufrufenden Knotens. 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
, die die neue Grafik intern mit der vorhandenen vergleichen, viel schneller sind und weniger übersprungene Frames verursachen. Vielen Dank, Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62) NavHost
rendert jetzt das Startziel des ersten Kompositionsdurchlaufs, anstatt darauf zu warten, dass die zweite Karte den aktualisierten Status liest. (I439a7, b/304852206)
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das Ihre Back-Stacks angezeigt wurden, wenn Sie
setGraph
mehrmals mit genau derselben Grafik aufrufen und nur dann, wenn ein Ziel in der Grafik vorhanden war, das eine Aktion zur Verknüpfung von zwei Zielen enthielt. (Beispiel 7) - Dialogfelder, die schnell nacheinander 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)
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.7.4 enthält diese Commits.
Neue Funktionen
popUpTo
wird jetzt unterstützt, um Routen mit Argumenten zu verwenden, um zu einem bestimmten Eintrag mit genau diesen Argumenten zurückzukehren. Dies entspricht der Unterstützung inpopBackStack
. (I731f4, b/299255572)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Unterbrechen einer Navigation durch eine andere Navigation mit
popUpTo
dazu führte, dassFragmentNavigator
abstürzt. (I3c848, b/301887045) - Ein Problem wurde behoben, bei dem das Zurückdrücken des Systems dazu führte, dass
currentDestination
nicht korrekt 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
wurde veröffentlicht. Version 2.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem bei der Navigation mit Fragmenten wurde behoben, durch das die
visibleEntries
-Liste falsche Einträge enthielt. (I5caa9, b/288520638) - Es wurde ein Problem behoben, durch das für das Floating-Fenster-Ziel (z.B.
Dialogs
oderBottomsheets
) nie einRESUMED
-Lebenszyklus-Callback empfangen wurde. (I3b866, b/287505132)
Version 2.7.2
Version 2.7.2
6. September 2023
androidx.navigation:navigation-*:2.7.2
wurde 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) - Es wurde ein Problem behoben, bei dem mehrere Dialogfelder in „Navigation Compose“ gleichzeitig angezeigt wurden, wobei die teilweise verdeckten Dialogfelder (z.B. nicht das oberste Dialogfeld) im Lebenszyklusstatus
CREATED
statt im StatusSTARTED
befanden. (aosp/2728520, b/289257213) - Es wurde ein Problem behoben, bei dem mehrere Dialogfelder gleichzeitig in „Navigationseingabe“ angezeigt wurden. Wenn das oberste Dialogfeld geschlossen wurde, blieb das neue oberste Dialogfeld im Lebenszyklusstatus
STARTED
und wurde nicht korrekt inRESUMED
verschoben. (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
- Es wurde ein Problem in der Navigation mit der Funktion „Schreiben“ behoben, bei dem bei der Verwendung von
Scaffold
beim Versuch, aufLifecycle.State.DESTROYED
ViewModel
zuzugreifen, eine Fehlermeldung aufgetreten ist. (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 Begleitpersonen
Da AnimatedContent
jetzt stabil ist, konnten wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.
Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge, die bisher in AnimatedNavHost
vorhanden waren, direkt in NavHost
unterstützt wird.
An der Accompanist Navigation Animation wird es keine weiteren Änderungen geben und die Funktion wird bald offiziell eingestellt. Außerdem stellen wir sie bald offiziell ein, zusammen mit einer Anleitung zur Migration zu Navigation Compose selbst. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha
) verwenden, ist dies aber der Kehrwert des Migrationsleitfadens. Es sind keine weiteren API-Änderungen erforderlich. (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)
Aktualisierung der Abhängigkeiten
- Die Navigation hängt jetzt von der Funktion zum Schreiben ab
1.5.0
ab dem1.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
- Die Lambdas
EnterTransition
undExitTransition
, die als Teil desNavHost
erstellt wurden, konnten möglicherweise im Arbeitsspeicher verbleiben, selbst nachdem dasNavHost
aus der Zusammensetzung entfernt wurde. Dieses Problem wurde behoben. (I893d0)
Bekannte Probleme
- Bei Navigation 2.6.x gibt es ein Problem, dass bei der Navigation mit popUpTo ein
IllegalArgumentException
ausgelöst werden kann. Diese Ausnahme lässt sich eventuell vermeiden, indem Sie die Grafik neu strukturieren, wie hier vorgeschlagen. (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 Funktion „Navigationseditor“ hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, bei denen die Option
popUpTo
zum Navigieren verwendet wird.(/Ib1c3a, b/285153947)
Version 2.7.0-beta01
7. Juni 2023
androidx.navigation:navigation-*:2.7.0-beta01
wurde veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
Fehlerkorrekturen
NavHost
in Navigation Compose fängt jetzt System-Back-Aufrufe korrekt ab, auch wennActivity
STOPPED
undRESUMED
wurde. (Icb6de, b/279118447)
Version 2.7.0-alpha01
24. Mai 2023
androidx.navigation:navigation-*:2.7.0-alpha01
wurde veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Animationen von Begleitpersonen
Da AnimatedContent
jetzt stabil ist, konnten wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.
Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge, die bisher in AnimatedNavHost
vorhanden waren, direkt in NavHost
unterstützt wird.
An der Accompanist Navigation Animation wird es keine weiteren Änderungen geben und die Funktion wird bald offiziell eingestellt. Außerdem stellen wir sie bald offiziell ein, zusammen mit einer Anleitung zur Migration zu Navigation Compose selbst. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha
) verwenden, ist dies aber der Kehrwert des Migrationsleitfadens. Es sind keine weiteren API-Änderungen erforderlich. (b/197140101)
Fehlerkorrekturen
- In Navigation
2.6.0-rc02
: Ein Problem mit der Navigation in Fragmenten wurde behoben, bei dem das System wieder nicht mehr funktionierte, wenn man mitpopUpTo
navigierte und ein Fragment aus dem Back Stack absetzte, ohne seine Ansicht neu zu erstellen. (Ieb8d4, b/281726455)
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen an Navigation seit Version 2.5.0
- Die
arguments
vonNavBackStackEntry
und die anOnDestinationChangedListener
übergebenenarguments
sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht für nachfolgende Zugriffe auf diearguments
- oder andereOnDestinationChangedListener
-Instanz übernommen werden. NavDeepLink
unterstützt jetzt Standardwerte für Arrays, wodurch wiederholte Abfrageparameter 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 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 jetzt diese Methode, umUri.encode
für die angegebeneString
aufzurufen.
Wichtige Änderungen an „Navigation Compose“ seit Version 2.5.0
- Bei der Vorschau einer zusammensetzbaren Funktion mit
NavHost
wird jetzt standardmäßigstartDestination
von NavGraph angezeigt. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
undNavController.clearBackStack(route)
unterstützen jetzt Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen.- 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 bei der Navigation mit Fragmenten seit Version 2.5.0
NavHostFragment
fängt die Zurück-Schaltfläche des Systems selbst nicht mehr ab. Dadurch kann die zugrunde liegendeFragmentManager
das System wieder verarbeiten. Dadurch kann für Fragment1.7.0-alpha01
und höher auf Android U-Geräten eine In-App-Animation mit vorausschauendem Zurückgehen erstellt werden.- Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell ein
FragmentTransaction
auszuführen, mit dem ein Fragment zum Back Stack vonFragmentManager
hinzugefügt wird, wird jetzt einIllegalArgumentException
ausgelöst. Fragmente sollten immer über dienavigate()
API hinzugefügt werden. - 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. FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und per POP aufgerufen wird. Das bedeutet, dassNavBackStackEntry
Lifecycle
jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor die letztenLifecycle.State
verschoben werden.DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und per POP aufgerufen wird. Das bedeutet, dass derNavBackStackEntry
-Lifecycle
jetzt wartet, bis derDialogFragment
-Lifecycle
inDESTROYED
verschoben wurde, bevor er inDESTROYED
selbst verschoben wird.- Mit
NavHostFragment
können SieNavController
jetzt abrufen, sobaldNavHostFragment
anFragmentManager
angehängt wurde, 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
- Bei der Übergabe der ID einer Navigationsgrafik an
AppBarConfiguration
(z. B. überMenu
) betrachtetNavigationUI
jetzt nur das Startziel dieses Navigationsdiagramms als Ziel der obersten Ebene, anstatt jedes Ziel in der Grafik fälschlicherweise als Ziel der obersten Ebene zu markieren. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
verfügbar. - Die
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste parsen jetztR.string
-Werte fürReferenceType
-Argumente, die inandroid:label
gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. NavigationUI
stellt jetzt Logs bereit, wenn eine ausgewählteMenuItem
nicht verwendet werden kann.
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
- Es wurde ein Problem mit der Navigation in Fragmenten behoben, bei dem das System nicht mehr funktionierte, wenn mit
popUpTo
navigiert und ein Fragment aus dem Back Stack entfernt wurde, ohne seine Ansicht neu zu erstellen. (Ieb8d4, b/281726455)
Version 2.6.0-rc01
10. Mai 2023
androidx.navigation:navigation-*:2.6.0-rc01
wurde 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
in seinemonResume()
-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 ein
FragmentTransaction
auszuführen, mit dem ein Fragment zum Back Stack vonFragmentManager
hinzugefügt wird, wird jetzt einIllegalArgumentException
ausgelöst. Fragmente sollten immer über dienavigate()
API hinzugefügt werden. (I6d38e) - Wenn es ein
navigate
gibt, das einen Eintrag hinzufügt, und einpopBackStack
, das ihn im selben Frame entfernt, erreicht der resultierende oberste Eintrag im Back Stack nun beständig wieder denRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Version 2.6.0-alpha09
5. April 2023
androidx.navigation:navigation-*:2.6.0-alpha09
wurde veröffentlicht. Version 2.6.0-alpha09 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Prüfung auf ungültige Route durchgeführt. Wenn ein
NavDestination
NavArgument
enthält, der keine Nullwerte zulässt, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die genauso benannt sind wie dasNavArgument
, das keine Nullwerte zulässt. (Ic62bf, b/274697949) - Deeplink-Navigationen, die auf
Action/MimeType
basieren, schlagen jetzt fehl, wenn im Navigationsvorgang eineNavArgument
fehlt, die keine Nullwerte zulässt. Dies ist für dieNavDestination
erforderlich, mit der dieAction/MimeType
übereinstimmt. (Ibfa17, b/271777424) - Wenn
NavController
eine Grafik mit derselben Route und denselben Zielen wie in der vorherigen Grafik festlegt, werden die aktuellen Grafikknoten und die Back-Stack-Ziele jetzt korrekt durch neue Instanzen ersetzt. Dadurch wurde ein Absturz behoben, der auftrat, wennonLaunchSingleTop
verwendet wurde, ohne den Status in Navigation Compose zu speichern. Dadurch wird auch ein Fehler behoben, durch den beim Navigieren zu Zielen, die mit der Stammgrafik verknüpft sind, ein falscher Back-Stack erstellt wird. (I5bc58, b/275258161, b/275407804)
Version 2.6.0-alpha08
22. März 2023
androidx.navigation:navigation-*:2.6.0-alpha08
wurde veröffentlicht. Version 2.6.0-alpha08 enthält diese Commits.
Neue Funktionen
- Mit
NavHostFragment
können SieNavController
jetzt abrufen, sobaldNavHostFragment
anFragmentManager
angehängt wurde, und nicht erst nachonCreate()
. (Ic6382, b/220186282)
Fehlerkorrekturen
- Es wurde ein
NullPointerException
-Fehler behoben, der beim Senden einer verschachtelten Grafik mit einem Argument, das keine Nullwerte zulässt, enthält. (6b3581, b/249988437) - Wenn Sie das System nach einer Navigation mit
popUpTo
wieder aufrufen, wird der Status vonNavController
zum richtigen Eintrag gesetzt. (I3a8ec, b/270447657) FragmentNavigator
gibt jetzt ordnungsgemäße Pop-up-Einträge ein, wenn der Back-Stack über die Systemrückseite oderpopBackStack()
per Pop-up übertragen wird und ob die Transaktion Effekte für das Fragment verwendet. (I81bdf)- Wenn du dem
FragmentManager
derFragmentNavigator
Fragmente hinzufügst, ohne die Navigation zu verwenden, kommt es nicht mehr zu einem Absturz. (b17204, b/274167493)
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Die API-Varianten
getBackStackEntry
,popBackStack
undclearBackStack
, die Routen verwenden, verwenden jetzt Routenmuster mit Argumenten, für die Nullwerte zulässig sind, und Abfrageparametern, für die Nullwerte zulässig sind (I22294, b/269302500). - Ein Problem wurde behoben, bei dem durch das Aufrufen von
clearBackStack()
überNavController
der gespeicherte Status im Fragmentmanager, der mit dem gelöschten Back-Stack verknüpft war, nicht gelöscht wurde. (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) - Die Regression in 2.6.0-alpha06, die dazu führte, dass
NavBackStackEntry
s bei der Verwendung vonAnimation
-Werten nicht in den Status RESUMED verschoben wurden, wurde behoben. (Ib3589, b/269646882)
Version 2.6.0-alpha06
22. Februar 2023
androidx.navigation:navigation-*:2.6.0-alpha06
wurde veröffentlicht. Version 2.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Bei der Vorschau einer zusammensetzbaren Funktion mit
NavHost
wird jetzt standardmäßigstartDestination
von NavGraph angezeigt. (I2b89f)
API-Änderungen
- Alle
NavController
navigate
-Überlastungen werden 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)
- Es wurde ein Fehler behoben, durch den beim Navigieren zu einem anderen Fragment über die Schaltfläche „Zurück“ des Systems die untere Leiste nicht auf das richtige ausgewählte Element aktualisiert wurde (If559f, b/269044426).
Bekannte Probleme
- Wenn Sie die Navigation mit Fragmenten verwenden, erreicht der Lebenszyklus von
NavBackStackEntry
bei Verwendung vonAnimation
-APIsRESUMED
nicht. (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, erhält der
NavBackStackEntry
Lifecycle
nach dem Wiederherstellen des Status nichtDESTROYED
, wenn sein 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 Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und per POP aufgerufen wird. Das bedeutet, dassNavBackStackEntry
Lifecycle
jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor die letztenLifecycle.State
verschoben werden. (I3cb19, b/238686802)DialogFragmentNavigator
verwendet jetzt die Transition APIs, wennNavBackStackEntries
aufgerufen und per POP aufgerufen wird. Das bedeutet, dass derNavBackStackEntry
-Lifecycle
jetzt wartet, bis derDialogFragment
-Lifecycle
inDESTROYED
verschoben wurde, bevor er inDESTROYED
selbst verschoben wird. (I53ee5, b/261213893)
API-Änderungen
NavigatorState
bietet jetzt dieprepareForTransition
API, mit derNavigator
sNavBackStackEntries
in Zwischen-Lifecycle.State
s verschieben können. (I42c21, b/238686802)- Du kannst jetzt über ein
backstack
-Attribut auf den Back-Stack zugreifen, der mitNavGraphNavigator
oderComposeNavigator
verknüpft ist.ComposeNavigator
zeigt jetzt auch denonTransitionComplete()
-Callback an, um eineNavBackStackEntry
, die einen Navigations- oderpopBackStack
-Vorgang ausgeführt hat, als abgeschlossen zu markieren. (I02062, I718db, b/257519195)
Fehlerkorrekturen
- Der Navigatorstatus ist jetzt managementfrei, wenn die
push/popWithTransition
-APIs verwendet werden und der Eintrag bereits verarbeitet wird. (Iadbfa, b/261213893) - Bei Verwendung von
launchSingleTop
mit einem verschachteltenNavGraph
werden alle Ziele, beginnend vom ursprünglichen Ziel bis zu seinemstartDestination
, nur ordnungsgemäß oben im Backstack hinzugefügt. (Id4bea, b/253256629) - Die Navigation ersetzt jetzt korrekt die
DialogFragment
-Instanz, wenn zum selben Ziel navigiert wird, wobei das FlaglaunchSingleTop
auf „true“ gesetzt ist. (I45b5a, b/149572817) - Navigation SafeArgs verursacht keinen Kompilierungsfehler mehr, wenn Argumente mit genau 19 Zeichen lang sind. (Id60bc, b/257110095)
Version 2.6.0-alpha04
9. November 2022
androidx.navigation:navigation-*:2.6.0-alpha04
wurde 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 jetzt diese Methode, umUri.encode
für die angegebeneString
aufzurufen. (Ie5213, b/247637434) NavigationUI
stellt jetzt Logs bereit, wenn eine ausgewählteMenuItem
nicht verwendet werden kann. (I2af5a, b/247730357)
Fehlerkorrekturen
- Navigations-Deeplinks werden jetzt verzögert geparst und nicht mehr bei der Graphinitialisierung. Dadurch kann die App-Leistung beim Start verbessert werden. (Iab0ab)
- Ein Absturz wurde behoben, der durch das Aufrufen von Deeplink zu einem Ziel mit null Standardargumenten nach oben verursacht wurde. (I51c24, b/243183636)
Aktualisierung der Abhängigkeit
- Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. (Ib4ddc)
- 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. (I47e49)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha03
wurde veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Über die Navigation
2.5.3
:NavHost
löst keinNoSuchElementException
mehr aus, wenn kein Ziel zum Erstellen der DateiCrossfade
verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416) - In Navigation
2.5.3
: Ein Problem wurde behoben, durch das der gespeicherte Erstellungsstatus (z.B. Verwendung vonrememberSaveable
) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back Stack entfernt wurde. (I64949)
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Änderungen im Verhalten
- Bei der Übergabe der ID einer Navigationsgrafik an
AppBarConfiguration
(z. B. überMenu
) betrachtetNavigationUI
jetzt nur das Startziel dieses Navigationsdiagramms als Ziel der obersten Ebene, anstatt jedes Ziel in der Grafik fälschlicherweise als Ziel der obersten Ebene zu markieren. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neueisTopLevelDestination
-Funktion inAppBarConfiguration
verfügbar. (Ie936e, b/238496771)
Fehlerkorrekturen
- Die Komponente „
navigation:navigation-fragment
“ hängt jetzt von der Fragmentversion1.5.2
ab. (I00ba4) - Der ausgewählte Menüpunkt wird beim Aufrufen eines
FloatingWindow
-Ziels, z. B. einem Dialogfeld, nicht mehr aktualisiert. (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
- Die
setupWithNavController
-Integrationen inNavigationUI
für die Arbeit mit der oberen App-Leiste parsen jetztR.string
-Werte fürReferenceType
-Argumente, die inandroid:label
gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. (I5f803, b/167959935) NavDeepLink
unterstützt jetzt Standardwerte für Arrays, wodurch wiederholte Abfrageparameter 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. (Id68c3, b/209977108)- 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. (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
- Es wurde eine 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 die an einOnDestinationChangedListener
übergebenenarguments
sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht für nachfolgende Zugriffe auf diearguments
- oder andereOnDestinationChangedListener
-Instanz übernommen 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
wurde veröffentlicht. Version 2.5.3 enthält diese Commits.
Fehlerkorrekturen
NavHost
löst keinNoSuchElementException
mehr aus, wenn kein Ziel für das Erstellen derCrossfade
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
wurde veröffentlicht. Version 2.5.2 enthält diese Commits.
Fehlerkorrekturen
- Die dynamische Navigation versucht nun ordnungsgemäß, Ziele von Aktivitäten aus anderen Modulen zu installieren, bevor Sie dorthin navigieren. (Ia2c16, b/240292838)
- Die Navigation ersetzt jetzt korrekt die Fragment-Instanz, wenn zum selben Ziel navigiert und das Flag
launchSingleTop
auf „true“ gesetzt wird. (I5a2f1, b/237374580) - Das Problem
IllegalStateException
wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, die ein übergeordnetes Element mit einem neuen Startziel mit Pop-up teilt. (I9f7cb, b/243778589)
Aktualisierung der Abhängigkeit
- Die Navigation
2.5.2
hängt jetzt von Fragment1.5.2
ab. (aosp/2178734)
Version 2.5.1
27. Juli 2022
androidx.navigation:navigation-*:2.5.1
wurde veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
Navigation Safe Args
löst in generierten Klassen keine Einstellungswarnungen mehr aus, wenn benutzerdefinierte Argumenttypen verwendet werden, die in einerBundle
gespeichert sind. (Id86ed, b/237725966)
Aktualisierung der Abhängigkeiten
- Die Navigationsbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Ib4451) - Die Navigationsbibliothek hängt jetzt von der Aktivität
1.5.1
ab. (I3efe8) - Die Navigationsbibliothek hängt jetzt von Fragment
1.5.1
ab. (I56177)
Version 2.5.0
29. Juni 2022
androidx.navigation:navigation-*:2.5.0
wurde veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- CreationExtras-Integration:
Navigation
kann jetzt eine zustandsloseViewModelProvider.Factory
überCreationExtras
des Lebenszyklus2.5.0
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.- Zusätzlicher Support für das Namespace-Attribut „build.gradle“, das anstelle von „applicationId“ verwendet werden soll.
Weitere Änderungen
- Die
visibleEntries
API ist nicht mehr experimentell und bietet eine Funktion zum Abrufen aller Einträge, deren Ziel derzeit gemäßNavController
sichtbar ist.
Version 2.5.0-rc02
15. Juni 2022
androidx.navigation:navigation-*:2.5.0-rc02
wurde veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der durch schnelles Umschalten zwischen den unteren Zielen bei Verwendung der Funktion zum Erstellen von Navigationselementen
NavHost
verursacht wurde. (I3979a, b/234054916) Navigation SafeArgs
stürzt nicht mehr ab, wenn einapplicationIdSuffix
und ein Namespace verwendet werden, bei demapplicationId
nicht vorhanden ist, oder wenn sichapplicationId
und Namespace unterscheiden. (I754b1, b/233119646)NavArgument
hat jetzt eine benutzerdefiniertetoString()
-Funktion zum Anzeigen der internen Werte des Arguments. (I900a8)
Version 2.5.0-rc01
11. Mai 2022
androidx.navigation:navigation-*:2.5.0-rc01
wurde veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Neue Funktionen
- Neue Lint-Regel hinzugefügt, um zu warnen, dass
<deeplink>
-Elemente innerhalb von<activity>
-Elementen in Ihrernavigation.xml
-Datei nicht platziert werden (Ic15a5, b/178403185)
Fehlerkorrekturen
- Zusammensetzbare Bereiche in
NavHost
undDialogHost
werden jetzt in der erwarteten Reihenfolge angeordnet, d.h. die inneren zusammensetzbaren Bereiche werden vor den äußeren zusammensetzbaren Funktionen platziert. (I157e6) - Navigation SafeArgs verwendet jetzt
PathSensitivity.RELATIVE
inArgumentsGenerationTask
, um die Positionierung aus dem Cache zu ermöglichen. Das bedeutet, dass der Cache-Eintrag jetzt von einem CI-Build für einen lokalen Build wiederverwendet werden kann. (I5f67c, b/173420454) - Die Lint-Regel
UnrememberedGetBackStackEntryDetector
wurde aktualisiert, damit derremember
-Aufruf, der den Aufruf vongetBackStackEntry()
umgibt, auch einNavBackStackEntry
-Objekt als Schlüssel übergibt.(Ib7081, b/227382831)
Version 2.5.0-beta01
20. April 2022
androidx.navigation:navigation-*:2.5.0-beta01
wurde 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 behoben, die bei Verwendung einesViewModel
im Zieldialog
zu einerIllegalStateException
führt, wenn das Dialogfeld geschlossen wird, indem entweder das System zurückkehrt oder außerhalb des Dialogfelds getippt wird. (Id7376, b/226552301)
Aktualisierung der Abhängigkeiten
- Die Navigation hängt jetzt vom Lebenszyklus
2.5.0-beta01
ab. Damit wird einIllegalStateException
behoben, wenn eineNavHost
in einem anderenNavHost
auf einem nicht primären Navigationstab am unteren Rand verschachtelt wird, wenn mehrere Back-Stacks verwendet werden.
Version 2.5.0-alpha04
6. April 2022
androidx.navigation:navigation-*:2.5.0-alpha04
wurde veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.
API-Änderungen
visibleEntries
ist nicht mehr experimentell. (I4829f, b/225394514)
Fehlerkorrekturen
- NavHost hängt jetzt von
visibleEntries
ausNavController
ab, um zu bestimmen, welche Einträge erstellt werden. Das bedeutet, dass bei Verwendung des verschachtelten NavHosts das innereNavHost
-Objekt jetzt korrekt animiert wird. (I4ba2b, b/225394514) - Der von
NavController
bereitgestelltevisibleEntries
StateFlow
basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags anstelle des aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren ganzen Elemente gleich bleibt, auch wenn der Hostlebenszyklus vonnavController
unter „STARTED“ (GESTARTET) liegt. (I9e2a8, b/225394514) SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)NavDeepLink
kann URIs jetzt mit einem einzelnen Suchparameter ohne Wert parsen. (I0efe8, b/148905489)- Ein leerer String wird jetzt in Deeplinks als gültige Argumente betrachtet. (I70a0d, b/217399862)
Navigation Safe Args
stürzt nicht mehr ab, wenn Namespaces verwendet werden undAndroidManifest.xml
nicht 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
anby navGraphViewModels
übergeben, um einViewModel
zu erstellen. (I29217, b/217618359)
Fehlerkorrekturen
NavDeepLinks
unterstützt jetzt korrekt codierte Zeilenvorschubzeichen, die in Routen-/Deeplink-URIs eingebettet sind. (I513d1, b/217815060)CreationExtras
funktioniert jetzt korrekt, 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
wurde veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- In Navigation
2.4.1
:NavHostFragment
legtOnBackPressedDispatcher
jetzt korrekt fest, wenn Viewbinding mit verschachtelten Grafiken verwendet wird. (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
wurde veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
NavBackStackEntry
kann jetzt in ViewModel CreationExtras eingebunden werden, die im Rahmen des Lebenszyklus2.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)
Sichere Argumente
- „Sichere Args“ hängt jetzt von Version 7.0.4 des Android-Gradle-Plug-ins ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0 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
wurde veröffentlicht. Version 2.4.2 enthält diese Commits.
Fehlerkorrekturen
- Aus Navigation
2.5.0-alpha03
rückportiert:NavDeepLinks
unterstützt jetzt ordnungsgemäß codierte Zeilenvorschubzeichen, die in Routen/Deeplink-URIs eingebettet sind. (I513d1, b/217815060) - Von Navigation
2.5.0-alpha03
rückportiert: Navigation SafeArgs unterstützt jetzt die Verwendung des inbuild.gradle
definierten Namespace anstelle des Pakets im AndroidManifest. (I659ef, b/217414933) - Von der Navigation
2.5.0-alpha04
rückportiert:Navigation Safe Args
stürzt nicht mehr ab, wenn Namespaces verwendet werden undAndroidManifest.xml
nicht vorhanden ist. (I17ccf, b/227229815) - Aus Navigation
2.5.0-alpha04
rückportiert: Leerer String werden jetzt in Deeplinks als gültige Argumente betrachtet. (I70a0d, b/217399862)
Version 2.4.1
Version 2.4.1
9. Februar 2022
androidx.navigation:navigation-*:2.4.1
wurde veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
NavHostFragment
legtOnBackPressedDispatcher
jetzt korrekt fest, wenn „viewbinding“ mit verschachtelten Grafiken verwendet wird. (Ifbb51, b/214577959)- Bei Deeplinks über mehrere verschachtelte
NavGraph
s schließt der Back-Stack nun wie vorgesehen Zwischenziele ein. (I504c0, b/214383060) - Über die Navigation
2.5.0-alpha01
rückportiert: Es wurde ein Problem behoben, bei dem der Zugriff auf ein ViewModel, das überby navGraphViewModels()
aus demonCreate()
eines Fragments erstellt wurde, mit einemIllegalStateException
fehlschlug. (I8a14d) - Aus Navigation
2.5.0-alpha01
rückportiert:NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal. Das bedeutet, dass die korrekt decodierten Argumente jetzt an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399) - Von Navigation
2.5.0-alpha01
rückportiert: Sichere Args hängen jetzt von Version 7.0.4 des Android-Gradle-Plug-ins ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel ist, aber jetzt mit dem Android-Gradle-Plug-in 7.1.0 und höher kompatibel ist. (I41c88, b/213086135, b/207670704)
Version 2.4.0
Version 2.4.0
26. Januar 2022
androidx.navigation:navigation-*:2.4.0
wurde 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 Null-Zulässigkeit von Klassen mit generischen Werten (z. B. abgeleitete
NavType
-Klassen) 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-Fenster-Layouts ü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. - Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt einenFlow
bereit, der immer dann ausgegeben wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann alternativ zur manuellen Verwaltung einesOnDestinationChangedListener
verwendet werden. - NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren
NavBackStackEntry
-Instanzen alsStateFlow
über die experimentellevisibleEntries
-Eigenschaft abzurufen. - Es ist jetzt möglich, die Klasse
NavType
zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie Ihre Navigationsgrafik programmatisch erstellen, z. B. über die Navigation Graph Kotlin DSL. Navigation bietet jetzt die APIs
findStartDestination()
undgetHierarchy()
, mit denen die benutzerdefinierte NavigationUI implementiert werden kann.findStartDestination()
ist eine Erweiterungsfunktion aufNavGraph
. Sie sucht nach dem tatsächlichen Startziel, das angezeigt wird, wenn Sie zur Grafik navigieren, auch wennstartDestination
selbst ein verschachteltesNavGraph
-Element ist.getHierarchy()
ist eine Funktion inNavDestination
, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI
-Methoden, die eineBottomNavigationView
verwendet haben, wurden aktualisiert, sodass stattdessen die in Material1.4.0
eingeführte BasisklasseNavigationBarView
verwendet wird. Dadurch können diese Methoden mit demNavigationRailView
verwendet werden.Wenn ein
<action>
-Element über XML aufgebläht wird, können für Animationsattribute Attribute verwendet werden, die mit derapp:enterAnim="?attr/transitionEnter"
-Syntax aus dem Design abgerufen werden.Sichere Args generiert jetzt eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse. (Nr. 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
Bei früheren Versionen von Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen gleichgeordneten Zielen identifiziert und es Ihnen ermöglicht, das Ziel entweder direkt oder über eine Aktion mit „navigate()
“ zu erreichen. 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 zur eindeutigen Identifizierung eines Ziels in einer Navigationsgrafik mithilfe der route eingeführt. Eine Route ist ein String
, der einen eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, für die eine Ziel-ID verwendet wurde, wurden verworfen und durch eine entsprechende API ersetzt, die eine Route verwendet.
Jede Route sollte als Pfadteil eines Uri
behandelt werden, der das Ziel definiert, z.B. home
, profile/{userId}
, profile/{userId}/friends
usw. Wenn die Identität eines Ziels mit einem bestimmten Inhalt verknüpft ist, sollten diese dynamischen Argumente Teil der Route sein. Dabei gelten dieselben Regeln wie für implizite Deeplinks.
Alle NavController
APIs, die bisher nur eine ID verwendet haben, haben jetzt eine Überlastung, die die Route String
verwendet. 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.
Anders als bei der Navigation nach ID gelten für die Navigation nach Route dieselben Regeln wie für implizite Deeplinks: Sie können in jedem verschachtelten Graphen direkt zu jedem Ziel navigieren. Dadurch wird sichergestellt, dass diese Routen in Projekten mit mehreren Modulen verwendet werden können, ohne dass Sie jedem Ziel explizit einen extern sichtbaren Deeplink hinzufügen müssen.
Navigation „Compose“
Das Artefakt navigation-compose
ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Sie verwendet @Composable
-Funktionen als Ziele in Ihrer Anwendung.
Diese Version bietet folgende Vorteile:
- Eine zusammensetzbare Funktion für
NavHost
, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL mitcomposable
- unddialog
-Zielen erstellen können. Außerdem werden optionale Navigatoren wie die von Accompanist Navigation Material unterstützt. - Obligatorische Unterstützung für Überblendung zwischen Zielen Begleitende Navigationsanimation kann verwendet werden, um den Wechsel zwischen Ein- und Ausblenden mithilfe von experimentellen Compose APIs zu 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. - Geltungsbereich des
rememberSaveable
-Status auf Zielebene, sodass alle zusammensetzbaren Status gespeichert und automatisch wiederhergestellt werden, wenn Sie zu einem Ziel zurückkehren. - Vollständige Unterstützung für das Speichern und Wiederherstellen des Status von
NavController
und des Zielstatus nach dem Beenden von Prozessen und der Neuerstellung. - Automatische Integration mit der Zurück-Schaltfläche des Systems
Unterstützung für die Übergabe von Argumenten, das Anhängen von Deeplinks an Ziele und die Rückgabe von Ergebnissen an vorherige Ziele.
Erstellen Sie bestimmte Hilfskräfte in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Windstatus zu ermöglichen undNavController
mit zusammensetzbaren Funktionen außerhalb vonNavHost
zu verbinden (z. B. eine untere Navigationsleiste).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Weitere Informationen finden Sie in der Anleitung zur Navigation erstellen.
Mehrere Back Stacks
Der NavController verwaltet den Back-Stack von Zielen. Er fügt dem Back-Stack Ziele hinzu, wenn Sie mit navigate()
fortfahren, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene Klasse NavOptions
und die Integration in <action>
-Elemente in der XML-Datei des Navigationsdiagramms wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen.
Im Rahmen dieser Änderung speichern und wiederherstellen die NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt automatisch den Status von Zielen, die eingeblendet wurden, sodass mehrere Back-Stacks ohne Codeänderungen unterstützt werden. 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 Status werden über verschiedene Oberflächen bereitgestellt:
In Navigations-XML kann das Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele, die überapp:popUpTo
geöffnet wurden, 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
navOptions
Kotlin DSL können Sie die boolesche EigenschaftrestoreState
und die boolesche EigenschaftsaveState
impopUpTo
-Builder hinzufügen:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Beim manuellen Erstellen eines
NavOptions
-Objekts mithilfe vonNavOptions.Builder
können Sie diesetRestoreState()
und die neue Überlastung fürsetPopUpTo()
verwenden, für die ein zusätzlichersaveState
-Parameter erforderlich ist.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Programmatische Aufrufe von
popBackStack()
können jetzt einen zusätzlichensaveState
-Parameter enthalten.Sie können die Methode
clearBackStack()
verwenden, um jeden mitpopBackStack()
oderpopUpToSaveState
gespeicherten Status zu löschen.
In allen Fällen speichert NavController
den Status jeder NavBackStackEntry
und stellt sie wieder her, einschließlich aller ViewModel
-Instanzen auf Ebene des Navigationsziels. Die Navigator
APIs wurden aktualisiert, damit jede Navigator
das Speichern und Wiederherstellen ihres eigenen Status unterstützen 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. - Über 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 mit Kotlin-Code, der aus Safe Args generiert wurde, jetzt Argumente ohne Standardwerte als Parameter vor denen mit Standardwerten platziert.
- Bei der Generierung von Argumenten werden Parameter ohne Standardwerte jetzt vor Parameter mit Standardwerten gestellt.
- Safe-Args ist jetzt auf Android-Gradle-Plug-in 4.2.0 angewiesen. Das bedeutet, dass Sie die Warnung „
applicationIdTextResource
“ nicht mehr erhalten sollten.
Bekannte Probleme
- Das Problem wurde in der Navigation
2.5.0-alpha01
behoben: Der Zugriff auf einViewModel
, das überby navGraphViewModels()
aus demonCreate()
eines Fragments erstellt wurde, schlägt mit einemIllegalStateException
fehl. (b/213504272) - In Navigation
2.5.0-alpha01
behoben: Safe Args 2.4.0 ist nicht mit dem Android-Gradle-Plug-in 7.1.0 und höher kompatibel. (b/213086135) - Durch Deeplinks mit mehreren verschachtelten Navigationsdiagrammen wird der vollständige Backstack nicht korrekt erstellt. (b/214383060)
Version 2.4.0-rc01
15. Dezember 2021
androidx.navigation:navigation-*:2.4.0-rc01
wurde veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Verhaltensänderungen
- In
NavDeepLink
geparste Argumente werden jetzt Rautezeichen genauso betrachtet wie Fragezeichen als Trennzeichen zwischen Argumenten. (I21309, b/180042703)
Fehlerkorrekturen
- Deeplink ignoriert Argumente mit Werten, die mit dem Namen des Platzhalters identisch sind, nicht mehr. (If8017, b/207389470)
NavController
stürzt nicht mehr ab, wenn ein verschachteltes Ziel mit Übergängen per Pop-up dargestellt wird, nachdemNavController
wiederhergestellt wurde. (I0f7c9, b/205021623)- In der Fehlermeldung bei Verwendung eines ungültigen
startDestination
wird jetzt standardmäßig die Route des Startziels verwendet, sofern eine verfügbar ist. (I86b9d, b/208041894)
Fehlerkorrekturen bei der Funktion „Schreibassistent“
- Ein möglicher Absturz wurde behoben, der durch schnelles Wechseln zwischen Startziel und einem anderen Ziel über die Elemente des unteren Navigationsmenüs 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)
- Ein Problem wurde behoben, bei dem ein
ViewModel
aus demNavBackStackEntry
eines Dialogfelds nicht abgerufen werden konnte, wenn das Dialogfeld geschlossen wurde. (I6b96d, b/206465487) - Es wurde ein Problem behoben, bei dem
activity
-Ziele mit der FunktionNavHost
von Navigation Compose verwendet wurden, was zu einer unendlichen Neuzusammensetzung führte. (I8f64c) - Es wurde ein Leck in Navigation Compose behoben, bei dem eine Referenz der alten Aktivität nach einer Konfigurationsänderung oder dem Beendigung eines Prozesses festgehalten wurde. (I4efcb, b/204905432)
Fehlerkorrekturen bei sicheren Args
SafeArgs
stürzt beim Versuch, benutzerdefinierte parcelable Arrays nach dem Beenden eines Prozesses wiederherzustellen, nicht mehr ab. (I618e8, b/207315994)- Ein Fehler in sicheren Argumenten, der boolesche Arrays keinen
null
-Wert zulässt, wurde behoben. (I8c396, b/174787525)
Version 2.4.0-beta02
3. November 2021
androidx.navigation:navigation-*:2.4.0-beta02
wurde veröffentlicht. Version 2.4.0-beta02 enthält diese Commits.
API-Änderungen
- Bei der Verarbeitung expliziter und impliziter Deeplinks wird jetzt beim Aufrufen einer anderen Grafik automatisch das Flag
saveState
hinzugefügt. Dadurch wird sichergestellt, dass Code wieNavigationUI.setupWithNavController
und Code mit mehreren Back-Stacks wie erwartet funktioniert. (IC8807)
Änderungen im Verhalten
- Deeplink-Muster werden jetzt verzögert in NavDeepLink und nicht mehr während der Inflation kompiliert. Dadurch sollte sich die Inflationszeit von Navigationsgrafiken mit Deeplinks verbessern. (b8d257, b/184149935)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem NavBackStackEntries nach dem Wechsel zu
Lifecycle.State.STARTED
aufLifecycle.State.CREATED
verschoben wurden, wennNavHost
direkt zursetContent()
der Aktivität hinzugefügt wurde. (Ia5ac1, b/203536683) - Es wurde eine Race-Bedingung behoben, durch die das Dialogfeld nicht geschlossen wurde, wenn ein
DialogFragment
-Ziel aus dem Back-Stack entfernt wurde, bevor das Dialogfeld tatsächlich angezeigt wurde. Dies führte zu einem Absturz, wenn das fehlerhafte Dialogfeld manuell vom Nutzer geschlossen wurde. (I687e5) - Es wurde ein Problem behoben, bei dem die
onNavDestinationSelected
API fürNavigationUI
true
zurückgibt, auch wenn du nichtnavigate()
für diesen Navigationsdiagramm angegeben hast. Jetzt verwendet sie dieselbe Logik, die intern vonsetupWithNavController
verwendet wird, um nur dieMenuItem
auszuwählen, die dem aktuellen Ziel zugeordnet sind. Dazu wird diehierarchy
des Ziels verwendet. (I2b053)
Version 2.4.0-beta01
27. Oktober 2021
androidx.navigation:navigation-*:2.4.0-beta01
wurde veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Als Alternative zu einer ID können Sie jetzt
by navGraphViewModel
mit einer Route verwenden, um die Verwendung des Navigations-Kotlins DSL mit Fragmenten besser zu unterstützen. (I901e3, b/201446416)
API-Änderungen
- Die
visibleEntries
API ist jetzt experimentell. (I93f6f)
Fehlerkorrekturen
- ViewModels werden nicht mehr gelöscht, wenn Übergänge durch das Wechseln zwischen denselben Bildschirmen unterbrochen werden (Id52d8, b/200817333).
NavDeepLink
-Argumente, für die Nullwerte zulässig sind, erfordern keinen Standardwert mehr, wenn Deeplinks zuNavDestination
s hinzugefügt werden. (I5aad4, b/201320030)- NavBackStackEntries jetzt mit unterschiedlichen Lebenszyklen gelten nicht mehr als gleich. Das bedeutet, dass NavHost alle Ziele korrekt neu zusammensetzt, wenn die Navigation mit „singleTop“ erfolgt oder Menüelemente von unten neu ausgewählt werden. (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 Zustand von Dialogzielen bleibt jetzt korrekt mit dem Status der
DialogFragmentNavigator
synchronisiert. Das bedeutet, dass durch das manuelle Aufrufen der asynchronendismiss()
API fürDialogFragment
jetzt alle Dialogfeldziele oberhalb des jetzt geschlossenen Dialogfelds korrekt gelöscht werden. Dies hat jedoch keine Auswirkungen auf Fälle, in denen SiepopUpTo
oderpopBackStack()
verwenden, um das Dialogfeld zu schließen. (I77ba2) AbstractAppBarOnDestinationChangedListener
hat jetzt klarere Fehlermeldungen füronDestinationChanged()
. (IE742d)
Version 2.4.0-alpha10
29. September 2021
androidx.navigation:navigation-*:2.4.0-alpha10
wurde 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. rememberNavController()
verwendet jetzt einen optionalen Satz vonNavigator
-Instanzen, die dem zurückgegebenenNavController
hinzugefügt werden, um optionale Navigatoren wie die von Accompanist Navigation Material zu unterstützen. (I4619e)
Fehlerkorrekturen
- Die dynamische Navigation stürzt nicht mehr ab, wenn die Aktivität neu erstellt wird. (Ifa6a3, b/197942869)
- Es wurde ein Problem mit der Schaltfläche „Zurück“ des Systems behoben, die erst auftrat, nachdem zu einem zusammensetzbaren Ziel mit
NavHost
zurückgekehrt wurde. (3ed148, b/195668143) - SafeArgs generiert jetzt die Argumente für
fromBundle()
undfromSavedStateHandle()
in der richtigen Parameterreihenfolge. (I824a8, b/200059831)
Version 2.4.0-alpha09
15. September 2021
androidx.navigation:navigation-*:2.4.0-alpha09
wurde veröffentlicht. Version 2.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt die Methode
clearBackStack()
verwenden, um jeden mitpopBackStack()
oderpopUpToSaveState
gespeicherten Status zu löschen. (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
anstelle vonnavigation-compose
. Damit Sie diese Funktion weiterhin nutzen können, müssen Sie die Importe aktualisieren. (I1d095)
Änderungen im Verhalten
- Bei der Generierung von Argumenten werden Parameter ohne Standardwerte jetzt vor Parameter mit Standardwerten gestellt. (I89709, b/198493585)
Fehlerkorrekturen
- Wenn Sie „Navigation Compose“ verwenden, sind NavGraphs nur 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 einem neuen Diagramm aufgerufen wird, werden jetzt zusätzlich zum vorherigen Verhalten beim Aufrufen des Back-Stacks auch alle gespeicherten Back-Stacks gelöscht. (I97f96) - Es wurde ein Problem behoben, bei dem
OnDestinationChangedListener
-Instanzen undcurrentBackStackEntryFlow
bei der Verwendung vonlaunchSingleTop
nicht benachrichtigt wurden. (Iaaebc)
Aktualisierung der Abhängigkeiten
- „Navigation Compose“ hängt jetzt von Activity Compose 1.3.1 ab. (I05829)
- Die Navigationserstellung hängt jetzt von der Lifecycle-ViewModel-Erstellung für den Lebenszyklus
2.4.0-beta01
ab. (Ib86a3)
Version 2.4.0-alpha08
1. September 2021
androidx.navigation:navigation-*:2.4.0-alpha08
wurde veröffentlicht. Version 2.4.0-alpha08 enthält diese Commits.
Neue Funktionen
- Es ist jetzt möglich, die Klasse
NavType
zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie Ihre Navigationsgrafik programmatisch erstellen, z. B. über die Navigation Graph Kotlin DSL. (I78440, b/196871885)
Änderungen im Verhalten
- Beim Generieren von Aktionen werden mit Kotlin-Code, der aus Safe Args generiert wurde, jetzt Argumente ohne Standardwerte als Parameter vor denen mit Standardwerten platziert. (Idb697, b/188855904)
- Über Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. (#204, b/185527157)
Fehlerkorrekturen
- Die Verwendung von
getBackStackEntry
undpreviousBackStackEntry
innerhalb von composable() in Verbindung mitremember()
verursacht keine Ausnahme mehr, dass sich kein Ziel im Back-Stack befindet. (I75138, b/194313238) - Navigation Compose wird jetzt korrekt neu zusammengefügt, wenn Argumente für den Zurücksetzungsstapel geändert und
launchSingleTop=true
verwendet werden. (Iebd69, b/186392337) - Wenn
setGraph
mit einem Diagramm mit 13 oder 29 Zielen aufgerufen wird, ist keinArrayIndexOutOfBoundsException
mehr vorhanden. (I1a9f1, b/195171984) - Der Java-Generator von SafeArgs sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr auslösen. (I1a666, b/185843837)
Externer Beitrag
- Vielen Dank, ospixd, dass du bei Deeplinks geprüft hast, ob alle erforderlichen Argumente (ohne Standardwerte) im
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
- Navigation Compose speichert den Status jetzt korrekt nach Konfigurationsänderungen und beim Ändern von Grafiken bei Verwendung der Multi-Back-Stack-Funktion. (If5a3d, b/195141957)
- Die erneute Auswahl desselben Tabs beim Verwenden der Navigation mit mehreren Back-Stacks führt nicht mehr zu einem leeren Bildschirm. (I860dc, b/194925622)
NavHost
beobachtet jetzt Änderungen amLifecycle.State
vonNavBackStackEntry
s. Das bedeutet, dass die Verwendung einerNavHost
in einem Fragment jetzt ordnungsgemäß neu zusammengefügt wird, wenn sich der Lebenszyklus ändert, und nicht zu einem leeren Bildschirm. (I4eb85, b/195864489)- Ein Problem wurde behoben, bei dem beim Schließen einer
DialogFragment
der StatusNavController
nach dem Neuerstellen der Aktivität (z.B. nach einer Konfigurationsänderung) nicht korrekt aktualisiert wurde. (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, die zum Testen desViewModel
-Codes verwendet werden kann. (If1e2d, b/193353880)
Version 2.4.0-alpha06
4. August 2021
androidx.navigation:navigation-*:2.4.0-alpha06
wurde veröffentlicht. Version 2.4.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Methoden
requireSlidingPaneLayout()
undrequireDetailPaneNavHostFragment()
fürAbstractListDetailFragment
wurden ingetSlidingPaneLayout()
bzw.getDetailPaneNavHostFragment()
umbenannt. (I34a08)
Änderungen im Verhalten
- Wenn Sie mit Animationen (z. B.
Crossfade
) navigieren, erreicht derLifecycle
des neuen Ziels jetzt erstRESUMED
, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889) - Mit
NavHost
von Navigation Compose wird die Grafik jetzt 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) - In „Navigation Compose“ wurde ein Problem behoben, bei dem ein
NavBackStackEntry
mit Deeplink nicht den StatusRESUMED
erreichte. (I192c5) - Es wurde ein Problem behoben, bei dem durch das Drücken 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. (aosp/1782668)
Version 2.4.0-alpha05
21. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha05
wurde veröffentlicht. Version 2.4.0-alpha05 enthält diese Commits.
Änderungen im Verhalten
NavHost
von Navigation Compose verwendet jetzt beim Navigieren durch Ziele immer Überblendungen. (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 einemLifecycleObserver
, das mit einemNavBackStackEntry
verknüpft ist, aufgrund von nicht wiederkehrenden Aktualisierungen des NavController-Status ausgelöst wurde. (I64621) - Mit
AbstractListDetailFragment
kannSlidingPaneLayout
jetzt vollständig aus deinem APK entfernt werden, wennAbstractListDetailFragment
nicht verwendet wird. (I611ad) NavGraph
undNavDestination
überschreiben jetzt die Gleichheitsmethode, sodass zwei Objekte mit denselben Werten als gleich angesehen werden. (I166eb, b/175392262)
Version 2.4.0-alpha04
1. Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha04
wurde veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das Artefakt
navigation-fragment
enthält jetzt eine vordefinierte Implementierung eines Zwei-Fenster-Layouts ü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
des Artefaktsnavigation-compose
unterstützt jetzt zusätzlich zucomposable
-Zielendialog
-Ziele. Diese Dialogziele werden jeweils in einer zusammensetzbarenDialog
angezeigt, die ü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) - Benutzerdefinierte
Navigator
-Instanzen können jetzt die APIspushWithTransaction
undpopWithTransition
aufNavigatorState
verwenden, um ein Ziel asynchron zu übertragen oder zu übertragen. Beachten Sie, dass diese APIs noch von keinem der enthaltenen Navigatoren verwendet werden. (Ic4d7c, b/172112072)
Änderungen im Verhalten
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
- Es wurde ein Problem mit
<include-dynamic>
behoben, bei dem Argumente, die an das Diagramm übergeben wurden, nicht korrekt an die dynamisch eingeschlossene Grafik ü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 nicht mehr fehl, wenn eine App mit
Kotlin
-Versionen vor dem1.5.0
erstellt wird. (Icd1ff, b/190739257)
Version 2.4.0-alpha03
16. Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha03
wurde veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem zwei
navigate()
-Aufrufe erforderlich waren, um eine enthaltene dynamische Grafik aufzurufen. (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) - Es wurde ein
IllegalStateException
-Fehler behoben, der beim Aufrufen vonpopBackStack()
nach dem Aufrufen der Stammgrafik von NavController aufgetreten ist. (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
, dernavigate()
beim ersten Empfang eines Callbacks aufruft, erhält jetzt einen zweiten Callback mit dem Ziel, zu dem er navigiert ist. (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
- „Safe Args“ schlägt bei Verwendung von Gradle
6.7.0
mit dem FehlerUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
fehl, da eine Abhängigkeit von einer älteren Kotlin-Version besteht. Sie können das Problem umgehen, indem Sie auf Gradle 7.0 aktualisieren. (b/190739257)
Version 2.4.0-alpha02
2. Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha02
wurde veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Routen werden jetzt für Activity-, Fragment- und Dialog-Ziele sowie in der 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 korrekt, aber es gibt immer noch nicht mehr unterstützte 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)Navigation bietet jetzt die APIs
findDestination()
undgetHierarchy()
, mit denen die benutzerdefinierte NavigationUI implementiert werden kann.findDestination()
ist eine Erweiterungsfunktion fürNavGraph
, die ein Ziel in der Grafik findet.getHierarchy()
ist eine Funktion inNavDestination
, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI-Methoden, die ein
BottomNavigationView
verwendet haben, wurden aktualisiert, sodass nun die in Material1.4.0
eingeführte übergeordnete KlasseNavigationBarView
verwendet wird. Dadurch können diese Methoden mit demNavigationRailView
verwendet werden. (Ib0b36, b/182938895)Wenn ein
<action>
-Element über XML aufgebläht wird, können für Animationsattribute Attribute verwendet werden, die mit derapp:enterAnim="?attr/transitionEnter"
-Syntax aus dem Design abgerufen werden. (I07bc1, b/178291654)
API-Änderungen
- Kotlin-DSL-Builder, die eine ID verwenden, wurden verworfen und sollten durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479) (I9f58f, b/188816479).
Fehlerkorrekturen
DialogFragmentNavigator
verwendet jetzt dieNavigatorState.pop()
API, umNavController
zu informieren, wenn ein Dialogfeld durch Klicken auf die Zurück-Schaltfläche des Systems oder durch Klicken außerhalb des Dialogfelds geschlossen wird. Dadurch wird sichergestellt, dass derNavController
-Status immer mit dem Status des Navigators synchron ist. (I2ead9)Die Navigation gibt kein
ConcurrentModificationException
mehr zurück, wenn die Liste vonOnDestinationChangedListeners
mit einemonDestinationChanged
-Callback bearbeitet wird. (Ib1707, b/188860458)Safe Args stürzt nicht mehr ab, wenn versucht wird, Richtungseigenschaften in Kotlin zu generieren. (Id2416, b/188564435)
Die Methode „setId“ in NavDestination ist jetzt korrekt mit
@IdRes
annotiert, sodass nur Ressourcen-IDs akzeptiert werden. (I69b80)Der int-Parameter von
findNode
ist jetztresId
anstelle vonresid
. (I7711d)
Aktualisierung der Abhängigkeit
- Safe-Args ist jetzt auf Android-Gradle-Plug-in 4.2.0 angewiesen. 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
wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die Methode
currentBackStackEntryAsFlow()
fürNavController
stellt einenFlow
bereit, der immer dann ausgegeben wird, wenn sich der aktuelleNavBackStackEntry
ändert. Dieser Ablauf kann alternativ zur manuellen Verwaltung einesOnDestinationChangedListener
verwendet werden. (I19c4a, #89, b/163947280)
Mehrere Back Stacks
Der NavController verwaltet den Back-Stack von Zielen. Er fügt dem Back-Stack Ziele hinzu, wenn Sie mit navigate()
fortfahren, und entfernt sie, wenn Sie popBackStack()
aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene Klasse NavOptions
und die Integration in <action>
-Einträge in der XML-Datei des Navigationsdiagramms wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen. (b/80029773)
Im Rahmen dieser Änderung speichern und wiederherstellen die NavigationUI
-Methoden von onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
und NavigationView.setupWithNavController()
jetzt automatisch den Status von Zielen, die eingeblendet wurden, sodass mehrere Back-Stacks ohne Codeänderungen unterstützt werden. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode zur Integration mehrerer Back Stacks. (Ie07ca)
Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:
In Navigations-XML kann das Element
<action>
jetzt die booleschen Attributeapp:popUpToSaveState
undapp:restoreState
verwenden, um den Status aller Ziele, die überapp:popUpTo
geöffnet wurden, 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
navOptions
Kotlin DSL können Sie die boolesche EigenschaftrestoreState
und die boolesche EigenschaftsaveState
impopUpTo
-Builder hinzufügen:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Beim manuellen Erstellen eines
NavOptions
-Objekts mithilfe vonNavOptions.Builder
können Sie diesetRestoreState()
und die neue Überlastung fürsetPopUpTo()
verwenden, für die ein zusätzlichersaveState
-Parameter erforderlich ist.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 NavController
den Status jeder NavBackStackEntry
und stellt sie wieder her, einschließlich aller ViewModel
-Instanzen auf Ebene des Navigationsziels. Die Navigator
APIs wurden aktualisiert, damit jede Navigator
das Speichern und Wiederherstellen ihres eigenen Status unterstützen kann.
Die ComposeNavigator
, die für composable
-Ziele in Navigation Compose verwendet werden, und FragmentNavigator
und DynamicFragmentNavigator
für <fragment>
-Ziele in Navigation mit Fragmenten wurden aktualisiert. Beide verwenden jetzt die neuen Navigator APIs und unterstützen das Speichern und Wiederherstellen des Status.
Navigationsrouten
Eine Route ist ein String
, der ein Ziel eindeutig identifiziert. Früher wurde es nur in Navigation Compose verwendet. Inzwischen gehört dieses Konzept zu den wichtigsten Navigations-APIs. Dies bietet eine Alternative zur Verwendung von Ganzzahl-IDs, wenn Sie Ihre Grafik über die Navigation Kotlin DSL erstellen. (b/172823546)
Alle APIs, die bisher nur eine ID verwendet haben, haben jetzt eine Überlastung, die die Route String
verwendet. Dazu gehören navigate()
, popBackStack()
, popUpTo()
und getBackStackEntry()
.
Dies hatte einige Auswirkungen auf die API:
- Die Kotlin-Eigenschaft
popUpTo
in Kotlin DSL wurde zugunsten vonpopUpToId
eingestellt. (I59c73, b/172823546) - Die
getStartDestination()
API wurde zugunsten vongetStartDestinationId()
eingestellt. (I0887f, b/172823546)
Für Entwickler, die von früheren Versionen von Navigation Compose auf Navigation Compose 2.4.0-alpha01
aktualisieren, bedeutet dies, dass die folgenden Importe in Erweiterungsmethoden nicht mehr erforderlich sind und entfernt werden sollten:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
Das Argument KEY_ROUTE
wurde durch das Attribut route
in NavDestination
ersetzt, sodass Sie navBackStackEntry.destination.route
direkt aufrufen können.
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 früher Teil der-ktx
-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die-ktx
-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. (b/184292145) NavDeepLinkBuilder
unterstützt jetzt das Hinzufügen mehrerer verschiedener Ziele zum generierten Back-Stack. (I3ee0d, b/147913689)- Factory-Funktionen für
DynamicNavHostFragment
hinzufügen (Icd515, b/175222619) - Die eindeutige ID einer
NavBackStackEntry
wird jetzt im Rahmen ihrer öffentlichen API bereitgestellt. (Ie033a) - Die Felder
name
undargument
sowie die destruktiven Funktionen vonNamedNavArgument
sind jetzt öffentlich. (#174, b/181320559) - Es wurde eine neue
NavBackStackEntry#provideToCompositionLocals
-Erweiterung eingeführt, die den relevanten lokalen Kompositionen dieNavBackStackEntry
bereitstellt. (#175, b/187229439)
Sichere Argumente
Sichere Args generiert jetzt eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse. (Nr. 122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Sichere Argumente wurden aktualisiert, sodass sie von KotlinPoet
1.8.0
abhängig sind. (Nr. 172, b/183990444)
Änderungen im Verhalten
- 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. (b/171125856) - Beim Parsen von Enum-Argumenten von Deeplinks wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So kann ein Deeplink wie
http://www.example.com/red
mit einemwww.example.com/{color}
-Deeplink übereinstimmen, selbst wenn die Aufzählung den WertRED
hat. (#152, b/135857840)
Compose-Kompatibilität
androidx.navigation:navigation-compose:2.4.0-alpha01
ist nur mit der E-Mail-Adresse „Compose“ ab Version1.0.0-beta07
kompatibel.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks mit genau übereinstimmendem Suffix hatten. (Nr. 153, b/184072811)
NavHostFragment
unterstützt jetzt benutzerdefinierte Navigatoren, die dieselbe@Navigator.Name("dialog")
wie die StandardeinstellungDialogFragmentNavigator
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, simonschiller, dass Sie die Unterstützung für sichere Args generieren, die eine
fromSavedStateHandle()
-Methode für jedeNavArgs
-Klasse generiert. (Nr. 122, b/136967621) - Vielen Dank, Bradleycorn, dass beim Parsen von Enum-Argumenten aus Deeplinks die Groß-/Kleinschreibung berücksichtigt wird. (#152, b/135857840)
- Vielen Dank für osipxd, dass du ein Problem behoben hast, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks mit exaktem Suffix haben. (Nr. 153, b/184072811)
- Vielen Dank, tatocaster, dass du Safe Args aktualisiert hast, sodass sie von KotlinPoet
1.8.0
abhängig sind. (Nr. 172, b/183990444) - Vielen Dank, jossiwolf, dass du die Felder
name
undargument
und die destruktiven Funktionen vonNamedNavArgument
veröffentlicht hast. (#174, b/181320559) - Danke, jossiwolf für die Einführung der neuen
NavBackStackEntry#provideToCompositionLocals
-Erweiterung, mit der dieNavBackStackEntry
für die relevanten lokalen Nutzer bereitgestellt wird. (#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
wurde 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, wie es bei der Vorschau vonNavHost
der Fall ist. (I7d8b4)- Die Funktion „Schreibassistent“ hängt jetzt von der Navigation
2.3.5
ab. Damit wurde ein Problem behoben, das bei der Verwendung vonBackHandler
innerhalb einesNavHost
-Ziels aufgetreten ist. (I7e63b, b/182284739)
Version 1.0.0-alpha09
10. März 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
wurde 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. APIs, die eineViewModelStoreOwner
benötigen, wieviewModel()
undNavHost
, geben trotzdem eine Ausnahme aus, wenn keinViewModelStoreOwner
festgelegt ist. (Idf39a)
Fehlerkorrekturen
- Navigation Compose hängt jetzt von Navigation 2.3.4 ab. Dort wurde die Korrektur behoben, dass versucht wurde, 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.
Aktualisierung der Abhängigkeiten
- Die Funktion „Navigation Compose“ hängt jetzt von Lifecycle ViewModel Compose 1.0.0-alpha01 ab, um
viewModel()
-Unterstützung fürcomposable
-Ziele zu bieten. (I7a374) NavHost
verwendet jetzt das neueLocalOnBackPressedDispatcherOwner
aus Activity-Compose 1.3.0-alpha01, um dasOnBackPressedDispatcher
abzurufen, das fürNavController
festgelegt ist. (I65b12)
Version 1.0.0-alpha06
28. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
wurde 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 verknüpftenNavBackStackEntry
zurückgibt. (If8931)
Version 1.0.0-alpha05
13. Januar 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Aktualisiert und abhängig von Compose 1.0.0-alpha10.
Version 1.0.0-alpha04
16. Dezember 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
wurde 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
wurde 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
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Beim Erstellen der Navigation werden jetzt NavOptions für die Verwendung von popUpTo und launchSingleTop-Operationen unterstützt (If96c3, b/171468994)
- Es wurde eine Navigationsfunktion hinzugefügt, die eine Route anstelle einer ID verwendet, mit der sich verschachtelte Grafiken in der Navigationsfunktion vom Typ „DSL“ erstellen lassen. (I1661d)
- „startDestination“ steht jetzt in der Liste der Parameter für einen NavHost (Ie620e) vor der Route.
- Sie können jetzt eine Grafik erstellen, die die Route als Startziel außerhalb einer zusammensetzbaren NavHost-Funktion verwendet. (Iceb75)
Version 1.0.0-alpha01
28. Oktober 2020
android.navigation:navigation-compose:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
Das Artefakt navigation-compose
ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Sie verwendet @Composable
-Funktionen als Ziele in Ihrer Anwendung.
Diese erste Version bietet folgende Vorteile:
- Eine zusammensetzbare Funktion für
NavHost
, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL erstellen können. - Geltungsbereich des Lebenszyklus,
ViewModel
und des gespeicherten Status auf Zielebene. - Automatische Integration mit der Zurück-Schaltfläche des Systems
- Unterstützung für die Übergabe von Argumenten, das Anhängen von Deeplinks an Ziele und die Rückgabe von Ergebnissen an vorherige Ziele.
- Erstellen Sie bestimmte Hilfskräfte in
rememberNavController()
undcurrentBackStackEntryAsState()
, um den Windstatus zu ermöglichen undNavController
mit zusammensetzbaren Funktionen außerhalb vonNavHost
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
wurde veröffentlicht. Version 2.3.5 enthält diese Commits.
Neue Funktionen
- Wenn Sie mit
NavDeepLinkRequest
oderUri
navigieren, können Sie jetzt aufUri
, Aktion und MIME-Typ im resultierenden Ziel zugreifen. Dazu rufen Sie den Intent aus Argumenten überKEY_DEEP_LINK_INTENT
ab. Dies entspricht der Funktionalität, die bereits für externe Deeplinks verfügbar ist. (I975c3, b/181521877)
Fehlerkorrekturen
OnBackPressedCallbacks
wurde einem Dispatcher mitNavBackStackEntry
hinzugefügt, da der LifecycleOwner nun ordnungsgemäß abfängt, nachdem der AktivitätslebenszyklusSTOPPED
ist, dannSTARTED
(Iff94f, b/182284739)- Beim Parsen der Deeplink-Domain wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden, sodass
www.example.com
sowohl mitwww.example.com
als auch mitwww.Example.com
übereinstimmt. Bei Namen von Abfrageparametern wird weiterhin zwischen Groß- und Kleinschreibung unterschieden. (Nr. 144, b/153829033) - Ein
NullPointerException
wurde behoben, das auftreten konnte, wenn ein Ziel mehrere Standardargumente hat, die keine Nullwerte zulassen können, und Sie zu diesem Ziel navigieren, während Sie nur einen Teil dieser Argumente überschreiben. (aosp/1644827)
Aktualisierung der Abhängigkeiten
- 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,
bentrengrove
für die Pull-Anfrage, durch die beim Parsen der Deeplink-Domain die Groß-/Kleinschreibung nicht berücksichtigt wird. (Nr. 144, b/153829033)
Version 2.3.4
Version 2.3.4
10. März 2021
androidx.navigation:navigation-*:2.3.4
wurde 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 ganzzahlige Rohdaten als auch Hexadezimalwerte mit dem Präfix0x
unterstützt. (Nr. 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. (Nr. 117, b/173766247)
Fehlerkorrekturen
- Ein hängender Installationsfortschritt bei der Nutzung dynamischer Funktionen von Navigation wurde behoben. (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 die Pull-Anfrage, mit der dieReferenceType
-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URI gesendet werden. (Nr. 127, b/179166693) - Vielen Dank,
tatocaster
, dass die Pull-AnfragedefaultValue
für ein Argument mitapp:argType=”float”
zugelassen hat und jetzt ganzzahlige Standardwerte unterstützt. (Nr. 117, b/173766247)
Version 2.3.3
Version 2.3.3
27. Januar 2021
androidx.navigation:navigation-*:2.3.3
wurde 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) - Eine durch b/171364502 verursachte 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
- Es wurde eine Regression in
NavigationUI
behoben, bei der über ein<activity>
-Ziel mitonNavDestinationSelected
keine Aktivität zur Aktivität aufgerufen werden konnte. (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 nicht an
OnDestinationChangedListener
-Instanzen gesendet wurden, wennlaunchSingleTop
verwendet wurde. (I2c5cb) - Ein Problem wurde behoben, bei dem beim Aufrufen eines verschachtelten Navigationsdiagramms keine neue Graph-Instanz im Back-Stack erstellt wurde. (Ifc831)
- Es wurde ein Problem behoben, bei dem die Verwendung von
navigate()
mit einempopUpTo
, das das letzte Ziel in einem Navigationsdiagramm entfernt hat, nicht sofort das Navigationsdiagramm zerstört und aus dem Back-Stack entfernt hat. (I910a3) - Navigation SafeArgs verwendet jetzt die KotlinPoet-Version 1.7.2, die den expliziten API-Modus von Kotlin unterstützt. (I918b5)
NavHostFragment.findNavController(Fragment)
prüft jetzt zusätzlich zu den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die 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
- Standard-Animator-Ressourcen wurden der Navigations-UI hinzugefügt und werden gegenüber den Standard-Animationsressourcen empfohlen. (b/167430145)
- NavOptions überschreiben jetzt den Hashcode und die Gleichheitsmethode (b/161586466).
- Die Navigation schließt jetzt das aktuelle Ziel in die Ausnahme „Kein Ziel mit ID“ ein. Dadurch sollte die Fehlerbehebung für Entwickler verbessert werden. (b/168311416)
Fehlerkorrekturen
- „Safe Args“ umschließt die Rückgabezeile nicht mehr, auch wenn der generierte Argumentklassenname länger als 100 Zeichen ist. (b/168584987)
Abhängigkeitsänderungen
navigation-ui
hängt jetzt von DrawerLayout 1.1.1 ab und sorgt dafür, dassNavigationUI
die Leiste auch dann öffnen kann, wennLOCK_MODE_LOCKED_CLOSED
oderLOCK_MODE_LOCKED_OPEN
verwendet wird. (b/162253907)- „Sichere Args“ hängt jetzt von KotlinPoet 1.6.0 (aosp/1435911) ab
- Sichere Args sind jetzt abhängig von AGP 4.0.1 (aosp/1442337).
Version 2.3.0
Version 2.3.0
24. Juni 2020
androidx.navigation:navigation-*:2.3.0
wurde veröffentlicht. Version 2.3.0 enthält diese Commits.
Große Ä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 Mit 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 Back-Stack der Navigation zugeordnet ist, können Sie jetzt auf einSavedStateHandle
-Objekt zugreifen, das zum Speichern kleiner Mengen des gespeicherten Zustands geeignet ist, der einem bestimmten Back-Stack-Eintrag zugeordnet werden soll. 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 für Aktion und MIME-Typ 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 Mit NavDeepLinkRequest navigieren.
Bekannte Probleme
- In der Manifestzusammenführung werden Deeplink-Aktionen und MIME-Typen noch nicht unterstützt. Bis diese Schritte abgeschlossen sind, enthalten die über das
<nav-graph>
-Element in deinem Manifest generierten<intent-filter>
-Elemente weder deinen MIME-Typ noch im<data>
-Element deines benutzerdefinierten<action>
-Objekts. Du musst deinem Manifest manuell eine entsprechende<intent-filter>
hinzufügen.
Version 2.3.0-rc01
10. Juni 2020
androidx.navigation:navigation-*:2.3.0-rc01
wurde 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
ausgegebenendestination is unknown
-Ausnahmen enthalten jetzt zusätzliche Debugging-Informationen, mit denen sich der Status vonNavController
ermitteln lässt. (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
Lifecycle
vonNavBackStackEntry
nach dem Beenden eines Prozesses nicht korrekt 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)- Bei Verwendung von
singleTop
werden die Argumente vonNavBackStackEntry
jetzt korrekt aktualisiert und die aktualisierten Argumente werden an alleOnDestinationChangeListener
-Instanzen gesendet. (b/156545508)
Aktualisierung der Abhängigkeiten
- Das Artefakt
NavigationUI
hängt jetzt von CustomView1.1.0-rc01
und DrawerLayout1.1.0-rc01
ab. (aosp/1309696)
Version 2.3.0-alpha06
29. April 2020
androidx.navigation:navigation-*:2.3.0-alpha06
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
unterstützt:app:action
undapp:mimeType
. NavController unterstützt jetzt die Navigation über eine beliebige Kombination dieser Felder über die neueNavDeepLinkRequest
-Klasse. (b/136573074, b/135334841)
API-Änderungen
- Die DSL-Unterstützung von Kotlin für dynamische Navigationsziele wurde erheblich erweitert. (b/148969800)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Deeplink-Intents bei der 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
- Für dynamische Graph-Includes mit
<include-dynamic>
müssen Sieapp:graphPackage
nicht mehr angeben. Es wird ein Standard-String verwendet, indem nach einem Punkt das SuffixmoduleName
zumapplicationId
hinzugefügt wird. Wenn dugraphPackage
anpassen musst, wird jetzt ein${applicationId}
-Platzhalter unterstützt. (b/152696768) - In Navigationsdiagramm Kotlin DSL ist jetzt ein
defaultArguments
Map
für Aktionen verfügbar, was die Möglichkeit widerspiegelt, Standardwerte für<action>
-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)
Fehlerkorrekturen
- Aus Navigation 2.2.2: Behebung eines
IllegalStateException
, wenn Deeplinks zum Startziel der Grafik verwendet werden und mehrereNavHostFragment
-Instanzen in deiner Aktivität vorhanden waren. (b/147378752)
Aktualisierung der Abhängigkeiten
- 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
wurde veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Zusätzliche Unterstützung für Aktivität von Funktionsmodulen und Fragmentziele in Navigation Kotlin DSL. (b/148969800)
API-Änderungen
- Die
DynamicExtras
-Klasse verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671) - Für
DynamicActivityNavigator
wird jetzt im Konstruktor einContext
anstelle vonActivity
verwendet. (aosp/1250252)
Fehlerkorrekturen
NavigationUI
ignoriert leere Labels (d.h. ein Ziel mitandroid:label=””
) nicht mehr und legt den Titel nun korrekt auf einen leeren String fest. (b/148679860)
Aktualisierung der Abhängigkeiten
- Die Artefakte für dynamische Navigationsfunktionen hängen jetzt von Play Core
1.6.5
ab. (b/149556401)
Version 2.3.0-alpha03
4. März 2020
androidx.navigation:navigation-*:2.3.0-alpha03
wurde veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Anstatt sich auf die konkrete
DrawerLayout
-Klasse zu verlassen, verwendetAppBarConfiguration
jetzt die in CustomView1.1.0-alpha02
eingeführteOpenable
-Schnittstelle, die vonDrawerLayout
ab DrawerLayout1.1.0-alpha04
implementiert wird. Dadurch kannst du 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
- Navigation ist wieder von Core
1.2.0
abhängig und hängt jetzt von Core1.1.0
ab. So müssen Entwickler nicht zu einer neueren Abhängigkeit wechseln, wenn Navigation keine neuen APIs in Core1.2.0
benötigt.
Version 2.3.0-alpha02
19. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha02
wurde 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 Beispiel für einen Anwendungsfall finden Sie unter Ergebnisse zurückgeben. (b/79672220)
API-Änderungen
- Es wurden praktische Methoden für
getCurrentBackStackEntry()
undgetPreviousBackStackEntry()
hinzugefügt, um das Abrufen vonNavBackStackEntry
für das aktuelle und das vorherige Ziel zu vereinfachen. (b/79672220)
Fehlerkorrekturen
navigateUp()
übergibt jetzt die Argumente des aktuellen Ziels und denKEY_DEEP_LINK_INTENT
an das vorherige Ziel, wenn Ihre App in Ihrem eigenen Aufgabenstapel gestartet wird. (b/147456890)
Abhängigkeitsänderungen
- Die Navigation hängt jetzt vom Kern-
1.2.0
ab.
Version 2.3.0-alpha01
5. Februar 2020
androidx.navigation:navigation-*:2.3.0-alpha01
wurde veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Das neue
navigation-testing
-Artefakt stellt eineTestNavHostController
-Klasse bereit. Diese Klasse bietet eine Alternative zur Verwendung eines simuliertenNavController
beim Testen der Navigation, mit dem Sie das aktuelle Ziel festlegen und den Back-Stack nach Navigationsvorgängen überprüfen können. (b/140884273) - Mit dem neuen
navigation-dynamic-features-fragment
(und seiner Transitiv-Abhängigkeitnavigation-dynamic-features-runtime
) kannst du Ziele oder vollständige Navigationsdiagramme (über<include-dynamic>
) aus Funktionsmodulen hinzufügen, um die nahtlose Installation von On-Demand-Funktionsmodulen bei der Navigation zu diesen Zielen zu ermöglichen. Weitere Informationen finden Sie unter Mit Funktionsmodulen navigieren. (b/132170186)
Fehlerkorrekturen
- In der Navigation
2.2.1
: Deeplinks ohne Suchparameter ignorieren jetzt korrekt alle Abfrageparameter. Sie werden nicht an nachgestellte{argument}
-Elemente angehängt oder entsprechen nicht dem Deeplink. (b/147447512) - Aus Navigation
2.2.1
: Dienavigation-ui
ProGuard-Regeln fürDrawerArrowDrawable
wurden aktualisiert, um sicherzustellen, dassandroid.enableJetifier=true
nicht 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
- In der Navigation
2.2.1
: Die Navigation2.2.1
hängt jetzt vom gespeicherten Zustand der Ansichtsmodell (Lebenszyklusansicht)2.2.0
und dem Fragment1.2.1
ab.
Version 2.2.2
Version 2.2.2
15. April 2020
androidx.navigation:navigation-*:2.2.2
wurden freigegeben. Version 2.2.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
IllegalStateException
behoben, bei dem Deeplinks zum Startziel der Grafik verwendet werden, wenn in deiner Aktivität mehrereNavHostFragment
-Instanzen vorhanden waren. (b/147378752) NavigationUI
ignoriert leere Labels (d.h. ein Ziel mitandroid:label=””
) nicht mehr und legt den Titel nun korrekt auf einen leeren String fest. Dies wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860)- Die ProGuard-Regeln von
navigation-common-ktx
behalten jetzt korrekt nur die verwendetenNavArgs
-Klassen anstelle allerNavArgs
-Instanzen bei. 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 erforderlich ist. (b/147610424) - Das Modul
navigation-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
- 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
wurde veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- NavBackStackEntry: Sie können jetzt
NavController.getBackStackEntry()
aufrufen und die ID eines Ziels oder 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. - Integration von Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
wird jetzt standardmäßig bei der Verwendung vonby navGraphViewModels()
oder desViewModelProvider
-Konstruktors mit einemViewModelStoreOwner
verwendet, der vonNavController.getBackStackEntry()
oderNavController.getViewModelStoreOwner()
zurückgegeben wird. - Unterstützung von Suchparametern für Deeplinks: In Deeplinks mit Suchparametern werden jetzt neu angeordnete Suchparameter unterstützt. Argumente, die einen Standardwert haben oder bei denen Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional.
- Verbesserte Unterstützung für Animationen:
NavHostFragment
verwendet jetztFragmentContainerView
aus Fragment 1.2.0. Dadurch wurden Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinfügungen an Fragmente behoben.
Version 2.2.0-rc04
18. Dezember 2019
androidx.navigation:navigation-*:2.2.0-rc04
wurde 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
wurde veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem beim Parsen von Deeplinks behoben, bei dem Abfrageparameter und ein Argument als letzter Teil des Pfads verwendet wurden, wodurch mehr als ein Zeichen des Arguments des letzten Pfads nicht geparst werden konnte. (b/144554689)
- Es wurde ein Problem beim Parsen von Deeplinks behoben, bei dem optionale Parameter
"@null"
stattnull
erhielten. (b/141613546) NavHostFragment
stellt das Diagramm jetzt nach einer Konfigurationsänderung korrekt wieder her, wenn es mitFragmentContainerView
verwendet wird. (b/143752103)
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von Lebenszyklus
2.2.0-rc03
, 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
wurde veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.
Abhängigkeitsänderungen
- Die Navigation hängt jetzt von androidx.lifecycle
2.2.0-rc02
ab.
Version 2.2.0-rc01
23. Oktober 2019
androidx.navigation:navigation-*:2.2.0-rc01
wurde ohne Änderungen seit dem 2.2.0-beta01
freigegeben. 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 die zugehörigen abgeleiteten Klassen überschreiben jetzttoString()
, um hilfreichere Informationen bei der Fehlerbehebung bereitzustellen. (b/141264986)
Verhaltensänderungen
- Zusätzliche Suchparameter werden jetzt beim Abgleich von Deeplinks ignoriert, sodass der Abgleich nicht fehlschlägt. (b/141482822)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Suchparameter angegeben wurden. (b/141505755)
- Die Kotlin-Erweiterung
navArgs()
fürActivity
hat jetzt eine bessere Fehlermeldung, wenn keine Extras vorhanden sind. (b/141408999) - Von sicheren Args generierte
Directions
-Java-Klassen enthalten jetzt Standardwerte. (b/141099045) - Von sicheren 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
- Der Aufruf von
setViewModelStore()
nach dem Aufrufen vonsetGraph
führt jetzt zu einemIllegalStateException
. Dies sollte bei der Ersteinrichtung immer vomNavHost
festgelegt werden, damit alleNavBackStackEntry
-Instanzen einen konsistenten Speicher fürViewModel
-Instanzen haben. (aosp/1111821).
Fehlerkorrekturen
- Ein
ConcurrentModificationException
wurde behoben, wennViewModel
-Instanzen verwendet wurden, die an mehrereViewModelStore
-Instanzen mit einem Navigationsdiagrammbereich angehängt waren. (aosp/1112257)
Version 2.2.0-alpha02
5. September 2019
androidx.navigation:navigation-*:2.2.0-alpha02
wurde 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
- Das Hinzufügen eines
NavHostFragment
zuViewPager2
schlug mit einemIllegalArgumentException
fehl. Dieses Problem wurde behoben. (b/133640271) NavInflater
vermeidet nun unnötige Aufrufe vongetResourceName()
, wodurch die Inflationszeit um bis zu 40 % verkürzt wird. (b/139213740)
Version 2.2.0-alpha01
7. August 2019
androidx.navigation:navigation-*:2.2.0-alpha01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die verwendet wird, wennby navGraphViewModels()
oder derViewModelProvider
-Konstruktor mit einem vonNavController.getViewModelStoreOwner()
zurückgegebenenViewModelStoreOwner
verwendet wird. (b/135716331)
API-Änderungen
- Aus der Navigation
2.1.0-rc01
: Die eingestelltegetViewModelStore()
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 Fenstereinschnitten an Fragmente behoben. (b/137310379)
Version 2.1.0
Version 2.1.0
5. September 2019
androidx.navigation:navigation-*:2.1.0
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 2.0.0
- Umfang von ViewModels auf eine Navigationsgrafik: Sie können jetzt ViewModels erstellen, die auf Navigationsebene festgelegt sind. Verwenden Sie dazu den Property-Delegaten
by navGraphViewModels()
für Kotlin-Nutzer, der die-ktx
-Bibliotheken verwendet, oder diegetViewModelStoreOwner()
API, dieNavController
hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen freigeben. - Dialogziele: Sie können jetzt
<dialog>
-Ziele erstellen, bei denen eineDialogFragment
angezeigt wird, wenn Sienavigate
aufrufen.NavHostFragment
unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel über DialogFragment erstellen. - Navigation über den URI: Sie können jetzt
navigate
mit einemUri
verwenden, das die<deepLink>
, die Sie einem Ziel hinzugefügt haben, dazu verwendet. Weitere Informationen finden Sie unter Navigation mit URI. - 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Die verworfene
getViewModelStore()
API fürNavController
, die mit2.1.0-alpha02
eingeführt wurde, wurde entfernt. (aosp/1091021).
Version 2.1.0-beta02
19. Juli 2019
androidx.navigation:*:2.1.0-beta02
wurde 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
NavigationUI
animiert jetzt das Entfernen der Nach-oben-Schaltfläche, wennsetupWithNavController()
mitToolbar
oderCollapsingToolbarLayout
verwendet wird. (b/131403621)
Fehlerkorrekturen
- Ein Zeitproblem wurde behoben, das auftrat, wenn mehrere NavHostFragments mit demselben Container mit
findNavController()
verwendet wurden. (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 das Artefaktnavigation-runtime
verschoben. Benutzerdefinierte Navigatoren, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um eine Integration in den Hostbereich des Navigationseditors zu erhalten. (b/133880955)
API-Änderungen
- Die
getViewModelStore()
API fürNavController
wurde zugunsten der neuen MethodegetViewModelStoreOwner()
eingestellt, die eineViewModelStoreOwner
zurückgibt. (aosp/987010) - Die Implementierung von Zielen für unverankerte Fenster, wie 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)
Verhaltensänderungen
- Die Navigation synchronisiert ihren Status jetzt korrekt mit dem, was auf dem Bildschirm angezeigt wird, wenn ein
<dialog>
-Ziel verwendet wird. Die Navigation zeigt daher jetzt automatisch<dialog>
-Ziele an, wenn Sie zu einem Ziel ohne Dialog und 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
wurde 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 müssen jetzt vor dem AufrufsetLifecycleOwner()
aufrufen. (aosp/965409) NavHostController
enthält jetzt eineenableOnBackPressed(boolean)
-Methode, die die zuvor vonsetHostOnBackPressedDispatcherOwner()
zurückgegebeneNavHostOnBackPressedManager
-Klasse ersetzt. (aosp/966091)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Back-Stack nach dem Aufrufen über den URI nicht korrekt war. (b/132509387)
- Deeplinks, die automatisch von NavController verarbeitet werden, werden jetzt nur 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
verarbeitetpopBackStack()
- undnavigateUp()
-Vorgänge jetzt 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Bekannte Probleme
- NavHostFragment fängt die Schaltfläche „Zurück“ des Systems trotz Verwendung von
app:defaultNavHost="false"
b/132077777 ab
Neue Funktionen
- Sie können jetzt
<dialog>
Ziele erstellen, für die einDialogFragment
angezeigt wird, wenn Sienavigate
aufrufen.NavHostFragment
unterstützt standardmäßig Dialogziele. b/80267254 - Sie können nicht nur
navigate
mit einer Ressourcen-ID oder einerNavDirections
-Instanz aufrufen, sondern jetzt auch über eineUri
navigieren, die die<deepLink>
, die Sie einem Ziel hinzugefügt haben, zum richtigen Ziel verwendet. b/110412864
Verhaltensänderungen
- Die Standardanimationen von NavigationUI wurden von 400 ms auf 220 ms verkürzt, um der Standardanimationsgeschwindigkeit 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 einehasDeepLink()
-Methode hinzugefügt, mit der Sie prüfen können, ob eine bestimmteUri
von diesem Ziel oder – im Fall einerNavGraph
– von einem beliebigen Ziel im Navigationsdiagramm verarbeitet werden kann. b/117437718
Fehlerkorrekturen
- Standardargumente werden jetzt korrekt an
OnDestinationChangedListener
Instanzen übergeben. b/130630686 NavHostFragment
fängt jetzt System-Back-Ereignisse mithilfe vonOnBackPressedDispatcher
ab, wodurch ein Problem bei der bedingten Navigation in Fragment-Lebenszyklusmethoden nach der Rückkehr zu einem Fragment behoben wird. b/111598096- Für sichere Argumente wird ein
android:defaultValue=”@null”
mit einer nicht angegebenenapp:argType
nun ordnungsgemäß 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 Navigationsgrafikebene beschränkt sind. Verwenden Sie dazu den Attributdelegierung
by navGraphViewModels()
für Kotlin-Nutzer oder diegetViewModelStore()
API, die zuNavController
hinzugefügt wurde. b/111614463
API-Änderungen
- Du kannst einem
<activity>
-Ziel jetzt eineapp:targetPackage
hinzufügen, um den übereinstimmenden Paketnamen einzuschränken. Sie unterstütztapp:targetPackage="${applicationId}"
zur Beschränkung des Pakets auf Ihre eigene Anwendungs-ID. b/110975456
Fehlerkorrekturen
- Die
android:name
für<activity>
-Ziele 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. In diesem Release wird auch die Abhängigkeit vonandroidx.legacy:legacy-support-core-utils:1.0.0
aufgehoben. 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 verworfen. In der Standardimplementierung wird jetztFragmentFactory
zur Instanziierung von Fragmenten verwendet. b/119054429
Fehlerkorrekturen
- Navigation sendet keinen Null-
Bundle
mehr, wenn Argumente an ein Ziel angehängt sind. Dadurch wird ein Problem bei der Verwendung vonandroid:defaultValue="@null"
behoben. b/128531879 - Sichere Args hängen jetzt von KotlinPoet 1.1.0 ab, wodurch ein Problem mit extrem langen Paketnamen behoben wird. b/123654948
Version 2.0.0
Version 2.0.0
14. März 2019
Die Navigation 2.0.0
wurde 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 entspricht dem Verhalten von Navigation 1.0.0-rc02. Es sollten keine Änderungen an Ihrem Code erforderlich sein, um von 1.0.0-rc02 zu aktualisieren. Abgesehen von der Aktualisierung Ihrer Abhängigkeiten, um den neuen Abhängigkeiten zu entsprechen.
Ihr Projekt muss zu AndroidX migriert 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ür die Versionen vor AndroidX von Navigation sind folgende Abhängigkeiten erforderlich:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Fügen Sie für sichere Argumente den folgenden classpath in die build.gradle
-Datei der obersten Ebene ein.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Version 1.0.0
Version 1.0.0
14. März 2019
Die Navigation 1.0.0
wurde 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 Fehlerbehebungen.
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- Es wurde ein Problem behoben, bei dem
ActivityNavigator.applyPopAnimationsToPendingTransition
nicht die richtige Pop-Exit-Animation angewendet hat (b/126237567). - Kotlin-Code, der von Safe Args generiert wird, maskiert Kotlin-Keywords wie
in
undfun
jetzt korrekt im Paketnamen, der mit derR
-Klasse verknüpft ist. b/126020455
Version 1.0.0-rc01
21. Februar 2019
Dies ist ein Releasekandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Ein Problem bei der Verwendung von Fragmenten und
singleTop
-Navigationsvorgängen b/124294805 wurde behoben.
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
- Genaue Deeplink-Übereinstimmungen werden jetzt gegenüber Deeplinks mit
.*
- oder Argumentübereinstimmungen priorisiert. b/123969518
Fehlerkorrekturen
popBackStack()
undnavigateUp
geben jetzt korrektfalse
zurück, wenn das letzte Ziel im Back-Stack per POP geladen wird. Dadurch wird eine in1.0.0-beta01
eingeführte Regression behoben. b/123933201- Die Navigation legt den
ClassLoader
jetzt korrekt fest, wenn der Status der gespeicherten Instanz wiederhergestellt wird. Dadurch werden Probleme bei der Verwendung von benutzerdefinierten Klassen im gespeicherten StatusNavigator
oder in Argumenten vermieden, die an einNavDestination
gesendet werden. b/123893858 - Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein
Parcelable[]
-Argument aus dem Status der gespeicherten Instanz wiederhergestellt wird. b/123963545 - „Safe Args“ bereinigt jetzt unnötige, generierte Kotlin-Klassen ordnungsgemäß. b/124120883
Version 1.0.0-beta01
4. Februar 2019
Dies ist die erste Betaversion von Navigation. Von nun an wird die Navigation API voraussichtlich bis zur nächsten Version stabil bleiben, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerbehebungen und Verhaltensänderungen.
Verhaltensänderungen
- Die Navigation stellt jetzt sicher, dass Standardwerte von Argumenten zur Laufzeit und über sichere Args identisch behandelt werden. Daher können nur Argumente mit einem
app:argType="reference"
einen Standardwert haben, der auf eine andere Ressource verweist (z. B.@color/colorPrimary
). Der Versuch, einen Referenzstandardwert mit einem anderenapp:argType
zu verwenden, führt zu einer Ausnahme beim Parsen der Navigations-XML. b/123551990 - "Sichere Args" hängt jetzt vom Android-Gradle-Plug-in 3.3.0 ab aosp/888413
- Sichere Args hängen jetzt von Kotlin 1.3.20 ab aosp/888414
Fehlerkorrekturen
- Sichere Args können jetzt in Bibliotheks- und Funktionsmodulen aller Versionen des Android-Gradle-Plug-ins verwendet werden. b/121304903
- Es wurde eine Regression behoben, bei der ein einzelner
popBackStack()
-Vorgang dazu führte, dass alle Kopien eines Ziels aus dem oberen Bereich des Back-Stacks entfernt wurden und nicht nur ein einzelnes Ziel. b/123552990 - Es wurde ein Problem behoben, bei dem der Status
FragmentNavigator
mit dem StatusNavController
desynchronisiert wurde, was zu einemIllegalStateException
führte, wenn versucht wurde, den Back-Stack wiederherzustellen. b/123803044 - Es wurde ein Problem behoben, bei dem der Zurück-Pfeil bei
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 ordnungsgemäß. b/123347762
Version 1.0.0-alpha11
23. Januar 2019
Dies ist eine Hotfix-Version von 1.0.0-alpha10
, die ein Problem mit sicheren Args behebt.
Fehlerkorrekturen
- Behebt ein Problem, bei dem Safe Args die mit globalen Aktionen verknüpften Directions-Klassen nicht importieren konnten. b/123307342
Version 1.0.0-alpha10
23. Januar 2019
Bekannte Probleme
- Sichere Args kann die mit globalen Aktionen verknüpften Directions-Klassen nicht importieren. b/123307342
Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Kotlin-Nutzer können jetzt den Property-Delegaten
by navArgs()
verwenden, um verzögert einen Verweis auf eine von Safe Args generierteNavArgs
-Klasse in einemActivity
oderFragment
abzurufen. b/122603367 - Mit Safe Args können Sie jetzt Kotlin-Code generieren, indem Sie das
androidx.navigation.safeargs.kotlin
-Plug-in anwenden. Der Kotlin-Code wurde speziell für Kotlin-Module erstellt und verwendet Standardargumente und unveränderliche Klassen anstelle des Builder-Musters, das noch über das vorherigeandroidx.navigation.safeargs
-Plug-in verfügbar ist. b/110263087
Änderungen im Verhalten
- Übereinstimmende Deeplinks werden jetzt nach dem Deeplink mit den meisten übereinstimmenden Argumenten bevorzugt. b/118393029
- Durch den Aufruf von
setGraph()
auf einemNavController
wird jetzt der Back-Stack zurückgesetzt. b/111450672 - Unbekannte Deeplinks lösen kein
IllegalStateException
mehr aus, werden aber ignoriert. Dadurch werden Probleme mit verschachtelten oder mehrerenNavHostFragment
s behoben. b/121340440
Nicht abwärtskompatible Änderungen
- Die Methode
NavOptions.applyPopAnimationsToPendingTransition()
zum Anwenden von Pop-Animationen auf eine Aktivität wurde zuActivityNavigator
verschoben. b/122413117 - Sichere Args vermeiden jetzt das Duplizieren identischer Klassen für Aktionen ohne Argumente. Der Rückgabetyp für Methoden ohne Argument in generierten NavDirections-Klassen ist jetzt
NavDirections
. b/123233147 - Über sichere Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur mit den generierten statischen Methoden interagieren. b/123031660
- Über sichere 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
aus demgetArguments()
vonNavDirections
ist jetzt als@NonNull
und nicht 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 sicheren Args generierte Directions-Klassen verarbeiten jetzt globale Aktionen korrekt, die dieselbe ID wie eine Aktion an einem Ziel haben. b/122962504
- Von sicheren Args generierte
NavDirections
-Klassen haben jetzt korrekt dieselbenhashCode()
-Werte, wennequals()
„true“ zurückgeben würde. b/123043662 FragmentNavigator
gibt jetzt eine bessere Fehlermeldung aus, wenn du versuchst, ein benutzerdefiniertesFragmentTransactions
in denFragmentManager
derNavHostFragment
auszuführen. Sie sollten immergetChildFragmentManager()
verwenden. b/112927148
Version 1.0.0-alpha09
18. Dezember 2018
Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Wir haben uns entschieden, die Entwicklung des Artefakts android.arch.navigation:navigation-testing
nicht fortzusetzen. Obwohl sich diese Methode für interne Tests von NavController
als hilfreich erwiesen hat, empfehlen wir dringend alternative Teststrategien wie das Mocken 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()
den Wertfalse
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ügemenuCategory="secondary"
zu deinemMenuItem
hinzu, damit der Back-Stack nicht gelöscht wird. aosp/852869- Die
fromBundle()
-Methoden der generiertenArgs
-Klassen verwenden jetzt einenBundle
-Wert, der nicht null ist, anstelle einesBundle
, in dem Nullwerte zulässig sind.aosp/845616
Fehlerkorrekturen
- Argumente werden jetzt korrekt aus Deeplinks als korrekte
argType
und nicht immer als Strings geparst b/110273284. - Navigation exportiert seine öffentlichen Ressourcen jetzt korrekt b/121059552
- Safe Args ist jetzt mit Android-Gradle-Plug-in 3.4 Canary 4 und höher kompatibel. b/119662045
Version 1.0.0-alpha08
6. Dezember 2018
Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Wenn Ziellabels mit
NavigationUI
-Methoden verwendet werden, ersetzen sie jetzt{argName}
-Instanzen in Ihrerandroid:label
automatisch durch das richtige Argument b/80267266. - Die Navigation hängt jetzt von der Support Library 28.0.0 ab b/120293333
Nicht abwärtskompatible Änderungen
OnNavigatedListener
wurde inOnDestinationChangedListener
umbenannt b/118670572OnDestinationChangedListener
übergibt jetzt auch denBundle
der Argumente aosp/837142.- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen Methoden wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm der Grafik, um alle Ziele aus dem Back-Stack zu entfernen. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet die Möglichkeit, alleIntent.FLAG_ACTIVITY_
-Flags festzulegen (aosp/828140).NavController.onHandleDeepLink
wurde inhandleDeepLink
aosp/836063 umbenannt- Viele Klassen und Methoden, die nicht für abgeleitete Klassen bestimmt sind, z. B.
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden zufinal
aosp/835681 gemacht. - Die verworfene Methode
NavHostFragment.setGraph()
wurde entfernt (aosp/835684). - Die verworfene Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Fragmenterstellung wurde zu
FragmentNavigator
verschoben, damit die Fragmenterstellung einfacher an eineFragmentFactory
delegiert werden kann. b/119054429 - Der Konstruktor für
NavGraphNavigator
nimmt keinenContext
aosp/835340 mehr an. - NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle. Die Funktionalität der von
getNavigatorProvider()
zurückgegebenenNavigatorProvider
hat sich nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt. Rufe stattdessennavigate()
imNavigator
auf. aosp/830663- Erhebliche Refaktorierung von
Navigator
, sodassOnNavigatorNavigatedListener
nicht mehr erforderlich ist undnavigate
stattdessen dasNavDestination
zurückgibt, zu dem aufgerufen wurde. Navigator
-Instanzen können keine Pop-Ereignisse mehr anNavController
senden. Erwägen Sie die Verwendung einesOnBackPressedCallback
, 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 einige Fehler behoben, die bei der Verwendung verschachtelter Grafiken zu einem
IllegalArgumentException
führten b/118713731 b/113611083 b/113346925 b/113305559 - Das Attribut
dataPattern
von<activity>
-Zielen füllt jetzt Argumente aus Nicht-String-Argumenten, indemtoString()
b/120161365 aufgerufen wird.
Sichere Argumente
- Sichere Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Für Enum-Typen kann ein Standardwert mithilfe des Enum-Literals ohne den Klassennamen (z. B.
app:defaultValue="READ"
) festgelegt werden. b/111316353 - Sichere Args unterstützt Arrays aller unterstützten Typen. b/111487504
- Sichere Args ignoriert jetzt Unterordner von Ressourcenverzeichnissen b/117893516.
- Safe Args fügt gegebenenfalls
@Override
-Annotationen hinzu. b/117145301
Version 1.0.0-alpha07
29. Oktober 2018
Neue Funktionen
- Mit der neuen Klasse AppBarConfiguration können Sie anpassen, welche Ziele als Ziele der obersten Ebene betrachtet werden sollen. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
- Sie können jetzt Argumente an das Startziel der Grafik b/110300470 übergeben.
- Für Deeplinks werden jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen unterstützt. b/112806402
Nicht abwärtskompatible Änderungen
- Das Modul
navigation-testing-ktx
wurde in dienavigation-testing artifact
integriert und wird nicht mehr veröffentlicht. - Das Artefakt
navigation-testing
ist jetzt von der Kotlin-Standardbibliothek abhängig. 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
- In Deeplinks werden Suchparameter jetzt korrekt geparst. b/110057514
- Bei Aktivitätszielen werden jetzt alle Animationen zum Ein- und Ausblenden korrekt angewendet. b/117145284
- Ein Absturz behoben, der nach Konfigurationsänderungen bei der Verwendung von benutzerdefinierten Navigatoren auftrat, wurde behoben. b/110763345
Sichere Argumente
- Sichere Argumente haben jetzt eine feste Abhängigkeit vom Android-Gradle-Plug-in 3.2.1. b/113167627
- Es können jetzt Routen für innere Klassen generiert werden. b/117407555
- Ein Problem beim Generieren von Routen in einer <include>-Grafik wurde behoben. b/116542123
Version 1.0.0-alpha06
20. September 2018
Neue Funktionen
- Übergänge zwischen freigegebenen Elementen für Ziele von Fragment und Aktivität werden jetzt unterstützt b/79665225. Weitere Informationen finden Sie unter Navigation mit der Navigationsarchitekturkomponente implementieren.
- Wenn Sie ein Element in „
NavigationView
“ auswählen, werden jetzt alle Fenster am unteren Rand 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()
gibt keine Aufrufe mehr frei, wenn er mit Aufrufen einzelner Ziele 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
- Directions- und Args-Klassen 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ührt. b/111907708
- Ein Fehler in
equals()
von generierten Args-Klassen wurde behoben. b/111450897 - Build-Fehler in sicheren Args beheben. b/109409713
- Konvertierung von Ressourcenkennungen in Java-Namen korrigieren b/111602491
- Fehlermeldungen zur Null-Zulässigkeit im Plug-in „Safe Args“ wurden behoben.
- Fügen Sie fehlende Anmerkungen für die Null-Zulässigkeit hinzu.
Version 1.0.0-alpha04
July 19, 2018
Die Navigation 1.0.0-alpha04
und das zugehörige Gradle-Plug-in für sichere Args enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API-/Verhaltensänderungen
- NavHostFragment legt immer das aktuelle Fragment als primäres Navigationsfragment fest, um sicherzustellen, dass untergeordnete Fragmentmanager vor dem äußeren NavController-Element platziert werden. 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 sicheren Args sind jetzt anklickbar b/111534438
- Die Args-Klassen bestätigen jetzt, dass
NonNull
-Attribute tatsächlich nicht null sind. b/111451769 - Zusätzliche
NonNull
-Annotationen wurden den von NavDirections und Args generierten Klassen b/111455455 b/111455456 hinzugefügt.
Fehlerkorrekturen
- Ein Problem mit der Schaltfläche "Zurück" des Systems nach einem Deeplink zu einem Fragmentziel wurde behoben b/111515685.
Version 1.0.0-alpha03
12. Juli 2018
Die Navigation 1.0.0-alpha03
und das zugehörige Gradle-Plug-in für sichere Args enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API-/Verhaltensänderungen
- Eine NavigationUI.setupWithNavController-Methode für die Toolbar 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 Back Stack leer ist oder die angegebene Ziel-ID sich nicht im Back Stack befindet. b/110893637
- FragmentNavigator ignoriert nun Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, sodass die Ausnahmen "Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden können" vermieden werden b/110987825.
Sichere Argumente
- 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:
- Nicht abwärtskompatible Änderung:Argumente werden jetzt standardmäßig als ungleich null betrachtet. Fügen Sie
app:nullable="true"
b/79642307 hinzu, um Nullwerte für String- und parzellierbare Argumente zuzulassen. - Sie können jetzt
app:type="long"
mit Standardwerten im Format „123L“ verwenden. b/79563966 - Ab jetzt werden abparbare Argumente unterstützt, bei denen ein vollständig qualifizierter Klassenname für
app:type
verwendet wird. 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 Plug-in "Safe Args" kann jetzt auf Feature-Projekte angewendet werden b/110011752
Fehlerkorrekturen
- Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
- Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken behoben. b/110178671
- Probleme bei der Verwendung von
setPopUpTo
mit dem ersten Ziel im Diagramm b/109909461 behoben - Ein Problem wurde behoben, durch das alle
app:defaultValue
-Werte als Strings b/110710788 übergeben wurden. - Aapt2 im Paket mit Android-Gradle-Plug-in 3.2 Beta 01 fügt jetzt Keep-Regeln für jedes
android:name
-Attribut in den Navigations-XML-Dateien hinzu. b/79874119 - Ein Speicherleck wurde behoben, das beim Ersetzen des standardmäßigen FragmentNavigator b/110900142 aufgetreten ist.
Version 1.0.0-alpha02
7. Juni 2018
Änderungen im Verhalten
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Navigation URLDecodiert jetzt Argumente, die von Deeplinks-URLs geparst wurden. b/79982454
Fehlerkorrekturen
Es wurde ein
IllegalStateException
-Fehler behoben, der beim Aufrufen von Navigation von Fragment-Lebenszyklusmethoden ausstieg. b/79632233Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um Flimmern bei der Verwendung von Animationen zu korrigieren. b/80160903
Ein
IllegalArgumentException
bei Verwendung von "defaultNavHost="true" als untergeordnetes Fragment" wurde behoben. b/79656847Ein
StackOverflowError
bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
-Fehler beim Zurückkehren zu einer verschachtelten Grafik wurde behoben. b/80453447Ein Problem mit überlappenden Fragmenten bei Verwendung von
launchSingleTop
wurde behoben. b/79407969Die Navigation erstellt jetzt den richtigen synthetischen Back-Stack für verschachtelte Grafiken. b/79734195
NavigationUI hebt jetzt das richtige Element hervor, wenn ein verschachteltes Diagramm als
MenuItem
verwendet wird. b/109675998
API-Änderungen
Das Attribut
clearTask
für Aktionen und die zugehörige API inNavOptions
wurde eingestellt. b/80338878Das Attribut
launchDocument
für Aktionen und die zugehörige API inNavOptions
wurde eingestellt. b/109806636
Version 1.0.0-alpha01
8. Mai 2018
Die Navigation stellt ein Framework für die Erstellung der In-App-Navigation bereit. Diese erste Version ist 1.0.0-alpha01
.