navigation3
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.
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 przypadkuSceneStrategy
nie 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ścirememberSaveable
lub kluczowych instrukcjiremember
na podstawie prawidłowych wartości. (If1733, b/448709506) - Parametr
onBack
dlaSceneStrategy.calculateScene
został 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
onBack
przekazywana do funkcjiNavDisplay
i do funkcjiSceneStrategy
nie udostępnia już parametrucount: 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 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) - Usługa
SavedStateNavEntryDecorator
została zmieniona naSaveableStateHolderNavEntryDecorator
, ponieważ dodaje do wpisówSaveableStateHolder
. Dekorator został też przekształcony z funkcji w klasę, ponieważ funkcjonalnie jest fabryką dlaNavEntryDecorator
. (Ie6013, b/447381176) - W przypadku niestandardowych wyświetleń, w których zamiast
NavDisplay
używany jest językSceneState
, nie trzeba już używać lokalizacji kompozycjiLocalEntriesToRenderInCurrentScene
, która jest teraz wewnętrzna. (Ic40ef, b/414668196) - Usunęliśmy interfejsy
SceneSetupNavEntryDecorator
irememberSceneSetupNavEntryDecorator()
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
iSceneState
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
naEntryProviderScope
, aby odzwierciedlić 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 niestandardowegoSavedStateConfiguration
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ą przezrememberDecoratedNavEntries
. (I4025b, b/441940314) - Przeniesiono
DialogScene
do 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) - Dodano nowy obiekt
SceneState
, który ułatwia zarządzanie scenami. Zapewnia to również nowe przeciążenieNavDisplay
, które wykorzystujeSceneState
iNavigationEventState
. (Idfb46, b/444479133) NavDisplay
umożliwia teraz dostosowywanie przejść na podstawie tego,Scene
dokąd i skąd się przemieszczasz, poprzez sprawdzanieTransition
currentState
itargetState
. (I906cc, b/443872322)NavigationEventInfo
ma teraz statusabstract class
zamiastinterface
. 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
iNavigationBackHandler
(oraz ich warianty) obsługują teraz nowe przeciążenie, które akceptuje podniesioneNavigationEventState
s. 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ówNavEntry
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 importowanoandroidx.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ążeniaSavedStateConfiguration
w kodzie wieloplatformowym. (I73313, b/420443609) - Make
NavigationEvent
'sswipeEdge
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ążeniarememberNavBackStack
z wyraźnymSavedStateConfiguration
. (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 typuNavKey
. Dzięki temu aplikacje i biblioteki mogą definiować niestandardowe typy kluczy dla swoich list wstecznych, zamiast ograniczać się doNavKey
. (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 docommonMain
, aby zapewnić jego dostępność na wszystkich platformach docelowych. (Id69e7, b/420443609)
Poprawki błędów
NavDisplay
teraz prawidłowo przenosi każdyNavEntry
do odpowiedniegoLifecycle.State
. (I30aac, b/440145700)- Rozwiązaliśmy problem polegający na tym, że funkcja
NavDisplay
ignorowała wszystkie zagnieżdżone elementyNavigationEventDispatcherOwner
ustawione za pomocą funkcjiLocalNavigationEventDispatcherOwner
bibliotekiNavigationEvent
. (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
- 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 artefaktuNavigation3 UI
. Na innych platformach musisz wdrożyć własny niestandardowy kodNavDisplay
. 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 zNavDisplayInfo
.NavDisplay
(Ibc91f)
Zmiany w interfejsie API
- Dodaliśmy nowy element
NavBackStackSerializer
, który będzie używany w połączeniu z elementemrememberNavBackStack
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 doNavEntry
nie byłoString
lub gdyNavEntry
nie zastąpiłocontentKey
i nie ustawiło go na wartośćkey
(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
SavedStateNavEntryDecorator
używa terazSaveableStateRegistry
wbudowanego wSaveableStateProvider
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
- 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
NavEntry
jest 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 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ściNavEntry
, wywołaj nowy interfejs APINavEntry.Content()
, który nie wymaga już parametrukey
. (Icd0fd, b/420991203)NavEntry.key
jest teraz polem prywatnym.NavEntry
i jego odpowiednie stany powinny być identyfikowane przez nowe polecontentKey
, 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 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
Navigation3
nie będzie już czyścić stanów dekoratora dla elementówbackStacks
, 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.