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
8 października 2025 r. - - - 1.0.0-alpha11

Deklarowanie zależności

Aby dodać zależność od navigation3, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w 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.0.0-alpha11"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

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 nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

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

Brak informacji o wersji tego artefaktu.

Wersja 1.0

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 przypadku 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 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ę ostateczną klasą 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)
  • Usługa SavedStateNavEntryDecorator została zmieniona na SaveableStateHolderNavEntryDecorator, ponieważ dodaje do wpisów SaveableStateHolder. Dekorator został też przekształcony z funkcji w klasę, ponieważ funkcjonalnie jest fabryką dla NavEntryDecorator. (Ie6013, b/447381176)
  • W przypadku niestandardowych wyświetleń, w których zamiast NavDisplay używany jest język 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 na potrzeby 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 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 Kotlin DSL, która 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. Dokumentacja KDoc została zaktualizowana, aby odzwierciedlać 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 nowe przeciążenie NavDisplay, które przyjmuje listę NavEntry<T> ozdobioną przez 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)
  • Dodano nowy obiekt SceneState, który ułatwia zarządzanie scenami. Zapewnia to również nowe przeciążenie NavDisplay, które wykorzystuje SceneStateNavigationEventState. (Idfb46, b/444479133)
  • NavDisplay umożliwia teraz dostosowywanie przejść na podstawie tego, Scene dokąd i skąd się przemieszczasz, poprzez sprawdzanie Transition currentStatetargetState. (I906cc, b/443872322)
  • NavigationEventInfo ma teraz status 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. NavigationEventHandlerNavigationBackHandler (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 NavBackStackSerializer opartego na odbiciu do Androida. Zapobiega to niejawnym błędom serializacji w czasie działania na platformach innych niż Android, ponieważ wymusza używanie 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ążenia rememberNavBackStack z wyraźnym SavedStateConfiguration. (I1e418, b/420443609)

Poprawki błędów

  • Naprawiono awarię podczas przewidywanego powrotu, gdy zagnieżdżony element NavDisplay zawiera pojedynczy 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. Dzięki temu aplikacje i biblioteki mogą definiować niestandardowe typy kluczy dla swoich list wstecznych, zamiast ograniczać się do NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack to 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ł przeniesiony do commonMain, aby zapewnić jego dostępność na wszystkich platformach docelowych. (Id69e7, b/420443609)

Poprawki błędów

  • NavDisplay teraz prawidłowo przenosi każdy NavEntry do odpowiedniego 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

  • Dodaliśmy 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 kod NavDisplay. Jeśli chcesz, aby ta funkcja była obsługiwana, zagłosuj na problem w Jetbrains tutaj i śledź postępy, aby uzyskać dodatkową pomoc.
  • Obiekt NavDisplayInfo jest teraz publiczny i można go używać do pobierania listy widocznych wpisów z NavDisplayInfo.NavDisplay (Ibc91f)

Zmiany w interfejsie API

  • Dodaliśmy nowy element NavBackStackSerializer, który będzie używany w połączeniu z elementem rememberNavBackStack 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 wersji I8bf6d pojawił się błąd, który powodował, że cykle życia były oparte na scenach, a nie na poszczególnych wpisach. W rezultacie cykl życia nie działał 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 wartość key (pamiętaj, że w takim przypadku klucz można zapisać w Bundle). 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

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 w przypadku wielu stosów wstecznych dekoratory powinny być zamieniane w stosach wstecznych, aby zachować stan obiektó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.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 elementów 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

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