navigation3

  
Navigation 3 to nowa biblioteka nawigacji zaprojektowana do współpracy z Compose.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
1 lipca 2026 r. 1.1.4 - - 1.2.0-alpha05

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-alpha05"
    implementation "androidx.navigation3:navigation3-ui:1.2.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.2.0-alpha05")
    implementation("androidx.navigation3:navigation3-ui:1.2.0-alpha05")
}

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.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Nie ma informacji o wersji tego artefaktu.

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 obiekt ResultEventBus, który można przekazać do interfejsu rememberResultEventBusNavEntryDecorator. Umożliwia to podniesienie ResultEventBus poza ResultEventBusNavEntryDecorator. (Ia655b, b/516995400)

DeepLinkRequest - Dodano 2 konstruktory zgodne z KMP – jeden przyjmujący DeepLinkUri, a drugi przyjmujący ciąg znaków w formie surowej. (I3c088, b/513200887, b/522194187) - (tylko Android) Dodano konstruktor, który przyjmuje wartość 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 requestExtras dsl jako bezpieczny typowo sposób tworzenia mapy dodatków. Język DSL udostępnia funkcję put do przechowywania par RequestExtrasKeyAny. Funkcja rozszerzenia Map<String, Any>.get(key) może służyć do odczytywania danych z mapy za pomocą RequestExtrasKey(I5091c, b/513200887). (Tylko na Androidzie) Dodano funkcje ActionExtrasKeyactionExtra do tworzenia mapy dodatków za pomocą ActionExtrasKey. (Id0c90, [b/513200887] - Dodano funkcje MimeTypeExtrasKeymimeTypeExtra, aby utworzyć mapę dodatków z MimeTypeExtrasKey. (I85131, b/513200887)

DeepLinkMatcher - Dodano funkcje DeepLinkMatcher.mimeTypeFilterDeepLinkMatcher.actionFilter do tworzenia DeepLinkMatcher.Filters, które filtrują DeepLinkRequest według mimeType lub action (tylko na Androida). Oba filtry dopasowują ciągi znaków bez rozróżniania wielkości liter. (Ie7e67, b/513191950)

Zmiany w interfejsie API

DeepLinkRequest - Remove fromAction factory function. Aby utworzyć żądanie powiązane z działaniem, użyj nowego pola DeepLinkRequest.extras.(Id0c90, b/513200887) - Usunięto funkcję fabryczną fromMimeType. Aby utworzyć prośbę powiązaną z mimeType, użyj nowego pola DeepLinkRequest.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 fromUrifromUriString. Zastąpione przez nowe konstruktory, które przyjmują argument DeepLinkUri lub ciąg znaków URI. (Id5b6f, b/522194187) - DeepLinkMatcher, DeepLinkMatcher.MatchResult i 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 UriMatchResult dla mapy argumentów ma teraz domyślnie pustą mapę. (I3acdd) - DeepLinkMatcher.Filter klasa abstrakcyjna jest teraz interfejsem funkcyjnym. Pole konstruktora filter zostało usunięte i zamiast tego powinno być przekazywane bezpośrednio w podklasie. (I9eb7d, b/522194187)

Poprawki - Naprawiono błąd, który powodował natychmiastowe znikanie wyskakującego wpisu po przejściu do wpisu zawierającego zagnieżdżone metadane z wartościami lambda. (Idb872, b/520494430) - Fixed UriDeepLinkMatcher so that it will return a null UriMatchResult instead of throwing MissingFieldException when required arguments are missing during matching. (I5322f, b/524663005) - Wzorzec UriDeeplinkMatcher zawierający adres URI ze schematem https można dopasować tylko do żądań, które również mają schemat https. (Ibfe22, b/522304329) - Poprawka UriDeepLinkMatcher, aby prawidłowo identyfikować schemat http jako pasujący do https podczas dopasowywania DeepLinkRequest do UriDeepLinkMatcher. (I3a62b, b/518804264) - Operator DeepLinkMatcher.MatchResult zwraca teraz domyślnie wartość 0, gdy 2 wyniki są równe. (I48ddb, b/518841353) - UriDeepLinkMatcher będzie teraz zwracać wartość null UriMatchResult zamiast 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 DeepLinkRequestDeepLinkMatcher:

  • DeepLinkRequest żądany precyzyjny link zawierający DeepLinkUri i opcjonalny mimeType lub działanie(tylko Android); Oprócz nowej klasy dostępne są funkcje pomocnicze do tworzenia instancji za pomocą uri, mimeType lub action. Platforma Androida ma też pomocnika 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"
    )
    
  • DeepLinkMatcher to precyzyjny link, który można dopasować do DeepLinkRequest. 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łanie funkcji DeepLinkMatcher.match zwróci wartość MatchResult zawierającą powiązany klawisz nawigacyjny, jeśli dopasowanie się powiedzie. Dostępne są 2 domyślne implementacje DeepLinkMatcher: UriDeepLinkMatcher do dopasowywania precyzyjnych linków na podstawie identyfikatora URI i StaticKeyDeepLinkMatcher do dopasowywania precyzyjnych linków tylko z DeepLinkMatcher.Filter, które pasują do Boolean. (I3798e, b/470282247)

  • UriDeepLinkMatcher oparta na opiniach implementacja DeepLinkMatcher, która obsługuje precyzyjne linki, dopasowując DeepLinkUri do 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 ?: HomeKey
    
  • Dodano DeepLinkUri, czyli wersję android.net.Uri na 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 AnimatedBottomSheetSample IllegalArgumentException podczas wyświetlania wielu nakładek. Próbka SceneStrategy będzie teraz prawidłowo obliczać ostatni znak inny niż OverlayScene i wyświetlać go we wszystkich scenach nakładki. (If2281, b/506733412)
  • Zaktualizowano zależność NavigationEvent do 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ę onBack na onBackCompleted i dodaj onBackCancelled do 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 z SceneState. Umożliwia to deweloperom łatwiejsze tworzenie niestandardowych komponentów interfejsu, które obsługują standardową nawigację wstecz i gesty predykcyjne bez ręcznego obliczania różnic w stosie wstecznym. (I6a055)
  • Dodaj rememberNavigationEventState, aby uprościć połączenie SceneState z przewidywanym przejściem wstecz. (Iae49c)

Nowe funkcje

  • Dodano interfejs API ResultEventBus, który umożliwia przekazywanie wyników między obiektami NavEntry za pomocą LocalResultEventBus udostępnianego przez nowy interfejs ResultEventBusNavEntryDecorator. Wyniki przekazane mogą być oceniane jako stan z wartością ResultEventBus#conflateAsState lub 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 LocalNavAnimatedContentScopeOverlayScene nie będzie już powodować IllegalStateException, ponieważ OverlayScenes mają teraz LocalAnimatedContentScope bez działania. (I2f00c, b/486067688)

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ść NavigationEvent do wersji 1.1.2, w której usunięto operację NavigationEventHandler w 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ść NavigationEvent do wersji 1.1.1, w której usunięto operację NavigationEventHandler w 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 LocalNavAnimatedContentScopeOverlayScene nie będzie już powodować IllegalStateException, ponieważ OverlayScenes mają teraz LocalAnimatedContentScope bez 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 zmianyNavDisplayrememberSceneState przyjmują teraz parametr List<SceneStrategy> zamiast poprzedniego pojedynczego parametru SceneStrategy, który był łączony za pomocą infiksu then. – Możesz teraz dynamicznie dodawać metadane z uwzględnieniem klucza wpisu 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

  • NavDisplay zapewnia teraz, że w przypadku wpisów wyświetlanych pod nakładkami wartość Lifecycle jest ograniczona do STARTED. Dzięki temu interfejsy API, takie jak dropUnlessResumed, 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 NavDisplayrememberSceneState przyjmują teraz wartość List<SceneStrategy> zamiast poprzedniego pojedynczego parametru SceneStrategy, który był połączony przyrostkiem then. Jest to bardziej zgodne z List<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 NavMetadataKey DialogKey dla DialogSceneStrategy do 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ż nowe NavMetadataKey dla przejść NavDisplay, aby można było ich używać z nowym językiem DSL metadata do dodawania przejść do NavDisplay. (Ic10ef, Ic049c,b/476213928)

Zmiany w interfejsie API

  • Interfejs OverlayScene ma nową funkcję wywołania zwrotnego onRemoved wstrzymania. 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. (I29a72, b/440558061)
  • SceneStrategy wydzieliła funkcję dekoracji do nowej funkcji SceneDecoratorStrategy. Ten nowy interfejs powinien być używany do dekorowania scen. Dostępne są nowe interfejsy API dla NavDisplayrememberSceneState, które umożliwiają dodawanie SceneDecoratorStrategies. (If9385, b/477669607, b/477670333)

Poprawki błędów

  • Naprawiono błąd, który powodował awarię, gdy do funkcji NavDisplay lub rememberSceneState przekazywano wartość SharedTransitionLayout i używano dowolnego elementu OverlayScene. Wynikało to z faktu, że używanie wartości SharedTransitionLayout działa tylko w przypadku elementów NavEntries renderowanych w ramach elementów AnimatedContent, a elementy OverlayScene są renderowane w osobnych oknach. (I1bb76, b/478664101)

Aktualizacja zależności

  • Od wersji Navigation3 1.0.1: Navigation3 zależy teraz od NavigationEvent 1.0.2. Rozwiązuje to problem IllegalStateException spowodowany użyciem NavDisplay podczas AndroidStudio wersji 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ą EntryProvider DSL. (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

  • SceneStrategy obsługuje teraz zagnieżdżanie scen za pomocą nowej funkcji calculatedScene(Scene). Oznacza to, że SceneStrategy moż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

  • Navigation3 obsł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ść SharedTransitionScope do parametru NavDisplay lub rememberSceneState. (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

  • Navigation3 zależy teraz od NavigationEvent w wersji 1.0.2. Rozwiązuje to problem IllegalStateException spowodowany użyciem NavDisplay podczas AndroidStudio wersji 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!

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

  • NavDisplay ustawia teraz LocalLifecycleOwner na poziomie Scene, co pozwala autorom scen określić, czy wszystkie przejścia zostały zakończone, sprawdzając, czy Lifecycle.State ma wartość RESUMED. Działanie LocalLifecycleOwner na poziomie NavEntry pozostaje bez zmian: jest ono również ograniczone do STARTED, jeśli trwa przejście, a dodatkowo do CREATED, jeśli ten NavEntry został 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

  • SceneStrategyScope ma teraz tylko publiczny konstruktor bez argumentów, który umożliwia testowanie SceneStrategy i zwróconego Scene w izolacji. W bardziej złożonych przypadkach użycia użyj rememberSceneState(). (I8440c, b/451679047)

Poprawki błędów

  • Rozwiązaliśmy problem z nieskończoną pętlą podczas łączenia tagów SceneStrategythen. (Iba3f0, b/450323470)
  • Rozwiązaliśmy problem z migotaniem ekranu podczas zamiany backStack przekazywanego do NavDisplay i 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 calculateScene w usłudze SceneStrategy nie jest już @Composable. Zamiast tego rozważ przeniesienie tej pracy do konstrukcji metody SceneStrategy (czyli w metodzie rememberMySceneStrategy()), która w pełni umożliwia określenie czasu życia dowolnych wartości rememberSaveable lub kluczowych instrukcji remember na podstawie prawidłowych wartości. (If1733, b/448709506)
  • Parametr onBack dla SceneStrategy.calculateScene został przeniesiony do nowego zakresu odbiornika SceneStrategyScope, aby wyraźniej wskazać, że jest to parametr opcjonalny, i zapewnić punkt rozszerzenia dla przyszłych funkcji Navigation3. (I3aea3, b/448460407)
  • Funkcja lambda onBack przekazywana do funkcji NavDisplay i do funkcji SceneStrategy nie udostępnia już parametru count: Int, który wskazuje, kiedy należy usunąć wiele wpisów. Zamiast tego funkcja () -> Unit lambda będzie teraz wywoływana kilka razy z rzędu w rzadkich przypadkach, gdy scena będzie wymagać wyświetlenia wielu wpisów. (Idedb5, b/446989346)
  • Usuń klasę NavEntryWrapper i zastąp jej funkcję klasą końcową NavEntry z nowym konstruktorem dodatkowym, który przyjmuje klasę NavEntry z nową treścią. Umożliwi to dalsze dodawanie nowych treści do wpisu. (I7da2a, b/444447130)
  • Funkcja navEntryDecorator, która tworzy i zwraca NavEntryDecorator, została usunięta i zastąpiona klasą NavEntryDecorator, która jest teraz publiczna i można ją rozszerzać. (If81f8, b/444447434, b/447381176)
  • Funkcja SavedStateNavEntryDecorator została zmieniona na SaveableStateHolderNavEntryDecorator, ponieważ dodaje do wpisów symbol SaveableStateHolder. Dekorator został też przekształcony z funkcji w klasę, ponieważ jest funkcjonalnie fabryką dla NavEntryDecorator. (Ie6013, b/447381176)
  • W przypadku niestandardowych wyświetleń, w których zamiast NavDisplay używa się SceneState, nie trzeba już używać lokalizacji kompozycji LocalEntriesToRenderInCurrentScene, która jest teraz wewnętrzna. (Ic40ef, b/414668196)
  • Usunęliśmy interfejsy SceneSetupNavEntryDecoratorrememberSceneSetupNavEntryDecorator() z publicznego interfejsu API. Ta funkcja jest teraz domyślnie włączona i nie musisz jej ręcznie dodawać. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene i SceneState implementują 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 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 NavDisplay są teraz częścią wspólnego interfejsu API, co umożliwia ich wywoływanie ze wszystkich platform. (I71af9, b/447147159)
  • Zmień nazwę EntryProviderBuilder na EntryProviderScope, aby odzwierciedlić fakt, że klasa jest DSL-em Kotlin, który zapewnia zakres do tworzenia NavEntries. (Ia7465)

Poprawki błędów

  • rememberNavBackStack() wymusza teraz polimorficzną serializację w przypadku NavKey i wymaga niestandardowego SavedStateConfiguration skonfigurowanego tak, aby zapewnić prawidłowe przywracanie stanu. Zaktualizowaliśmy dokumentację KDoc, aby odzwierciedlała wymaganie, że wszystkie podtypy NavKey muszą być zarejestrowane w dostarczonym 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ą elementem rememberDecoratedNavEntries. (I4025b, b/441940314)
  • Przeniesiono DialogScene do nowego pakietu. (Ia5840)
  • Usuń publiczny interfejs API DecorateNavEntry. Zamiast tego użyj rememberDecoratedNavEntries, 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 też nowe NavDisplay, które zabiera SceneStateNavigationEventState. (Idfb46, b/444479133)
  • NavDisplay umożliwia teraz dostosowywanie przejść na podstawie tego, Scene dokąd i skąd przechodzisz, poprzez sprawdzanie Transition currentStatetargetState. (I906cc, b/443872322)
  • NavigationEventInfo jest teraz abstract class zamiast interface. 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. NavigationEventHandler i NavigationBackHandler (oraz ich warianty) obsługują teraz nowe przeciążenie, które akceptuje podniesione NavigationEventStates. Proste przeciążenia (przyjmujące currentInfo) 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ów NavEntry do 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 entryProvider DSL. Jeśli wcześniej importowano androidx.navigation3.runtime.entry, nie jest to już wymagane. (I299fc)
  • Ograniczanie przepełnienia opartego na odbiciach NavBackStackSerializer do Androida. Zapobiega to niejawnej serializacji w czasie działania na platformach innych niż Android, wymuszając użycie jawnego przeciążenia SavedStateConfiguration w kodzie wieloplatformowym. (I73313, b/420443609)
  • Make NavigationEvent's swipeEdge an @IntDef (Icee54, b/443950342)
  • Ogranicz serializację NavBackStack do 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 funkcji rememberNavBackStack z wyraźnym parametrem SavedStateConfiguration. (I1e418, b/420443609)

Poprawki błędów

  • Naprawiono awarię podczas przewidywanego powrotu, gdy zagnieżdżony element NavDisplay ma 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

  • DecoratedNavEntryProvider zastąpiono funkcją rememberDecoratedNavEntries, która tworzy i zwraca obiekty NavEntry ozdobione listą podanych dekoratorów (I0fe1c, b/441328236).
  • NavBackStack jest teraz ogólny w stosunku do typu NavKey. Umożliwia to aplikacjom i bibliotekom definiowanie niestandardowych typów kluczy dla ich stosów wstecznych, zamiast ograniczać się do NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack jest teraz @kotlinx.serialization.Serializable, co umożliwia zapisywanie i przywracanie stanu nawigacji w przypadku zakończenia procesu i zmian konfiguracji bez dodatkowego kodu. (I2c3cf, b/420443609)
  • RememberNavBackStack zostało przeniesione do commonMain, aby zapewnić jego dostępność na wszystkich platformach docelowych. (Id69e7, b/420443609)

Poprawki błędów

  • NavDisplay teraz prawidłowo przenosi poszczególne NavEntry do odpowiednich Lifecycle.State. (I30aac, b/440145700)
  • Rozwiązaliśmy problem polegający na tym, że funkcja NavDisplay ignorowała wszystkie zagnieżdżone elementy NavigationEventDispatcherOwner ustawione za pomocą funkcji LocalNavigationEventDispatcherOwner biblioteki NavigationEvent. (I6224a)

Zmiany zależności

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 Runtime obsł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 artefaktu Navigation3 UI. Na innych platformach musisz wdrożyć własny niestandardowy NavDisplay. 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 NavDisplayInfo jest teraz publiczny i można go używać do pobierania listy widocznych wpisów z NavDisplay. (Ibc91f)

Zmiany w interfejsie API

  • Dodaliśmy nowy element NavBackStackSerializer, który w połączeniu z elementem rememberNavBackStack sł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 key przekazywane do NavEntry nie było String lub gdy NavEntry nie zastąpiło contentKey i nie ustawiło go na key (pamiętaj, że wymusza to zapisanie klucza w Bundle). Błąd został naprawiony w następnej 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

Zmiany w interfejsie API

  • SavedStateNavEntryDecorator używa teraz SaveableStateRegistry wbudowanego w SaveableStateProvider do zapisywania i przywracania stanów. (If8d9a)
  • predictivePopTransitionSpec jest teraz przekazywany jako parametr, co pozwala dostosować przejście w zależności od tego, od której krawędzi użytkownik rozpoczął gest przewidywania powrotu. (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

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

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 NavEntry jest teraz ściśle oparty na bieżącej liście dekoratorów przekazywanych do NavDisplay. Oznacza to, że dekoratory powinny być zamieniane w przypadku wielu stosów wstecznych, aby zachować stan obiektów NavEntry na 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.content jest teraz prywatny. Aby wywołać treści NavEntry, wywołaj nowy interfejs API NavEntry.Content(), który nie wymaga już parametru key. (Icd0fd, b/420991203)
  • NavEntry.key jest teraz polem prywatnym. NavEntry i jego odpowiednie stany powinny być identyfikowane przez nowe pole contentKey, które jest generowane przez nową lambdę contentKeyFactory i domyślnie przyjmuje wartość skrótu, który można zapisać i który jest generowany na podstawie NavEntry.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

  • Navigation3 nie będzie już czyścić stanów dekoratora dla backStacks, 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

  • Naprawiono 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 kompozycyjnej 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.