Navigation
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
7. August 2024 | 2.7,7 | - | 2.8.0-beta07 | - |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von Navigation hinzuzufügen, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Cool
dependencies { def nav_version = "2.7.7" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module Support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" }
Kotlin
dependencies { val nav_version = "2.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
To add Safe Args
to your project, include the following classpath
in your top level build.gradle
file:
Groovy
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") } }
You must also apply one of two available plugins.
To generate Java language code suitable for Java or mixed Java and Kotlin modules, add
this line to your app or module's build.gradle
file:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
You must have android.useAndroidX=true
in your
gradle.properties
file as per
Migrating to AndroidX.
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 zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 2.8
Version 2.8.0-beta07
7. August 2024
androidx.navigation:navigation-*:2.8.0-beta07
wurde veröffentlicht. Die Version 2.8.0-beta07 enthält diese Commits.
Bekannte Probleme
- Aufgrund von b/358137294 werden standardmäßig nur Enums unterstützt, die in einer anderen Klasse verschachtelt sind. Aufzählungen der obersten Ebene werden in der nächsten Version unterstützt.
Fehlerkorrekturen
- Wenn Sie zu doppelten oder geteilten Zielen navigieren, wird bevorzugt das Ziel bevorzugt, das dem aktuellen Standort in der Grafik am nächsten kommt. (Ic89a4, b/352006850)
- Zur Navigation in sicheren Argumenten wurde ein neuer
NavType.EnumType
hinzugefügt. Das bedeutet, dass fürEnum
-Typen keine benutzerdefiniertenNavType
s mehr erforderlich sind. Beachten Sie, dassSerialName
derEnum
der voll qualifizierte Standardname sein muss. (I66d22, b/346475493) - Bei der Navigation in sicheren Argumenten wird jetzt integrierte Unterstützung für Argumenttypen mit Nullwerten, einschließlich
Int?
,Long?
,Float?
,Boolean?
undEnum<*>?
, hinzugefügt. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Die
startDestination
derNavGraph
verwendet jetzt die Standardargumentwerte, wenn die anNavGraph
übergebene RoutestartDestination
genau mitstartDestination.route
übereinstimmt. (I13762, b/354046047)
Version 2.8.0-beta06
24. Juli 2024
androidx.navigation:navigation-*:2.8.0-beta06
wurde veröffentlicht. Die Version 2.8.0-beta06 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem die Lint-Prüfungen von
WrongStartDestinationType
nicht nach Companion-Objekten des übergebenen Klassentyps suchten, wodurch der Fehler durch Lint nicht erkannt wurde. (I92b09)
Version 2.8.0-beta05
10. Juli 2024
androidx.navigation:navigation-*:2.8.0-beta05
wurde veröffentlicht. Die Version 2.8.0-beta05 enthält diese Commits.
Fehlerkorrekturen
singleTop
-Navigationsabsturz behoben, der bei verschachteltenNavGraphs
-Elementen dieselbestartDestination
-Route teilte. (I17b94, b/294408596)
Version 2.8.0-beta04
26. Juni 2024
androidx.navigation:navigation-*:2.8.0-beta04
wurde veröffentlicht. Version 2.8.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Die Navigation unterstützt jetzt die Navigation mit leeren Strings in Pfadargumenten. (Ic5dbd, b/339481310)
- Verbesserte Fehlermeldung für benutzerdefinierte Serialisierer, 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 Status 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 „Zurücksagen“-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
- Es wurden fehlende Parameterdokumente für die Navigation Kotlin-DSL-Funktionen 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 Unterstützung für die Sicherheit des Kompilierungszeittyps für Navigation Compose und Nutzer der Navigation Kotlin DSL auf Basis der Kotlin-Serialisierung wurde abgeschlossen. Die experimentellen APIs sind jetzt stabil.
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 ducomposable
-Ziele zu deinen Navigations-XML-Dateien hinzufügen kannst. Jedescomposable
Ziel muss als Top-Level-Methode ohne Argument@Composable
ausgedrückt werden, deren vollständig qualifizierter Name als Attributandroid:name
für jedes Ziel verwendet wird. 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, I9b73c, I562db012I396DB, I562DB, I8ed5a
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.
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
NavType
-Standardarrays (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 den Argumentnamen (z.B.
{argName}
) als gültige Werte für das stringbasierteNavTypes
zulässig. Damit 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 ArrayNavTypes
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
- Es wurde ein Problem behoben, bei dem
NavHost
in der Funktion „Navigation erstellen“ den Übergang nicht richtig anzeigte, wenn „System Zurück“ ohne 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 Navigationsfunktion „Compose“ hängt jetzt von Compose 1.7.0-alpha03 ab.
Version 2.8.0-alpha02
7. Februar 2024
androidx.navigation:navigation-*:2.8.0-alpha02
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 das Anzeigeproblem für Nicht-String-Argumente behoben wurde, wenn die Helper
NavigationUI
zum Ausfüllen des Titels von App-Leisten verwendet wurden.
Version 2.7.7
Version 2.7.7
7. Februar 2024
androidx.navigation:navigation-*:2.7.7
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 das Anzeigeproblem für Nicht-String-Argumente behoben wurde, wenn die Helper
NavigationUI
zum Ausfüllen des Titels von App-Leisten verwendet wurden.
Version 2.7.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 zu weniger übersprungenen Frames führen. 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, bei dem 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 „Navigation Compose“ 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 Verwendung von
Scaffold
beim Versuch, aufLifecycle.State.DESTROYED
ViewModel
zuzugreifen, ein Fehler 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.
Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen und die Funktion wird bald offiziell eingestellt. Außerdem werden wir eine Anleitung für die Rückkehr zu Navigation Compose selbst geben. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha
) verwenden, sind keine weiteren Änderungen an der API 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.
Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen und die Funktion wird bald offiziell eingestellt. Außerdem werden wir eine Anleitung für die Rückkehr zu Navigation Compose selbst geben. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha
) verwenden, sind keine weiteren Änderungen an der API 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 Suchparameter unterstützt werden, die dem Arraytyp des Arguments zugeordnet sind.NavType
enthält jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren.- Benutzerdefinierte 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)- Fragmente zum
FragmentNavigator
hinzufügenFragmentManager
ohne die Navigation führt 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 beim 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 Suchparameter unterstützt werden, die dem Arraytyp des Arguments zugeordnet sind.NavType
enthält jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren. (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 unten angezeigten 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. inner zusammensetzbare Bereiche werden vor äußeren Bereichen platziert. zusammensetzbaren Funktionen. (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 verschachtelter In NavHost sollte jetzt das innereNavHost
-Objekt wie vorgesehen animiert werden. (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 ordnungsgemäß mitNavBackStackEntries
zum Erstellen von ViewModels. (I69161, b/217617710)- Sichere Navigationselemente unterstützen jetzt die Verwendung des definierten Namespace
in
build.gradle
anstelle des Pakets im AndroidManifest ein. (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
- Über die Navigation
2.4.1
:NavHostFragment
stellt nun den WertOnBackPressedDispatcher
, 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 Zwischenziele 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
- Es wurde ein Problem behoben, durch das beim Zugriff auf ein erstelltes
ViewModel
-Objekt überby navGraphViewModels()
ausonCreate()
eines Fragments würde mitIllegalStateException
fehlschlagen. (I8a14d) NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal, Das bedeutet, dass die richtigen Argumente an Ihr endgültiges Ziel übergeben werden. (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, ist jetzt aber kompatibel mit Android-Gradle-Plug-in 7.1.0 und höher. (I41c88, b/213086135, b/207670704)
Version 2.4.2
Version 2.4.2
6. April 2022
androidx.navigation:navigation-*:2.4.2
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: SafeArgs für Navigation unterstützt jetzt die Verwendung des definierten Namespace inbuild.gradle
anstelle des Pakets im AndroidManifest ein. (I659ef, b/217414933) - Aus Navigation
2.5.0-alpha04
rückportiert:Navigation Safe Args
stürzt bei Verwendung nicht mehr ab Namespaces und keinAndroidManifest.xml
vorhanden ist. (I17ccf, b/227229815) - Aus Navigation
2.5.0-alpha04
rückportiert: Leerer String werden jetzt als gültige Argumente in tiefen Links. (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) - Aus der Navigation
2.5.0-alpha01
rückportiert: Es wurde ein Problem behoben, durch das beim Zugriff auf ein ViewModel überby navGraphViewModels()
ausonCreate()
eines Fragments würde mit einemIllegalStateException
fehlschlagen. (I8a14d) - Aus Navigation
2.5.0-alpha01
rückportiert:NavDeepLink
s decodieren Argumente nicht mehr unnötig zweimal, Das bedeutet, dass die ordnungsgemäß decodierten Argumente nun 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 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
NavType
-Klasse zu erweitern, um benutzerdefinierte NavTypes. Benutzerdefinierte Typen werden nur beim Erstellen Ihrer Navigationsdiagramm programmatisch, wie zum Beispiel ü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. Dies gilt auch dann, 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 eingeführt, mit der ein Ziel in einer Navigationsgrafik eindeutig anhand der route identifiziert werden kann. 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 dieses Ziel definiert, z.B. home
, profile/{userId}
, profile/{userId}/friends
usw. Wenn die Identität eines Ziels mit einem bestimmten Inhalt verknüpft ist, sollten diese dynamischen Argumente Teil der Route sein. 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
. - Die
getStartDestination()
API wurde zugunsten eingestellt vongetStartDestinationId()
.
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 Mit Accompanist Navigation Animation können die Wechsel zwischen Ein- und Ausblenden mithilfe von experimentellen Compose APIs gesteuert werden.
- 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 eines Prozesses 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 das Winden 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 jetzt hinzuPendingIntent.FLAG_IMMUTABLE
inPendingIntent
zurückgegeben und voncreatePendingIntent()
zurückgegeben. funktioniert diese API bei einer Ausrichtung auf Android 12 wie erwartet.- Die Navigation hängt jetzt davon ab,
Lebenszyklus
2.3.1
und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, zum Aktualisieren vonNavBackStackEntry
Lifecycle
als@MainThread
und richten Sie die Navigation auf den Hauptthread aus. Erzwingung der Richtlinie im Lebenszyklus2.3.0
eingeführt. - Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. - In
NavDeepLink
geparste Argumente betrachten jetzt Rautezeichen genauso wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten, wodurch verhindert wird, dass sich ein Argument über das Rautezeichen erstreckt. - Beim Generieren von Aktionen enthält der aus Safe Args generierte Kotlin-Code jetzt Argumente ohne Standardwerten vor denen mit Standardwerten als Parameter.
- Bei der Generierung von Argumenten werden jetzt Parameter ohne Standardwerte vor denen mit Standardwerten.
- 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
- Behoben in der Navigation
2.5.0-alpha01
: Durch den Zugriff auf ein erstelltesViewModel
-Objekt wurde behoben. überby navGraphViewModels()
ausonCreate()
eines Fragments schlägt mit einemIllegalStateException
fehl. (b/213504272) - Problem in Navigation
2.5.0-alpha01
behoben: Safe Args 2.4.0 ist nicht kompatibel. mit dem Android-Gradle-Plug-in 7.1.0 und höher. (b/213086135) - Wenn Sie Deeplinks mit mehreren verschachtelten Navigationsdiagrammen erstellen, werden nicht die vollständigen Backstack erstellen. (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 mithilfe von Ü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 mithilfe von Elementen 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
- Sowohl explizite als auch implizite
Für Deeplinks wird jetzt automatisch das Flag
saveState
hinzugefügt, wenn Sie zu einem anderen Diagramm navigieren. z. B.NavigationUI.setupWithNavController
und mit mehreren Back-Stacks 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 unten verschoben wurde
Lifecycle.State.CREATED
nach dem Wechsel zuLifecycle.State.STARTED
, wenn DieNavHost
wird direkt zursetContent()
der Aktivität hinzugefügt. (Ia5ac1, b/203536683) - Es wurde eine Race-Bedingung behoben, bei der
ein
DialogFragment
Ziel aus dem Back Stack, bevor das Dialogfeld tatsächlich angezeigt wurde wird das Dialogfeld nicht geschlossen, Absturz aufgetreten, wenn das fehlerhafte Dialogfeld manuell die vom Nutzer geschlossen wurden. (I687e5) - Das Problem, dass der
onNavDestinationSelected
API unterNavigationUI
würdetrue
zurückgeben, auch wenn Sienavigate()
dieses Navigationsdiagramms. Jetzt wird dieselbe Logik verwendet, intern vonsetupWithNavController
verwendet, um nur wählen Sie dieMenuItem
aus, die dem aktuellen mit demhierarchy
des Ziels. (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 bei Übergängen nicht mehr gelöscht. durch Wechseln zwischen denselben Bildschirmen unterbrochen wird (Id52d8, b/200817333).
NavDeepLink
-Argumente, für die Nullwerte zulässig sind, sind nicht mehr zulässig ist ein Standardwert erforderlich, wenn Sie DeeplinksNavDestination
s. (I5aad4, b/201320030)- NavBackStackEntries jetzt mit unterschiedlichen Lebenszyklen länger als gleich gelten. Das bedeutet, dass NavHost alle bei der Navigation mit „singleTop“ und beim erneuten Auswählen Menüpunkte unten. (I1b351, b/196997433)
- Problem mit
AbstractListDetailFragment
behoben die die Attributelayout_width
undlayout_weight
verursacht haben, im Listenbereich, der vononCreateListPaneView()
zurückgegeben wurde, falsch behandelt oder ignoriert werden. (f5fbf3) - Der visuelle Zustand der Dialogziele
wird korrekt mit dem von
DialogFragmentNavigator
synchronisiert, Bundesstaat. Das bedeutet, dass manueller Aufruf des asynchronendismiss()
API fürDialogFragment
löscht jetzt ordnungsgemäß alle Ziele des Dialogfelds über dem jetzt geschlossenen Dialogfeld. Dieses Dies hat keine Auswirkungen auf Fälle, in denen SiepopUpTo
oderpopBackStack()
, um das Dialogfeld zu schließen. (I77ba2) AbstractAppBarOnDestinationChangedListener
jetzt hat eindeutigere 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) rememberNavController()
nimmt jetzt eine optionale Gruppe vonNavigator
Instanzen, die demNavController
zurückgegeben, um eine bessere Unterstützung zu ermöglichen (optional) Navigatoren wie die von Navigation für Begleitpersonen. (I4619e)
Fehlerkorrekturen
- Die dynamische Navigation stürzt nicht mehr ab, wenn die Aktivität neu erstellt. (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
gewechselt 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 alle mitpopBackStack()
gespeicherten Status zu löschen oderpopUpToSaveState
. (I80a0f) - Sie können jetzt eine Liste mit Argumenten und/oder Deeplinks an Ihre Builder der verschachtelten Navigationsgrafik. Diese werden automatisch hinzu. (I8a470, b/182545357)
API-Änderungen
- Die Kotlin-DSL-Funktion
navArgument
ist jetzt Teil vonnavigation-common
stattnavigation-compose
. Dazu benötigen Sie Aktualisieren der Importe, um diese Funktion weiterhin zu verwenden. (I1d095)
Änderungen im Verhalten
- Bei der Generierung von Argumenten werden jetzt Parameter ohne Standardwerte vor denen mit Standardwerten. (I89709, b/198493585)
Fehlerkorrekturen
- Bei Verwendung von Navigation Compose werden NavGraphs nur
DESTROYED
, sobald alle ihre KinderDESTROYED
sind. (I86552, b/198741720) NavDeepLink
-Argumente, für die Nullwerte zulässig sind, sind nicht mehr zulässig erfordern einen Standardwert. (Ia14ef, b/198689811)setGraph()
mit einer neuen Grafik aufrufen werden jetzt auch alle gespeicherten Back-Stacks zum vorherigen Verhalten beim Pop-up des Back-Stacks zurück. (I97f96)- Folgendes Problem wurde behoben:
OnDestinationChangedListener
Instanzen und diecurrentBackStackEntryFlow
wurden nicht benachrichtigt, wenn mitlaunchSingleTop
. (Iaaebc)
Aktualisierung der Abhängigkeiten
- Die Navigationsfunktion ist nun abhängig von Aktivitätserstellung 1.3.1. (I05829)
- Die Navigationsfunktion ist nun abhängig von
Lebenszyklus-Ansichtsmodellerstellung
2.4.0-beta01
. (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
NavType
-Klasse zu erweitern, um benutzerdefinierte NavTypes. Benutzerdefinierte Typen werden nur beim Erstellen Ihrer Navigationsdiagramm programmatisch, wie zum Beispiel über die Navigation Graph Kotlin DSL (I78440, b/196871885)
Änderungen im Verhalten
- Beim Generieren von Aktionen enthält der aus Safe Args generierte Kotlin-Code jetzt Argumente ohne Standardwerten vor denen mit Standardwerten als Parameter. (Idb697, b/188855904)
- Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im
Uri
vorhanden sind. (#204, b/185527157)
Fehlerkorrekturen
getBackStackEntry
undpreviousBackStackEntry
werden verwendet composable() in Verbindung mitremember()
keinen Fehler mehr Ausnahme: Kein Ziel befindet sich im Back-Stack. (I75138, b/194313238)- Navigation Compose wird jetzt korrekt neu zusammengesetzt, wenn zurückgewechselt wird
Stapelargumente unter Verwendung von
launchSingleTop=true
. (Iebd69, b/186392337) - Es gibt dann kein
ArrayIndexOutOfBoundsException
mehr wennsetGraph
mit einem Diagramm mit 13 oder 29 Zielen aufgerufen wird. (I1a9f1, b/195171984) - Der SafeArgs-Java-Generator sollte kein Lint mehr auslösen Warnungen beim Generieren von Args-Klassen. (I1a666, b/185843837)
Externer Beitrag
- Vielen Dank, ospixd, dass du bei Deeplinks geprüft hast, ob alle erforderlichen Argumente (ohne Standardwerte) in
Uri
vorhanden sind. (#204, b/185527157)
Version 2.4.0-alpha07
18. August 2021
androidx.navigation:navigation-*:2.4.0-alpha07
wurde veröffentlicht. Version 2.4.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- „Navigation Compose“ speichert den Status jetzt korrekt nach Konfigurationsänderungen und wenn Sie Grafiken ändern, während Sie die verschiedenen Back-Stack-Funktion. (If5a3d, b/195141957)
- Erneute Auswahl desselben Tabs beim Verwenden der Navigation/Schreiben mit bei mehreren Back-Stacks nicht mehr zu einem leeren Bildschirm. (I860dc, b/194925622)
NavHost
beobachtet jetzt Änderungen beiLifecycle.State
vonNavBackStackEntry
s bedeutet, dass die Verwendung einerNavHost
in einem Fragment jetzt wenn sich der Lebenszyklus ändert, und nicht zu einem leeren Bildschirm führen. (I4eb85, b/195864489)- Beim Schließen einer
DialogFragment
konnte denNavController
-Status nach der Neuerstellung Ihrer Aktivität (d.h. nach einer Konfigurationsänderung). (Icd72b) - Es wurde ein Problem behoben, durch das Ziel des Dialogfelds das NavController-Element nicht Umgang mit der Schaltfläche „Zurück“ des Systems, den NavController, um die Zurück-Schaltfläche abzufangen auch wenn kein Back-Stack vorhanden ist. (If3b34)
- Safe-args generieren jetzt automatisch ein
toSavedStateHandle
. für Argumente, mit denen derViewModel
-Code getestet 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 der Funktion
NavHost
von „Navigation Compose“ wird jetzt als Teil der ersten Komposition. (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) - Es wurde ein Problem in „Navigation Compose“ behoben, bei dem
ein Deeplink
NavBackStackEntry
würde denRESUMED
. (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 bei der Navigation immer Überblendungen durch Ziele zu erreichen. (I07049, b/172112072)- Sie können jetzt Änderungen an der Grafik eines NavHosts vornehmen. Grafiken
mit demselben Start-Ziel und denselben Zielen in der Grafik
wird als gleich betrachtet und der Back-Stack von
NavController
wird nicht gelöscht. (I0b8db, b/175392262)
Fehlerkorrekturen
- Ein
NoSuchElementException
wurde behoben, wennpopBackStack()
vonLifecycleObserver
aus aufrufen anNavBackStackEntry
angehängt durch nicht wiederkehrende Aktualisierungen des NavController-Status. (I64621) AbstractListDetailFragment
erlaubt jetztSlidingPaneLayout
vollständig entfernt werden dein APK, wennAbstractListDetailFragment
nicht verwendet wird. (I611ad)NavGraph
undNavDestination
überschreiben jetzt die Gleichheitsmethode, werden zwei Objekte mit denselben Werten als gleichwertig betrachtet. (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
Alle aktuellen Aufrufe vonadd()
müssen in „push()“ geändert werden. (Ie89fc, b/172112072) - Benutzerdefinierte
Navigator
-Instanzen können jetzt die APIspushWithTransaction
undpopWithTransition
aufNavigatorState
verwenden, um ein Ziel asynchron zu ü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 jetzt hinzuPendingIntent.FLAG_IMMUTABLE
inPendingIntent
voncreatePendingIntent()
zurückgegeben. Dabei wird sichergestellt, funktioniert diese API bei einer Ausrichtung auf Android 12 wie erwartet. (If8c52)
Fehlerkorrekturen
- Es wurde ein Problem mit
<include-dynamic>
behoben: An die Grafik übergebene Argumente werden nicht korrekt übergeben. zur dynamisch eingefügten Grafik hinzu. (I3e115) - Fehler behoben:
NullPointerException
beim Navigieren zu einem Ziel mithilfe einesstring[]
-Arguments mit dem Standardwert@null
. (I1fbe8) - ProGuard-Regeln für
@Navigator.Name
hinzufügen, um Probleme zu beheben im R8 3.1-Full-Modus. (I2add9, b/191654433) - SafeArgs schlägt nicht mehr fehl, wenn Ihre App mit
Kotlin
Versionen vor dem1.5.0
. (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) - Eine in
Navigation
2.4.0-alpha01
wosetupActionBarWithNavController()
würde nicht um das Aufwärtssymbol korrekt zu entfernen, wenn Sie sich auf einem übergeordnetes Ziel an. (I5d443, b/189868637) - Ein
IllegalStateException
wurde behoben,popBackStack()
nach vorherigem Hochladen aufrufen der Stammgrafik des NavControllers. (I2a330, b/190265699) - ProGuard-Regeln für
by navArgs()
wurden jetzt korrekt festgelegt anwenden, wennnavigation-common
oder beliebige Artefakte verwendet werden die davon abhängen. (I68800, b/190082521) - Eine
OnDestinationChangedListener
, die Anrufenavigate()
, wenn jetzt zum ersten Mal ein Rückruf eingeht einen zweiten Callback mit dem Ziel zu erhalten, aufgerufen wurde. (Ie5f9e, b/190228815) - Safe Args stürzt nicht mehr ab, wenn es mit dynamischen Funktionen verwendet wird. und AGP 7.0 und höher. (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 Animationsattribute Verwenden Sie Attribute aus Ihrem Design mithilfe derapp:enterAnim="?attr/transitionEnter"
-Syntax. (I07bc1, b/178291654)
API-Änderungen
- Kotlin-DSL-Builder, die eine ID verwenden, wurden eingestellt und sollte durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479). (I9f58f, b/188816479)
Fehlerkorrekturen
DialogFragmentNavigator
verwendet jetzt denNavigatorState.pop()
API zur Benachrichtigung derNavController
Ein Dialogfeld wird durch das erneute Aufrufen des Systems geschlossen. außerhalb davon klicken, um sicherzustellen, Der StatusNavController
ist immer mit dem Status des Navigators. (I2ead9)Die Navigation gibt kein
ConcurrentModificationException
mehr zurück, wenn Die Liste derOnDestinationChangedListeners
wird mit einemonDestinationChanged
-Callback bearbeitet. (Ib1707, b/188860458)„Sichere Args“ stürzt bei Generierungsversuche nicht mehr ab. Richtungseigenschaften in Kotlin. (Id2416, b/188564435)
Die setId-Methode für NavDestination ist jetzt korrekt annotiert mit
@IdRes
, 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. Dieses Konzept wurde bisher nur in Navigation Compose verwendet. Inzwischen ist es Teil der zentralen Navigation 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
. (I59c73, b/172823546) - Die
getStartDestination()
API wurde zugunsten eingestellt vongetStartDestinationId()
. (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 mehrere unterschiedliche Ziele an die generierte Back Stack ab. (I3ee0d, b/147913689)- Factory-Funktionen für
DynamicNavHostFragment
hinzufügen (Icd515, b/175222619) - Die eindeutige ID eines
NavBackStackEntry
wird jetzt als Teil der ö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 davon ab,
Lebenszyklus
2.3.1
und markiert jetztsetGraph()
,popBackStack()
,navigateUp()
undnavigate()
, zum Aktualisieren vonNavBackStackEntry
Lifecycle
als@MainThread
und richten Sie die Navigation auf den Hauptthread aus. Erzwingung der Richtlinie im Lebenszyklus2.3.0
eingeführt. (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 mit identischem@Navigator.Name("dialog")
-Wert als Standard-DialogFragmentNavigator
. (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, der die zusammensetzbaren Zielanwendungen umschließt. (I85aca, b/175125483)
Fehlerkorrekturen
NavHost
funktioniert jetzt auch wenn keinOnBackPressedDispatcherOwner
gefunden wird, Dies ist bei der Vorschau vonNavHost
der Fall. (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 Folgendes zurück:ViewModelStoreOwner
, für die Nullwerte zulässig sind, um besser bestimmen zu können ob eineViewModelStoreOwner
in der aktuellen Zusammensetzung. APIs, die eineViewModelStoreOwner
erfordern, z. B. alsviewModel()
undNavHost
, wird trotzdem eine Ausnahme ausgelöst. wenn keinViewModelStoreOwner
festgelegt ist. (Idf39a)
Fehlerkorrekturen
- Die Funktion „Schreibassistent“ hängt jetzt von Navigation 2.3.4 ab mit der Fehlerbehebung für den Versuch, dasselbe ViewModelStore festzulegen, nach dem Festlegen des Graphen zurück. (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 dieOnBackPressedDispatcher
zu erhalten die amNavController
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 unterstützt und launchSingleTop-Operationen (If96c3, b/171468994)
- Es wurde eine Navigationsfunktion hinzugefügt, die eine Route statt einer ID, mit der Sie verschachtelte Grafiken in „Navigation Compose“ erstellen DSL (I1661d)
- startDestination kommt nun vor der Route in der Liste einer Parameter für einen NavHost (Ie620e)
- Sie können jetzt eine Grafik mit der Route als Ausgangspunkt erstellen Ziel außerhalb einer zusammensetzbaren NavHost-Funktion. (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 das Winden 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 du über
NavDeepLinkRequest
oderUri
navigierst, kannst du jetzt Folgendes tun: aufUri
, Aktion und MIME-Typ im resultierenden Ziel zugreifen, Der Intent aus Argumenten überKEY_DEEP_LINK_INTENT
wird abgerufen, was die Funktionalität widerspiegelt, die bereits für externe Deeplinks verfügbar ist. (I975c3, b/181521877)
Fehlerkorrekturen
OnBackPressedCallbacks
wurde einem Disponenten mit derNavBackStackEntry
als LifecycleOwner fängt jetzt ordnungsgemäß ab Wenn 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. (#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. (#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)
setViewModelStore
odersetLifecycleOwner
wird mit derselben Objekt, das bereits festgelegt wurde, ist nun ein Null-Vorgang (Idf491, b/177825470).- Safe-Args fügt jetzt Unterdrückungsanmerkungen zu den richtigen Methoden hinzu wenn Sie Java verwenden. (I8fbc5, b/179463137)
Externe Beiträge
- Vielen Dank an
JvmName
für die Pull-Anfrage. Damit sorgen Sie dafür, dass 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 beim Drücken von
NavBackStackEntry
bevorLifecycle
inCREATED
verschoben wird. (Ie3ba3) - Problem mit b/171364502 behoben, bei dem das Aufrufen einer
mit dem Wert
0
für Animationsressource zu folgendem Fehler geführt hat:ResourceNotFoundException
. (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).
- Bei der Navigation wird jetzt das aktuelle Ziel in die Ausnahme mit der Ausnahme „Kein Ziel mit ID“ aufgenommen, wodurch die Fehlerbehebung für Entwickler verbessert werden sollte. (b/168311416)
Fehlerkorrekturen
- „Safe Args“ umschließt die Rückgabezeile nicht mehr, auch wenn der generierte Argumentklassenname länger als 100 Zeichen ist. (b/168584987)
Abhängigkeitsänderungen
navigation-ui
ist jetzt abhängig von DrawerLayout 1.1.1 Achte darauf, dassNavigationUI
die Leiste öffnen kann auch wenn SieLOCK_MODE_LOCKED_CLOSED
oderLOCK_MODE_LOCKED_OPEN
(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 von Aktions- und Mime-Typen in Deeplinks: Deeplinks werden zusätzlich zu den bisher verfügbaren
app:uri
unterstützt, sodass jetztapp:action
undapp:mimeType
unterstützt werden.NavController
unterstützt jetzt die Navigation über eine beliebige Kombination dieser Felder über die neueNavDeepLinkRequest
-Klasse. Weitere Informationen finden Sie unter 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. Sie müssen Ihrem Manifest manuell eine entsprechende<intent-filter>
hinzufügen.
Version 2.3.0-rc01
10. Juni 2020
androidx.navigation:navigation-*:2.3.0-rc01
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 Sie das SuffixmoduleName
zumapplicationId
nach einem Punkt hinzufügen. Wenn dugraphPackage
anpassen musst, wird jetzt der Platzhalter${applicationId}
unterstützt. (b/152696768) - Die Navigationsgrafik Kotlin DSL stellt jetzt eine
defaultArguments
Map
für Aktionen zur Verfügung, 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 einesActivity
-Elements 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,AppBarConfiguration
verwendet jetzt die mit CustomView1.1.0-alpha02
eingeführteOpenable
-Oberfläche (die mitDrawerLayout
wird ab DrawerLayout1.1.0-alpha04
implementiert, sodass du benutzerdefinierte Implementierungen vonOpenable
mitNavigationUI
verwenden kannst. (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 Haupt-
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 stimmen nicht mit dem Deeplink überein. (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) - Sichere 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 Fenstereinblendungen 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, zur Navigation verwendet wird. 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. Diese nutzt die<deepLink>
, die Sie einem Ziel hinzugefügt haben, um zum richtigen Ziel zu gelangen. b/110412864
Verhaltensänderungen
- Die von NavigationUI bereitgestellten Standardanimationen wurden von 400 ms auf 220 ms beschleunigt, um der standardmäßigen Animationsgeschwindigkeit 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 du prüfen kannst, 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 wurde. b/111598096- Für sichere Argumente wird ein
android:defaultValue=”@null”
mit einer nicht angegebenenapp:argType
jetzt 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. Dadurch werden ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert. 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
. In dieser Version wird außerdem die Abhängigkeit vonandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
API-Änderungen
- Eine neue
Navigation.createNavigateOnClickListener(NavDirections)
-Methode wurde als Alternative zur Erstellung eines Klick-Listeners mit einem Ressourcen-ID und Bundle aus. b/127631752 FragmentNavigator.instantiateFragment
wurde verworfen. Standardeinstellung -Implementierung verwendet jetztFragmentFactory
zur Instanziierung von Fragmenten. b/119054429
Fehlerkorrekturen
- Navigation sendet keinen Null-
Bundle
mehr, wenn Argumente angehängt sind an ein Ziel, wodurch ein Problem bei der Verwendung vonandroid:defaultValue="@null"
behoben wird. b/128531879 - „Sichere Args“ ist jetzt von KotlinPoet 1.1.0 abhängig. Behebung eines Problems mit zu langen Paketnamen. 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 bietet neue Artefakte mit dem androidx.navigation
und ändert seine Abhängigkeiten in die AndroidX-Entsprechungen.
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 auf rc02 zu aktualisieren. und Ihre Abhängigkeiten so zu aktualisieren, neuen Abhängigkeiten.
Ihr Projekt muss zu AndroidX migriert, um 2.X-Versionen von Navigation. Navigation 1.0 (stabile Version) ist die letzte Version, die den Support Bibliotheksabhängigkeiten alle zukünftigen Entwicklungen über 1.0 hinaus 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 Parameter
nach dem classpath in der build.gradle
-Datei der obersten Ebene
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
- Problem behoben, bei dem
popBackStack()
ignoriert wurde, wenn die Stammgrafik hatte keine ID b/126251695 navigateUp()
verarbeitet jetzt korrekt die Navigation zurück zur Aufgabe deiner App Bei Aufruf nach der Verarbeitung eines Deeplinks ohneFLAG_ACTIVITY_NEW_TASK
b/126082008- Problem mit
ActivityNavigator.applyPopAnimationsToPendingTransition
behoben Es wird nicht die richtige Pop-Exit-Animation angewendet. b/126237567 - Im Kotlin-Code, der von Safe Args generiert wird, werden Kotlin-Keywords jetzt korrekt mit einem Escapezeichen versehen.
wie z. B.
in
undfun
im Paketnamen, der mit der KlasseR
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. Dieses enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Ein Problem bei der Verwendung von Fragmenten und
singleTop
-Navigationsvorgängen wurde behoben. b/124294805
Version 1.0.0-beta02
12. Februar 2019
Diese Version enthält eine Reihe kleinerer Verbesserungen und wichtiger Fehlerkorrekturen.
Neue Funktionen
- Sie können jetzt
0
alsandroid:defaultValue
fürreference
-Argumente verwenden. b/124248602
Verhaltensänderungen
- Genaue Deeplink-Übereinstimmungen haben jetzt Vorrang vor Deeplinks mit
.*
oder stimmt überein mit dem Argument. b/123969518
Fehlerkorrekturen
popBackStack()
undnavigateUp
geben jetzt beim Hervorheben korrektfalse
zurück das letzte Ziel im Back-Stack, die Behebung einer Regression in1.0.0-beta01
b/123933201- Die Navigation legt den
ClassLoader
jetzt bei der Wiederherstellung von Instanzstatus gespeichert. Dadurch werden Probleme bei der Verwendung von benutzerdefinierten Klassen in Der Status „Navigator
“ wurde gespeichert oder es wurden Argumente anNavDestination
gesendet. b/123893858 - Von Safe Args generierte NavArgs-Klassen stürzen beim Wiederherstellen einer
Argument
Parcelable[]
aus dem gespeicherten Instanzstatus. b/123963545 - „Safe Args“ bereinigt jetzt unnötige generierte Kotlin-Klassen korrekt. b/124120883
Version 1.0.0-beta01
4. Februar 2019
Dies ist die erste Betaversion von Navigation. die Navigation, Es wird davon ausgegangen, dass die API bis zur nächsten Version stabil bleibt, es sei denn, es wird ein kritisches Problem zu lösen. Diese Version enthält einige Fehlerbehebungen und Verhaltensänderungen.
Verhaltensänderungen
- Die Navigation stellt nun sicher, dass die Standardwerte der Argumente gleich behandelt werden.
während der Laufzeit und durch sichere Argumente. Daraus folgt, dass nur Argumente mit einem
app:argType="reference"
kann einen Standardwert haben, der auf eine andere Ressource verweist (z. B.@color/colorPrimary
). Es wird versucht, eine Referenzstandardeinstellung zu verwenden mit einem anderenapp:argType
-Wert zu einer Ausnahme führen, beim Parsen der Navigations-XML. b/123551990 - „Sichere Args“ hängt jetzt von Android-Gradle-Plug-in 3.3.0 ab aosp/888413
- Sichere Argumente hängen jetzt von Kotlin 1.3.20 ab aosp/888414
Fehlerkorrekturen
- Sichere Args können jetzt in Bibliotheks- und Funktionsmodulen aller Versionen verwendet werden des Android-Gradle-Plug-ins. b/121304903
- Regression behoben, die dazu führt, dass ein einzelner
popBackStack()
-Vorgang alle Kopien eines Ziels aus dem oberen Stapel ziehen, anstatt jeweils nur mit einem Ziel. b/123552990 - Der Status
FragmentNavigator
wurde desynchronisiert. Das Problem wurde behoben. durch den Status vonNavController
. Dies führt zu einemIllegalStateException
, wenn und versuchen, den Back-Stack wiederherzustellen. b/123803044 - Es wurde ein Problem behoben, bei dem der Zurück-Pfeil bei
NavigationUI
nicht funktionierte werden angezeigt, wenn ProGuard mit Verschleierung verwendet wird. b/123449431 - Der von Safe Args generierte Code verarbeitet jetzt die Verwendung eines
app:argType
korrekt. Verweist auf eine statische innere Klasse im Format.OuterClass$InnerClass
. b/123736741 - Der von Safe Args generierte Java-Code verarbeitet globale Aktionen jetzt korrekt und tief verschachtelten Zielen. 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
- Ein Problem wurde behoben, bei dem sichere Args die Directions-Klasse nicht importieren konnten. die mit globalen Aktionen verbunden sind. 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
by navArgs()
-Attribut-Delegaten für die verzögerte Ausführung verwenden. Verweis auf eine für Safe Args generierteNavArgs
-Klasse in einemActivity
abrufen oderFragment
. b/122603367 - Mit „Sichere Args“ können Sie jetzt Kotlin-Code generieren, indem Sie die
androidx.navigation.safeargs.kotlin
-Plug-in. Der Kotlin-Code wurde speziell für Kotlin-Module. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster, das weiterhin verfügbar ist über dem vorherigenandroidx.navigation.safeargs
-Plug-in. b/110263087
Änderungen im Verhalten
- Bei übereinstimmenden Deeplinks wird jetzt der Deeplink verwendet, die am besten passenden Argumente. b/118393029
- Durch den Aufruf von
setGraph()
auf einemNavController
wird jetzt der Back-Stack zurückgesetzt. b/111450672 - Unbekannte Deeplinks geben keinen
IllegalStateException
mehr aus, werden aber ignoriert, wodurch Probleme mit verschachtelten oder mehrerenNavHostFragment
s behoben werden. b/121340440
Nicht abwärtskompatible Änderungen
- Die Methode
NavOptions.applyPopAnimationsToPendingTransition()
für Das Anwenden von Pop-Animationen auf eine Aktivität wurde nachActivityNavigator
verschoben. b/122413117 - Sichere Args verhindern 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 - Sichere Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr. sollten Sie nur mit den generierten statischen Methoden interagieren. b/123031660
- Sichere Args generierte
NavDirections
-Klassen haben keinen öffentlichen Namen mehr -Konstruktor sollten nur über die statischen Methoden in den generierten Directions-Klassen. b/122963206 - Die zurückgegebene
Bundle
ausNavDirections
getArguments()
ist jetzt markiert@NonNull
statt@Nullable
. b/123243957
Fehlerkorrekturen
NavDeepLinkBuilder
verarbeitet nun mehrere gleichzeitigePendingIntent
s an dasselbe Ziel mithilfe der von Ihnen übergebenen Argumente. um die Eindeutigkeit zu ermitteln. b/120042732NavController
verarbeitetpopBackStack()
-Vorgänge jetzt korrekt, wenn mithilfe eines verschachteltenNavHostFragment
oder eines anderen untergeordneten Fragments mit einem Back Stack. 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 haben wie eine Aktion an einem Ziel. b/122962504
- Sichere 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 Sie versuchen, BenutzerdefinierteFragmentTransactions
aufNavHostFragment
ausführenFragmentManager
. 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 entschlossen, die Weiterentwicklung des
android.arch.navigation:navigation-testing
Artefakt. Es hat sich zwar bewährt,
hilfreich für interne Tests von NavController
. Wir empfehlen dringend,
alternative Teststrategien, z. B. die Simulation der NavController
-Instanz
um zu überprüfen, ob die richtigen navigate()
-Aufrufe ausgeführt werden. Dieses
wird ausführlich in der
Single Activity Talk beim AndroidDevSummit 2018
Außerdem werden wir weitere Dokumente
zu Tests entwickeln,
mit Navigation.
Neue Funktionen
MenuItem
s mitmenuCategory="secondary"
werden nicht mehr als Antwort angezeigt. Stack in Verbindung mitNavigationUI
-Methoden. b/120104424- In
AppBarConfiguration
können Sie jetzt ein Fallback festlegenOnNavigateUpListener
-Instanz, die aufgerufen wird, wennnavController.navigateUp()
Folgendes zurückgibt:false
b/79993862 b/120690961
Nicht abwärtskompatible Änderungen
- Wenn ein
<argument>
mit einemargType="reference"
verwendet wird, wird die Navigation nicht mehr aktiviert. parst die Referenz und gibt stattdessen die Rohressourcen-ID selbst an. b/111736515 onNavDestinationSelected()
jetzt standardmäßig zum Startziel Ihrer Navigationsgrafik zurück, damit sie mit densetup
-Methoden konsistent sind. HinzufügenmenuCategory="secondary"
zu deinemMenuItem
, damit der Back-Stack nicht geplatzt wird. aosp/852869- Die
fromBundle()
-Methoden der generiertenArgs
-Klassen verwenden jetzt eine Nicht-Null-WerteBundle
anstelle einerBundle
, für die Nullwerte zulässig sind aosp/845616
Fehlerkorrekturen
- Argumente werden jetzt korrekt aus Deeplinks als die richtige
argType
geparst. statt immer als Zeichenfolgen, b/110273284 - Die Navigation exportiert ihre öffentlichen Ressourcen jetzt korrekt. b/121059552
- Safe Args ist jetzt mit dem Android-Gradle-Plug-in 3.4 Canary 4 und höher kompatibel. b/119662045
Version 1.0.0-alpha08
6. Dezember 2018
Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Bei Verwendung mit
NavigationUI
-Methoden werden Ziellabels jetzt automatisch Ersetzen Sie{argName}
Instanzen inandroid:label
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 dieBundle
von Argumenten. aosp/837142- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen zugehörigen wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm der Grafik, um entfernen Sie alle Ziele aus dem Back Stack. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet folgende Möglichkeit:Intent.FLAG_ACTIVITY_
-Flags festlegen aosp/828140NavController.onHandleDeepLink
wurde inhandleDeepLink
umbenannt. aosp/836063- Viele Klassen und Methoden, die nicht für abgeleitete Klassen vorgesehen sind, z. B.:
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden alsfinal
festgelegt. aosp/835681 - Die verworfene Methode
NavHostFragment.setGraph()
wurde entfernt aosp/835684 - Die eingestellte Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Fragmenterstellung wurde in
FragmentNavigator
verschoben, um das Erstellen von Fragmenten zu erleichtern die Fragmenterstellung an eineFragmentFactory
delegieren. b/119054429 - Der Konstruktor für
NavGraphNavigator
nimmt keinenContext
mehr an aosp/835340 - NavigatorProvider ist jetzt
einer Klasse statt einer Benutzeroberfläche. Die
NavigatorProvider
, die vongetNavigatorProvider()
die Funktionsweise nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt.navigate()
überNavigator
anrufen . aosp/830663- Erhebliche Refaktorierung von
Navigator
, wodurchOnNavigatorNavigatedListener
nicht mehr erforderlich ist Stattdessen gibtnavigate
dieNavDestination
zurück, zu der der Nutzer navigiert ist. Navigator
-Instanzen können keine Pop-Ereignisse mehr anNavController
senden. Erwägen Sie mitOnBackPressedCallback
, um Drücken der Schaltfläche „Zurück“ abfangen undnavController.popBackStack()
aufrufen. aosp/833716
Fehlerkorrekturen
popUpTo
funktioniert jetzt einheitlich, wenn das Ziel ein<navigation>
-Element ist b/116831650- Es wurden mehrere Fehler behoben, die zu einem
IllegalArgumentException
führten. bei Verwendung verschachtelter Grafiken b/118713731 b/113611083 b/113346925 b/113305559 - Das Attribut
dataPattern
von<activity>
-Zielen wird jetzt mit Daten gefüllt Argumente aus Nicht-String-Argumenten durch Aufrufen vontoString()
b/120161365
Sichere Argumente
- Sichere Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Enum-Typen
kann mit dem enum-Literal ohne den Klassennamen einen Standardwert festlegen.
(z.B.
app:defaultValue="READ"
) 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
- Eine neue AppBarConfiguration können Sie festlegen, welche Ziele als oberste Ebene betrachtet werden sollen. Ziele. Aktualisierte Dokumentation . b/117333663
- Sie können jetzt Argumente an das Startziel Ihrer Grafik übergeben. b/110300470
- In Deeplinks werden jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen unterstützt. b/112806402
Nicht abwärtskompatible Änderungen
- Das
navigation-testing-ktx
-Modul ist in dennavigation-testing artifact
und wird nicht mehr veröffentlicht. - Das Artefakt
navigation-testing
ist jetzt vom Kotlin-Standard abhängig Bibliothek. Die API wurde geändert, um sie mit Kotlin konsistenter zu gestalten aber Sie können ihn weiterhin für Tests verwenden, die in Java geschrieben sind. - In Metadatenmanifesten registrierte Navigationsdiagramme werden nicht mehr unterstützt. b/118355937
- Aktionen können nicht mehr mit <activity> verknüpft werden. Ziele. 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
- Absturz behoben, der nach Konfigurationsänderungen bei der Verwendung von benutzerdefinierten Navigatoren. 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 zu einem <include>-Element wurde behoben. Diagramm. 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
- Es wurde ein Fehler behoben, der zu einem falschen Backstack-Verhalten führt. b/111907708
- Fehlerkorrektur in
equals()
der generierten Args-Klassen. 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.
<ph type="x-smartling-placeholder">
- </ph>
- 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
Ein
IllegalStateException
-Fehler beim Aufrufen von Navigation von Fragment-Lebenszyklusmethoden wurde behoben. b/79632233Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um Flackern bei der Verwendung von Animationen zu beheben. b/80160903
Problem mit
IllegalArgumentException
bei Verwendung von "defaultNavHost="true" behoben als untergeordnetes Fragment. b/79656847Ein
StackOverflowError
bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
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 bietet ein Framework für In-App-Entwicklungen.
Navigation. Diese erste Version ist 1.0.0-alpha01
.