navigation3
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 15 lipca 2026 r. | 1.1.4 | - | - | 1.2.0-alpha06 |
Deklarowanie zależności
Aby dodać zależność od navigation3, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w artykule Repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.2.0-alpha06" implementation "androidx.navigation3:navigation3-ui:1.2.0-alpha06" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.2.0-alpha06") implementation("androidx.navigation3:navigation3-ui:1.2.0-alpha06") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Nie ma informacji o wersji tego artefaktu.
Navigation3 w wersji 1.2
Wersja 1.2.0-alpha06
15 lipca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha06 Wersja 1.2.0-alpha06 zawiera te zmiany.
Poprawki błędów
- Poprawiliśmy
UriDeepLinkMatcherdokumentację dotyczącą fragmentów URI, aby wyjaśnić, że fragmenty z symbolami wieloznacznymi będą pasować do dowolnych danych wejściowych, ale nie będą one wyodrębniane jako argumenty. (I5ad9b, b/524677091) - Naprawiono problem z dopasowywaniem warunku
UriDeepLinkMatcherdo żądania, jeśli wzorzec URI nie zawiera schematu lub nie zaczyna się od podwójnego ukośnika. Na przykładwww.example.com/homebędzie teraz pasować dohttp://www.example.com/home. (Ia6b65, b/522791926)
Wersja 1.2.0-alpha05
1 lipca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.
Nowy interfejs API
- Dodano interfejs API
rememberResultEventBus, który zwraca obiektResultEventBus, który można przekazać do interfejsurememberResultEventBusNavEntryDecorator. Umożliwia to podniesienieResultEventBuspozaResultEventBusNavEntryDecorator. (Ia655b, b/516995400)
DeepLinkRequest
- Dodano 2 konstruktory zgodne z KMP – jeden przyjmujący DeepLinkUri, a drugi przyjmujący ciąg znaków URI. (I3c088, b/513200887, b/522194187)
- (Tylko Android) Dodano konstruktor, który przyjmuje obiekt
Intent. (Ia0498, b/513200887, b/522194187) - Wszystkie konstruktory mają dodatkowe pole
extras, w którym można umieścićMap<String, Any>, aby dołączyć dodatkowe informacje o żądaniu. (If81d5, b/513200887) - Dodano nowy
requestExtrasdsl, który umożliwia bezpieczne typowo tworzenie mapy dodatków. Język DSL udostępnia funkcjęputdo przechowywania parRequestExtrasKeyiAny. Funkcja rozszerzeniaMap<String, Any>.get(key)może służyć do odczytywania z mapy za pomocąRequestExtrasKey(I5091c, b/513200887). - (Tylko Android) Dodano funkcje
ActionExtrasKeyiactionExtra, aby utworzyć mapę dodatków zActionExtrasKey. (Id0c90, [b/513200887] - Dodano funkcje
MimeTypeExtrasKeyimimeTypeExtra, aby utworzyć mapę dodatków zMimeTypeExtrasKey. (I85131, b/513200887)
DeepLinkMatcher
- Dodaliśmy funkcje
DeepLinkMatcher.mimeTypeFilteriDeepLinkMatcher.actionFilter, aby tworzyćDeepLinkMatcher.Filters, które filtrująDeepLinkRequestwedługmimeTypelubaction(tylko na Androidzie). Oba filtry dopasowują ciągi znaków bez rozróżniania wielkości liter. (Ie7e67, b/513191950)
Zmiany w interfejsie API
DeepLinkRequest
- Usuń funkcję fabryczną
fromAction. Aby utworzyć żądanie powiązane z działaniem, użyj nowego polaDeepLinkRequest.extras.(Id0c90, b/513200887) - Usunięto
fromMimeTypefunkcję fabryczną. Aby utworzyć prośbę powiązaną z mimeType, użyj nowego polaDeepLinkRequest.extras. (I85131, b/513200887) - (tylko Android) Usunięto funkcję fabryczną
fromIntent. Zastąpiony nowym konstruktorem, który przyjmuje intencję i mapę dodatków. (Ia0498, b/513200887, b/522194187) - Usunięto funkcje fabryczne
fromUriifromUriString. Zastąpione przez nowe konstruktory, które przyjmują argumentDeepLinkUrilub ciąg znaków URI. (Id5b6f, b/522194187) DeepLinkMatcher,DeepLinkMatcher.MatchResulti ich podklasy przyjmują teraz kowariant T (out T), dzięki czemu klucze hierarchiczne nie będą wymagać rzutowania typu w przypadku używania z obiektami Matcher. (I1e453, b/525094876)- Parametr konstruktora
UriMatchResultdla mapy argumentów ma teraz domyślnie wartość pustej mapy. (I3acdd) - Klasa abstrakcyjna
DeepLinkMatcher.Filterjest teraz interfejsem funkcyjnym. Pole konstruktorafilterzostało usunięte i zamiast tego powinno być przekazywane bezpośrednio w podklasie. (I9eb7d, b/522194187)
Poprawki błędów
- Rozwiązanie problemu z natychmiastowym znikaniem wyskakującego wpisu po przejściu do wpisu zawierającego zagnieżdżone metadane z wartościami lambda. (Idb872, b/520494430)
- Naprawiliśmy funkcję
UriDeepLinkMatcher, aby w przypadku braku wymaganych argumentów podczas dopasowywania zwracała wartość nullUriMatchResultzamiast zgłaszać błądMissingFieldException. (I5322f, b/524663005) UriDeeplinkMatcherzawierający identyfikator URI ze schematem https może być dopasowany tylko do żądań, które również mają schemat https. (Ibfe22, b/522304329)- Poprawiliśmy funkcję
UriDeepLinkMatcher, aby prawidłowo identyfikowała schemathttpjako pozytywne dopasowanie dohttpspodczas dopasowywaniaDeepLinkRequestdoUriDeepLinkMatcher. (I3a62b, b/518804264) DeepLinkMatcher.MatchResultcomparator zwraca teraz domyślnie 0, gdy dwa wyniki są równe. (I48ddb, b/518841353)UriDeepLinkMatcherbędzie teraz zwracać wartość nullUriMatchResultzamiast zgłaszać wyjątek, gdy żądanie dopasowania nie powiedzie się z powodu braku wymaganych argumentów. (I669a7, b/470282247, b/512923412)
Wersja 1.2.0-alpha04
3 czerwca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z animacją nakładki, w którym zagnieżdżone nakładki, takie jak
ModalBottomSheet, były nieoczekiwanie ponownie animowane po zamknięciu nakładek znajdujących się nad nimi. (Ia2b9e, b/502624496)
Wersja 1.2.0-alpha03
19 maja 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te commity.
Nowe funkcje
Nawigacja 3 obsługuje teraz precyzyjne linki z parametrami DeepLinkRequest i DeepLinkMatcher:
DeepLinkRequestżądany precyzyjny link zawierającyDeepLinkUrii opcjonalny mimeType lub działanie(tylko Android); Oprócz nowej klasy dostępne są funkcje pomocnicze do tworzenia instancji za pomocąuri,mimeTypelubaction. Platforma Android ma też narzędzie do tworzenia żądania na podstawie obiektu Intent. (Iaaac9, b/470282247)val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home") val uriAndMimeRequest = DeepLinkRequest.fromUriString( "https://sampledeeplink.com/user/profile?id=123", "image/png" )DeepLinkMatcherto precyzyjny link, który można dopasować doDeepLinkRequest. Każda instancja dopasowania jest powiązana z kluczem nawigacji, który obsługuje ten precyzyjny link. Klucz nawigacyjny może być powiązany z wieloma dopasowaniami. WywołanieDeepLinkMatcher.matchzwróciMatchResult, które zawiera powiązany klawisz nawigacyjny, jeśli dopasowanie się powiedzie. Dostępne są 2 domyślne implementacjeDeepLinkMatcher:UriDeepLinkMatcherdo dopasowywania precyzyjnych linków na podstawie identyfikatora URI iStaticKeyDeepLinkMatcherdo dopasowywania precyzyjnych linków tylko zDeepLinkMatcher.Filter, które pasują doBoolean. (I3798e, b/470282247)UriDeepLinkMatcheroparta na opiniach implementacjaDeepLinkMatcher, która obsługuje precyzyjne linki, dopasowującDeepLinkUrido klucza nawigacji z możliwością serializacji. Obsługuje argumenty precyzyjnych linków typów pierwotnych lub kolekcje typów pierwotnych, takie jak listy, tablice i zbiory. (I1520b, b/470282247)@Serializable data class UserKey(val id: Int): NavKey // declare a deep link supported by UserKey val userMatcher = UriDeepLinkMatcher( uriPattern = "www.sampledeeplink.com/user?userId={id}", serializer = serializer<UserKey>() ) // handle a requested deep link with fallback key val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKeyDodano
DeepLinkUri, czyli wersjęandroid.net.Urina platformę Kotlin Multiplatform (Id4725, b/470282247)
Zmiany w interfejsie API
- Zaktualizowano do wersji
compileSdk 37, aby była zgodna z wersją compileSdk w Compose
Poprawki błędów
- Poprawiono
AnimatedBottomSheetSampleIllegalArgumentExceptionpodczas wyświetlania wielu nakładek. PróbkaSceneStrategybędzie teraz prawidłowo obliczać ostatni znak inny niżOverlayScenei wyświetlać go pod wszystkimi scenami nakładki. (If2281, b/506733412) - Zaktualizowano zależność
NavigationEventdo wersji 1.1.1, która usuwa nieaktywny element NavigationEventHandler w trybie inspekcji, aby włączyć predykcyjne cofanie w podglądach Android Studio. (I487fd)
Wersja 1.2.0-alpha02
22 kwietnia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Zmień nazwę
onBacknaonBackCompletedi dodajonBackCancelleddo NavigationBackHandler, aby obsługiwać anulowane gesty powrotu. (I92741) - Dodaj
NavigationBackHandler, aby uprościć obsługę gestów wstecz i przewidywanego przejścia wstecz podczas korzystania zSceneState. Umożliwia to deweloperom łatwiejsze tworzenie niestandardowych komponentów interfejsu, które obsługują standardowe przechodzenie wstecz i gesty predykcyjne bez ręcznego obliczania różnic w stosie wstecznym. (I6a055) - Dodaj
rememberNavigationEventState, aby uprościć połączenieSceneStatez przewidywanym przejściem wstecz. (Iae49c)
Nowe funkcje
- Dodano interfejs API
ResultEventBus, który umożliwia przekazywanie wyników między obiektami NavEntry za pomocąLocalResultEventBusudostępnianego przez nowy interfejsResultEventBusNavEntryDecorator. Wyniki przekazane mogą być oceniane jako stan z wartościąResultEventBus#conflateAsStatelub jako przepływ wyników z wartościąResultEffect.
Wersja 1.2.0-alpha01
8 kwietnia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Poprawki błędów
- Dostęp do
LocalNavAnimatedContentScopezOverlayScenenie będzie już powodowaćIllegalStateException, ponieważOverlayScenesotrzymują terazLocalAnimatedContentScopebez działania. (I2f00c, b/486067688)
Navigation3 w wersji 1.1
Wersja 1.1.4
1 lipca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.4 Wersja 1.1.4 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu z natychmiastowym znikaniem wyskakującego wpisu po przejściu do wpisu zawierającego zagnieżdżone metadane z wartościami lambda. (Idb872, b/520494430)
Wersja 1.1.3
17 czerwca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.3 Wersja 1.1.3 zawiera te zmiany.
Poprawki błędów
Rozwiązaliśmy problem z animacją nakładki, w którym zagnieżdżone nakładki, takie jak
ModalBottomSheet, były nieoczekiwanie ponownie animowane po zamknięciu nakładek znajdujących się nad nimi. (Ia2b9e, b/502624496)Zaktualizowano zależność
NavigationEventdo wersji 1.1.2, w której usunięto operacjęNavigationEventHandlerw trybie inspekcji, aby włączyć funkcję przewidywania powrotu w podglądach Android Studio.
Wersja 1.1.2
19 maja 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.2 Wersja 1.1.2 zawiera te zmiany.
Poprawki błędów
- Zaktualizowano zależność
NavigationEventdo wersji 1.1.1, w której usunięto operacjęNavigationEventHandlerw trybie inspekcji, aby włączyć funkcję przewidywania powrotu w podglądach Android Studio.
Wersja 1.1.1
22 kwietnia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.1 Wersja 1.1.1 zawiera te zmiany.
Poprawki błędów
- Dostęp do
LocalNavAnimatedContentScopezOverlayScenenie będzie już powodowaćIllegalStateException, ponieważOverlayScenesotrzymują terazLocalAnimatedContentScopebez działania. (I2f00c, b/486067688)
Wersja 1.1.0
8 kwietnia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0 Wersja 1.1.0 zawiera te zmiany.
Wersja 1.1.0 jest już stabilna.
Ważne zmiany od wersji 1.0.0
Wspólne elementy między scenami
- Navigation3 obsługuje teraz traktowanie scen jako obiektu wspólnego elementu. Oznacza to, że gdy sceny się zmieniają, można zapewnić płynne przejście między nimi. Aby włączyć tę funkcję, przekaż wartość SharedTransitionScope do parametru NavDisplay lub rememberSceneState.
SceneDecoratorStrategy
– wprowadzenie SceneDecoratorStrategy do obsługi przypadków użycia, takich jak dekorowanie scen za pomocą wspólnych komponentów interfejsu lub udostępnianie stanu między scenami.
NavMetadata DSL
- Navigation3 udostępnia teraz nowy, bezpieczny pod względem typów język DSL metadanych. Język DSL korzysta z nowego interfejsu MetadataKey, który umożliwia określanie typów kluczy i wartości, które mają być przekazywane do mapy metadanych. Dodaliśmy też nowe NavMetadataKeys dla przejść NavDisplay, aby można było ich używać z nowym językiem DSL metadanych do dodawania przejść do NavDisplay.
Animacje OverlayScene
- Interfejs OverlayScene ma nowe wywołanie zwrotne zawieszania onRemoved. To wywołanie zwrotne jest wywoływane po usunięciu z listy wstecznej klucza powiązanego ze sceną, ale zanim opuści on kompozycję. Dzięki temu animacje wyjścia wywoływane w onRemoved mogą się zakończyć, zanim scena nakładki zostanie usunięta z kompozycji.
Inne zmiany
- NavDisplay i rememberSceneState przyjmują teraz parametr List<SceneStrategy> zamiast poprzedniego pojedynczego parametru SceneStrategy, który był połączony przyrostkiem then.
– Możesz teraz dynamicznie dodawać metadane z uwzględnieniem klucza dostępu za pomocą EntryProvider DSL.
Wersja 1.1.0-rc01
25 marca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
NavDisplayzapewnia teraz, że w przypadku wpisów wyświetlanych pod nakładkami wartośćLifecyclejest ograniczona doSTARTED. Dzięki temu interfejsy API, takie jakdropUnlessResumed, będą nadal działać podczas korzystania z okien dialogowych. (If209f, b/483966071)- Rozwiązaliśmy problem w
NavDisplay, który powodował, że przechodzenie tam i z powrotem między tymi samymi ekranami i przerywanie animacji między nimi mogło powodować nieprawidłową kolejność ekranów. (I4d491, b/459419800)
Wersja 1.1.0-beta01
11 marca 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Wersja 1.1.0-alpha05
25 lutego 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Parametry
NavDisplayirememberSceneStateprzyjmują teraz wartośćList<SceneStrategy>zamiast poprzedniego pojedynczego parametruSceneStrategy, który był połączony przyrostkiemthen. Jest to bardziej zgodne zList<SceneDecoratorStrategy<T>>, które są już stosowane w tych interfejsach API. Poprzednie interfejsy API zostały wycofane. (I78b2c, b/482108465) - Dodano operatora #contains metadanych, aby sprawdzić, czy mapa metadanych zawiera podany
NavMetadataKey. (Ic30db, b/485311895) - Dodano
NavMetadataKeyDialogKeydlaDialogSceneStrategydo użycia z językiem DSL metadanych. (Ic7a26, b/483388817)
Wersja 1.1.0-alpha04
11 lutego 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Navigation3 udostępnia teraz nowy, bezpieczny pod względem typów język DSL metadanych. Język DSL korzysta z nowego interfejsu
MetadataKey, który umożliwia określanie typów kluczy i wartości, które mają być przekazywane do mapy metadanych. Dodaliśmy też noweNavMetadataKeydla przejśćNavDisplay, aby można było ich używać z nowym językiem DSLmetadatado dodawania przejść doNavDisplay. (Ic10ef, Ic049c,b/476213928)
Zmiany w interfejsie API
- Interfejs
OverlayScenema nową funkcję wywołania zwrotnegoonRemovedwstrzymania. To wywołanie zwrotne jest wywoływane po usunięciu z listy wstecznej klucza powiązanego ze sceną, ale zanim opuści on kompozycję. Dzięki temu animacje wyjścia wywoływane wonRemovedmogą się zakończyć, zanim scena nakładki zostanie usunięta z kompozycji. (I29a72, b/440558061) SceneStrategywydzieliła funkcję dekoracji do nowej funkcjiSceneDecoratorStrategy. Ten nowy interfejs powinien być używany do dekorowania scen. Dostępne są nowe interfejsy API dlaNavDisplayirememberSceneState, które umożliwiają dodawanieSceneDecoratorStrategies. (If9385, b/477669607, b/477670333)
Poprawki błędów
- Naprawiono błąd, który powodował awarię, gdy do funkcji
NavDisplaylubrememberSceneStateprzekazywano wartośćSharedTransitionLayouti używano dowolnego elementuOverlayScene. Wynikało to z tego, że używanie elementuSharedTransitionLayoutdziała tylko z elementamiNavEntries, które są renderowane jako część elementuAnimatedContent, a elementyOverlayScenesą renderowane oddzielnie w osobnych oknach. (I1bb76, b/478664101)
Aktualizacja zależności
- Od wersji
Navigation31.0.1:Navigation3zależy teraz odNavigationEvent1.0.2. Rozwiązuje to problemIllegalStateExceptionspowodowany użyciemNavDisplaypodczasAndroidStudiowersji przedpremierowych. (Id7212, b/477149762)
Wersja 1.1.0-alpha03
28 stycznia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Możesz teraz dynamicznie dodawać metadane z uwzględnieniem klucza wpisu za pomocą
EntryProviderDSL. (I942fb, b/474416976)
Wersja 1.1.0-alpha02
14 stycznia 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.
Nowe funkcje
SceneStrategyobsługuje teraz zagnieżdżanie scen za pomocą nowej funkcjicalculatedScene(Scene). Oznacza to, żeSceneStrategymożna dostosować, aby zapewnić dodatkowe funkcje w innych scenach. (I5df7c,b/440333896)
Wersja 1.1.0-alpha01
3 grudnia 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
Navigation3obsługuje teraz traktowanie scen jako obiektu elementu udostępnionego. Oznacza to, że gdy sceny się zmieniają, można zapewnić płynne przejście między nimi. Aby włączyć tę funkcję, przekaż wartośćSharedTransitionScopedo parametruNavDisplaylubrememberSceneState. (I15868)
Wersja 1.0
Wersja 1.0.1
11 lutego 2026 r.
Publikacja androidx.navigation3:navigation3-*:1.0.1 Wersja 1.0.1 zawiera te zmiany.
Aktualizacja zależności
Navigation3zależy teraz odNavigationEventw wersji 1.0.2. Rozwiązuje to problemIllegalStateExceptionspowodowany użyciemNavDisplaypodczasAndroidStudiowersji przedpremierowych. (Id7212, b/477149762)
Wersja 1.0.0
19 listopada 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0 Wersja 1.0.0 zawiera te zmiany.
Przedstawiamy Navigation3!
- Biblioteka Navigation3 jest już stabilna. Navigation3 to pierwsze podejście do nawigacji w Androidzie X Compose.
- Więcej informacji znajdziesz w poście na blogu z ogłoszeniem, w zasobach i w przepisach.
Wersja 1.0.0-rc01
5 listopada 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zmiany.
Poprawki błędów
NavDisplayustawia terazLocalLifecycleOwnerna poziomieScene, co umożliwia autorom scen określenie, czy wszystkie przejścia zostały zakończone, poprzez sprawdzenie, czyLifecycle.Statema wartośćRESUMED. DziałanieLocalLifecycleOwnerna poziomieNavEntrypozostaje bez zmian: jest ono również ograniczone doSTARTED, jeśli trwa przejście, a dodatkowo doCREATED, jeśli tenNavEntryzostał usunięty ze stosu wstecznego i jest w trakcie animacji wyjścia. (I03113, b/454045829)
Wersja 1.0.0-beta01
22 października 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
SceneStrategyScopema teraz tylko publiczny konstruktor bez argumentów, który umożliwia testowanieSceneStrategyi zwróconegoScenew izolacji. W bardziej złożonych przypadkach użycia użyjrememberSceneState(). (I8440c, b/451679047)
Poprawki błędów
- Rozwiązaliśmy problem z nieskończoną pętlą podczas łączenia tagów
SceneStrategyzthen. (Iba3f0, b/450323470) - Rozwiązaliśmy problem z migotaniem ekranu podczas zamiany
backStackprzekazywanego doNavDisplayi używania animacji. (Ief7b5, b/450967248)
Wersja 1.0.0-alpha11
8 października 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
- Metoda
calculateScenew usłudzeSceneStrategynie jest już@Composable. Zamiast tego rozważ przeniesienie tej pracy do konstrukcji metodySceneStrategy(czyli w metodzierememberMySceneStrategy()), która w pełni umożliwia określenie czasu życia dowolnych wartościrememberSaveablelub kluczowych instrukcjirememberna podstawie prawidłowych wartości. (If1733, b/448709506) - Parametr
onBackdlaSceneStrategy.calculateScenezostał przeniesiony do nowego zakresu odbiornikaSceneStrategyScope, aby wyraźniej wskazać, że jest to parametr opcjonalny, i zapewnić punkt rozszerzenia dla przyszłych funkcji Navigation3. (I3aea3, b/448460407) - Funkcja lambda
onBackprzekazywana do funkcjiNavDisplayi do funkcjiSceneStrategynie udostępnia już parametrucount: Int, który wskazuje, kiedy należy usunąć wiele wpisów. Zamiast tego funkcja() -> Unitlambda będzie teraz wywoływana kilka razy z rzędu w rzadkich przypadkach, gdy żądania sceny powodują wyświetlanie wielu wpisów. (Idedb5, b/446989346) - Usuń klasę
NavEntryWrapperi zastąp jej funkcję klasą końcowąNavEntryz nowym konstruktorem dodatkowym, który przyjmuje klasęNavEntryz nową treścią. Umożliwi to dalsze dodawanie nowych treści do wpisu. (I7da2a, b/444447130) - Funkcja
navEntryDecorator, która tworzy i zwracaNavEntryDecorator, została usunięta i zastąpiona klasąNavEntryDecorator, która jest teraz publiczna i można ją rozszerzać. (If81f8, b/444447434, b/447381176) - Nazwa
SavedStateNavEntryDecoratorzostała zmieniona naSaveableStateHolderNavEntryDecorator, ponieważ dodaje do wpisów symbolSaveableStateHolder. Dekorator został też przekształcony z funkcji w klasę, ponieważ jest funkcjonalnie fabryką dlaNavEntryDecorator. (Ie6013, b/447381176) - W przypadku niestandardowych wyświetleń, w których zamiast
NavDisplayużywa sięSceneState, nie trzeba już używać lokalizacji kompozycjiLocalEntriesToRenderInCurrentScene, która jest teraz wewnętrzna. (Ic40ef, b/414668196) - Usunęliśmy interfejsy
SceneSetupNavEntryDecoratorirememberSceneSetupNavEntryDecorator()z publicznego interfejsu API. Ta funkcja jest teraz domyślnie włączona i nie musisz jej ręcznie dodawać. (Ieae42, b/444479133) NavEntry,DialogScene,SinglePaneSceneiSceneStateimplementują teraz metodę equals. (I96121)- Interfejs sceny ma nowe pole metadanych, które umożliwia dołączanie metadanych specyficznych dla sceny w przypadku komponentu NavDisplay. Dzięki temu scena może zastąpić metadane na urządzeniu
NavDisplay, np. za pomocą przejść. (I1fd96, b/443955625) - Uprość sygnaturę
rememberNavBackStack, usuwając zbędny parametr typu ogólnego. Funkcja akceptuje teraz wartośćvararg elements: NavKey. (I03e45) - Domyślne animacje dla
NavDisplaysą teraz częścią wspólnego interfejsu API, co umożliwia ich wywoływanie ze wszystkich platform. (I71af9, b/447147159) - Zmień nazwę
EntryProviderBuildernaEntryProviderScope, aby odzwierciedlała fakt, że klasa jest Kotlin DSL, która zapewnia zakres do tworzeniaNavEntries. (Ia7465)
Poprawki błędów
rememberNavBackStack()wymusza teraz polimorficzną serializację w przypadku NavKey i wymaga niestandardowegoSavedStateConfigurationskonfigurowanego tak, aby zapewnić prawidłowe przywracanie stanu. Zaktualizowaliśmy dokumentację KDoc, aby odzwierciedlała wymaganie, że wszystkie podtypy NavKey muszą być zarejestrowane w podanym module SerializersModule. (I6de37,I782f2, b/446664383)
Wersja 1.0.0-alpha10
24 września 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj nowy przeciążony element
NavDisplay, który przyjmuje listęNavEntry<T>ozdobioną elementemrememberDecoratedNavEntries. (I4025b, b/441940314) - Przeniesiono
DialogScenedo nowego pakietu. (Ia5840) - Usuń publiczny interfejs API
DecorateNavEntry. Zamiast tego użyjrememberDecoratedNavEntries, aby opakować element NavEntry listą dekoratorów. (Id8c09) - Interfejs Navigation3 udostępnia teraz nowe domyślne właściwości
transitionSpec. (Ibcabd) - Dodaliśmy nowy obiekt
SceneState, który ułatwia zarządzanie scenami. Zapewnia to również nowe przeciążenieNavDisplay, które wykorzystujeSceneStateiNavigationEventState. (Idfb46, b/444479133) NavDisplayumożliwia teraz dostosowywanie przejść na podstawie tego,Scenedokąd i skąd przechodzisz, poprzez sprawdzanieTransitioncurrentStateitargetState. (I906cc, b/443872322)NavigationEventInfojest terazabstract classzamiastinterface. Zaktualizuj wszystkie niestandardowe implementacje, aby dziedziczyły z klasy (np.data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- Zaktualizowano interfejsy API modułu obsługi
navigationevent-compose. FunkcjeNavigationEventHandleriNavigationBackHandler(oraz ich warianty) obsługują teraz nowe przeciążenie, które akceptuje przeniesioneNavigationEventStates. Proste przeciążenia (przyjmującecurrentInfo) są zachowywane i teraz wewnętrznie korzystają z tego nowego modelu stanu. (Ic3251, b/444734264) - Wszystkie interfejsy API sceny zostały przeniesione z navigation3-ui do navigation3-runtime. Oznacza to, że są one teraz dostępne na wszystkich platformach obsługiwanych przez navigation3-runtime. (I431d0, b/444449993)
- Dodano nowy przeciążony operator
rememberDecoratedNavEntries, który przyjmuje listę elementówNavEntrydo dekoracji. Pola wejściowe mogą być już ozdobione innymi dekoratorami. (I5a034, b/444230270) - Usuwanie parametrów typu wieloznacznego navigation3 (I02540)
- Ulepszyliśmy obsługę typów ogólnych w języku
entryProviderDSL. Jeśli wcześniej importowanoandroidx.navigation3.runtime.entry, nie jest to już wymagane. (I299fc) - Ograniczanie przepełnienia opartego na odbiciach
NavBackStackSerializerdo Androida. Zapobiega to niejawnej serializacji w czasie działania na platformach innych niż Android, wymuszając użycie jawnego przeciążeniaSavedStateConfigurationw kodzie wieloplatformowym. (I73313, b/420443609) - Zmień
swipeEdgewNavigationEventna@IntDef(Icee54, b/443950342) - Ogranicz serializację
NavBackStackdo Androida. Zapobiega to błędom w czasie działania na platformach innych niż Android. W przypadku zapisywania stanu na wielu platformach użyj przeciążonej funkcjirememberNavBackStackz wyraźnym parametremSavedStateConfiguration. (I1e418, b/420443609)
Poprawki błędów
- Naprawiono awarię podczas przewidywanego przejścia wstecz, gdy zagnieżdżony element
NavDisplayma jeden wpis podrzędny. (I2cdc0, b/441933162)
Wersja 1.0.0-alpha09
10 września 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcja
DecoratedNavEntryProviderzostała zastąpiona funkcjąrememberDecoratedNavEntries, która tworzy i zwraca obiekty NavEntry z listą podanych dekoratorów (I0fe1c, b/441328236). NavBackStackjest teraz ogólny w przypadku typuNavKey. Umożliwia to aplikacjom i bibliotekom definiowanie niestandardowych typów kluczy dla ich stosów wstecznych, zamiast ograniczać się doNavKey. (I4d190,Iad2f4, b/420443609)NavBackStackto teraz@kotlinx.serialization.Serializable, co umożliwia zapisywanie i przywracanie stanu nawigacji po śmierci procesu i zmianach konfiguracji bez dodatkowego kodu. (I2c3cf, b/420443609)RememberNavBackStackzostało przeniesione docommonMain, aby zapewnić jego dostępność na wszystkich platformach docelowych. (Id69e7, b/420443609)
Poprawki błędów
NavDisplayteraz prawidłowo przenosi poszczególneNavEntrydo odpowiedniegoLifecycle.State. (I30aac, b/440145700)- Rozwiązaliśmy problem polegający na tym, że funkcja
NavDisplayignorowała wszystkie zagnieżdżone elementyNavigationEventDispatcherOwnerustawione za pomocą funkcjiLocalNavigationEventDispatcherOwnerbibliotekiNavigationEvent. (I6224a)
Zmiany zależności
- Biblioteka Navigation3 zależy teraz od NavigationEvent Alpha08.
Wersja 1.0.0-alpha08
27 sierpnia 2025 roku
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zmiany.
Nowe funkcje
- Dodano nowe platformy Kotlin Multiplatform (KMP) do artefaktów
Navigation3 Runtime.Navigation3 Runtimeobsługuje teraz te platformy: JVM (Android i komputery), Native (Linux, iOS, watchOS, macOS, MinGW) i Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Uwaga: nie podaje to docelowych wartości KMP dla artefaktuNavigation3 UI. Na innych platformach musisz wdrożyć własny niestandardowyNavDisplay. Jeśli chcesz, aby ta funkcja była obsługiwana, zagłosuj na problem w Jetbrains tutaj i śledź postępy w zakresie dodatkowej pomocy. - Obiekt
NavDisplayInfojest teraz publiczny i można go używać do pobierania listy widocznych wpisów zNavDisplay. (Ibc91f)
Zmiany w interfejsie API
- Dodaliśmy nowy element
NavBackStackSerializer, który w połączeniu z elementemrememberNavBackStacksłuży do przywracania stanu.rememberNavBackStack()przyjmuje teraz teżSavedStateConfiguration, którego można użyć do podania własnej konfiguracji. (I2f4d2, I4cd58, b/420443609)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podczas nawigacji wywoływane były nieprawidłowe zdarzenia cyklu życia. (I8bf6d, b/425901162, b/434109022)
Znane problemy
- W wyniku błędu wprowadzonego przez zmianę I8bf6d cykle życia były oparte na scenach zamiast na poszczególnych wpisach, co powodowało, że nie działały w przypadkach, gdy
keyprzekazywany doNavEntrynie byłStringlub gdyNavEntrynie zastąpiłcontentKeyi nie ustawił go jakokey(pamiętaj, że w takim przypadku klucz można zapisać wBundle). Błąd został naprawiony w kolejnej wersji. (b/440145700)
Wersja 1.0.0-alpha07
13 sierpnia 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zmiany.
MinSdk Update
- Domyślny minSdk dla AndroidX został przeniesiony z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Zmiany w interfejsie API
SavedStateNavEntryDecoratorużywa terazSaveableStateRegistrywbudowanego wSaveableStateProviderdo zapisywania i przywracania stanów. (If8d9a)predictivePopTransitionSpecjest teraz przekazywany jako parametr, co pozwala dostosować przejście w zależności od tego, od której krawędzi użytkownik rozpoczął gest powrotu predykcyjnego. (I753a8)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że sceny niestandardowe były nieskończenie przeliczane, ponieważ nie była zapamiętywana najnowsza scena. (I7ba84, b/418153031)
Aktualizacja zależności
- Biblioteka Navigation3 zależy teraz od zdarzenia nawigacji
1.0.0-alpha06.
Wersja 1.0.0-alpha06
30 lipca 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zmiany.
Aktualizacja zależności
- Biblioteka Navigation3 zależy teraz od zdarzenia nawigacji
1.0.0-alpha05.
Wersja 1.0.0-alpha05
2 lipca 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.
Zmiany w zachowaniu
- Stan
NavEntryjest teraz ściśle oparty na bieżącej liście dekoratorów przekazywanych doNavDisplay. Oznacza to, że w przypadku wielu stosów wstecznych dekoratory powinny być zamieniane w stosach wstecznych, aby zachować stan elementów NavEntry w stosie wstecznym. W przeciwnym razie stany zostaną wyczyszczone tak, jakby wpisy zostały usunięte (zamiast zamienione). (I7a759, b/428033667)
Wersja 1.0.0-alpha04
18 czerwca 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
NavEntry.contentjest teraz prywatny. Aby wywołać treściNavEntry, wywołaj nowy interfejs APINavEntry.Content(), który nie wymaga już parametrukey. (Icd0fd, b/420991203)- Pole
NavEntry.keyjest teraz prywatne.NavEntryi jego odpowiednie stany powinny być identyfikowane przez nowe polecontentKey, które jest generowane przez nową lambdęcontentKeyFactoryi domyślnie przyjmuje wartość skrótu, który można zapisać i który jest generowany na podstawieNavEntry.key(I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812).
Zmiany zależności
- Biblioteka Navigation3 zależy teraz od nowego artefaktu
androidx.navigationevent.compose.
Wersja 1.0.0-alpha03
4 czerwca 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.
Poprawki błędów
Navigation3nie będzie już czyścić stanów dekoratora dlabackStacks, które zostały zamienione i zastąpione inną instancjąbackStack. (I28a42, b/415076044)
Wersja 1.0.0-alpha02
23 maja 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy problem z funkcją
SavedStateNavEntryDecorator, który powodował kolizje różnych klas danych o tych samych wartościach właściwości. (b/418070648, Iff4775) - Rozwiązaliśmy problem z brakującą klasą, który powodował awarie podczas uruchamiania bez deklarowania jawnych zależności. (b/419049149, I4b4ed)
Wersja 1.0.0-alpha01
20 maja 2025 r.
Publikacja androidx.navigation3:navigation3-*:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zmiany.
Nowe funkcje
Navigation3 to nowa biblioteka nawigacji stworzona specjalnie do obsługi nawigacji w aplikacji Jetpack Compose. Artefakt androidx.navigation3.runtime zapewnia elementy składowe, a artefakt androidx.navigation3.ui – warstwę interfejsu użytkownika za pomocą interfejsu NavDisplay API. Deweloperzy mogą przekazywać własny stan bezpośrednio do funkcji typu „composable” NavDisplay, która zmienia treść w zależności od zmian stanu dewelopera.
@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey
val backStack = rememberNavBackStack(Home)
NavDisplay(backStack, entryProvider = entryProvider {
entry<Home> {
Column {
Text(“Home”)
Button(onClick = { backStack.add(Chat) } ) {
Text(“Go to Chat”)
}
}
}
entry<Chat> { /* My Composable Content */ }
})
Więcej informacji znajdziesz w przewodniku po Navigation3.