navigationevent
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 23. September 2026 | 1.1.2 | 1.2.0-rc01 | - | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von „navigationevent“ hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie unter Google-Repository bei Maven.
Fügen Sie die Abhängigkeiten für die benötigten Artefakte in der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.2.0-rc01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.2.0-rc01") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.2
Version 1.2.0-rc01
23. September 2026
androidx.navigationevent:navigationevent-*:1.2.0-rc01 ist veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Abhängigkeitsupdates
- Die
androidx.lifecycle:lifecycle-runtime-Abhängigkeit wurde auf 2.10.0 aktualisiert. Diese Version ist erforderlich, damit gebündelte Lint-Prüfungen für den Lebenszyklus mit AGP-Version 9.5.0-alpha04 oder höher ausgeführt werden können. (I99bfd, b/556807521)
Version 1.2.0-alpha04
12. August 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha04 ist veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die neuen APIs
hasEnabledBackHandlersundhasEnabledForwardHandlerswurdenNavigationEventInputhinzugefügt, um die Richtungsmöglichkeiten unabhängig voneinander zu erfassen. (I772bf, b/123456789)
Fehlerkorrekturen
- Einführung der Fallback-Kontextdurchlaufsuche zur Auflösung von
LocalNavigationEventDispatcherOwner, wenn keine View-Baumbesitzer verfügbar sind. (I51e30, b/530641649)
Version 1.2.0-alpha03
29. Juli 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha03 ist veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
- Fügen Sie
titleundurlzuNavigationEventInfohinzu, um den Ziel-Titel und die Ziel-URL anzupassen. (Ie5619) - Fügen Sie die
NavigationEventDispatcherOwner-Factory in „navigationevent“ hinzu. (I740d3) - Die Annotation „ExperimentalNavigationEventApi“ wurde hinzugefügt, um die explizite Aktivierung neuer und instabiler APIs zu ermöglichen. (Ia5d25)
Fehlerkorrekturen
- BrowserInput in wasmJs-Zielen als experimentelle API öffentlich verfügbar machen. (Icc2a8)
Version 1.2.0-alpha02
15. Juli 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha02 ist veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
- Fügen Sie der
NavigationEventInput-Klasse diehasEnabledHandlers-Property hinzu, damit Entwickler den aktuellen Handler-Status direkt abfragen können, ohne auf Callbacks angewiesen zu sein. (I8ecec)
Fehlerkorrekturen
- Beheben Sie die Fallback-Weitergabe in
NavigationEventDispatcher. (I015f8, b/531988076)
Version 1.2.0-alpha01
01. Juli 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha01 ist veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
androidx.benchmarkhat jetzt einenminSdkvon 24. (Ic2a85)- Fügen Sie „onForwardCompletedFallback“ zu „TestNavigationEventDispatcherOwner“ hinzu, um das Tracking und Testen von nicht verarbeiteten Ereignissen für die Vorwärtsnavigation zu ermöglichen. (I6bbd7)
- „navigationEventInput“ zu „TestNavigationEventDispatcherOwner“ hinzugefügt, um das Simulieren von Navigationsereignissen in Tests zu vereinfachen. (I3ef48)
Fehlerkorrekturen
- API-Informationen werden bereinigt (Ia8066)
- Navigationsereignisse ignorieren, die an getrennte Eingaben gesendet werden. Bisher wurde beim Senden von Ereignissen an eine entfernte Eingabe eine
IllegalStateExceptionausgelöst. (I1a8bc, b/515890298) - Verhindern Sie die Duplizierung von Symbolen mit älteren JetBrains-Fork-Versionen beim Upgrade auf Compose Multiplatform 1.11.0. (I4cc4d)
Für dieses Artefakt sind keine Versionshinweise verfügbar.
Version 1.1
Version 1.1.2
17. Juni 2026
androidx.navigationevent:navigationevent-*:1.1.2 ist veröffentlicht. Version 1.1.2 enthält diese Commits.
Fehlerkorrekturen
- Aktualisieren Sie die Compose-Abhängigkeiten auf Version 1.11.2. (a5e9259)
Version 1.1.1
6. Mai 2026
androidx.navigationevent:navigationevent-*:1.1.1 ist veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Der No-Op-Befehl
NavigationEventHandlerwurde im Inspektionsmodus entfernt, um die Funktion „Vorhersagender Zurück-Vorgang“ in Android Studio-Vorabversionen zu aktivieren.
Version 1.1.0
22. April 2026
androidx.navigationevent:navigationevent-*:1.1.0 ist veröffentlicht. Version 1.1.0 enthält diese Commits.
Version 1.1.0-rc01
8. April 2026
androidx.navigationevent:navigationevent-*:1.1.0-rc01 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Das Compose-compileSdk wurde auf API 37 aktualisiert. Das bedeutet, dass bei der Verwendung von Compose mindestens AGP 9.2.0 erforderlich ist. (Id45cd, b/413674743)
Version 1.1.0-beta01
27. März 2026
androidx.navigationevent:navigationevent-*:1.1.0-beta01 ist veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
API-Änderungen
- Fügen Sie
OnForwardCompletedFallbackzuNavigationEventDispatcherhinzu, um ein Standardverhalten des Systems für nicht verarbeitete Ereignisse für die Vorwärtsnavigation zu ermöglichen. (Iac620, b/489138116)
Version 1.1.0-alpha01
25. Februar 2026
androidx.navigationevent:navigationevent-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung aller KMP-Ziele (Kotlin Multiplatform) in NavigationEvent-Compose. Die Auflösung des Eigentümers von
LocalViewentkoppeln, damit Plattform-Hosts einen Standardwert fürLocalNavigationEventDispatcherOwnerbereitstellen können, währendLocalViewals sicherer Fallback auf Android beibehalten wird. (Iae980, b/434940570, Iccf58)
API-Änderungen
- Fügen Sie die Erweiterungsfunktionen
NavigationEvent.toBackEvent()undBackEvent.toNavigationEvent()hinzu, um zwischenBackEventundNavigationEventvon Android zu konvertieren. (Ie3b71, b/477001292)
Version 1.0
Version 1.0.2
28. Januar 2026
androidx.navigationevent:navigationevent-*:1.0.2 ist veröffentlicht. Version 1.0.2 enthält diese Commits.
Fehlerkorrekturen
- Absturz bei Verwendung von
NavigationEventHandlerin Android Studio-Vorabversionen behoben. Der Handler erkennt jetzt den Inspektionsmodus und führt keine Aktionen aus. Dadurch kann die Vorschau ohne bereitgestellten Dispatcher gerendert werden. (I370f2, b/454313986).
Version 1.0.1
3. Dezember 2025
androidx.navigationevent:navigationevent-*:1.0.1 ist veröffentlicht. Version 1.0.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
ConcurrentModificationExceptionbehoben, der beim Schließen eines untergeordnetenNavigationEventDispatcherauftrat, z. B. eines, das mitrememberNavigationEventDispatcherOwner()erstellt wurde. (ec68a9, b/454363524)
Version 1.0.0
19. November 2025
androidx.navigationevent:navigationevent-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von Version 1.0.0:
Die Navigation Event-Bibliothek ist jetzt stabil. Navigation Event ist die AndroidX-Bibliothek für die Verarbeitung von Interaktionen auf Systemebene wie „Zurück“ und intelligente „Zurück“-Geste in Android (und anderen Plattformen).
Um
NavigationEvents zu verarbeiten, können Sie eine eigeneNavigationEventHandlerimplementieren, die die gewünschten Funktionen überschreibt. Anschließend müssen Sie den Handler einemNavigationEventDispatcherhinzufügen. Ab der Version Activity1.12.0implementiertComponentActivitydie neueNavigationEventDispatcherOwner-Schnittstelle, die einen sofort einsatzbereiten Dispatcher bietet :// The NavigationEventInfo provides information about a navigation state object CurrentInfo : NavigationEventInfo() // you can retrieve this from any component that is a NavigationEventDispatcherOwner // or you can instantiate your own custom dispatcher val dispatcher = myActivity.navigationEventDispatcher val myHandler = object : NavigationEventHandler<NavigationEventInfo>( initialInfo = CurrentInfo, isBackEnabled = true ) { override fun onBackStarted(event: NavigationEvent) { // Prepare for the back event } override fun onBackProgressed(event: NavigationEvent) { // Use event.progress for predictive animations } // This is the required method for final event handling override fun onBackCompleted() { // Complete the back event } override fun onBackCancelled() { // Cancel the back event } } dispatcher.addHandler(myHandler)Das Modul
navigationevent:navigationevent-composebietet die praktische Compose-FunktionNavigationBackHandler, die den Handler automatisch mit demNavigationEventDispatcherdes nächstgelegenenLocalNavigationEventDispatcherOwnerverbindet. Entwickler können das gewünschte Verhalten als Parameter angeben:object CurrentInfo : NavigationEventInfo() object PreviousInfo : NavigationEventInfo() val navEventState = rememberNavigationEventState( currentInfo = CurrentInfo, backInfo = PreviousInfo ) // Inside composition NavigationBackHandler( State = navEventState, isBackEnabled = true, // optional onBackCancelled = { // Cancel the back event }, // required onBackCompleted = { // Complete the back event } , )
Wenn Sie dieses Muster in Compose verwenden, lässt sich NavigationEventState ganz einfach nach oben verschieben, sodass es von verschiedenen Composables beobachtet werden kann (z.B. bei Navigation3, wo Sie den Status aus NavDisplay nach oben verschieben können).
Jede
NavigationEventDispatcherkann sowohl für Compose- als auch für Nicht-Compose-Fälle einen übergeordneten Dispatcher bereitstellen. So können Entwickler eine hierarchische Struktur erstellen, in der mehrere Dispatcher von einem einzelnen übergeordneten Element verwaltet werden können. Mit einem übergeordneten Dispatcher ist es relativ einfach, Gruppen von Dispatchern zu verarbeiten, die möglicherweise deaktiviert oder entfernt werden müssen:// Non-Compose val parentDispatcher = NavigationEventDispatcher() val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher) // Compose val composeChildDispatcher = rememberNavigationEventDispatcher( // This defaults to `LocalNavigationEventDispatcherOwner.current` // Must explicitly provide null to have an unparented dispatcher created here parent = NavigationEventDispatch() )Über die Bibliothek können auch Signale direkt über eine
NavigationEventInputan dieNavigationEventDispatchergesendet werden.NavigationEventInputs fungiert als „Eingabe“-Seite des Navigationssystems und übersetzt plattformspezifische Ereignisse (z. B. System-Zurück-Gesten oder Schaltflächenklicks) in standardisierte Ereignisse, die an einNavigationEventDispatchergesendet werden können. Dasnavigationevent:navigationevent-Modul bietet derzeit zweiNavigationEventInputs: ein allgemeineresDirectNavigationEventInput, mit dem beliebige Ereignisse gesendet werden können, und ein Android-spezifischesOnBackInvokedInput, mit dem einNavigationEventDispatcherdie System-Zurück- und die Vorhersage-Zurück-Geste unterstützen kann. Wenn Sie einen eigenen Dispatcher implementieren (anstatt den vonComponentActivitybereitgestellten zu verwenden), müssen Sie Ihre Eingabe manuell hinzufügen:val dispatcher = NavigationEventDispatcher() dispatcher.addInput(DirectNavigationEventInput()) dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
Version 1.0.0-rc01
5. November 2025
androidx.navigationevent:navigationevent-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Version 1.0.0-beta01
8. Oktober 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
API-Änderungen
- Korrigieren Sie die
FloatRange-Annotation fürNavigationEvent.touchXundNavigationEvent.touchY. Diese Werte stellen absolute Pixelkoordinaten dar und haben keine Obergrenze von1.0. (I4b205, b/445989313) - Refaktorieren Sie die zusammensetzbare Funktion
NavigationEventDispatcherOwnerinrememberNavigationEventDispatcherOwner. Die Funktion gibt jetzt direkt dieNavigationEventDispatcherOwnerzurück. Verwenden SieCompositionLocalProvider, um diesen Rechteinhaber für eine untergeordnete Komposition anzugeben. (I874b2, b/444446629)
Version 1.0.0-alpha09
24. September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 ist veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
- Verwenden Sie direkt das Singleton-Objekt
NavigationEventTransitionState.Idle, anstattIdle()zu instanziieren. (Ic7d9e, b/444734264) - Machen Sie Convenience-Konstruktoren intern. Rufen Sie Instanzen über das öffentliche
NavigationEventDispatcher.historyanstelle der direkten Konstruktion ab. (I3b7e0, b/444734264) - Erfordert die Erstellung von
NavigationEventStateüberrememberNavigationEventState; der Konstruktor ist jetzt intern. (Ie143c, b/444734264) - Verwenden Sie
onBackCompletedFallbackanstelle vonfallbackOnBackPressedund dem Konstruktorparameter. Das Verhalten ist unverändert. Die Methode wird nur bei abgeschlossenen, nicht verarbeiteten Back-Ereignissen aufgerufen. (Idabe9, b/444734264) - Der primäre Konstruktor von
NavigationEventHistory(mergedHistory, currentIndex)ist jetztinternal. Externe Nutzer müssen die öffentlichen Konstruktoren (entweder den leeren Konstruktor oder den partitionsbasierten Konstruktor) verwenden, um Instanzen zu erstellen. (I1c047, b/444734264) View.setViewTreeNavigationEventDispatcherOwnerakzeptiert jetzt auch einen Nullwert für den Inhaber (Ic9eb6, b/444436762)NavigationEventInfoist jetzt einabstract classanstelle einesinterface. Aktualisieren Sie alle benutzerdefinierten Implementierungen, damit sie von der Klasse (z. B.data class MyInfo : NavigationEventInfo()) abgeleitet werden. (I1e59c, b/444734264)- Die Legacy-Property
NavigationEventDispatcher.stateund die FunktiongetState<T>()wurden entfernt. Verwenden Sie die neuen, separaten Abläufedispatcher.transitionState(für den Fortschritt von Gesten) unddispatcher.history(für den Navigationsstack). (Ic2ceb, b/444734264) - Der
NavigationEventInput.onInfoChanged(...)-Callback wird ersetzt. Implementieren Sie den neuenonHistoryChanged(history: NavigationEventHistory)-Callback, um Updates als einzelnesNavigationEventHistory-Objekt zu erhalten. (I23e0b, b/444734264) - Führen Sie eine neue globale
NavigationEventDispatcher.historyStateFlowein. Bei diesem nicht generischen Ablauf können Beobachter nur Änderungen am Navigationsstapel abonnieren. Außerdem bleibt er während des Fortschritts der Geste stabil. Dies ist das Gegenstück zutransitionState. (I1db10, b/444734264) - Führen Sie eine neue globale
NavigationEventDispatcher.transitionStateStateFlowein. Dieser nicht generische Ablauf ermöglicht es Beobachtern, nur den physischen Gestenzustand (Leerlauf/Wird ausgeführt) zu abonnieren, unabhängig vom Verlauf. (I171fa, b/444734264) - Stellen Sie die Klasse
NavigationEventHistoryStatevor. Sie dient als Haupt-API zum Beobachten des Navigationsverlaufs, unabhängig vom Gestenstatus. (I81ca5, b/444734264) NavigationEventist jetzt als@Immutablegekennzeichnet, sodass der Compose-Compiler Recompositions optimieren kann. (If78c7, b/444734264)- Die Handler-APIs für
navigationevent-composewurden aktualisiert.NavigationEventHandlerundNavigationBackHandler(und Varianten) unterstützen jetzt eine neue Überladung, die ein gehobenesNavigationEventStateakzeptiert. Die einfachen Überladungen (mitcurrentInfo) bleiben erhalten und verwenden jetzt intern dieses neue Statusmodell. (Ic3251, b/444734264) - Fügen Sie der
navigationevent-compose-Bibliothek den neuen@Stable-NavigationEventState<T>-Status-Holder hinzu. Dieses Objekt kombiniert den lokalen Verlauf mit dem lokalen Gestenstatus und ist die primäre Verbindung zwischenrememberNavigationEventStateundNavigationEventHandler. (Ifb69f, b/444734264) - Fügen Sie
NavigationEventHandlereine neue öffentliche, schreibgeschütztetransitionState: TransitionState-Property hinzu. Handler haben jetzt einen eigenen Übergangsstatus, der von externen Systemen beobachtet werden kann. (I9acd2, b/444734264) - Die neue versiegelte Klasse
TransitionStateDiese API dient als Kern-API zum Beobachten des Gestenzustands, unabhängig vom Navigationsverlauf. (Id4beb, b/444734264) currentInfo,backInfoundforwardInfoals öffentliche schreibgeschützte Attribute fürNavigationEventHandlerverfügbar machen. (Ia7636, b/444734264)- Bei Implementierungen von
NavigationEventHandlermuss jetzt eininitialInfo: T-Wert für den Basiskonstruktor angegeben werden. (Idcfea, b/444734264) - Ersetzen Sie
OnBackInvokedInputdurchOnBackInvokedOverlayInputoderOnBackInvokedDefaultInput. (I5323f, b/428948766) - Markiere
NavigationEventStateals@Immutable. Dadurch wird die Leistung von Compose verbessert, da komponierbare Funktionen, die diesen Zustand beobachten, die Neukomposition korrekt überspringen können. (I399c8) - Benennen Sie
NavigationEventInfo.NotProvidedinNavigationEventInfo.None;um, um Verweise zu aktualisieren. Keine Verhaltensänderung. (I5e2d4) NavigationEventInfoist jetzt als@Immutablegekennzeichnet, sodass der Compose-Compiler Recompositions optimieren kann. (I7c112)- Verbesserung der Java-Ergonomie durch eine benutzerfreundliche Schnittstelle für den Fallback für die Vervollständigung im Hintergrund. (I8a860)
- Benenne
onHasEnabledHandlerChangedinonHasEnabledHandlersChangedum. Damit wird klargestellt, dass im Callback der gemeinsame Aktivierungsstatus aller Handler gemeldet wird, nicht nur der eines einzelnen. (I1af61, b/443711297) - Entfernen Sie
hasEnabledHandler()ausNavigationEventDispatcher;und verwenden Sie stattdessenNavigationEventInput.onHasEnabledHandlersChanged. (Idef72, b/443711297) - Fügen Sie den
onInfoChanged-Callback zuNavigationEventInputhinzu, um Listener über Änderungen am Navigationsverlauf zu benachrichtigen. Dadurch wird der vollständige Kontext der aktuellen, vorherigen und nächsten Stacks bereitgestellt, sodass Eingaben auf die Kontextinformationen reagieren können. (I69a8b, b/443282983) - Erstelle
swipeEdgevonNavigationEventals@IntDef(Icee54, b/443950342) - Fügen Sie
NavigationEventDispatcher.addInputden Parameterpriorityhinzu, um einen Dispatcher auf eine Priorität zu beschränken. Ereignisse wieonHasEnabledCallbacksChangedwerden jetzt nur ausgelöst, wenn sich Rückrufe mit dieser Priorität ändern. (I3e488, b/443711297) - Benennen Sie den
NavigationEventDispatcher-Parameter zur besseren Übersichtlichkeit vonparentDispatcherin „parent“ um. (Id4f1f, b/443801782) NavigationEventPriorityfür Java-Nutzer zugunsten von@IntDefentfernen (I10a9f, b/440514265)- Navigationshandler-Vertrag erzwingen. Wenn in Ihrem
NavigationEventHandlerisBackEnabledoderisForwardEnabledauftruefestgelegt ist, müssen Sie jetztonBackCompletedbzw.onForwardCompletedüberschreiben. Die Standardimplementierungen lösen jetzt eine Ausnahme aus, um stille Fehler zu verhindern. (I17c62) - Gültige Prioritätswerte beim Hinzufügen von Navigationsereignis-Handlern erzwingen Wenn Sie
addHandlermit einer nicht unterstützten Priorität aufrufen, wird jetzt eineIllegalArgumentExceptionausgelöst. So erhalten Sie sofort Feedback zur falschen Verwendung auf allen Zielplattformen. (I3c474)
Fehlerkorrekturen
- Machen Sie
addHandleridempotent und ignorieren Sie doppelte Registrierungen. (I052aa, b/444734264) NavigationEventState-Attribute während der Neuzusammenstellung synchron halten (Ib3b4d, b/444734264)NavigationEventInputsmuss die aktuellen Kontextinformationen (aktuell, zurück, vorwärts) sofort nach der Registrierung erhalten. (Ie65bf, b/443282983)
Version 1.0.0-alpha08
10. September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
Neue Funktionen
- Einführung einer lambdabasierten
NavigationEventHandler-API, die den flowbasierten Handler ersetzt. Rückwärts- und Vorwärtsgesten werden mit einfachen Callbacks anstelle von Flows verarbeitet. Das reduziert den Boilerplate-Code und vermeidet Probleme mit dem Abbrechen.NavigationBackHandlerundNavigationForwardHandlerals gezielte Convenience-APIs bereitstellen Entfernen Sie die Flow-basierteNavigationEventHandlerund migrieren Sie zu den neuen Callbacks. (I23bac, b/436248277) - Ermögliche es passiven Zuhörern, über kombinierte Informationen zum Zurückgehen auf den gesamten Navigations-Backstack zuzugreifen. Ermögliche es Benutzeroberflächen, Vorschauen und einen verschachtelten Navigationsverlauf zu rendern, anstatt auf den obersten Callback beschränkt zu sein. (I7a510, b/436248277)
- Einführung eines expliziten Modells für „Zurück“, „Aktuell“ und „Vorwärts“, um den Navigationsstatus zu verdeutlichen und die Vorwärtsnavigation mit verschachtelten Handlern zu unterstützen. (Ib86da, b/420443609)
- Fügen Sie
onForward*-Methoden undisForwardEnabledzuNavigationEventCallbackhinzu. (Ic100f, b/436248290) - Unterstützung für die Vorwärtsnavigation in
NavigationEventInputhinzufügen. (I5734b)
API-Änderungen
- Aktivieren Sie das Testen von Ereignissen für die Vorwärtsnavigation mit
TestNavigationEventCallback. Verwenden Sie die HooksisForwardEnabledundonForward*. (I21fb5, b/420443609) - Benennen Sie
onEvent*-Callbacks inNavEventinonBack*um. (I228b3, b/436248290) SwipeEdgein eine Inline-Klasse konvertieren (Id5e01)- Machen Sie die
navigationevent-Bibliothek mit Java kompatibel. Alle öffentlichen APIs sind jetzt vollständig über Java-Code zugänglich, was eine nahtlose Integration in Projekte mit mehreren Sprachen oder reine Java-Projekte ermöglicht. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - API-Rollen werden durch Umbenennen von
NavigationEventCallbackinNavigationEventHandlerverdeutlicht. Diese Änderung entspricht besser dem Zweck der Klasse, mehrstufige Navigationsgesten zu verarbeiten. Die entsprechendeaddCallback-Methode ist jetztaddHandler. (I2492a, b/443040331)
Fehlerkorrekturen
- Verhindern, dass der „Zurück“-Fallback bei der Vorwärtsnavigation ausgeführt wird. (I74814, b/436248290)
- Unterstützung für die Vorhersage der Vorwärtsnavigation hinzugefügt. Die
NavigationEvent-APIs verarbeiten jetzt sowohl „Zurück“- als auch „Vorwärts“-Gesten und ermöglichen so einheitliche Animationen für beide Navigationsrichtungen. (Idc98c, b/436248290) - Verhindert einen
IllegalStateException-Absturz während der Neuzusammensetzung, wenn ein untergeordnetesNavigationEventDispatcherOwner-Element entfernt wird. (Iff50c, b/412629020) - Passive Listener können jetzt über kombinierte Back-Informationen auf den gesamten Navigations-Backstack zugreifen. So können Benutzeroberflächen Vorschauen und den verschachtelten Navigationsverlauf rendern, anstatt auf den obersten Callback beschränkt zu sein. (I7a510, b/436248277)
Version 1.0.0-alpha07
27. August 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
NavigationEventDispatcher.onHasEnabledCallbacksChangedentfernen. (I50e97)NavigationEventCallback.onEventCompleted()abstrahieren. (I36b38)- Ändern Sie die
NavigationEventCallback#on*-Methoden inprotected. Aktualisieren Sie den Ländercode, um sie zu überschreiben. (I6b691) - Benennen Sie
DirectNavigationEventInput-Funktionen um. (Iffb62) - Benenne
NavigationEventInput.onAttachinonAddedum. (I2d0b8) - Benenne
NavigationEventInput.onDetachinonRemovedum. (I2d0b8) - Benenne
NavigationEventInputHandlerinNavigationEventInputum. (I676a4) - Fügen Sie
@EmptySuperzuNavigationEventInput.onHasEnabledCallbacksChangedhinzu. (If9853) - Implementieren Sie
onAttachinNavigationEventInputHandler. (I03648) - Implementieren Sie
onDetachinNavigationEventInputHandler. (I03648) - Standardmäßig ist
NavigationEventCallbackbeim Erstellen aktiviert. (Ic0188) - Ersetzen Sie
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackdurchNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - Hauptthread für
NavigationEventDispatcher.addInputerforderlich. (Ic2930) - Hauptthread für
NavigationEventDispatcher.removeInputerforderlich. (Ic2930) Dispatcher.addOnHasEnabledCallbacksChangedCallbackentfernen. Ersetzen durchDispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Hinzufügen eines bereits angehängten oder das Entfernen eines nicht angehängten Handlers eine falsche Lebenszykluslogik ausgelöst hat. (I9e47b)
Version 1.0.0-alpha06
13. August 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 ist veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Neue Funktionen
Passive Listeners API
Sie können jetzt benutzerdefinierte Kontextinformationen von einem beliebigen Navigationshost übergeben und passiv auf Änderungen des Gestenzustands an einer beliebigen Stelle in der Benutzeroberfläche warten. Dadurch werden kontextbezogene Animationen für die intelligente „Zurück“-Touchgeste und andere gestengesteuerte Navigationsfunktionen ermöglicht.
Diese Funktion besteht aus zwei Teilen:
- Informationen bereitstellen: Verwenden Sie
NavigationEventInfo, um benutzerdefinierte Daten zu übertragen. - Status der Verarbeitung: Verwenden Sie
dispatcher.state(NavigationEventState), um den Fortschritt und Kontext der Geste zu beobachten.
NavigationEventCallbackstellt jetzt die MethodesetInfo(currentInfo, previousInfo)zur Verfügung, um den Kontext für Gesten in einem Aufruf festzulegen (I1d5e7, b/424470518).NavigationEventHandlerfügt eine neue Überladung hinzu, diecurrentInfoundpreviousInfoakzeptiert. Damit ist sie die primäre API für die Bereitstellung von Kontext in Compose-Apps (I6ecd3, b/424470518).
Beispiel:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatchermacht jetztdispatcher.stateunddispatcher.getState<T>()verfügbar (If7fae, Ia90ca, b/424470518). Mit diesenStateFlow-basierten APIs kann jede Benutzeroberfläche den Fortschritt von Gesten und Kontextdaten beobachten, ohne das Ereignis direkt zu verarbeiten.
Beispiel:
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
Fügen Sie der
NavigationEventState-Property (I7b196) dieprogress-Property hinzu, dielatestEvent.progresszurückgibt, wenn sie in Bearbeitung ist, und andernfalls0F:val progress = state.progressFügen Sie die zusammensetzbare Funktion
NavigationEventDispatcherOwnerhinzu, umNavigationEventDispatcher-Instanzen hierarchisch zu erstellen, zu verknüpfen und zu verwerfen. Aktivieren Sie die dynamische Steuerung des aktivierten Status des Dispatchers und die automatische Bereinigung.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API-Änderungen
- Der Parameter
isPassthroughwurde ausNavigationEventCallbackentfernt. (I99028, b/424470518) NavigationEventState-Konstruktoren sind jetzt intern. Aktualisieren Sie für Tests den Status (Standardwert istIdle) über dieDirectNavigationEventInputHandler. Rufen SiehandleOnStartedoderhandleOnProgressedauf, um den Status aufInProgresszu setzen, undhandleOnCompletedoderhandleOnCancelled, um ihn aufIdlezurückzusetzen. Verwenden SieNavigationEventCallback.setInfo, umNavigationEventInfozu aktualisieren. (I93dca, b/424470518)NavigationEventwurden Standardparameter hinzugefügt, um die Instanziierung zu vereinfachen und Tests zu vereinfachen, die anstelle vonTestNavigationEventverwendet werden sollten. (I5dc49, I232f4)- Es wurde ein
TestNavigationEventCallbackzum Testen von Navigationsereignissen mit bestimmten aktuellen/vorherigen Status hinzugefügt. (Idd22e, b/424470518) NavigationEventInputHandlerwurde in eine abstrakte Klasse umgewandelt, um die vorherigeAbstractNavigationEventInputHandlerdurch eine Implementierung inDirectNavigationEventInputHandlerzu ersetzen (Iadde5, Ifed40I3897c, b/432616296, b/435416924)- Die Präfixe der
send*-Funktionen inNavigationEventInputHandlerwurden inhandle*umbenannt. (Iffcaf) OnBackInvokedInputHandlerumfasst jetzt die neuabstractNavigationInputHandler. (Ib45aa)NavigationEventDispatcherOwnerwurde so geändert, dass ein übergeordneter Dispatcher erforderlich ist, an den Sienullexplizit übergeben müssen, um einen Root-Dispatcher zu erstellen. (Ia6f64, b/431534103)
Fehlerkorrekturen
- Verbesserte Effizienz durch Vermeidung von Sammlungskopien in
NavigationEventDispatcher.dispose(). (I4ab09) - Ein Problem wurde behoben, bei dem
NavigationEventHandlernicht richtig auf Änderungen des aktivierten Status reagierte. (Ia5268,I19bec, I5be5c, b/431534103)
Docs-Updates
- KDocs für
NavigationEventwurden erweitert, um die Rolle als einheitlicher Ereignis-Wrapper zu verdeutlichen und das Verhalten von Eigenschaften für verschiedene Navigationstypen (Gesten, Klicks) zu beschreiben. (I91e8d) - Die Dokumentation für die Compose-APIs zur Verarbeitung von Systemrückgaben (
BackHandler,PredictiveBackHandler,NavigationEventHandler) wurde aktualisiert, um das Verhalten speziell in Bezug auf die Reihenfolge der Callbacks zu beschreiben. (I7ab94)
Abhängigkeitsupdate
NavigationEventhängt jetzt von Compose Runtime 1.9.0-beta03 ab, wodurch dasnavigationevent-compose-Artefakt alle KMP-Ziele unterstützt. (Ia1b87)
Version 1.0.0-alpha05
30. Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Unterstützung von Über- und Unterordnungen:
Ein NavigationEventDispatcher kann jetzt übergeordnete und untergeordnete Dispatcher haben, wodurch eine hierarchische Baumstruktur entsteht. So können Navigationsereignisse flexibler über komplexe Compose-UI-Komponenten hinweg weitergegeben und verwaltet werden, indem die strukturelle Hierarchie der Benutzeroberfläche durch verkettete Dispatcher abgebildet wird. (I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
Die hierarchische isEnabled-Property ermöglicht die Top-down-Steuerung eines Dispatchers. Wenn isEnabled für einen Dispatcher auf false festgelegt ist, werden alle untergeordneten Dispatcher automatisch deaktiviert. Mit dieser Funktion lassen sich ganze Zweige des Navigationsereignissystems effizient deaktivieren. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Außerdem wird bei der Property isEnabled für NavigationEventCallback jetzt der aktivierte Status des zugehörigen Dispatchers berücksichtigt. Das bedeutet, dass ein Rückruf nur dann als aktiviert gilt, wenn sowohl der Rückruf selbst als auch sein Dispatcher (einschließlich seiner übergeordneten Elemente) aktiviert sind. So wird eine konsistente hierarchische Steuerung der Rückrufaktivierung gewährleistet. (I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
Es wurde eine neue dispose()-Methode eingeführt, um Dispatcher und ihre untergeordneten Elemente richtig zu bereinigen. Durch den Aufruf von dispose() werden Listener beendet, um Speicherlecks zu verhindern, alle untergeordneten Dispatcher rekursiv verworfen, alle für den Dispatcher registrierten Callbacks entfernt und die Verknüpfung mit dem übergeordneten Element aufgehoben. So wird sichergestellt, dass Ressourcen korrekt freigegeben werden, wenn Dispatcher nicht mehr benötigt werden. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Wenn eine öffentliche Methode für einen verworfenen Dispatcher aufgerufen wird, wird sofort eine IllegalStateException ausgelöst. So werden stille Fehler vermieden und Entwickler können eine unsachgemäße Verwendung während der Entwicklung erkennen. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Hinweis:Wir führen ein neues NavigationEventDispatcherOwner-Composable ein, das automatisch einen untergeordneten Dispatcher in Compose UI verwaltet (siehe aosp/3692572). Diese Änderung wurde jedoch nicht in den aktuellen Release aufgenommen und ist für den nächsten geplant.
Navigation Testing Library
- Das Modul
navigationevent-testingwurde hinzugefügt, um spezielle Testdienstprogramme für die Bibliotheknavigationeventbereitzustellen. (0e50b6) - Fügen Sie die gefälschte Utility-Klasse
TestNavigationEventCallbackzum Testen hinzu. Es werden Callback-Methodenaufrufe aufgezeichnet und empfangeneNavigationEvent-Elemente zur Unterstützung der Bestätigung gespeichert. (4a0246) - Fügen Sie die
TestNavigationEvent-Fake-Dienstfunktion hinzu, umNavigationEvent-Instanzen mit Standardwerten zu erstellen. Dadurch werden Unit-Tests für die Verarbeitung von Navigationsevents vereinfacht. (3b63f5) - Fügen Sie die gefälschte Utility-Klasse
TestNavigationEventDispatcherOwnerzum Testen hinzu. Es werden Fallback- und Ereigniszahlen für den geänderten Aktivierungsstatus erfasst, um die Überprüfung von Interaktionen in Tests zu unterstützen. (c8753e)
API-Änderungen
- Verschieben Sie
NavigationEventInputHandlervonandroidMainnachcommonMain, damit es im gemeinsamen KMP-Code verfügbar ist. Neuepublic send*-Methoden zum Senden von Ereignissen hinzufügen Die Dispatch-Funktionen fürNavigationEventDispatcherwurden vonpubliczuinternalgeändert. Nutzer müssen jetztNavigationEventInputHandlerverwenden, um Ereignisse zu senden. (Ia7114) - Benenne
NavigationInputHandlerinOnBackInvokedInputHandlerum. (I63405)
Fehlerkorrekturen
- Faktorisieren Sie
NavigationEventDispatcherneu, um den Aufwand zu reduzieren, indem Sie die Zuweisung von Zwischenlisten vermeiden und die Leistung der Callback-Weiterleitung verbessern. (I82702, I1a9d9) - Fügen Sie
@FloatRange-Annotationen zu den FelderntouchX,touchYundprogressinNavigationEventhinzu, um gültige Wertebereiche zur Kompilierzeit zu erzwingen und die API-Sicherheit zu verbessern. (Iac0ec)
Version 1.0.0-alpha04
2. Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
implementedInJetBrainsForkwurde fürnavigationevent-composeverwendet und eincommonStubs-Ziel wurde hinzugefügt, um den Compose-Konventionen zu entsprechen. Von JetBrains angeforderte Änderung. (f60c79)- Die Anwendung des Compose-Compiler-Plug-ins für Kotlin/Native wurde korrigiert, um die korrekte Stub-Generierung zu gewährleisten. Es gibt keine Auswirkungen auf öffentliche APIs oder das Verhalten. (1890c9)
Version 1.0.0-alpha03
18. Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde ein neues
navigationevent-compose-Modul eingeführt, um Jetpack Compose-Funktionen in dernavigationevent-Bibliothek zu unterstützen. (980d78) NavigationEventCompose hat eine neueLocalNavigationEventDispatcherOwner-Komposition hinzugefügt. Es wird ein Nullable-Wert zurückgegeben, um besser feststellen zu können, ob er in der aktuellen Komposition verfügbar ist.NavigationEventHandlergibt jetzt einen Fehler aus, wenn der zugrunde liegende Inhaber nicht gefunden wird. (62ffda)NavigationEventCompose hat eine neueNavigationEventHandler-Composable-Funktion zum Verarbeiten von Ereignissen für die vorhersagende Zurück-Geste hinzugefügt. Sie enthält einFlowvonNavigationEvent-Objekten, die in der von Ihnen bereitgestellten Lambda-Funktion für das Aussetzen c42ba6 erfasst werden müssen:
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
API-Änderungen
- Jede
NavigationEventCallbackkann jetzt nur noch bei einemNavigationEventDispatcherregistriert werden. Wenn Sie sie mehreren Dispatchern hinzufügen, wird einIllegalStateExceptionausgegeben. Dieses Verhalten unterscheidet sich vonOnBackPressedDispatcher, das mehrere Dispatcher zulässt. (e82c19) isPassThroughwurde zu einemvalgemacht, um Mutationen während der Navigation zu verhindern, die die Weiterleitung vonNavigationEventunterbrechen könnten. (I0b287)
Version 1.0.0-alpha02
4. Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Ersetzen Sie den sekundären Konstruktor von
NavigationEventDispatcherdurch Standardargumente. (I716a0) - Entfernen Sie die Prioritätseigenschaft aus
NavigationEventCallback. Übergeben Sie die Priorität stattdessen anNavigationEventDispatcher.addCallback(). (I13cae)
Fehlerkorrekturen
- Ein
ConcurrentModificationExceptionwurde behoben, das auftreten konnte, wennNavigationEventCallback.remove()aufgerufen wurde, weil die interne Liste der schließbaren Elemente gleichzeitig geändert wurde. (b/420919815)
Version 1.0.0-alpha01
20. Mai 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die
androidx.navigationevent-Bibliothek bietet eine KMP-First-API für die Verarbeitung von System-Back-Vorgängen sowie Predictive Back. DieNavigationEventDispatcherdient als gemeinsame API zum Registrieren einer oder mehrererNavigationEventCallback-Instanzen für den Empfang von System-Back-Events. - Diese Ebene liegt unter den zuvor veröffentlichten APIs in
androidx.activityund soll ein weniger meinungsbezogener Ersatz für die Verwendung der Activity APIs in Komponenten höherer Ebene oder die direkte Verwendung derOnBackInvokedDispatcherAPIs des Android-Frameworks sein. Dieandroidx.activity-APIs wurden im Rahmen von Activity 1.12.0-alpha01 auf Basis der Navigation Event-APIs neu geschrieben.