Nawigacja
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
2 lipca 2025 r. | 2.9.1 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od Navigation, 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
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.1" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.1" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
Aby dodać Safe Args do projektu, umieść w pliku najwyższego poziomu build.gradle
ten element classpath
:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.1" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Musisz też zastosować jedną z 2 dostępnych wtyczek.
Aby wygenerować kod w języku Java odpowiedni dla modułów Java lub mieszanych modułów Java i Kotlin, dodaj ten wiersz do pliku build.gradle
aplikacji lub modułu:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Aby wygenerować kod Kotlina odpowiedni dla modułów tylko w Kotlinie, dodaj:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
W pliku gradle.properties
musisz mieć wartość android.useAndroidX=true
, zgodnie z informacjami w artykule Przenoszenie na AndroidX.
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.
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 nową kartę, 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.
Wersja 2.9
Wersja 2.9.1
2 lipca 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.1
Wersja 2.9.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że obiekty
NavEntries
utworzone za pomocą pojedynczego elementu najwyższego poziomu nigdy nie wykraczały poza stan CREATED w swoimLifecycle.State
. (I043ba, b/421095236)
Wersja 2.9.0
7 maja 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0
Wersja 2.9.0 zawiera te zmiany.
Ważne zmiany od wersji 2.8.0
- Działania Navigation Safe Args są teraz generowane z adnotacją
@CheckResult
, aby zapewnić ich użycie.
Interfejs SupportingPane
- Nawigatory niestandardowe mogą teraz oznaczać swoje miejsca docelowe jako implementujące interfejs
SupportingPane
, co oznacza dlaNavController
, że te miejsca docelowe będą wyświetlane obok innych. Korzystając z tego interfejsu, możesz na przykładRESUMED
wiele miejsc docelowych jednocześnie.
Compose Kotlin Multiplatform
- Nawigacja oferuje teraz nową, wspólną funkcję
NavController.handleDeepLink()
, która przyjmujeNavDeepLinkRequest
zamiastIntent
. Dzięki temu platformy inne niż Android mogą prawidłowo obsługiwać precyzyjne linki. Dziękujemy Konstantinowi Tskhovrebovowi! - Nawigacja oferuje teraz
NavUri
, nową funkcję wspólnego analizatora, która jest zgodnym interfejsem API dla identyfikatora URI Androida na innych platformach. Umożliwia to tworzenie identyfikatorów URI w sposób niezależny od platformy. Dziękujemy Konstantinowi Tskhovrebovowi!
Funkcje bezpieczne pod względem typów
- Interfejsy API bezpieczne pod względem typów, które wcześniej były dostępne tylko za pomocą metod
reified
, czylicomposable<YourScreen>
mają teraz wersje nieuprzedmiotowione, które bezpośrednio przyjmują instancjęKClass
. - Bezpieczeństwo typu nawigacji obsługuje teraz klasy wartości jako trasę lub jako typ argumentu trasy.
Wersja 2.9.0-rc01
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-rc01
Wersja 2.9.0-rc01 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy z Jetpack Navigation wszystkie platformy inne niż Android, ponieważ te cele w rzeczywistości nie działają. Zamiast tego udostępniane są teraz stuby dla różnych platform.(I2877d)
Wersja 2.9.0-beta01
9 kwietnia 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-beta01
Wersja 2.9.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Wspólny interfejs API
parseStringAsNavUri
został zmieniony na funkcję fabrycznąNavUri
, która przyjmuje ciąg znaków. (I4db6e, b/403616316)
Aktualizacje zależności
- Ta biblioteka jest teraz kierowana na poziom języka Kotlin 2.0 i wymaga KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
Wersja 2.9.0-alpha09
26 marca 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha09
Wersja 2.9.0-alpha09 zawiera te zmiany.
Nowe funkcje
- Moduł
navigation-testing
jest teraz obsługiwany na komputerach, w systemach Linux, macOS i iOS, a także na urządzeniach z Androidem. (I2b770, b/398265336) NavType
jest teraz obsługiwana na komputerach, w systemach Linux, macOS i iOS, a także na Androidzie. (I297d8)
Wersja 2.9.0-alpha08
12 marca 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha08
Wersja 2.9.0-alpha08 zawiera te zmiany.
Poprawki błędów
- Nawigacja
2.8.9
: naprawiliśmy regresję znalezioną w Nawigacji w wersji 2.8.8, która wymagała, aby precyzyjny link pasował do wszystkich pól żądania precyzyjnego linku lub intencji, aby można było uznać go za pasujący. Spowodowało to, że precyzyjne linki, które zawierały częściowe dopasowania pól i nie miały innych, przestały działać. (Ie5e36, b/399826566)
Wkład zewnętrzny
- Nowa wspólna funkcja parsera do tworzenia
NavUri
. Dziękujemy Konstantinowi Tskhovrebovowi! (If0a6a)
Wersja 2.9.0-alpha07
26 lutego 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha07
Wersja 2.9.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że próba
saveState
z wykluczającym wyskakującym okienkiem powodowała zapisanie stanu null, co mogło prowadzić do awarii podczas przywracania. (I9f3e8, b/395091644) - W Navigation 2.8.8:
NavDeepLink
poprawiono dopasowywanie, w którym precyzyjny link i żądanie precyzyjnego linku muszą być dokładnie zgodne pod względem identyfikatora URI, działania i typu MIME. Jeśli tylko 1 lub 2 pola są zgodne, dopasowywanie nie jest już dozwolone. (I3b029, b/395712033) - Od wersji Navigation 2.8.8: naprawiono błąd, w którym trasy ze ścieżkami z wieloznacznymi znakami nie pasowały do dodanego linku do aplikacji (I7ea92, b/389970341).
Wkład zewnętrzny
- Wyodrębnij interfejsy API navigation-common, navigation-runtime i navigation-compose na wspólną platformę. Dziękujemy Konstantinowi Tskhovrebovowi! (I1e626, Ica76f, Idf479)
Znane problemy
- W związku z pracami nad rozwiązaniem problemu b/395712033 precyzyjne linki są nieprawidłowo wymagane do posiadania wszystkich tych samych pól co żądanie precyzyjnego linku lub
Intent
. Linki bezpośrednie powinny być dopasowywane tylko do pól, które zawierają, a pola nieobjęte dopasowaniem powinny być ignorowane. Problem ten został rozwiązany w kolejnej wersji w ramach zgłoszenia b/399826566.
Wersja 2.9.0-alpha06
12 lutego 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha06
Wersja 2.9.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Działania Navigation Safe Args są teraz generowane z adnotacją
@CheckResult
, aby zapewnić ich użycie. (I14d4c, b/356323084)
Poprawki błędów
- Naprawiono błąd w
NavController
, w którym stany backStack były nieprawidłowo przywracane do tablicy, gdy były zapisywane na liście. (Idfb9b) - W Navigation
2.8.7
: Navigation Safe Args obsługuje teraz miejsca docelowe, które można łączyć. (I35320, b/362791955)
Wersja 2.9.0-alpha05
29 stycznia 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha05
Wersja 2.9.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował nieoczekiwaną animację skalowania podczas korzystania z Navigation Compose. (I480f4, b/353294030)
- W sekcji Nawigacja
2.8.6
: etykietyNavDestination
dostarczone w formacie XML będą analizowane za pomocą funkcjiNavType.get
, aby zapewnić zgodność z niestandardową logikąNavType
. (I7ec2f, b/388100796) - Z Nawigacji
2.8.6
: podczas nawigacji do aktywności za pomocądataPattern
usługaActivityNavigator
będzie teraz próbować zakodować wartość argumentu za pomocąNavType
argumentu. (I16376, b/383616432) - W Nawigacji
2.8.5
rozwiązaliśmy problem, który powodował nieoczekiwaną animację skalowania podczas korzystania z Nawigacji Compose i wywoływania funkcji nawigacji w tej samej klatce, w której kończy się bieżąca animacja. (I26cb1, b/353294030)
Wersja 2.9.0-alpha04
11 grudnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha04
Wersja 2.9.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Interfejsy API bezpieczne pod względem typów, które wcześniej były dostępne tylko za pomocą metod
reified
, czylicomposable<YourScreen>
mają teraz wersje nieuprzedmiotowione, które bezpośrednio przyjmują instancjęKClass
.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
W tabeli poniżej znajdziesz interfejsy API reified i KClass.
reified | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
Zmiany w interfejsie API
- Przeciążenie
NavGraph.setStartDestination
specyficzne dla języka Kotlin, które zapewnia bezpieczeństwo typów, jest ukryte przed źródłami w języku Java. (Ic640c, b/364634035)
Poprawki błędów
- W Nawigacji
2.8.5
rozwiązaliśmy problem, w wyniku którego funkcjaNavHost
mogła zgłaszać wyjątek wPredictiveBackHandler
, jeśli stos wsteczny został zredukowany do 1 pozycji, a w tej samej ramce wywołano systemowe cofnięcie. (I1a429, b/375343407) - W sekcji Nawigacja
2.8.5
: naprawiono błądNavDestination
NullPointerException
podczas aktualizowaniastartDestination
wykresu. (I99421, b/361560785)
Wkład zewnętrzny
- W sekcji Nawigacja
2.8.5
: bezpieczeństwo typu nawigacji obsługuje terazList<Enum>
jako typ argumentu trasy bez konieczności stosowania niestandardowego elementuNavType
. Dziękujemy, Csaba Kozák! (GH-725, b/375559962)
Wersja 2.9.0-alpha03
13 listopada 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha03
Wersja 2.9.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Bezpieczeństwo typu nawigacji obsługuje teraz klasy wartości jako trasę lub jako typ argumentu trasy. (I9344a, b/374347483)
Poprawki błędów
- Naprawiliśmy
ConcurrentModificationException
, który mógł wystąpić, gdyLifecycleObserver
dołączony doNavBackStackEntry
powoduje zmianę stosu wstecznego, gdy hostLifecycleOwner
, np. zawierająca go aktywność lub fragment, zmienia stan cyklu życia. (Ia9494)
Wersja 2.9.0-alpha02
30 października 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha02
Wersja 2.9.0-alpha02 zawiera te zmiany.
Wkład zewnętrzny
- Nowa wspólna metoda
NavController.handleDeepLink(request: NavDeepLinkRequest)
. Dziękujemy Konstantinowi Tskhovrebovowi! (I3e228)
Wersja 2.9.0-alpha01
16 października 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.9.0-alpha01
Wersja 2.9.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Nawigatory niestandardowe mogą teraz oznaczać swoje miejsca docelowe jako implementujące interfejs
SupportingPane
, co oznacza dlaNavController
, że te miejsca docelowe będą wyświetlane obok innych. Korzystając z tego interfejsu, możesz na przykładRESUMED
wiele miejsc docelowych jednocześnie. (Id5559) - W sekcji Nawigacja
2.8.3
dodaliśmy nowe testy lint dla modułównavigation-common
,navigation-runtime
inavigation-compose
, aby ułatwić identyfikowanie tras bezpiecznych pod względem typów, które nie są prawidłowo oznaczone adnotacją@Serializable
. Sprawdzanie to jest stosowane do wszystkich funkcji rozszerzeńNavGraphBuilder
iNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - W sekcji Nawigacja
2.8.3
dodaliśmy nowe testy lint dla modułównavigation-common
,navigation-runtime
inavigation-compose
, aby pomóc w identyfikowaniu bezpiecznych pod względem typów tras z argumentami wyliczeniowymi, które nie są prawidłowo oznaczone adnotacją@Keep
. Sprawdzanie to jest stosowane do wszystkich funkcji rozszerzeńNavGraphBuilder
iNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Zmiany w zachowaniu
- Próba użycia
NavController
, która została wcześniejDESTROYED
, spowoduje terazIllegalStateException
. (I520da, b/369616172)
Poprawki błędów
- Zaktualizowano wyjątek „Nie znaleziono klasy Enum”, aby w przypadku usunięcia klasy Enum w zminimalizowanych kompilacjach sugerować użycie adnotacji
@Keep
. (I90e79, b/358137294)
Znane problemy
- W nowych regułach lint dodanych w
Navigation 2.8.*
występuje problem, który powoduje błądObsolete custom lint check
podczas próby uruchomienia lint z użyciem wtyczki Android Gradle w wersji 8.4 lub nowszej (b/368070326, b/371463741).
Wersja 2.8
Wersja 2.8.9
12 marca 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.9
Wersja 2.8.9 zawiera te zmiany.
Poprawki błędów
- Naprawiono regresję w Navigation 2.8.8, która wymagała, aby precyzyjny link był dokładnie zgodny ze wszystkimi polami żądania precyzyjnego linku lub intencji, aby można było uznać go za pasujący. Spowodowało to, że precyzyjne linki, które zawierały częściowe dopasowania pól i nie miały innych, przestały działać. (Ie5e36, b/399826566)
Wersja 2.8.8
26 lutego 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.8
Wersja 2.8.8 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że trasy ze ścieżkami zawierającymi symbole wieloznaczne nie pasowały do dodanego linku. (I7ea92, b/389970341)
- Naprawiono dopasowywanie
NavDeepLink
, w przypadku którego precyzyjny link i żądanie precyzyjnego linku muszą być dokładnie zgodne pod względem identyfikatora URI, działania i typu MIME. Jeśli tylko 1 lub 2 pola są zgodne, dopasowywanie nie jest już dozwolone. (I3227f, b/395712033)
Znane problemy
- W związku z pracami nad rozwiązaniem problemu b/395712033 precyzyjne linki są nieprawidłowo wymagane do posiadania wszystkich tych samych pól co żądanie precyzyjnego linku lub
Intent
. Linki bezpośrednie powinny być dopasowywane tylko do pól, które zawierają, a pola nieobjęte dopasowaniem powinny być ignorowane. Problem ten został rozwiązany w kolejnej wersji w ramach zgłoszenia b/399826566.
Wersja 2.8.7
12 lutego 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.7
Wersja 2.8.7 zawiera te zmiany.
Poprawki błędów
- Bezpieczne argumenty nawigacji obsługują teraz miejsca docelowe, które można łączyć. (I35320, b/362791955)
Wersja 2.8.6
29 stycznia 2025 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.6
Wersja 2.8.6 zawiera te zmiany.
Poprawki błędów
NavDestination
etykiety podane w pliku XML będą analizowane za pomocąNavType.get
, aby zapewnić zgodność z niestandardową logikąNavType
. (Id366d, b/388100796)- Podczas przechodzenia do aktywności za pomocą
dataPattern
usługaActivityNavigator
będzie teraz próbować zakodować wartość argumentu za pomocąNavType
argumentu. (I1a71d, b/383616432)
Wersja 2.8.5
11 grudnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.5
Wersja 2.8.5 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
NavHost
mogła zgłaszać wyjątek w funkcjiPredictiveBackHandler
, jeśli stos wsteczny został zredukowany do 1 pozycji, a w tej samej ramce wywołano systemowe cofnięcie. (I1a429, b/375343407) - Usunęliśmy błąd
NavDestination
NullPointerException
, który występował podczas aktualizowaniastartDestination
wykresu. (I99421, b/361560785) - Rozwiązaliśmy problem, który powodował nieoczekiwaną animację skalowania podczas korzystania z Navigation Compose i wywoływania funkcji navigate w tej samej klatce, w której kończy się bieżąca animacja. (I26cb1, b/353294030)
- Naprawiliśmy
ConcurrentModificationException
, który mógł wystąpić, gdyLifecycleObserver
dołączony doNavBackStackEntry
powoduje zmianę stosu wstecznego, gdy hostLifecycleOwner
, np. zawierająca go aktywność lub fragment, zmienia stan cyklu życia. (Ia9494)
Wkład zewnętrzny
- Bezpieczeństwo typu nawigacji obsługuje teraz
List<Enum>
jako typ argumentu trasy bez konieczności stosowania niestandardowegoNavType
. Dziękujemy, Csaba Kozák! (GH-725, b/375559962)
Wersja 2.8.4
13 listopada 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.4
Wersja 2.8.4 zawiera te zmiany.
Nowe funkcje
- W nawigacji
2.9.0-alpha03
: bezpieczeństwo typu nawigacji obsługuje teraz klasę wartości jako trasę lub jako typ argumentu trasy (I9344a, b/374347483).
Poprawki błędów
- Nawigacja
2.9.0-alpha01
: próba użyciaNavController
, które zostało wcześniejDESTROYED
, spowoduje terazIllegalStateException
. (I520da, b/369616172)
Wersja 2.8.3
16 października 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.3
Wersja 2.8.3 zawiera te zmiany.
Nowe funkcje
- Dodano nowe testy lint dla modułów
navigation-common
,navigation-runtime
inavigation-compose
, aby pomóc w identyfikowaniu tras bezpiecznych pod względem typów, które nie są prawidłowo oznaczone adnotacją@Serializable
. Sprawdzanie to jest stosowane do wszystkich funkcji rozszerzeńNavGraphBuilder
iNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Dodano nowe testy lint dla modułów
navigation-common
,navigation-runtime
inavigation-compose
, aby pomóc w identyfikowaniu bezpiecznych pod względem typów tras z argumentami wyliczeniowymi, które nie są prawidłowo oznaczone adnotacją@Keep
. Sprawdzanie to jest stosowane do wszystkich funkcji rozszerzeńNavGraphBuilder
iNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Poprawki błędów
- Naprawiono problem, w którym nowe reguły lint dodane w
Navigation 2.8.*
powodowały błądObsolete custom lint check
podczas próby uruchomienia lint z wtyczką Androida do obsługi Gradle w wersji 8.4 lub nowszej. (I1be3d, b/368070326, b/371463741)
Znane problemy
- Podczas próby uruchomienia narzędzia Lint w wersji 16 (AGP 8.7) lub nowszej narzędzie Lint do nawigacji zgłosi błąd Obsolete custom lint check. (b/371926651)
Wersja 2.8.2
2 października 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.2
Wersja 2.8.2 zawiera te zmiany.
Nowe funkcje
- Navigation Type Safety obsługuje teraz klasy Serializable, które zawierają
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
iList<Double>?
bez konieczności stosowania niestandardowegoNavType
. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Poprawki błędów
- Ulepszono komunikat o błędzie, który pojawia się, gdy nawigacja nie może przypisać argumentu trasy do
NavType
. Nowy komunikat o błędzie będzie zawierać nazwę argumentu, w pełni kwalifikowaną nazwę argumentu i w pełni kwalifikowaną nazwę trasy. (Id8416, b/346264232)
Wersja 2.8.1
18 września 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.1
Wersja 2.8.1 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy nową regułę lint, która zapewnia używanie funkcji
popBackStack
przyjmującej typ klasy reifikowanej podczas próbypopBackStack
za pomocą interfejsów API bezpiecznych pod względem typów. (Ief161, b/358095343)
Poprawki błędów
- Nawigacja wymaga teraz, aby trasa przekazywana do
NavGraph
wstartDestination
zawierała wartości wszystkich wymaganych argumentów, w tym argumentów, które nie mogą mieć wartości null i nie mają wartości domyślnej. (I18e74, b/362594265) - Argumenty bezpieczne nawigacji obsługują teraz ciągi znaków, które nie mogą mieć wartości null, dzięki czemu wartości „null” będą analizowane i przechowywane w pakiecie w takiej postaci, w jakiej zostały podane. Odstępuje to od dotychczasowego zachowania, w którym wartości „null” były analizowane jako obiekt null. Ta zmiana dotyczy tylko typów String, które nie mogą mieć wartości null. Ciągi znaków dopuszczające wartość null pozostają bez zmian. (I08b4a, b/348936238)
- Do
NavDestination
nie można już kierować precyzyjnych linków, z wyjątkiem tych, które zostały wyraźnie dodane do miejsca docelowego. Oznacza to również, że do miejsca docelowego możesz dotrzeć tylko za pomocą funkcji nawigacji, która przyjmuje ciąg tekstowy trasy. Eliminuje to lukę w zabezpieczeniach, która umożliwiała tworzenie precyzyjnych linków do potencjalnie chronionego miejsca docelowego. (Ie30e6)
Aktualizacja zależności
- Bezpieczne argumenty nawigacji zależą teraz od Kotlin w wersji 1.9.24, a nie 2.X, dzięki czemu deweloperzy nie muszą przeprowadzać aktualizacji. (a4129a)
- Biblioteka Navigation Compose zależy teraz od Compose
1.7.2
.
Wersja 2.8.0
4 września 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0
Wersja 2.8.0 zawiera te zmiany.
Ważne zmiany od wersji 2.7.0
Bezpieczeństwo typów w języku Kotlin DSL w przypadku nawigacji
- Nawigacja zapewnia teraz bezpieczeństwo typów w przypadku Kotlin DSL (używanego przez Navigation Compose) za pomocą Kotlin Serialization, co umożliwia definiowanie miejsc docelowych na wykresie nawigacji za pomocą obiektów bezpiecznych pod względem typów i klas danych:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Więcej informacji znajdziesz w poście na blogu o bezpieczeństwie typów w Navigation Compose.
Nawigacja w Compose z predykcyjnym powrotem
- Biblioteka Navigation Compose obsługuje teraz predykcyjne cofanie w aplikacji za pomocą nowych interfejsów API
SeekableTransitionState
z biblioteki compose-animation. Dzięki temu możesz użyć gestu przejścia wstecz, aby zobaczyć poprzednie miejsce docelowe z niestandardowym przejściem, zanim zdecydujesz, czy chcesz zatwierdzić transakcję za pomocą ukończonego gestu, czy ją anulować.
Kompozycja Navigation Fragment
- Dodaliśmy nowy artefakt
navigation-fragment-compose
, który zawiera alternatywęComposableNavHostFragment
dlaNavHostFragment
, umożliwiającą dodawanie miejsc docelowych z możliwością komponowania do plików XML nawigacji. Każdecomposable
miejsce docelowe musi być wyrażone jako metoda najwyższego poziomu bez argumentów@Composable
, której pełna nazwa jest używana jako atrybutandroid:name
w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc docelowych tworzony jest fragment zawierający, który wyświetla treści kompozycyjne.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Inne zmiany
- Biblioteka Navigation Compose zależy teraz od biblioteki Compose w wersji 1.7.0.
- Nawigacja udostępnia teraz nową klasę
CollectionNavType<T>
, podklasęNavType<T>
dla argumentów opartych na kolekcjach, takich jak listy, tablice i mapy. Wszystkie domyślne tabliceNavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
iStringArrayType
) dziedziczą teraz z tej nowej klasy. NavType
ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i liczb długich.
Wersja 2.8.0-rc01
21 sierpnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-rc01
Wersja 2.8.0-rc01 zawiera te zmiany.
Poprawki błędów
- Naprawiono awarię nawigacji podczas przekazywania klas Enum najwyższego poziomu jako argumentów bezpiecznych pod względem typu. (I0ba76, b/358137294)
- Nawigacja 2.8 działa teraz prawidłowo z pakietem SDK 34 i nie przełączy się na pakiet SDK 35 aż do wydania wersji 2.9 wraz z pozostałymi bibliotekami AndroidX. (b/358798728)
Wersja 2.8.0-beta07
7 sierpnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta07
Wersja 2.8.0-beta07 zawiera te zmiany.
Znane problemy
- Z powodu b/358137294 od razu obsługiwane są tylko wyliczenia zagnieżdżone w innej klasie. Wyliczenia najwyższego poziomu będą obsługiwane w kolejnej wersji.
Poprawki błędów
- Podczas nawigowania do zduplikowanych lub udostępnionych miejsc docelowych nawigacja będzie w pierwszej kolejności prowadzić do najbliższego pasującego miejsca docelowego z bieżącej lokalizacji na wykresie. (Ic89a4, b/352006850)
- Nawigacja w bezpiecznych argumentach ma teraz nowy symbol
NavType.EnumType
. Oznacza to, że typyEnum
nie wymagają już niestandardowychNavType
. Pamiętaj, żeEnum
SerialName
musi być domyślną pełną i jednoznaczną nazwą. (I66d22, b/346475493) - Nawigacja w bezpiecznych argumentach ma teraz wbudowaną obsługę typów argumentów dopuszczających wartość null,w tym
Int?
,Long?
,Float?
,Boolean?
iEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) NavGraph
startDestination
będzie teraz używać domyślnych wartości argumentów, jeśli trasastartDestination
przekazana doNavGraph
jest dokładnie równastartDestination.route
. (I13762, b/354046047)
Wersja 2.8.0-beta06
24 lipca 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta06
Wersja 2.8.0-beta06 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że sprawdzanie kodu
WrongStartDestinationType
nie sprawdzało obiektów towarzyszących w przekazanym typie klasy, co uniemożliwiało wykrycie błędu. (I92b09)
Wersja 2.8.0-beta05
10 lipca 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta05
Wersja 2.8.0-beta05 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd nawigacji
singleTop
, który występował, gdy zagnieżdżone elementyNavGraphs
miały tę samąstartDestination
trasę. (I17b94, b/294408596)
Wersja 2.8.0-beta04
26 czerwca 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta04
Wersja 2.8.0-beta04 zawiera te zmiany.
Poprawki błędów
- Nawigacja obsługuje teraz nawigowanie z pustymi ciągami znaków w argumentach ścieżki. (Ic5dbd, b/339481310)
- Ulepszyliśmy komunikat o błędzie w przypadku niestandardowych serializatorów zadeklarowanych bezpośrednio w polach klasy za pomocą
@Serializable(with =...)
, aby wyjaśnić, że ta funkcja nie jest obecnie obsługiwana. (I052b0, b/341319151) - Interfejs API
SavedStateHandleFactory
test może być teraz używany w testach innych niż testy na Androida, ale będzie wymagać obsługi analizowania argumentów za pomocą pakietów przez Robolectric. (I76cdc, b/340966212) - Rozwiązaliśmy problem z awarią podczas przywracania stanu po wznowieniu aplikacji po zakończeniu procesu, gdy w Compose używano bezpiecznej pod względem typów nawigacji. (Ia8f38, b/341801005)
- Rozwiązaliśmy problem w Navigation Compose, który powodował, że po anulowaniu gestu przewidywanego powrotu ekran
NavBackStackEntry
, do którego wraca użytkownik, nigdy nie wraca do stanu cyklu życiaRESUMED
. Dzięki temu po szybkim przesunięciu miejsce docelowe powraca do animacji, zamiast wskakiwać na swoje miejsce. (I97a0c, b/346608857) - Gdy używasz predykcyjnego powrotu z Navigation Compose, wysuwane miejsce docelowe będzie teraz miało odpowiednią kolejność osi Z, dzięki czemu będzie się prawidłowo animować na wierzchu przychodzącego miejsca docelowego. (I2077b, b/345993681)
Wersja 2.8.0-beta03
12 czerwca 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta03
Wersja 2.8.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
CollectionNavType
ma nową metodę abstrakcyjnąemptyCollection()
. Zastąp tę metodę, aby obsługiwać pustą kolekcję przekazywaną jako argument. (Ie4d84, b/341723133)
Poprawki błędów
- Dodaliśmy dokumentację dotyczącą parametrów
NavType.serializeAsValue
iserializeAsValues
, aby podkreślić, że końcowe dane wyjściowe powinny być zakodowane w formacie URI. (Ida6bd, b/344943214) - Rozwiązaliśmy problem z awarią podczas wywoływania funkcji
toRoute<T>
z argumentemCollectionNavType
o wartości null. Podczas nawigacji z wartością nullCollectionNavType
argument wyjściowy będzie wartością domyślną zadeklarowaną w klasie Serializable lub wartością zwracaną przezemptyCollection()
, jeśli nie ma wartości domyślnej. (I84158, Id630f, b/342672856)
Wersja 2.8.0-beta02
29 maja 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta02
Wersja 2.8.0-beta02 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd
ClassCastException
, który występował podczas używaniaNavBackStackEntry.toRoute
z niestandardowymNavType
dopuszczającym wartość null. (I1c29b, b/342239473) - Rozwiązaliśmy problemy z przywracaniem stanu listy wstecznej nawigacji, które występowały podczas próby przywrócenia wpisu listy wstecznej niedostępnego za pomocą identyfikatora z bieżącego miejsca docelowego. Ponieważ trasy są oparte na identyfikatorach, miało to też wpływ na miejsca docelowe utworzone za pomocą tras. Rozwiązuje to też problem z awarią spowodowaną wywołaniem funkcji
clearBackStack()
, która miała ten sam problem. (I423c3, b/339908057)
Wersja 2.8.0-beta01
14 maja 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-beta01
Wersja 2.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
SavedStateHandle.toRoute()
przyjmuje teraz parametrtypeMap
dla niestandardowych typów argumentów. (Ie39fb, b/339026523)- Dodano interfejs API testowy do
navigation-testing
, aby utworzyćSavedStateHandle
z obiektu Kotlin Serializable. (Id4867, b/339080702)
Poprawki błędów
- Dodaliśmy brakujące dokumenty parametrów funkcji Kotlin DSL Navigation. (I26a36)
Wersja 2.8.0-alpha08
1 maja 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha08
Wersja 2.8.0-alpha08 zawiera te zmiany.
Safe Args w Navigation Compose
- Zakończyliśmy prace nad obsługą bezpieczeństwa typów w czasie kompilacji w przypadku Navigation Compose i użytkowników Navigation Kotlin DSL opartego na Kotlin Serialization. Wcześniej eksperymentalne interfejsy API są teraz stabilne. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Ta funkcja korzysta z serializacji w Kotlinie, aby umożliwić Ci definiowanie miejsc docelowych na wykresie nawigacji za pomocą obiektów bezpiecznych pod względem typów i klas danych:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Więcej informacji znajdziesz w poście na blogu o bezpieczeństwie typów w Navigation Compose.
Nowe funkcje
- Artefakt
navigation-fragment-compose
udostępnia terazLocalFragment
lokalną kompozycję metod kompozycyjnych w ramachComposableFragment
. (If35e5) NavType
ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i liczb długich. (I4b6dd, Ia914c, b/188693139)
Wersja 2.8.0-alpha07
17 kwietnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha07
Wersja 2.8.0-alpha07 zawiera te zmiany.
Nowe funkcje
Dodaje nowy artefakt
navigation-fragment-compose
, który zawiera alternatywęComposableNavHostFragment
dlaNavHostFragment
, umożliwiającą dodawanie miejsc docelowychcomposable
do plików XML nawigacji. Każdecomposable
miejsce docelowe musi być wyrażone jako metoda najwyższego poziomu bez argumentów@Composable
, której pełna nazwa jest używana jako atrybutandroid:name
w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc docelowych tworzony jest fragment zawierający, który wyświetla treści kompozycyjne. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Zmiany w interfejsie API
- Dalsze wsparcie dla Safe Args w Navigation Compose z użyciem podejścia opartego na serializacji w Kotlinie. Te interfejsy API nie są ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta w przyszłej wersji, gdy cały interfejs API będzie gotowy. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Wersja 2.8.0-alpha06
3 kwietnia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha06
Wersja 2.8.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Rozpoczęliśmy obsługę Safe Args w Navigation Compose przy użyciu podejścia opartego na serializacji w Kotlinie. Te interfejsy API nie są ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta w przyszłej wersji, gdy cały interfejs API będzie gotowy. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Poprawki błędów
NavHost
używa terazAlignment.TopStart
jako domyślnego argumentu contentAlignment. Dzięki temu jest ona zgodna z domyślnym ustawieniem dlaAnimatedContent
i eliminuje niektóre przypadki nieoczekiwanej zmiany skali od środka. (I09e72, b/330111602)- Podczas wykonywania gestu przewidywanego powrotu w trakcie korzystania z Navigation Compose ikona
NavHost
będzie teraz prawidłowo kończyć niestandardowe przejście, zamiast natychmiast się zamykać. (I99017, b/327292110)
Wersja 2.8.0-alpha05
20 marca 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha05
Wersja 2.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Teraz możesz przekazywać argumenty do
NavGraph
startDestination
bezpośrednio wstartDestination
bez korzystania zdefaultValue
. Dotyczy to również zagnieżdżonych elementówNavGraph
startDestinations
. (I0e0b5, b/109505019, b/188693139)
Zmiany w interfejsie API
- Dodaliśmy nową klasę abstrakcyjną
CollectionNavType<T>
, podklasę klasyNavType<T>
, która służy do argumentów opartych na kolekcjach, takich jak listy, tablice i mapy. (Ic6d63, b/188693139) - Wszystkie domyślne tablice
NavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
iStringArrayType
) są teraz typuCollectionNavType
(Idcf79, b/188693139). NavType
udostępnia teraz nowy otwarty interfejs APIvalueEquals
, który określa, czy 2 wartości tego samego typu są sobie równe. (I6cb97, b/327229511)
Poprawki błędów
- Parametry zapytania w precyzyjnych linkach umożliwiają teraz używanie wartości w postaci nawiasów klamrowych wokół nazwy argumentu (np.
{argName}
) jako prawidłowych wartości w przypadkuNavTypes
opartych na ciągach znaków. Rozwiązaliśmy problem, który powodował, że taka wartość była uznawana za nieprawidłową (lub brak wartości) we wszystkich typach. (I18302, b/327274038) - Funkcje
NavController
obsługujące trasy, takie jaknavigate
lubpopBackStack
, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicyNavTypes
. (Iea805, b/327229511)
Wersja 2.8.0-alpha04
6 marca 2024 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha04
Wersja 2.8.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Możesz teraz określać
SizeTranform
dla przejść w Navigation Compose, definiując je w ramach inicjowania funkcjicomposable
lubnavigation
. (I91062, b/296912651)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
NavHost
w Compose Navigation nie wyświetlał prawidłowo przejścia podczas korzystania z funkcji Wstecz systemu bez gestu. (Iceeae, b/325998468)
Wersja 2.8.0-alpha03
21 lutego 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha03
Wersja 2.8.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
NavBackStackEntry.savedStateHandle
jest teraz oznaczony jako@MainThread
, ponieważ używa kodu, który i tak musi znajdować się w głównym wątku. (Ibb988, b/299523245)
Poprawki błędów
- Rozwiązaliśmy problem w bibliotece Navigation, który powodował, że
NavGraph
ViewModele byłyDESTROYED
zbyt wcześnie, ponieważ powiązany wpisViewModel
nie był częścią zapisanego stanu. (Ib6bb7, b/317581849)
Aktualizacja zależności
- Biblioteka Navigation Compose zależy teraz od Compose w wersji 1.7.0-alpha03.
Wersja 2.8.0-alpha02
7 lutego 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha02
Wersja 2.8.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Biblioteka Navigation Compose obsługuje teraz predykcyjne cofanie w aplikacji za pomocą nowych interfejsów API
SeekableTransitionState
z biblioteki compose-animation. Dzięki temu możesz użyć gestu przejścia wstecz, aby zobaczyć poprzednie miejsce docelowe z niestandardowym przejściem, zanim zdecydujesz, czy chcesz zatwierdzić transakcję za pomocą ukończonego gestu, czy ją anulować. (I8b8e9)
Wersja 2.8.0-alpha01
24 stycznia 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.8.0-alpha01
Wersja 2.8.0-alpha01 zawiera te zmiany.
Poprawki błędów
- Usunięto wyciek
BackStackState
, w którym wiele wywołańsaveState
w miejscu docelowym powodowało zapisywanie wielu stanów, ale można było przywrócić tylko pierwszy z nich. (I598b0, b/309559751) - Rozwiązaliśmy problem polegający na tym, że argumenty inne niż ciągi tekstowe nie były prawidłowo wyświetlane podczas używania funkcji pomocniczych
NavigationUI
do wypełniania tytułu pasków aplikacji. (#636, b/316676794)
Aktualizacja zależności
- Biblioteka Navigation Compose zależy teraz od Compose
1.7.0-alpha01
, co rozwiązuje problem, który mógł powodować nieoczekiwaną animację skalowania. (b/297258205)
Wkład zewnętrzny
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciągi znaków podczas używania funkcji pomocniczych
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.7
Wersja 2.7.7
7 lutego 2024 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.7
Wersja 2.7.7 zawiera te zmiany.
Poprawki błędów
- Przeniesiono z Navigation
2.8.0-alpha01
: naprawiono wyciekBackStackState
, w którym wiele wywołańsaveState()
w jednymNavBackStackEntry
powodowało zapisywanie wielu stanów, ale można było przywrócić tylko pierwszy zapisany stan. (I598b0, b/309559751) - Przeniesiono z Nawigacji
2.8.0-alpha01
: rozwiązano problem polegający na tym, że argumenty inne niż ciągi tekstowe nie były prawidłowo wyświetlane podczas używania funkcji pomocniczychNavigationUI
do wypełniania tytułu pasków aplikacji. (#636, b/316676794)
Wkład zewnętrzny
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciągi znaków podczas używania funkcji pomocniczych
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.6
Wersja 2.7.6
13 grudnia 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.6
Wersja 2.7.6 zawiera te zmiany.
Poprawki błędów
- Funkcja
NavGraph
equals()
prawidłowo uwzględnia teraz węzły drugiego wykresu, a nie tylko wykresu wywołującego. Dzięki temu wykresy z węzłami o różnych identyfikatorach nie będą już uznawane za równe (I401cb, b/311414915).
Wersja 2.7.5
Wersja 2.7.5
1 listopada 2023 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.5
Wersja 2.7.5 zawiera te zmiany.
Ulepszenia wydajności
- Znacznie zwiększyliśmy wydajność (zarówno pod względem czasu, jak i liczby przydziałów) porównywania dwóch wykresów. Oznacza to, że wywołania takie jak
setGraph
, które wewnętrznie porównują nowy wykres z istniejącym, są znacznie szybsze i powodują mniej pominiętych klatek. Dziękujemy Michałowi Z za dokładną analizę, która doprowadziła do tej zmiany. (I6ad62) NavHost
będzie teraz renderować miejsce docelowe na początku pierwszego przejścia kompozycji, zamiast czekać na drugie przejście, aby odczytać zaktualizowany stan. (I439a7, b/304852206)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że stos wsteczny był usuwany, jeśli funkcja
setGraph
była wywoływana więcej niż raz z dokładnie tym samym wykresem, ale tylko wtedy, gdy na wykresie znajdowało się miejsce docelowe zawierające działanie łączące 2 miejsca docelowe. (Ieaed7) - Okna, które zostały otwarte i zamknięte w szybkim tempie, nie będą już widoczne na liście
NavController.visibleEntries
. (I67586, b/287969970) - Gdy wpis zostanie usunięty, a następnie nastąpi zmiana konfiguracji, jego pole
ViewModel
zostanie prawidłowo wyczyszczone, jeśli polesaveState
ma wartość false. (Idf242, b/298164648) - Naprawiono problem, w którym
NavController
mogło obsługiwać ten sam link bezpośredni więcej niż raz, jeśli stos wsteczny był całkowicie pusty przed zmianą konfiguracji lub wywołaniemsetGraph
tylko wtedy, gdy przychodzący Intent miał ustawioną flagęFLAG_ACTIVITY_NEW_TASK
. (I73c7f)
Aktualizacje zależności
- Nawigacja za pomocą fragmentów zależy teraz od Fragmentu w wersji 1.6.2. Rozwiązuje to problem, w którym instancje
ViewModel
zagnieżdżonych fragmentów nie były czyszczone podczas wywoływaniaclearBackStack
.
Wersja 2.7.4
Wersja 2.7.4
4 października 2023 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.4
Wersja 2.7.4 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy obsługę
popUpTo
, aby używać tras z argumentami, które umożliwiają powrót do konkretnego wpisu korzystającego z tych argumentów. Jest to zgodne z obsługą wpopBackStack
. (I731f4, b/299255572)
Poprawki błędów
- Rozwiązanie problemu z awarią
FragmentNavigator
spowodowaną przerwaniem nawigacji przez inną nawigację z użyciempopUpTo
. (I3c848, b/301887045) - Rozwiązanie problemu polegającego na tym, że naciśnięcie przycisku Wstecz w systemie powodowało nieprawidłową aktualizację ikony
currentDestination
, która nie pasowała do wyświetlanego fragmentu. (Id0d6c, b/289877514) DialogFragment
będzie teraz prawidłowo przechodzić do stanuRESUMED
po zamknięciu okna dialogowego znajdującego się nad nim. (I88f0d, b/301811387)
Wersja 2.7.3
Wersja 2.7.3
20 września 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.3
Wersja 2.7.3 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem w nawigacji z fragmentami, który powodował, że lista
visibleEntries
zawierała nieprawidłowe wpisy. (I5caa9, b/288520638) - Rozwiązaliśmy problem, który powodował, że miejsce docelowe pływającego okna (np.
Dialogs
,Bottomsheets
itp.) nigdy nie otrzymywało wywołania zwrotnego cyklu życiaRESUMED
. (I3b866, b/287505132)
Wersja 2.7.2
Wersja 2.7.2
6 września 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.2
Wersja 2.7.2 zawiera te zmiany.
Poprawki błędów
- Nawigacja zależy teraz od cyklu życia
2.6.2
, co rozwiązuje problem z interakcją międzyrememberSaveable
aNavHost
w Nawigacji Compose, która powodowała, że stanrememberSaveable
miejsc docelowych i wszystkich instancjiViewModel
należących doSavedStateHandle
nie był prawidłowo przywracany po zakończeniu i ponownym utworzeniu procesu. (b/298059596, b/289436035) - Rozwiązaliśmy problem, który występował podczas jednoczesnego wyświetlania wielu okien w Navigation Compose.Okna częściowo zasłonięte (np. nie te na wierzchu) były w stanie
CREATED
cyklu życia zamiast w stanieSTARTED
. (aosp/2728520, b/289257213) - Rozwiązaliśmy problem z wyświetlaniem wielu okien w Navigation Compose jednocześnie, w którym zamknięcie okna znajdującego się na wierzchu powodowało, że nowe okno na wierzchu pozostawało w stanie cyklu życia
STARTED
zamiast prawidłowo przechodzić do stanuRESUMED
. (aosp/2629401, b/286371387) - Bezpieczne argumenty nawigacji nie tworzą już instancji zadania od razu, jeśli nie jest ono wykonywane. (I0e385, b/260322841)
Aktualizacja zależności
- Nawigacja Compose zależy teraz od Compose w wersji 1.5.1.
Wersja 2.7.1
Wersja 2.7.1
23 sierpnia 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.1
Wersja 2.7.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem w nawigacji z Compose, który powodował, że podczas korzystania z
Scaffold
mógł pojawić się błąd związany z próbą uzyskania dostępu doLifecycle.State.DESTROYED
ViewModel
. (I1dc11, b/268422136)
Wersja 2.7.0
Wersja 2.7.0
9 sierpnia 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.0
Wersja 2.7.0 zawiera te zmiany.
Ważne zmiany od wersji 2.6.0
Animacje z aplikacji Accompanist
Teraz, gdy AnimatedContent
jest stabilny, mogliśmy przenieść kod z animacji nawigacji w bibliotece Accompanist z powrotem do Navigation Compose.
Oznacza to, że wszystkie funkcje ustawiania niestandardowych przejść, które były dostępne w AnimatedNavHost
, są bezpośrednio obsługiwane w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist. Wkrótce oficjalnie wycofamy ją z użycia i udostępnimy wskazówki dotyczące powrotu do samego Navigation Compose. Będzie to odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)
Poprawki błędów
- Komponent NavHost w Navigation Compose prawidłowo przechwytuje wywołania systemowe wstecz, nawet po zatrzymaniu i wznowieniu aktywności. (Icb6de, b/279118447)
Aktualizacje zależności
- Nawigacja zależy teraz od wersji
1.5.0
biblioteki Compose, a nie od wersji1.1.0
.
Wersja 2.7.0-rc01
26 lipca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.0-rc01
Wersja 2.7.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że lambdy
EnterTransition
iExitTransition
utworzone w ramach funkcjiNavHost
mogły pozostać w pamięci nawet po usunięciu funkcjiNavHost
z kompozycji. (I893d0)
Znane problemy
- W nawigacji w wersji 2.6.x występuje problem, który może powodować błąd
IllegalArgumentException
podczas nawigowania za pomocą funkcji popUpTo. Możesz uniknąć tego wyjątku, restrukturyzując wykres, podobnie jak w przypadku porady podanej tutaj. (b/287133013)
Wersja 2.7.0-beta02
28 czerwca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.0-beta02
Wersja 2.7.0-beta02 zawiera te zmiany.
Poprawki błędów
- Komponent Navigation Compose ma teraz odpowiednią kolejność osi Z w przypadku niestandardowych przejść, które korzystają z opcji
popUpTo
.(/Ib1c3a, b/285153947)
Wersja 2.7.0-beta01
7 czerwca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.0-beta01
Wersja 2.7.0-beta01 zawiera te zmiany.
Poprawki błędów
NavHost
w Navigation Compose prawidłowo przechwytuje wywołania systemowe, nawet poActivity
,STOPPED
iRESUMED
. (Icb6de, b/279118447)
Wersja 2.7.0-alpha01
24 maja 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.7.0-alpha01
Wersja 2.7.0-alpha01 zawiera te zmiany.
Animacje z aplikacji Accompanist
Teraz, gdy AnimatedContent
jest stabilny, mogliśmy przenieść kod z animacji nawigacji w bibliotece Accompanist z powrotem do Navigation Compose.
Oznacza to, że wszystkie funkcje ustawiania niestandardowych przejść, które były dostępne w AnimatedNavHost
, są bezpośrednio obsługiwane w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist. Wkrótce oficjalnie wycofamy ją z użycia i udostępnimy wskazówki dotyczące powrotu do samego Navigation Compose. Będzie to odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)
Poprawki błędów
- Nawigacja
2.6.0-rc02
: rozwiązaliśmy problem z nawigacją we fragmentach, w którym nawigowanie za pomocąpopUpTo
i usuwanie fragmentu ze stosu wstecznego bez ponownego tworzenia jego widoku powodowało, że przycisk Wstecz przestawał działać. (Ieb8d4, b/281726455)
Aktualizacje zależności
- Nawigacja zależy teraz od Compose
1.5.0-beta01
.
Wersja 2.6.0
Wersja 2.6.0
7 czerwca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0
Wersja 2.6.0 zawiera te zmiany.
Ważne zmiany w nawigacji od wersji 2.5.0
NavBackStackEntry
arguments
iarguments
przekazywane doOnDestinationChangedListener
są teraz tylko kopią niezmiennych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że wszelkie zmiany wprowadzone w tych pakietach nie będą odzwierciedlane w kolejnych dostępach doarguments
ani innych instancjiOnDestinationChangedListener
.NavDeepLink
obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które będą mapowane na typ tablicy argumentu.NavType
zawiera teraz też metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości.- Niestandardowe podklasy
NavType
mogą teraz zastępowaćserializeAsValue
, aby serializować wartość do ciągu znaków, co umożliwia całkowite zamknięcie serializacji i deserializacji (za pomocąparseValue
) w klasieNavType
.StringType
zastępuje teraz tę metodę, aby wywoływaćUri.encode
na podanymString
.
Ważne zmiany w Navigation Compose od wersji 2.5.0
- Podczas wyświetlania podglądu funkcji kompozycyjnej za pomocą
NavHost
domyślnie będzie teraz wyświetlany elementstartDestination
z elementu NavGraph. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
iNavController.clearBackStack(route)
obsługują teraz trasy z argumentami częściowo lub w pełni wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu.- Próba utworzenia pustego
NavDeepLink
za pomocąnavDeepLink
Kotlin DSL spowoduje teraz wyświetlenie ostrzeżenia narzędzia lint wskazującego, że precyzyjny link musi zawierać adres URI, działanie lub typ MIME, aby był prawidłowy.
Ważne zmiany w nawigacji za pomocą fragmentów od wersji 2.5.0
NavHostFragment
nie przechwytuje już samego systemowego przycisku Wstecz. Dzięki temu podstawowyFragmentManager
może obsługiwać przycisk Wstecz. Dzięki temu Fragment1.7.0-alpha01
i nowsze wersje mogą wyświetlać animację przewidywanego powrotu w aplikacji na urządzeniach z Androidem U.- Jeśli używasz nawigacji z fragmentami, próba ręcznego wykonania działania
FragmentTransaction
, które dodaje fragment do listy wstecznejFragmentManager
, spowoduje teraz zgłoszenie błęduIllegalArgumentException
. Fragmenty należy zawsze dodawać za pomocą interfejsunavigate()
API. - Jeśli w atrybutach
app:data
iapp:dataPattern
elementu activity w pliku XML nawigacji użyjesz dokładnego ciągu znaków${applicationId}
jako symbolu zastępczego, zostanie on automatycznie wypełniony wartościąpackageName
kontekstu po rozwinięciu. FragmentNavigator
korzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlaniaNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać na zakończenie efektów specjalnych związanych z wchodzeniem i wychodzeniem fragmentu, zanim przesunie swój ostatniLifecycle.State
.DialogFragmentNavigator
korzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlaniaNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać, ażDialogFragment
Lifecycle
przejdzie do stanuDESTROYED
, zanim sam przejdzie do stanuDESTROYED
.NavHostFragment
umożliwia teraz pobranieNavController
od razu po podłączeniuNavHostFragment
doFragmentManager
, a nie dopiero poonCreate()
.- Obsługa dynamicznych modułów funkcji w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery.
- Bezpieczne argumenty nawigacyjne zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że jest ona teraz zgodna tylko z wersjami 7.3.0 i nowszymi.
Ważne zmiany w NavigationUI od wersji 2.5.0
- Gdy przekazujesz identyfikator wykresu nawigacji do
AppBarConfiguration
(np. za pomocąMenu
),NavigationUI
traktuje teraz tylko miejsce docelowe rozpoczęcia tego wykresu nawigacji jako miejsce docelowe najwyższego poziomu, zamiast nieprawidłowo oznaczać każde miejsce docelowe na wykresie jako miejsce docelowe najwyższego poziomu. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. - Integracje
setupWithNavController
wNavigationUI
do pracy z górnym paskiem aplikacji będą teraz analizować wartościR.string
argumentówReferenceType
znalezionych wandroid:label
i zwracać ich wartości typu String zamiast automatycznie generowanej liczby całkowitej zasobu. NavigationUI
udostępnia teraz logi, gdy nie uda się nawigować za pomocą wybranegoMenuItem
.
Wersja 2.6.0-rc02
24 maja 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-rc02
Wersja 2.6.0-rc02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z nawigacją we fragmentach, który polegał na tym, że nawigowanie za pomocą przycisku
popUpTo
i usuwanie fragmentu z listy wstecznej bez ponownego tworzenia jego widoku powodowało, że przycisk Wstecz w systemie przestawał działać. (Ieb8d4, b/281726455)
Wersja 2.6.0-rc01
10 maja 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-rc01
Wersja 2.6.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem w nawigacji z fragmentami, w którym usunięcie fragmentu za pomocą funkcji navigate z
popUpTo
w wywołaniu zwrotnym cyklu życiaonResume()
powodowałoIllegalStateException
. (I21884, b/279644470)
Wersja 2.6.0-beta01
19 kwietnia 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-beta01
Wersja 2.6.0-beta01 zawiera te zmiany.
Nowe funkcje
NavBackStackEntry
udostępnia teraz niestandardową implementacjętoString
. (Iff00b)
Poprawki błędów
- Jeśli używasz nawigacji z fragmentami, próba ręcznego wykonania działania
FragmentTransaction
, które dodaje fragment do listy wstecznejFragmentManager
, spowoduje teraz zgłoszenie błęduIllegalArgumentException
. Fragmenty należy zawsze dodawać za pomocą interfejsunavigate()
API. (I6d38e) - Jeśli w tej samej ramce występuje ikona
navigate
, która dodaje wpis, i ikonapopBackStack
, która go usuwa, wynikowy wpis u góry stosu wstecznego będzie teraz zawsze wracać doRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Wersja 2.6.0-alpha09
5 kwietnia 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha09
Wersja 2.6.0-alpha09 zawiera te zmiany.
Poprawki błędów
- Poprawiono sprawdzanie nieprawidłowej trasy, tak aby w przypadku, gdy
NavDestination
zawiera poleNavArgument
, które nie może mieć wartości null, trasa tego miejsca docelowego musiała zawierać zmienne dla argumentów o nazwach takich samych jak poleNavArgument
, które nie może mieć wartości null. (Ic62bf, b/274697949) - Nawigacja za pomocą linków bezpośrednich oparta na
Action/MimeType
zakończy się teraz niepowodzeniem, jeśli w operacji nawigacji brakuje niepustego parametruNavArgument
wymaganego przezNavDestination
, z którym pasujeAction/MimeType
. (Ibfa17, b/271777424) - Gdy
NavController
ustawi wykres z tą samą trasą i miejscami docelowymi co poprzedni wykres, prawidłowo zastąpi bieżące węzły wykresu i miejsca docelowe w stosie wstecznym nowymi instancjami. Rozwiązuje to problem z awarią podczas używaniaonLaunchSingleTop
bez zapisywania stanu w Navigation Compose. Rozwiązuje to też błąd, w wyniku którego przechodzenie do miejsc docelowych powiązanych z wykresem głównym powodowało tworzenie nieprawidłowego stosu wstecznego. (I5bc58, b/275258161, b/275407804)
Wersja 2.6.0-alpha08
22 marca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha08
Wersja 2.6.0-alpha08 zawiera te zmiany.
Nowe funkcje
NavHostFragment
umożliwia teraz pobranieNavController
od razu po podłączeniuNavHostFragment
doFragmentManager
, a nie dopiero poonCreate()
. (Ic6382, b/220186282)
Poprawki błędów
- Rozwiązaliśmy problem z
NullPointerException
podczas wyodrębniania zagnieżdżonego wykresu, który zawiera argument, który nie może mieć wartości null. (6b3581, b/249988437) - Jeśli po nawigacji za pomocą
popUpTo
użyjesz przycisku Wstecz, stanNavController
zostanie przywrócony do prawidłowego wpisu. (I3a8ec, b/270447657) FragmentNavigator
będzie teraz prawidłowo wysuwać wpisy, gdy stos wsteczny zostanie wysunięty za pomocą przycisku Wstecz lubpopBackStack()
, a także w zależności od tego, czy transakcja używa efektów dla fragmentu. (I81bdf)- Dodawanie fragmentów do
FragmentNavigator
FragmentManager
bez użycia nawigacji nie będzie już powodować awarii. (b17204, b/274167493)
Aktualizacje zależności
- Nawigacja zależy teraz od cyklu życia.
2.6.1
(586fe7) - Nawigacja zależy teraz od SavedState
1.2.1
. (078e4e) - Nawigacja zależy teraz od ProfileInstaller
1.3.0
. (512f0c)
Wersja 2.6.0-alpha07
8 marca 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha07
Wersja 2.6.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Warianty interfejsu API
getBackStackEntry
,popBackStack
iclearBackStack
, które przyjmują trasy, teraz przyjmują wzorce tras z argumentami dopuszczającymi wartość null i parametry zapytania dopuszczające wartość null (I22294, b/269302500). - Rozwiązaliśmy problem polegający na tym, że wywołanie
clearBackStack()
zNavController
nie powodowało wyczyszczenia zapisanego stanu w menedżerze fragmentów powiązanym z wyczyszczonym stosem wstecznym. (Ic1cce, b/271190202) - Naprawiliśmy regresję w wersji 2.6.0-alpha06, która powodowała, że podczas przełączania kart za pomocą funkcji Wstecz systemu nieprawidłowy znak
MenuItem
w elemencieBottomNavigationView
był podświetlany. (I634f6, b/270447657) - Rozwiązaliśmy regresję w wersji 2.6.0-alpha06, która powodowała, że
NavBackStackEntry
nie były przenoszone do stanu RESUMED podczas korzystania zAnimation
. (Ib3589, b/269646882)
Wersja 2.6.0-alpha06
22 lutego 2023 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha06
Wersja 2.6.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Podczas wyświetlania podglądu funkcji kompozycyjnej za pomocą
NavHost
domyślnie będzie teraz wyświetlany elementstartDestination
z elementu NavGraph. (I2b89f)
Zmiany w interfejsie API
- Wszystkie przeciążenia
NavController
navigate
są teraz oznaczone adnotacją@MainThread
, aby mieć pewność, że są wywoływane w głównym wątku. (I2c0b0, b/263427111)
Poprawki błędów
- Rozwiązaliśmy problem z awarią podczas próby nawigacji przy użyciu dynamicznej nawigacji po fragmentach. (I3ee29, b/268360479)
- Usunęliśmy błąd, który powodował, że po przejściu do innego fragmentu za pomocą systemowego przycisku Wstecz pasek u dołu nie aktualizował się do prawidłowo wybranego elementu (If559f, b/269044426).
Znane problemy
- Podczas korzystania z nawigacji z fragmentami cykl życia
NavBackStackEntry
nie osiąga stanuRESUMED
, gdy używane są interfejsy APIAnimation
. (b/269646882) - Jeśli używasz nawigacji z fragmentami i nawigujesz za pomocą
BottomNavigation
, a następnie próbujesz przywrócić stos wsteczny z wieloma wpisami, elementBottomMenuItem
nie jest prawidłowo aktualizowany. (b/270447657) - Podczas korzystania z nawigacji z fragmentami po przywróceniu stanu element
NavBackStackEntry
Lifecycle
nie otrzymuje wartościDESTROYED
, gdy jego fragment ma wartośćDESTROYED
. (b/270610768)
Wersja 2.6.0-alpha05
8 lutego 2023 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha05
Wersja 2.6.0-alpha05 zawiera te zmiany.
Nowe funkcje
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
iNavController.clearBackStack(route)
obsługują teraz trasy z argumentami częściowo lub w pełni wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
korzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlaniaNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać na zakończenie efektów specjalnych związanych z wchodzeniem i wychodzeniem fragmentu, zanim przesunie swój ostatniLifecycle.State
. (I3cb19, b/238686802)DialogFragmentNavigator
korzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlaniaNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać, ażDialogFragment
Lifecycle
przejdzie do stanuDESTROYED
, zanim sam przejdzie do stanuDESTROYED
. (I53ee5, b/261213893)
Zmiany w interfejsie API
NavigatorState
udostępnia teraz interfejs APIprepareForTransition
, który umożliwiaNavigator
om przenoszenieNavBackStackEntries
do pośrednichLifecycle.State
ów. (I42c21, b/238686802)- Możesz teraz uzyskać dostęp do listy wstecznej powiązanej z usługą
NavGraphNavigator
lubComposeNavigator
za pomocą usługibackstack
.ComposeNavigator
udostępnia teraz wywołanie zwrotneonTransitionComplete()
, aby oznaczyć elementNavBackStackEntry
, który wykonał operację nawigacji lubpopBackStack
, jako ukończony. (I02062, I718db, b/257519195)
Poprawki błędów
- Stan nawigatora nie będzie już wykonywać żadnych działań podczas korzystania z interfejsów API
push/popWithTransition
, jeśli wpis jest już obsługiwany. (Iadbfa, b/261213893) - Jeśli używasz elementu
launchSingleTop
z zagnieżdżonym elementemNavGraph
, wszystkie miejsca docelowe, począwszy od pierwotnego miejsca docelowego aż do jego elementustartDestination
, zostaną prawidłowo dodane tylko na górę stosu wstecznego. (Id4bea, b/253256629) - Nawigacja będzie teraz prawidłowo zastępować instancję
DialogFragment
podczas przechodzenia do tego samego miejsca docelowego z ustawioną wartością true flagilaunchSingleTop
. (I45b5a, b/149572817) - SafeArgs w nawigacji nie będzie już powodować błędu kompilacji w przypadku używania argumentów o długości dokładnie 19 znaków. (Id60bc, b/257110095)
Wersja 2.6.0-alpha04
9 listopada 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha04
Wersja 2.6.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Niestandardowe podklasy
NavType
mogą teraz zastępowaćserializeAsValue
, aby serializować wartość do ciągu znaków, co umożliwia całkowite zamknięcie serializacji i deserializacji (za pomocąparseValue
) w klasieNavType
.StringType
zastępuje teraz tę metodę, aby wywoływaćUri.encode
na podanymString
. (Ie5213, b/247637434) NavigationUI
udostępnia teraz logi, gdy nie uda się nawigować za pomocą wybranegoMenuItem
. (I2af5a, b/247730357)
Poprawki błędów
- Precyzyjne linki nawigacyjne są teraz analizowane leniwie, a nie podczas inicjowania wykresu, co może poprawić wydajność aplikacji podczas uruchamiania. (Iab0ab)
- Naprawiono błąd powodujący awarię podczas nawigacji w górę po precyzyjnym linku do miejsca docelowego z argumentami domyślnymi o wartości null. (I51c24, b/243183636)
Aktualizacja zależności
- Obsługa dynamicznych modułów funkcji w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery. (Ib4ddc)
- Bezpieczne argumenty nawigacyjne zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że jest on teraz zgodny tylko z wersjami 7.3.0 i nowszymi. (I47e49)
Wersja 2.6.0-alpha03
24 października 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha03
Wersja 2.6.0-alpha03 zawiera te zmiany.
Poprawki błędów
- W sekcji Nawigacja
2.5.3
:NavHost
nie będzie już powodowaćNoSuchElementException
, gdy nie będzie dostępnego miejsca docelowego, do któregoCrossfade
może się udać. Teraz będzie po prostu pomijać kompozycję. (Ieb46e, b/253299416) - Nawigacja:
2.5.3
rozwiązaliśmy problem polegający na tym, że zapisany stan funkcji Compose (np. użycierememberSaveable
) nie był zapominany ani usuwany, gdy miejsce docelowe było usuwane ze stosu wstecznego. (I64949)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.5.4
. (Icd424)
Wersja 2.6.0-alpha02
5 października 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha02
Wersja 2.6.0-alpha02 zawiera te zmiany.
Zmiany w zachowaniu
- Gdy przekazujesz identyfikator wykresu nawigacji do
AppBarConfiguration
(np. za pomocąMenu
),NavigationUI
traktuje teraz tylko miejsce docelowe rozpoczęcia tego wykresu nawigacji jako miejsce docelowe najwyższego poziomu, zamiast nieprawidłowo oznaczać każde miejsce docelowe na wykresie jako miejsce docelowe najwyższego poziomu. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. (Ie936e, b/238496771)
Poprawki błędów
- Komponent
navigation:navigation-fragment
zależy teraz od wersji Fragmentu1.5.2
. (I00ba4) - Wybrany element menu nie będzie już aktualizowany podczas przechodzenia do
FloatingWindow
miejsca docelowego, np. okna. (I4cde8, b/240308330)
Wersja 2.6.0-alpha01
7 września 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.6.0-alpha01
Wersja 2.6.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Integracje
setupWithNavController
wNavigationUI
do pracy z górnym paskiem aplikacji będą teraz analizować wartościR.string
argumentówReferenceType
znalezionych wandroid:label
i zwracać ich wartości typu String zamiast automatycznie generowanej liczby całkowitej zasobu. (I5f803, b/167959935) NavDeepLink
obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które będą mapowane na typ tablicy argumentu.NavType
zawiera teraz też metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości. (Id68c3, b/209977108)- Jeśli w atrybutach
app:data
iapp:dataPattern
elementu activity w pliku XML nawigacji użyjesz dokładnego ciągu znaków${applicationId}
jako symbolu zastępczego, zostanie on automatycznie wypełniony wartościąpackageName
kontekstu po rozwinięciu. (Iaabde, b/234223561) - Próba utworzenia pustego
NavDeepLink
za pomocąnavDeepLink
Kotlin DSL spowoduje teraz wyświetlenie ostrzeżenia narzędzia lint wskazującego, że precyzyjny link musi zawierać adres URI, działanie lub typ MIME, aby był prawidłowy. (I08d2f, b/154038883)
Zmiany w interfejsie API
- Dodano nową funkcję rozszerzenia
NavDestination
, która analizuje dynamiczne etykiety z argumentami w formacieandroid:label="{arg}"
i przekształca je w ciąg znaków. Obsługuje argumentyReferenceType
, analizując wartościR.string
i przekształcając je w wartości typu String. (I07d89, b/236269380)
Zmiany w zachowaniu
arguments
NavBackStackEntry iarguments
przekazywane doOnDestinationChangedListener
są teraz tylko kopią niezmiennych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że wszelkie zmiany wprowadzone w tych pakietach nie będą odzwierciedlane w kolejnych dostępach doarguments
ani innych instancjiOnDestinationChangedListener
. (I676f5)
Poprawki błędów
- Nawigacja
2.5.2
: dynamiczna nawigacja próbuje teraz prawidłowo zainstalować miejsca docelowe aktywności z innych modułów przed przejściem do nich. (Ia2c16, b/240292838) - Z Navigation
2.5.2
: nawigacja będzie teraz prawidłowo zastępować instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagilaunchSingleTop
na wartość true. (I5a2f1, b/237374580) - W sekcji Nawigacja
2.5.2
: naprawiono błądIllegalStateException
spowodowany przejściem do zagnieżdżonego dwukrotnie wykresu, który ma element nadrzędny wspólny z nowym wyskakującym miejscem docelowym. (I9f7cb, b/243778589)
Wersja 2.5
Wersja 2.5.3
24 października 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.3
Wersja 2.5.3 zawiera te zmiany.
Poprawki błędów
NavHost
nie będzie już powodowaćNoSuchElementException
, gdy nie będzie dostępnego miejsca docelowego, do któregoCrossfade
może wysłać wiadomość. Teraz będzie po prostu pomijać kompozycję. (Ieb46e, b/253299416)- Rozwiązaliśmy problem polegający na tym, że zapisany stan funkcji Compose (np. użycie
rememberSaveable
) nie był zapominany ani usuwany, gdy miejsce docelowe było usuwane ze stosu wstecznego. (I64949)
Wersja 2.5.2
7 września 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.2
Wersja 2.5.2 zawiera te zmiany.
Poprawki błędów
- Nawigacja dynamiczna próbuje teraz prawidłowo zainstalować miejsca docelowe aktywności z innych modułów przed przejściem do nich. (Ia2c16, b/240292838)
- Nawigacja będzie teraz prawidłowo zastępować instancję Fragmentu podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi
launchSingleTop
na wartość true. (I5a2f1, b/237374580) - Rozwiązano problem
IllegalStateException
spowodowany przejściem do podwójnie zagnieżdżonego wykresu, który ma wspólny element nadrzędny z nowym wyskakującym miejscem docelowym. (I9f7cb, b/243778589)
Aktualizacja zależności
- Nawigacja
2.5.2
zależy teraz od fragmentu1.5.2
. (aosp/2178734)
Wersja 2.5.1
27 lipca 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.1
Wersja 2.5.1 zawiera te zmiany.
Poprawki błędów
Navigation Safe Args
nie będzie już powodować ostrzeżeń o wycofaniu w wygenerowanych klasach podczas używania niestandardowych typów argumentów zapisanych wBundle
. (Id86ed, b/237725966)
Aktualizacje zależności
- Biblioteka Navigation jest teraz zależna od Lifecycle
2.5.1
. (Ib4451) - Biblioteka Navigation jest teraz zależna od Activity
1.5.1
. (I3efe8) - Biblioteka Navigation jest teraz zależna od Fragment
1.5.1
. (I56177)
Wersja 2.5.0
29 czerwca 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0
Wersja 2.5.0 zawiera te zmiany.
Ważne zmiany od wersji 2.4.0
- Integracja CreationExtras –
Navigation
może teraz udostępniać bezstanowyViewModelProvider.Factory
za pomocą cyklu życia2.5.0
CreationExtras
.
Navigation SafeArgs
Navigation Safe Args
uaktualniło zależnośćAndroid Gradle Plugin
, aby korzystać z7.0.4
, co spowodowało utratę zgodności z wersjami AGP wcześniejszymi niż7.0
.- Dodaliśmy obsługę atrybutu build.gradle przestrzeni nazw, który może być używany zamiast applicationId.
Inne zmiany
- Interfejs
visibleEntries
API nie jest już eksperymentalny i udostępnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie z ustawieniamiNavController
.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-rc02
Wersja 2.5.0-rc02 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd powodujący awarię przy szybkim przełączaniu między miejscami docelowymi u dołu ekranu podczas korzystania z komponentu Navigation Compose
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
nie będzie już ulegać awarii podczas używaniaapplicationIdSuffix
i przestrzeni nazw bezapplicationId
lub gdyapplicationId
i przestrzeń nazw różnią się od siebie. (I754b1, b/233119646)NavArgument
ma teraz niestandardową funkcjętoString()
, która wyświetla wewnętrzne wartości argumentu. (I900a8)
Wersja 2.5.0-rc01
11 maja 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-rc01
Wersja 2.5.0-rc01 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy nową regułę lint, która ostrzega przed umieszczaniem elementów
<deeplink>
w elementach<activity>
w plikunavigation.xml
.(Ic15a5, b/178403185)
Poprawki błędów
- Zakresy kompozycyjne w
NavHost
iDialogHost
są teraz usuwane w oczekiwanej kolejności, tzn. wewnętrzne funkcje kompozycyjne są usuwane przed zewnętrznymi. (I157e6) - Navigation SafeArgs używa teraz
PathSensitivity.RELATIVE
wArgumentsGenerationTask
, aby umożliwić przenoszenie pamięci podręcznej. Oznacza to, że wpis w pamięci podręcznej można teraz ponownie wykorzystać w kompilacji CI w kompilacji lokalnej. (I5f67c, b/173420454) - Reguła lint
UnrememberedGetBackStackEntryDetector
została zaktualizowana, aby zapewnić, że wywołanieremember
otaczające wywołaniegetBackStackEntry()
również przekazuje obiektNavBackStackEntry
jako klucz.(Ib7081, b/227382831)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-beta01
Wersja 2.5.0-beta01 zawiera te zmiany.
Poprawki błędów
DialogNavigator
używa terazpopWithTransition
podczas wykonywania połączeniadismiss()
. Rozwiązuje to problem z wyścigiem, który występuje podczas używaniaViewModel
w miejscu docelowymdialog
i powoduje błądIllegalStateException
podczas zamykania okna za pomocą przycisku Wstecz lub kliknięcia poza oknem. (Id7376, b/226552301)
Aktualizacje zależności
- Nawigacja zależy teraz od Cyklu życia
2.5.0-beta01
, co rozwiązuje problemIllegalStateException
podczas zagnieżdżania jednegoNavHost
w innymNavHost
na karcie nawigacji u dołu innej niż główna, gdy używasz wielu stosów wstecznych.
Wersja 2.5.0-alpha04
6 kwietnia 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-alpha04
Wersja 2.5.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
visibleEntries
nie jest już funkcją eksperymentalną. (I4829f, b/225394514)
Poprawki błędów
- Komponent NavHost zależy teraz od
visibleEntries
zNavController
, aby określić, które wpisy mają być tworzone. Oznacza to, że podczas korzystania z zagnieżdżonego elementu NavHost wewnętrzny elementNavHost
powinien teraz prawidłowo animować wyjście. (I4ba2b, b/225394514) - Wartość
visibleEntries
StateFlow
podawana przezNavController
jest teraz oparta na maksymalnym stanie cyklu życia wpisu, a nie na bieżącym stanie cyklu życia. Oznacza to, że nawet jeśli stan hostanavController
zmieni się na stan wcześniejszy niż STARTED, lista widocznych wpisów pozostanie bez zmian. (I9e2a8, b/225394514) SavedStateViewFactory
obsługuje teraz używanieCreationExtras
nawet wtedy, gdy zostało zainicjowane za pomocąSavedStateRegistryOwner
. Jeśli podasz dodatkowe informacje, zainicjowane argumenty zostaną zignorowane. (I6c43b, b/224844583)NavDeepLink
może teraz analizować adresy URI z jednym parametrem zapytania bez wartości. (I0efe8, b/148905489)- Puste ciągi znaków są teraz uznawane za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
Navigation Safe Args
nie będzie już ulegać awarii podczas używania przestrzeni nazw, gdy nie maAndroidManifest.xml
. (I17ccf, b/227229815)
Wersja 2.5.0-alpha03
23 lutego 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-alpha03
Wersja 2.5.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Możesz teraz przekazywać wartość
CreationExtras
do funkcjiby navGraphViewModels
, aby utworzyćViewModel
. (I29217, b/217618359)
Poprawki błędów
NavDeepLinks
teraz prawidłowo obsługuje zakodowane znaki nowego wiersza osadzone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060)CreationExtras
będzie teraz działać prawidłowo w połączeniu zNavBackStackEntries
podczas tworzenia obiektów ViewModel. (I69161, b/217617710)- Bezpieczne argumenty nawigacji obsługują teraz używanie przestrzeni nazw zdefiniowanej w
build.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)
Wersja 2.5.0-alpha02
9 lutego 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-alpha02
Wersja 2.5.0-alpha02 zawiera te zmiany.
Poprawki błędów
- Z Nawigacji
2.4.1
:NavHostFragment
będzie teraz prawidłowo ustawiaćOnBackPressedDispatcher
podczas używania powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959) - W sekcji Nawigacja
2.4.1
: w przypadku głębokiego linkowania przez wiele zagnieżdżonych elementówNavGraph
stos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe. (I504c0, b/214383060)
Wersja 2.5.0-alpha01
26 stycznia 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.5.0-alpha01
Wersja 2.5.0-alpha01 zawiera te zmiany.
Nowe funkcje
NavBackStackEntry
jest teraz zintegrowany z interfejsem ViewModel CreationExtras, który został wprowadzony w ramach Lifecycle2.5.0-alpha01
. (Ib9fe2, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że dostęp do obiektu
ViewModel
utworzonego za pomocąby navGraphViewModels()
z poziomuonCreate()
fragmentu kończył się niepowodzeniem i wyświetlany był błądIllegalStateException
. (I8a14d) NavDeepLink
nie będą już niepotrzebnie dwukrotnie dekodować argumentów, co oznacza, że do miejsca docelowego będą teraz przekazywane prawidłowe argumenty. (I31b0a, b/210711399)
Safe Args
- Safe Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że Navigation Safe Args nie będzie już zgodny z Androidem Studio w wersji starszej niż 7.0, ale jest teraz zgodny z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (I41c88, b/213086135, b/207670704)
Wersja 2.4.2
Wersja 2.4.2
6 kwietnia 2022 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.2
Wersja 2.4.2 zawiera te zmiany.
Poprawki błędów
- Wycofano z Nawigacji
2.5.0-alpha03
:NavDeepLinks
teraz prawidłowo obsługuje zakodowane znaki nowego wiersza osadzone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060) - Wycofane z Nawigacji
2.5.0-alpha03
: SafeArgs w Nawigacji obsługuje teraz używanie przestrzeni nazw zdefiniowanej wbuild.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933) - Wycofano z Nawigacji
2.5.0-alpha04
:Navigation Safe Args
nie będzie już powodować awarii podczas korzystania z przestrzeni nazw, gdy nie maAndroidManifest.xml
. (I17ccf, b/227229815) - Przeniesiono z Nawigacji
2.5.0-alpha04
: puste ciągi znaków są teraz uznawane za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
Wersja 2.4.1
Wersja 2.4.1
9 lutego 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.1
Wersja 2.4.1 zawiera te zmiany.
Poprawki błędów
NavHostFragment
będzie teraz prawidłowo ustawiaćOnBackPressedDispatcher
podczas używania powiązania widoków z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)- W przypadku precyzyjnego linkowania przez wiele zagnieżdżonych elementów
NavGraph
lista wsteczna będzie teraz prawidłowo zawierać pośrednie miejsca docelowe. (I504c0, b/214383060) - Wycofano z Navigation
2.5.0-alpha01
: rozwiązano problem, który powodował, że dostęp do obiektu ViewModel utworzonego za pomocąby navGraphViewModels()
zonCreate()
fragmentu kończył się niepowodzeniem i występował błądIllegalStateException
. (I8a14d) - Wycofane z Navigation
2.5.0-alpha01
:NavDeepLink
argumenty nie są już niepotrzebnie dekodowane dwukrotnie, co oznacza, że do miejsca docelowego przekazywane są teraz prawidłowo zdekodowane argumenty. (I31b0a, b/210711399) - Przeniesione z Navigation
2.5.0-alpha01
: Safe Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że Navigation Safe Args nie będzie już zgodny z Androidem Studio w wersji starszej niż 7.0, ale jest teraz zgodny z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (I41c88, b/213086135, b/207670704)
Wersja 2.4.0
Wersja 2.4.0
26 stycznia 2022 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0
Wersja 2.4.0 zawiera te zmiany.
Ważne zmiany od wersji 2.3.0
- Wszystkie artefakty Navigation zostały przepisane w języku Kotlin. Poprawiło to możliwość przyjmowania wartości null przez klasy korzystające z typów ogólnych (np. podklasy
NavType
). Wszystkie funkcje rozszerzające w Kotlinie, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. navigation-fragment
zawiera teraz gotową implementację układu dwupanelowego za pomocą nowegoAbstractListDetailFragment
. Ten fragment używa klasySlidingPaneLayout
do zarządzania panelem listy (który zapewnia podklasa) i panelem szczegółów, który korzysta z klasyNavHostFragment
jako implementacji, jak widać w naszej przykładowej implementacji.- Metoda
currentBackStackEntryAsFlow()
wNavController
udostępniaFlow
, który emituje sygnał za każdym razem, gdy zmieni się bieżącyNavBackStackEntry
. Ten proces może być używany jako alternatywa dla ręcznego zarządzania plikiemOnDestinationChangedListener
. - Kontroler NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji
NavBackStackEntry
jakoStateFlow
za pomocą eksperymentalnej właściwościvisibleEntries
. - Możesz teraz rozszerzyć klasę
NavType
, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko wtedy, gdy tworzysz wykres nawigacji programowo, np. za pomocą języka DSL Kotlin do tworzenia wykresów nawigacji. Nawigacja udostępnia teraz interfejsy API
findStartDestination()
igetHierarchy()
, które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.findStartDestination()
to funkcja rozszerzającaNavGraph
, która lokalizuje rzeczywisty cel początkowy, który będzie wyświetlany podczas nawigacji do wykresu, nawet jeślistartDestination
jest zagnieżdżonymNavGraph
.getHierarchy()
to funkcja na platformieNavDestination
, która umożliwia sprawdzenie, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody
NavigationUI
, które przyjmowałyBottomNavigationView
, zostały zaktualizowane tak, aby zamiast tego przyjmowały jego superklasę wprowadzoną w Materialu1.4.0
,NavigationBarView
. Dzięki temu można używać tych metod w przypadkuNavigationRailView
.Podczas tworzenia elementu
<action>
za pomocą XML atrybuty animacji mogą używać atrybutów pobranych z motywu za pomocą składniapp:enterAnim="?attr/transitionEnter"
.Safe Args generuje teraz metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Trasy nawigacji i język DSL Kotlin
W poprzednich wersjach nawigacji każde miejsce docelowe miało stały identyfikator w postaci liczby całkowitej, który jednoznacznie odróżniał je od innych miejsc docelowych i umożliwiał navigate()
do niego bezpośrednio lub za pomocą działania. Chociaż to rozwiązanie nadal jest ważne i przydatne, zwłaszcza w przypadku definiowania wykresu nawigacji w formacie XML i możliwości używania automatycznie generowanych stałych R.id
lub Safe Args (które używają tych stałych do generowania kodu w czasie kompilacji), ten system unikalnych liczb całkowitych nie oddawał znaczenia semantycznego i ekspresywności potrzebnych do obsługi w pełni dynamicznych wykresów tworzonych programowo w czasie działania za pomocą Navigation Kotlin DSL.
W tej wersji wprowadziliśmy nową opcję jednoznacznego identyfikowania miejsca docelowego na wykresie nawigacji za pomocą trasy. Trasa to String
, która określa unikalną ścieżkę do miejsca docelowego. Wszystkie metody Kotlin DSL, które przyjmowały identyfikator miejsca docelowego, są teraz wycofane i zastąpione równoważnym interfejsem API, który przyjmuje trasę.
Każda trasa powinna być traktowana jako część „ścieżki” Uri
, która określa miejsce docelowe, np. home
, profile/{userId}
, profile/{userId}/friends
itp. Jeśli tożsamość miejsca docelowego jest powiązana z określonymi treściami, te dynamiczne argumenty powinny być częścią trasy i podlegać tym samym regułom co niejawne linki do konkretnych treści.
Wszystkie interfejsy API NavController
, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które przyjmuje ścieżkę String
. Obejmuje to m.in. navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Ma to pewne konsekwencje dla interfejsu API:
- Właściwość
popUpTo
Kotlin w języku Kotlin DSL została wycofana na rzeczpopUpToId
. - Interfejs API
getStartDestination()
został wycofany na rzecz interfejsugetStartDestinationId()
.
W przeciwieństwie do nawigacji według identyfikatora nawigacja według trasy podlega tym samym regułom co niejawne linki do konkretnych stron. Oznacza to, że możesz bezpośrednio przejść do dowolnego miejsca docelowego w dowolnym zagnieżdżonym grafie, dzięki czemu te trasy są użyteczne w projektach wielomodułowych bez konieczności jawnego dodawania do każdego miejsca docelowego widocznego z zewnątrz linku do konkretnej strony.
Navigation Compose
Artefakt navigation-compose
zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa @Composable
funkcji.
Ta wersja zapewnia:
- Komponent
NavHost
, który umożliwia tworzenie wykresu nawigacji za pomocą języka Kotlin DSL, z użyciem miejsc docelowychcomposable
idialog
oraz obsługą opcjonalnych nawigatorów, takich jak te z Accompanist Navigation Material. - Obowiązkowa obsługa płynnego przechodzenia między miejscami docelowymi. Animacja nawigacji Accompanist umożliwia kontrolowanie przejść wejścia i wyjścia za pomocą eksperymentalnych interfejsów API Compose.
- Określanie zakresu
Lifecycle
dla każdego miejsca docelowego, które można komponować. Każdy stan docelowy osiąga stanRESUMED
, gdy kończą się wszystkie przejścia wejściowe, i natychmiast przechodzi do stanuSTARTED
, gdy rozpoczynają się wszystkie przejścia wyjściowe. Dzięki temu możesz uniknąć wszystkich problemów związanych ze stanemIllegalStateException
i wielodotykiem, wywołując połączenienavigate
tylko wtedy, gdy stanLifecycle
toRESUMED
. - Określanie zakresu
ViewModel
(za pomocą interfejsu APIviewModel()
Lifecycle ViewModel Compose2.4.0
lubhiltViewModel()
Hilt Navigation Compose1.0.0
na poziomie miejsca docelowego, co zapewnia zakres, który przetrwa zmiany konfiguracji i znajduje się na liście wstecznej (gdy zawartość funkcji kompozycyjnej jest w inny sposób usuwana), oraz sygnał wonCleared()
ViewModel, który wskazuje trwałe usunięcie i wyczyszczenie stanu powiązanego z tymNavBackStackEntry
. - Określanie zakresu stanu
rememberSaveable
na poziomie miejsca docelowego, co zapewnia automatyczne zapisywanie i przywracanie całego stanu kompozycyjnego po powrocie do miejsca docelowego. - Pełna obsługa zapisywania i przywracania stanu elementu
NavController
oraz stanu miejsca docelowego po zakończeniu i ponownym utworzeniu procesu. - Automatyczna integracja z systemowym przyciskiem Wstecz.
Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych i zwracania wyniku do poprzednich miejsc docelowych.
Utwórz konkretne funkcje pomocnicze w
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić przenoszenie stanu i połączenieNavController
z funkcjami kompozycyjnymi pozaNavHost
(np. z dolnym paskiem nawigacyjnym).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Więcej informacji znajdziesz w przewodniku po tworzeniu nawigacji w Compose.
Wiele stosów wstecznych
Klasa NavController odpowiada za zarządzanie stosem wstecznym miejsc docelowych, dodawanie do niego miejsc docelowych, gdy navigate()
, oraz usuwanie ich, gdy wywołasz popBackStack()
lub naciśniesz systemowy przycisk Wstecz. Istniejąca klasa NavOptions
i integracja z elementami <action>
w pliku XML wykresu nawigacji zostały rozszerzone o możliwość zapisywania i przywracania stosu wstecznego.
W ramach tej zmiany metody NavigationUI
klas onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan usuniętych miejsc docelowych, co umożliwia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. Jeśli używasz nawigacji z fragmentami, jest to zalecany sposób integracji z wieloma stosami wstecznymi.
Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na różnych platformach:
W pliku XML nawigacji element
<action>
może teraz używać atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
, aby zapisywać stan wszystkich miejsc docelowych wyświetlanych za pomocą elementuapp:popUpTo
i przywracać stan powiązany z miejscem docelowym przekazanym jakoapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
W
navOptions
Kotlin DSL możesz dodać właściwości logicznerestoreState
isaveState
dopopUpTo
konstruktora:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Podczas ręcznego tworzenia obiektu
NavOptions
za pomocą metodyNavOptions.Builder
możesz użyć metodysetRestoreState()
i nowego przeciążenia dosetPopUpTo()
, które przyjmuje dodatkowy parametrsaveState
.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Wywołania zautomatyzowane do
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.Za pomocą metody
clearBackStack()
możesz wyczyścić każdy stan zapisany za pomocą metodpopBackStack()
lubpopUpToSaveState
.
W każdym przypadku NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym wszystkie instancje ViewModel
w zakresie miejsca docelowego nawigacji. Interfejsy API Navigator
zostały zaktualizowane, aby umożliwić każdemu Navigator
zapisywanie i przywracanie własnego stanu.
Zmiany w działaniu
NavDeepLinkBuilder
dodaje terazPendingIntent.FLAG_IMMUTABLE
doPendingIntent
zwracanego przezcreatePendingIntent()
, dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami w przypadku kierowania na Androida 12.- Nawigacja zależy teraz od Lifecycle
2.3.1
i oznacza metodysetGraph()
,popBackStack()
,navigateUp()
inavigate()
, które aktualizująNavBackStackEntry
Lifecycle
, jako@MainThread
, co sprawia, że nawigacja jest zgodna z wymaganiami dotyczącymi głównego wątku wprowadzonymi w Lifecycle2.3.0
. - Precyzyjne linki sprawdzają teraz, czy wszystkie wymagane argumenty (bez wartości domyślnych) są obecne w
Uri
. NavDeepLink
Przeanalizowane argumenty traktują teraz znaki funta w taki sam sposób jak znaki zapytania, czyli jako separator między segmentami ścieżki. Zapobiega to rozciąganiu się argumentu na znak funta.- Podczas generowania działań kod Kotlin wygenerowany na podstawie Safe Args umieszcza teraz argumenty bez wartości domyślnych przed argumentami z wartościami domyślnymi jako parametry.
- Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed parametrami z wartościami domyślnymi.
- Safe Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że nie powinno już pojawiać się ostrzeżenie o używaniu
applicationIdTextResource
.
Znane problemy
- Naprawiono w Nawigacji
2.5.0-alpha01
: dostęp doViewModel
utworzonego za pomocąby navGraphViewModels()
zonCreate()
fragmentu zakończy się niepowodzeniem i wyświetli sięIllegalStateException
. (b/213504272) - Naprawiono w Navigation
2.5.0-alpha01
: Safe Args 2.4.0 jest niezgodny z wtyczką Androida do obsługi Gradle w wersji 7.1.0 i nowszej. (b/213086135) - Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacji nie tworzą prawidłowo pełnej listy wstecznej. (b/214383060)
Wersja 2.4.0-rc01
15 grudnia 2021 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-rc01
Wersja 2.4.0-rc01 zawiera te zmiany.
Zmiany w działaniu
NavDeepLink
Przeanalizowane argumenty traktują teraz znaki funta w taki sam sposób jak znaki zapytania, czyli jako separator między argumentami. (I21309, b/180042703)
Poprawki błędów
- Linki bezpośrednie nie będą już ignorować argumentów o wartościach takich samych jak nazwa obiektu zastępczego. (If8017, b/207389470)
NavController
nie będzie już ulegać awarii podczas wysuwania zagnieżdżonego miejsca docelowego za pomocą przejść po przywróceniuNavController
. (I0f7c9, b/205021623)- Komunikat o błędzie wyświetlany podczas używania nieprawidłowego elementu
startDestination
będzie teraz domyślnie zawierać trasę do miejsca docelowego, jeśli jest ona dostępna. (I86b9d, b/208041894)
Poprawki błędów w Nawigacji w Compose
- Naprawiono potencjalny problem z awarią spowodowaną szybkim przełączaniem się między miejscem docelowym a innym miejscem docelowym za pomocą elementów menu nawigacyjnego u dołu ekranu. (Ic8976, b/208887901)
- Okna docelowe są teraz prawidłowo przywracane na górze ekranu po zmianach konfiguracji lub zakończeniu procesu. (I4c0dc, b/207386169)
- Rozwiązaliśmy problem, który powodował, że próba pobrania
ViewModel
zNavBackStackEntry
okna kończyła się niepowodzeniem po zamknięciu okna. (I6b96d, b/206465487) - Rozwiązaliśmy problem, który występował podczas używania miejsc docelowych
activity
z funkcjąNavHost
Navigation Compose i powodował nieskończone ponowne komponowanie. (I8f64c) - Usunięto wyciek pamięci w Navigation Compose, który powodował, że po zmianie konfiguracji lub zakończeniu procesu zachowywano odniesienie do starej aktywności. (I4efcb, b/204905432)
Poprawki błędów w Safe Args
SafeArgs
nie ulega już awarii podczas próby przywrócenia niestandardowych tablic obiektów Parcelable po zakończeniu procesu. (I618e8, b/207315994)- Naprawiliśmy błąd w bezpiecznych argumentach, który uniemożliwiał tablicom wartości logicznych przyjmowanie wartości
null
. (I8c396, b/174787525)
Wersja 2.4.0-beta02
3 listopada 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-beta02
Wersja 2.4.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Obsługa jawnych i niejawnych linków do konkretnych treści automatycznie dodaje teraz flagę
saveState
podczas przechodzenia do innego wykresu, co zapewnia, że kod, taki jakNavigationUI.setupWithNavController
, oraz kod korzystający z wielu stosów wstecznych działają zgodnie z oczekiwaniami. (Ic8807)
Zmiany w zachowaniu
- Wzorce precyzyjnych linków są teraz kompilowane w klasie NavDeepLink w sposób odroczony, a nie podczas rozszerzania. Powinno to skrócić czas wczytywania wykresów nawigacji zawierających precyzyjne linki. (b8d257, b/184149935)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że po przejściu do
Lifecycle.State.STARTED
wpisy NavBackStackEntries były przenoszone doLifecycle.State.CREATED
, gdyNavHost
był dodawany bezpośrednio dosetContent()
aktywności. (Ia5ac1, b/203536683) - Rozwiązaliśmy problem polegający na tym, że usunięcie miejsca docelowego
DialogFragment
z listy wstecz przed wyświetleniem okna dialogowego nie powodowało jego zamknięcia, co prowadziło do awarii, gdy użytkownik ręcznie zamykał to okno. (I687e5) - Rozwiązaliśmy problem, który powodował, że interfejs
onNavDestinationSelected
API naNavigationUI
zwracałtrue
, nawet jeśli nienavigate()
do tego wykresu nawigacji. Obecnie korzysta z tej samej logiki, która jest używana wewnętrznie przezsetupWithNavController
, aby wybierać tylkoMenuItem
powiązane z bieżącym miejscem docelowym za pomocąhierarchy
miejsca docelowego. (I2b053)
Wersja 2.4.0-beta01
27 października 2021 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-beta01
Wersja 2.4.0-beta01 zawiera te zmiany.
Nowe funkcje
- Możesz teraz używać
by navGraphViewModel
z trasą jako alternatywy dla identyfikatora, aby lepiej obsługiwać używanie Kotlin DSL Navigation z fragmentami. (I901e3, b/201446416)
Zmiany w interfejsie API
- Interfejs API
visibleEntries
jest teraz w wersji eksperymentalnej. (I93f6f)
Poprawki błędów
- Obiekty ViewModel nie będą już niszczone, gdy przejścia zostaną przerwane przez przechodzenie tam i z powrotem między tymi samymi ekranami (Id52d8, b/200817333).
- Argumenty z wartością null
NavDeepLink
nie wymagają już wartości domyślnej podczas dodawania precyzyjnych linków doNavDestination
. (I5aad4, b/201320030) - Obiekty NavBackStackEntry z różnymi stanami cyklu życia nie są już traktowane jako równe. Oznacza to, że NavHost prawidłowo ponownie skomponuje wszystkie miejsca docelowe podczas nawigacji z użyciem singleTop i ponownego wybierania elementów menu u dołu ekranu. (I1b351, b/196997433)
- Rozwiązaliśmy problem z
AbstractListDetailFragment
, który powodował, że atrybutylayout_width
ilayout_weight
w panelu listy zwracanym przezonCreateListPaneView()
były nieprawidłowo obsługiwane lub ignorowane. (f5fbf3) - Stan wizualny miejsc docelowych w oknie dialogowym jest teraz prawidłowo synchronizowany ze stanem
DialogFragmentNavigator
. Oznacza to, że ręczne wywoływanie asynchronicznego interfejsu APIdismiss()
dlaDialogFragment
teraz prawidłowo usuwa wszystkie miejsca docelowe okien powyżej zamkniętego okna. Nie ma to wpływu na przypadki, w których zamykasz okno dialogowe, klikającpopUpTo
lubpopBackStack()
. (I77ba2) AbstractAppBarOnDestinationChangedListener
ma teraz bardziej przejrzyste komunikaty o błędach dotycząceonDestinationChanged()
. (Ie742d)
Wersja 2.4.0-alpha10
29 września 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha10
Wersja 2.4.0-alpha10 zawiera te zmiany.
Nowe funkcje
- Kontroler NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji za pomocą
NavBackStackEntry
StateFlow (Ia964e).visibleEntries
rememberNavController()
przyjmuje teraz opcjonalny zestaw instancjiNavigator
, które zostaną dodane do zwracanegoNavController
, aby lepiej obsługiwać opcjonalne nawigatory, takie jak te z materiałów nawigacyjnych Accompanist. (I4619e)
Poprawki błędów
- Nawigacja dynamiczna nie będzie już ulegać awarii po ponownym utworzeniu aktywności. (Ifa6a3, b/197942869)
- Rozwiązaliśmy problem z systemowym przyciskiem Wstecz, który występuje tylko po powrocie do miejsca docelowego, które zawiera element kompozycyjny
NavHost
. (3ed148, b/195668143) - SafeArgs generuje teraz argumenty dla
fromBundle()
ifromSavedStateHandle()
w odpowiedniej kolejności parametrów. (I824a8, b/200059831)
Wersja 2.4.0-alpha09
15 września 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha09
Wersja 2.4.0-alpha09 zawiera te zmiany.
Nowe funkcje
- Możesz teraz użyć metody
clearBackStack()
, aby wyczyścić dowolny stan zapisany za pomocąpopBackStack()
lubpopUpToSaveState
. (I80a0f) - Możesz teraz przekazywać listę argumentów lub linków do aplikacji do konstruktora zagnieżdżonego wykresu nawigacji, a zostaną one automatycznie dodane do wynikowego wykresu. (I8a470, b/182545357)
Zmiany w interfejsie API
- Funkcja
navArgument
Kotlin DSL jest teraz częściąnavigation-common
zamiastnavigation-compose
. Aby nadal korzystać z tej funkcji, musisz zaktualizować importy. (I1d095)
Zmiany w zachowaniu
- Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed parametrami z wartościami domyślnymi. (I89709, b/198493585)
Poprawki błędów
- W przypadku korzystania z Navigation Compose wykresy NavGraph będą
DESTROYED
dopiero wtedy, gdy wszystkie ich elementy podrzędne będąDESTROYED
. (I86552, b/198741720) - Argumenty z wartością null
NavDeepLink
nie wymagają już wartości domyślnej. (Ia14ef, b/198689811) - Wywołanie
setGraph()
z nowym wykresem spowoduje teraz wyczyszczenie wszystkich zapisanych stosów wstecznych, a nie tylko usunięcie stosu wstecznego, jak to miało miejsce wcześniej. (I97f96) - Rozwiązaliśmy problem, który powodował, że instancje
OnDestinationChangedListener
icurrentBackStackEntryFlow
nie otrzymywały powiadomień podczas korzystania zlaunchSingleTop
. (Iaaebc)
Aktualizacje zależności
- Biblioteka Navigation Compose zależy teraz od Activity Compose w wersji 1.3.1. (I05829)
- Biblioteka Navigation Compose zależy teraz od Lifecycle ViewModel Compose
2.4.0-beta01
. (Ib86a3)
Wersja 2.4.0-alpha08
1 września 2021 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha08
Wersja 2.4.0-alpha08 zawiera te zmiany.
Nowe funkcje
- Możesz teraz rozszerzyć klasę
NavType
, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko wtedy, gdy tworzysz wykres nawigacji programowo, np. za pomocą języka DSL Kotlin do tworzenia wykresów nawigacji. (I78440, b/196871885)
Zmiany w zachowaniu
- Podczas generowania działań kod Kotlin wygenerowany na podstawie Safe Args umieszcza teraz argumenty bez wartości domyślnych przed argumentami z wartościami domyślnymi jako parametry. (Idb697, b/188855904)
- Precyzyjne linki sprawdzają teraz, czy wszystkie wymagane argumenty (bez wartości domyślnych) są obecne w
Uri
. (#204, b/185527157)
Poprawki błędów
- Używanie adnotacji
getBackStackEntry
ipreviousBackStackEntry
w funkcji composable() w połączeniu z adnotacjąremember()
nie będzie już powodować wyjątku związanego z brakiem miejsca docelowego na liście wstecznej. (I75138, b/194313238) - Biblioteka Navigation Compose ponownie komponuje się prawidłowo podczas zmiany argumentów stosu wstecznego i używania
launchSingleTop=true
. (Iebd69, b/186392337) - Podczas wywoływania funkcji
ArrayIndexOutOfBoundsException
w przypadku wykresu z 13 lub 29 miejscami docelowymi nie będzie już występować błądsetGraph
. (I1a9f1, b/195171984) - Generator języka Java SafeArgs nie powinien już powodować ostrzeżeń narzędzia lint podczas generowania klas Args. (I1a666, b/185843837)
Wkład zewnętrzny
- Dziękujemy ospixd za sprawdzenie, czy precyzyjne linki weryfikują, czy wszystkie wymagane argumenty (bez wartości domyślnych) są obecne w
Uri
. (#204, b/185527157)
Wersja 2.4.0-alpha07
18 sierpnia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha07
Wersja 2.4.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Biblioteka Navigation Compose prawidłowo zapisuje stan po zmianach konfiguracji i podczas zmiany wykresów przy użyciu funkcji wielu stosów wstecznych. (If5a3d, b/195141957)
- Ponowne wybieranie tej samej karty podczas korzystania z kompozycji nawigacji z wieloma stosami wstecznymi nie będzie już powodować wyświetlania pustego ekranu. (I860dc, b/194925622)
NavHost
obserwuje teraz zmiany wLifecycle.State
NavBackStackEntry
, co oznacza, że użycieNavHost
we fragmencie spowoduje prawidłowe ponowne skomponowanie w miarę zmian cyklu życia, zamiast wyświetlania pustego ekranu. (I4eb85, b/195864489)- Rozwiązaliśmy problem polegający na tym, że zamknięcie
DialogFragment
nie powodowało prawidłowej aktualizacji stanuNavController
po ponownym utworzeniu aktywności (np. po zmianie konfiguracji). (Icd72b) - Rozwiązaliśmy problem, który powodował, że po zamknięciu okna dialogowego nie aktualizowano obsługi systemowego przycisku Wstecz w kontrolerze NavController, co mogło powodować przechwytywanie przez kontroler NavController przycisku Wstecz, mimo że nie miał on żadnego stosu wstecznego do zamknięcia. (If3b34)
- Safe Args automatycznie generuje teraz metodę
toSavedStateHandle
dla argumentów, których można używać do testowania koduViewModel
. (If1e2d, b/193353880)
Wersja 2.4.0-alpha06
4 sierpnia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha06
Wersja 2.4.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
requireSlidingPaneLayout()
irequireDetailPaneNavHostFragment()
wAbstractListDetailFragment
zostały zmienione nagetSlidingPaneLayout()
igetDetailPaneNavHostFragment()
. (I34a08)
Zmiany w zachowaniu
- Podczas nawigacji z animacjami (np.
Crossfade
) nowy element docelowyLifecycle
będzie teraz osiągaćRESUMED
dopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889) NavHost
w Navigation Compose ustawia teraz wykres jako część pierwszej kompozycji. (Ieb7be)
Poprawki błędów
- Usunięcie ostatniego miejsca docelowego z grafu nawigacji nie powoduje już błędu
ClassCastException
. (If0543, b/172112072, b/194301889) - Rozwiązaliśmy problem
NullPointerException
, który występował podczas dodawania precyzyjnego linku bezUri
i korzystania z nawigacji po trasie lub precyzyjnym linku. (938a0c, b/193805425) - Rozwiązaliśmy problem w Navigation Compose, który powodował, że precyzyjny link
NavBackStackEntry
nie osiągał stanuRESUMED
. (I192c5) - Rozwiązaliśmy problem, który powodował, że zamknięcie okna nie aktualizowało obsługi systemowego przycisku Wstecz w kontrolerze NavController, co mogło sprawić, że kontroler NavController przechwytywał przycisk Wstecz, mimo że nie miał żadnego stosu wstecznego do zamknięcia. (aosp/1782668)
Wersja 2.4.0-alpha05
21 lipca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha05
Wersja 2.4.0-alpha05 zawiera te zmiany.
Zmiany w zachowaniu
- Biblioteka Navigation Compose
NavHost
zawsze używa teraz przejść między stronami podczas nawigacji między miejscami docelowymi. (I07049, b/172112072) - Możesz teraz wprowadzać zmiany na wykresie NavHost. Wykresy z tym samym elementem startDestination i miejscami docelowymi na wykresie będą uznawane za równe i nie będą czyścić stosu wstecznego
NavController
. (I0b8db, b/175392262)
Poprawki błędów
- Naprawiono
NoSuchElementException
, gdy wywoływaniepopBackStack()
wLifecycleObserver
dołączonym doNavBackStackEntry
powodowałoNoSuchElementException
z powodu ponownego wchodzenia w stan NavController. (I64621) AbstractListDetailFragment
umożliwia teraz całkowite usunięcie z pliku APK, gdyAbstractListDetailFragment
nie jest używane.SlidingPaneLayout
(I611ad)NavGraph
iNavDestination
zastępują teraz metodę equals, więc dwa obiekty o tych samych wartościach będą uznawane za równe. (I166eb, b/175392262)
Wersja 2.4.0-alpha04
1 lipca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha04
Wersja 2.4.0-alpha04 zawiera te zmiany.
Nowe funkcje
navigation-fragment
zawiera teraz gotową implementację układu dwupanelowego za pomocą nowegoAbstractListDetailFragment
. Ten fragment używa klasySlidingPaneLayout
do zarządzania panelem listy (który zapewnia podklasa) i panelem szczegółów, który korzysta z klasyNavHostFragment
jako implementacji, jak widać w naszej przykładowej implementacji. (Iac4be, b/191276636)NavHost
artefaktunavigation-compose
obsługuje teraz miejsca docelowedialog
oprócz miejsc docelowychcomposable
. Każde z tych miejsc docelowych okna dialogowego będzie wyświetlane w funkcji ComposableDialog
, unosząc się nad bieżącym miejscem docelowymcomposable
. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Zmiany w interfejsie API
- Funkcja
add
wNavigatorState
została zmieniona napush
. Wszystkie bieżące wywołania funkcjiadd()
należy zmienić na push(). (Ie89fc, b/172112072) - Niestandardowe instancje
Navigator
mogą teraz używać interfejsów APIpushWithTransaction
ipopWithTransition
wNavigatorState
do asynchronicznego wysyłania lub pobierania miejsca docelowego. Pamiętaj, że te interfejsy API nie są jeszcze używane przez żadną z dołączonych nawigacji. (Ic4d7c, b/172112072)
Zmiany w zachowaniu
NavDeepLinkBuilder
dodaje terazPendingIntent.FLAG_IMMUTABLE
doPendingIntent
zwracanego przezcreatePendingIntent()
, dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami w przypadku kierowania na Androida 12. (If8c52)
Poprawki błędów
- Rozwiązaliśmy problem z
<include-dynamic>
, który powodował, że argumenty przekazywane do wykresu nie były prawidłowo przekazywane do wykresu dołączonego dynamicznie. (I3e115) - Rozwiązaliśmy problem z
NullPointerException
podczas nawigacji do miejsca docelowego za pomocą argumentustring[]
o wartości domyślnej@null
. (I1fbe8) - Dodaj reguły ProGuard dla
@Navigator.Name
, aby rozwiązać problemy podczas korzystania z trybu pełnego R8 3.1. (I2add9, b/191654433) - SafeArgs nie będzie już powodować błędów podczas kompilowania aplikacji w wersjach starszych niż
1.5.0
.Kotlin
(Icd1ff, b/190739257)
Wersja 2.4.0-alpha03
16 czerwca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha03
Wersja 2.4.0-alpha03 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że do przejścia do dołączonego wykresu dynamicznego potrzebne były 2 wywołania
navigate()
. (I7785c, b/188859835) - Naprawiliśmy błąd regresji wprowadzony w Nawigacji
2.4.0-alpha01
, który powodował, żesetupActionBarWithNavController()
nie usuwał prawidłowo ikony Wstecz, gdy użytkownik znajdował się w miejscu docelowym najwyższego poziomu. (I5d443, b/189868637) - Rozwiązaliśmy problem
IllegalStateException
, który występował podczas wywoływaniapopBackStack()
po wcześniejszym usunięciu głównego wykresu NavControllera. (I2a330, b/190265699) - Reguły ProGuard dla
by navArgs()
są teraz prawidłowo stosowane podczas korzystania znavigation-common
lub innych artefaktów, które od niego zależą. (I68800, b/190082521) OnDestinationChangedListener
, która przy pierwszym wywołaniu zwrotnymnavigate()
otrzymuje teraz drugie wywołanie zwrotne z miejscem docelowym, do któregonavigate()
dotarła. (Ie5f9e, b/190228815)- Safe Args nie powoduje już awarii podczas używania z modułami funkcji dynamicznych i AGP 7.0 lub nowszym. (I69518, b/189966576)
Znany problem
- Safe Args nie będzie działać i wyświetli błąd
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
, jeśli używasz Gradle6.7.0
, ponieważ jest on zależny od starszej wersji Kotlina. Można to obejść, aktualizując Gradle do wersji 7.0. (b/190739257)
Wersja 2.4.0-alpha02
2 czerwca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha02
Wersja 2.4.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Trasy są teraz obsługiwane w przypadku miejsc docelowych Activity, Fragment i Dialog, a także w całym dynamicznym interfejsie DSL nawigacji w Kotlinie. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
tymczasowo dodał eksperymentalne interfejsy API, aby umożliwić rezygnację z zapisywania stanu. Zapisywanie stanu jest prawidłowym działaniem, ale nadal istnieją przypadki użycia wycofanych bibliotek (np.zachowywanych fragmentów), które nie mogą być obsługiwane podczas zapisywania stanu. Daje to aplikacjom możliwość stopniowego przechodzenia na inne interfejsy API. (Idf93c)Nawigacja udostępnia teraz interfejsy API
findDestination()
igetHierarchy()
, które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.findDestination()
to funkcja rozszerzającaNavGraph
, która znajduje miejsce docelowe w grafie.getHierarchy()
to funkcja naNavDestination
, której można użyć do sprawdzenia, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody NavigationUI, które przyjmowały
BottomNavigationView
, zostały zaktualizowane tak, aby zamiast tego przyjmowały jego klasę nadrzędną wprowadzoną w Material1.4.0
,NavigationBarView
. Dzięki temu można używać tych metod w przypadkuNavigationRailView
. (Ib0b36, b/182938895)Podczas rozwijania elementu
<action>
za pomocą XML atrybuty animacji mogą używać atrybutów pobranych z motywu za pomocą składniapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Zmiany w interfejsie API
- Konstruktory Kotlin DSL, które używają identyfikatora, zostały wycofane i należy je zastąpić konstruktorami, które używają tras (I85b42, b/188816479). (I9f58f, b/188816479)
Poprawki błędów
DialogFragmentNavigator
korzysta teraz z interfejsuNavigatorState.pop()
API, aby informowaćNavController
, kiedy okno zamyka się po naciśnięciu systemowego przycisku Wstecz lub kliknięciu poza nim. Dzięki temu stanNavController
jest zawsze zsynchronizowany ze stanem nawigatora. (I2ead9)Nawigacja nie zwraca już wartości
ConcurrentModificationException
, gdy używasz manipulowania listąOnDestinationChangedListeners
za pomocą wywołania zwrotnegoonDestinationChanged
. (Ib1707, b/188860458)Safe Args nie powoduje już awarii podczas próby wygenerowania właściwości kierunku w Kotlinie. (Id2416, b/188564435)
Metoda setId w klasie NavDestination ma teraz prawidłową adnotację
@IdRes
, więc akceptuje tylko identyfikatory zasobów. (I69b80)Parametr int funkcji
findNode
ma teraz wartośćresId
zamiastresid
. (I7711d)
Aktualizacja zależności
- Safe Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że nie powinno już pojawiać się ostrzeżenie o używaniu
applicationIdTextResource
. (I6d67b, b/172824579)
Wersja 2.4.0-alpha01
18 maja 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.4.0-alpha01
Wersja 2.4.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Metoda
currentBackStackEntryAsFlow()
wNavController
udostępniaFlow
, który emituje sygnał za każdym razem, gdy zmieni się bieżącyNavBackStackEntry
. Ten proces może być używany jako alternatywa dla ręcznego zarządzania plikiemOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Wiele stosów wstecznych
Klasa NavController odpowiada za zarządzanie stosem wstecznym miejsc docelowych, dodawanie do niego miejsc docelowych, gdy navigate()
, oraz usuwanie ich, gdy wywołasz popBackStack()
lub naciśniesz systemowy przycisk Wstecz. Istniejąca klasa NavOptions
i integracja z wpisami <action>
w pliku XML wykresu nawigacji zostały rozszerzone, aby obsługiwać zapisywanie i przywracanie stosu wstecznego. (b/80029773)
W ramach tej zmiany metody NavigationUI
klas onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan usuniętych miejsc docelowych, co umożliwia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. Jeśli używasz nawigacji z fragmentami, jest to zalecany sposób integracji z wieloma stosami wstecznymi. (Ie07ca)
Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na różnych platformach:
W pliku XML nawigacji element
<action>
może teraz używać atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
, aby zapisywać stan wszystkich miejsc docelowych wyświetlanych za pomocą elementuapp:popUpTo
i przywracać stan powiązany z miejscem docelowym przekazanym jakoapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
W
navOptions
Kotlin DSL możesz dodać właściwości logicznerestoreState
isaveState
dopopUpTo
konstruktora:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Podczas ręcznego tworzenia obiektu
NavOptions
za pomocą metodyNavOptions.Builder
możesz użyć metodysetRestoreState()
i nowego przeciążenia dosetPopUpTo()
, które przyjmuje dodatkowy parametrsaveState
.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Wywołania zautomatyzowane do
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.
W każdym przypadku NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym wszystkie instancje ViewModel
w zakresie miejsca docelowego nawigacji. Interfejsy API Navigator
zostały zaktualizowane, aby umożliwić każdemu Navigator
zapisywanie i przywracanie własnego stanu.
Interfejs ComposeNavigator
używany w przypadku miejsc docelowych composable
w Navigation Compose oraz interfejsy FragmentNavigator
i DynamicFragmentNavigator
używane w przypadku miejsc docelowych <fragment>
w Navigation with Fragments zostały zaktualizowane, aby korzystać z nowych interfejsów Navigator API i obsługiwać zapisywanie oraz przywracanie stanu.
Trasy nawigacyjne
Trasa to String
, która jednoznacznie identyfikuje miejsce docelowe. Wcześniej to pojęcie było używane tylko w Navigation Compose, ale teraz stało się częścią podstawowych interfejsów API Navigation. Jest to alternatywa dla używania identyfikatorów całkowitych podczas tworzenia grafu za pomocą Navigation Kotlin DSL. (b/172823546)
Wszystkie interfejsy API, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które przyjmuje ścieżkę String
. Obejmuje to m.in. navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Ma to pewne konsekwencje dla interfejsu API:
- Właściwość
popUpTo
w języku Kotlin DSL została wycofana na rzeczpopUpToId
. (I59c73, b/172823546) - Interfejs API
getStartDestination()
został wycofany na rzecz interfejsugetStartDestinationId()
. (I0887f, b/172823546)
W przypadku deweloperów, którzy przechodzą z poprzednich wersji Navigation Compose na Navigation Compose 2.4.0-alpha01
, oznacza to, że te importy w metodach rozszerzeń nie są już potrzebne i należy je usunąć:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
Argument KEY_ROUTE
został zastąpiony właściwością route
w obiekcie NavDestination
, co umożliwia bezpośrednie wywoływanie funkcji navBackStackEntry.destination.route
.
Zmiany w interfejsie API
- Wszystkie artefakty Navigation zostały przepisane w języku Kotlin. Poprawiło to możliwość przyjmowania wartości null przez klasy korzystające z typów ogólnych (np. podklasy
NavType
). Wszystkie funkcje rozszerzające w Kotlinie, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. (b/184292145) NavDeepLinkBuilder
obsługuje teraz dodawanie wielu różnych miejsc docelowych do wygenerowanego stosu wstecznego. (I3ee0d, b/147913689)- Dodaj funkcje fabryczne dla
DynamicNavHostFragment
(Icd515, b/175222619) - Unikalny identyfikator
NavBackStackEntry
jest teraz udostępniany w ramach publicznego interfejsu API. (Ie033a) - Pola
name
iargument
oraz funkcje destrukcjiNamedNavArgument
są teraz publiczne. (#174, b/181320559) - Wprowadziliśmy nowe rozszerzenie
NavBackStackEntry#provideToCompositionLocals
, które udostępniaNavBackStackEntry
odpowiednim lokalizacjom kompozycji. (#175, b/187229439)
Safe Args
Safe Args generuje teraz metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Zaktualizowano Safe Args, aby zależał od KotlinPoet w wersji
1.8.0
. (#172, b/183990444)
Zmiany w zachowaniu
- Nawigacja zależy teraz od Lifecycle
2.3.1
i oznacza metodysetGraph()
,popBackStack()
,navigateUp()
inavigate()
, które aktualizująNavBackStackEntry
Lifecycle
, jako@MainThread
, co sprawia, że nawigacja jest zgodna z wymaganiami dotyczącymi głównego wątku wprowadzonymi w Lifecycle2.3.0
. (b/171125856) - Analizowanie argumentów wyliczeniowych z precyzyjnych linków nie uwzględnia już wielkości liter, co pozwala dopasować precyzyjny link
http://www.example.com/red
do precyzyjnego linkuwww.example.com/{color}
, nawet jeśli wyliczenie ma wartośćRED
. (#152, b/135857840)
Zgodność z Compose
androidx.navigation:navigation-compose:2.4.0-alpha01
jest zgodny tylko z Compose w wersji1.0.0-beta07
lub nowszej.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że symbole zastępcze argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami z dokładnie takim samym sufiksem. (#153, b/184072811)
NavHostFragment
obsługuje teraz niestandardowe nawigatory, które używają tego samego@Navigator.Name("dialog")
co domyślnyDialogFragmentNavigator
. (Ib1c2c, b/175979140)- Ulepszyliśmy działanie funkcji
NavigatorProvider#addNavigator
, aby wielokrotne wywoływanie jej z tą samą instancją nie powodowało problemów. (#176, b/187443146)
Wkład zewnętrzny
- Dziękujemy simonschiller za dodanie obsługi Safe Args, która generuje metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621) - Dziękujemy Bradleycorn za to, że argumenty wyliczeniowe z precyzyjnych linków są analizowane bez uwzględniania wielkości liter. (#152, b/135857840)
- Dziękujemy osipxd za rozwiązanie problemu, w którym zmienne argumentów na końcu miały pierwszeństwo przed precyzyjnymi linkami z pasującym dokładnym sufiksem. (#153, b/184072811)
- Dziękujemy tatocaster za zaktualizowanie Safe Args, aby zależało od KotlinPoet
1.8.0
. (#172, b/183990444) - Dziękujemy jossiwolf za udostępnienie pól
name
iargument
oraz funkcji dekonstrukcjiNamedNavArgument
. (#174, b/181320559) - Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia
NavBackStackEntry#provideToCompositionLocals
, które zapewniaNavBackStackEntry
w odpowiednich lokalizacjach kompozycji. (#175, b/187229439) - Dziękujemy jossiwolf za ulepszenie działania funkcji
NavigatorProvider#addNavigator
, dzięki czemu wielokrotne wywoływanie jej z tą samą instancją nie powoduje problemów. (#176, b/187443146)
Nawigacja w Compose w wersji 1.0.0
Wersja 1.0.0-alpha10
7 kwietnia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha10
Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
NavHost
akceptuje terazModifier
, który jest przekazywany do kontenera kompozycyjnego opakowującego kompozycje docelowe. (I85aca, b/175125483)
Poprawki błędów
NavHost
działa teraz nawet wtedy, gdy nie można znaleźćOnBackPressedDispatcherOwner
, np. podczas wyświetlania podgląduNavHost
. (I7d8b4)- Biblioteka Navigation Compose zależy teraz od Navigation
2.3.5
, co rozwiązuje problem podczas używaniaBackHandler
w miejscu docelowymNavHost
. (I7e63b, b/182284739)
Wersja 1.0.0-alpha09
10 marca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha09
Wersja 1.0.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
LocalViewModelStoreOwner.current
zwraca teraz wartość dopuszczającą wartość nullViewModelStoreOwner
, aby lepiej określać, czy w bieżącej kompozycji jest dostępny elementViewModelStoreOwner
. Interfejsy API, które wymagająViewModelStoreOwner
, np.viewModel()
iNavHost
, nadal zgłaszają wyjątek, jeśli nie ustawionoViewModelStoreOwner
. (Idf39a)
Poprawki błędów
- Biblioteka Navigation Compose zależy teraz od Navigation 2.3.4, która zawiera poprawkę błędu polegającego na próbie ustawienia tego samego obiektu ViewModelStore po ustawieniu wykresu. (I65c24, b/177825470)
Wersja 1.0.0-alpha08
24 lutego 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha08
Wersja 1.0.0-alpha08 zawiera te zmiany.
Nowe funkcje
NavHost
wypełnia terazLocalSavedStateRegistryOwner
CompositionLocal wartościąNavBackStackEntry
miejsca docelowego, dzięki czemu każdy stan zapisany bezpośrednio wSavedStateRegistry
będzie zapisywany i przywracany wraz z miejscem docelowym. (I435d7, b/179469431)
Wersja 1.0.0-alpha07
10 lutego 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha07
Wersja 1.0.0-alpha07 zawiera te zmiany.
Aktualizacje zależności
- Biblioteka Navigation Compose zależy teraz od Lifecycle ViewModel Compose w wersji 1.0.0-alpha01, aby zapewnić obsługę
viewModel()
w miejscach docelowychcomposable
. (I7a374) NavHost
korzysta teraz z nowego interfejsu APILocalOnBackPressedDispatcherOwner
z biblioteki Activity-Compose w wersji 1.3.0-alpha01, aby uzyskać wartośćOnBackPressedDispatcher
ustawioną w przypadkuNavController
. (I65b12)
Wersja 1.0.0-alpha06
28 stycznia 2021 roku
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha06
Wersja 1.0.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano metodę rozszerzenia
getBackStackEntry(route: String)
wNavController
, która zwraca powiązany elementNavBackStackEntry
. (If8931)
Wersja 1.0.0-alpha05
13 stycznia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha05
Wersja 1.0.0-alpha05 zawiera te zmiany.
Zaktualizowano, aby zależał od Compose w wersji 1.0.0-alpha10.
Wersja 1.0.0-alpha04
16 grudnia 2020 roku
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha04
Wersja 1.0.0-alpha04 zawiera te zmiany.
- Zaktualizowano pod kątem zgodności z Compose
1.0.0-alpha09
.
Wersja 1.0.0-alpha03
2 grudnia 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha03
Wersja 1.0.0-alpha03 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że po zmianie konfiguracji lub zakończeniu i ponownym utworzeniu procesu funkcje
popBackStack()
inavigateUp()
nie działały. (Icea47, b/173281473) - Przechodzenie do zagnieżdżonego wykresu w obiekcie NavHost działa teraz prawidłowo. (I0948d, b/173647694)
Wersja 1.0.0-alpha02
11 listopada 2020 roku
Zostanie wycofaneandroidx.navigation:navigation-compose:1.0.0-alpha02
Wersja 1.0.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Nawigacja w Compose obsługuje teraz NavOptions do używania operacji popUpTo i launchSingleTop (If96c3, b/171468994).
- Dodano funkcję nawigacji, która przyjmuje trasę zamiast identyfikatora, co umożliwia tworzenie zagnieżdżonych wykresów w języku DSL Navigation Compose. (I1661d)
- Parametr startDestination znajduje się teraz przed parametrem route na liście parametrów elementu NavHost (Ie620e).
- Możesz teraz utworzyć wykres, używając trasy jako miejsca docelowego poza komponentem kompozycyjnym NavHost. (Iceb75)
Wersja 1.0.0-alpha01
28 października 2020 r.
Zostanie wycofaneandroid.navigation:navigation-compose:1.0.0-alpha01
Wersja 1.0.0-alpha01 zawiera te zmiany.
Nowe funkcje
Artefakt navigation-compose
zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa @Composable
funkcji.
Ta pierwsza wersja zapewnia:
NavHost
funkcja kompozycyjna, która umożliwia tworzenie wykresu nawigacji za pomocą języka Kotlin DSL.- Określanie zakresu cyklu życia,
ViewModel
i zapamiętanego stanu na poziomie miejsca docelowego. - Automatyczna integracja z systemowym przyciskiem Wstecz.
- Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych i zwracania wyniku do poprzednich miejsc docelowych.
- Utwórz konkretne funkcje pomocnicze w
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić przenoszenie stanu i połączenieNavController
z funkcjami kompozycyjnymi pozaNavHost
(np. z dolnym paskiem nawigacyjnym).
Więcej informacji znajdziesz w przewodniku po tworzeniu nawigacji w Compose.
Wersja 2.3.5
Wersja 2.3.5
7 kwietnia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.5
Wersja 2.3.5 zawiera te zmiany.
Nowe funkcje
- Podczas nawigacji za pomocą
NavDeepLinkRequest
lubUri
możesz teraz uzyskać dostęp doUri
, działania i typu MIME w miejscu docelowym, pobierając intencję z argumentów za pomocąKEY_DEEP_LINK_INTENT
. Odzwierciedla to funkcję, która jest już dostępna w przypadku zewnętrznego linkowania bezpośredniego. (I975c3, b/181521877)
Poprawki błędów
OnBackPressedCallbacks
dodany do dyspozytora zNavBackStackEntry
jako LifecycleOwner prawidłowo przechwytuje naciśnięcie przycisku Wstecz po tym, jak cykl życia działania przejdzie w stanSTOPPED
, a potemSTARTED
(Iff94f, b/182284739).- Analizowanie domeny precyzyjnego linku nie uwzględnia już wielkości liter, dzięki czemu
www.example.com
pasuje zarówno dowww.example.com
, jak i dowww.Example.com
. Pamiętaj, że w nazwach parametrów zapytania nadal jest rozróżniana wielkość liter. (#144, b/153829033) - Naprawiono
NullPointerException
, który mógł występować, gdy miejsce docelowe ma wiele argumentów domyślnych, które nie mogą mieć wartości null, a użytkownik przechodzi do tego miejsca docelowego, zastępując tylko podzbiór tych argumentów. (aosp/1644827)
Aktualizacje zależności
- Wtyczka Gradle Safe Args do nawigacji zależy teraz od wtyczki Kotlin Gradle w wersji 1.4.31. (aosp/1661058, b/181156413)
Wkład zewnętrzny
- Dziękujemy
bentrengrove
za przesłanie prośby o zmianę, która sprawia, że analiza domeny precyzyjnego linku nie uwzględnia wielkości liter. (#144, b/153829033)
Wersja 2.3.4
Wersja 2.3.4
10 marca 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.4
Wersja 2.3.4 zawiera te zmiany.
Nowe funkcje
- Argumenty
ReferenceType
mogą być teraz prawidłowo analizowane, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. Obsługuje zarówno surową wartość całkowitą, jak i wartości szesnastkowe poprzedzone znakiem0x
. (#127, b/179166693) - Tag
android:defaultValue
w przypadku argumentu z tagiemapp:argType="float"
obsługuje teraz domyślne wartości całkowite, co pozwala używać taguandroid:defaultValue="0"
zamiast tagu0.0
. (#117, b/173766247)
Poprawki błędów
- Naprawiono problem z zablokowanym postępem instalacji podczas korzystania z obsługi funkcji dynamicznych w Nawigacji. (Ib27a7, b/169636207)
- Wywoływanie funkcji
setViewModelStore
lubsetLifecycleOwner
z tym samym obiektem, który został już ustawiony, nie będzie już powodować żadnych działań (Idf491, b/177825470). - Safe Args dodaje teraz adnotacje suppress do odpowiednich metod podczas korzystania z języka Java. (I8fbc5, b/179463137)
Wkład zewnętrzny
- Dziękujemy
JvmName
za żądanie pull, które zapewnia, że argumentyReferenceType
mogą być teraz prawidłowo analizowane, gdy są wysyłane jako część identyfikatora URI linku bezpośredniego. (#127, b/179166693) - Dziękujemy
tatocaster
za prośbę o scalenie, która umożliwia używaniedefaultValue
jako argumentu zapp:argType=”float”
. Obsługuje ona teraz domyślne wartości całkowite. (#117, b/173766247)
Wersja 2.3.3
Wersja 2.3.3
27 stycznia 2021 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.3
Wersja 2.3.3 zawiera te zmiany.
Poprawki błędów
- Nie występuje już awaria podczas wysuwania elementu
NavBackStackEntry
, zanim jego elementLifecycle
zostanie przeniesiony do elementuCREATED
. (Ie3ba3) - Naprawiono regresję spowodowaną przez b/171364502, w której przejście do aktywności z wartością zasobu animacji
0
powodowałoResourceNotFoundException
. (I7aedb, b/176819931)
Wersja 2.3.2
Wersja 2.3.2
2 grudnia 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.2
Wersja 2.3.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem w
NavigationUI
, który powodował, że użycie miejsca docelowego<activity>
zonNavDestinationSelected
nie powodowało przejścia do aktywności. (I22e34, b/171364502) - Rozwiązaliśmy problem, który powodował, że naciśnięcie
navigation-dynamic-features-fragment
skutkowało wielokrotnym przejściem do nowo zainstalowanego miejsca docelowego. (aosp/1486056, b/169636207) - Rozwiązaliśmy problem, który powodował, że argumenty domyślne nie były wysyłane do instancji
OnDestinationChangedListener
podczas używanialaunchSingleTop
. (I2c5cb) - Rozwiązaliśmy problem, który powodował, że przejście do zagnieżdżonego wykresu nawigacji nie powodowało utworzenia nowej instancji wykresu na stosie wstecznym. (Ifc831)
- Rozwiązaliśmy problem polegający na tym, że użycie
navigate()
zpopUpTo
, które usuwało ostatnie miejsce docelowe na wykresie nawigacji, nie powodowało natychmiastowego zniszczenia i usunięcia samego wykresu nawigacji ze stosu wstecznego. (I910a3) - SafeArgs w Nawigacji korzysta teraz z KotlinPoet w wersji 1.7.2, która obsługuje tryb jawnego interfejsu API w Kotlinie. (I918b5)
NavHostFragment.findNavController(Fragment)
sprawdza teraz również widok dekoracji głównej elementu DialogFragment, oprócz dotychczasowych sprawdzeń hierarchii fragmentów i hierarchii widoków fragmentu. Umożliwia to testowanie fragmentów okien dialogowych, które korzystają z Navigation z użyciemFragmentScenario
iNavigation.setViewNavController()
. (I69e0d)
Wersja 2.3.1
Wersja 2.3.1
14 października 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.1
Wersja 2.3.1 zawiera te zmiany.
Nowe funkcje
- Do interfejsu nawigacji dodano domyślne zasoby Animator, które są zalecane zamiast domyślnych zasobów animacji. (b/167430145)
- Klasa NavOptions zastępuje teraz metody hashCode i equals (b/161586466).
- Nawigacja zawiera teraz bieżące miejsce docelowe w wyjątku IllegalArgumentException „No destination with ID”, co powinno ułatwić programistom debugowanie. (b/168311416)
Poprawki błędów
- Safe Args nie będzie już zawijać wiersza zwrotu, nawet jeśli wygenerowana nazwa klasy argumentu będzie dłuższa niż 100 znaków. (b/168584987)
Zmiany zależności
navigation-ui
zależy teraz od DrawerLayout 1.1.1, co zapewnia możliwość otwierania panelu przezNavigationUI
nawet w przypadku korzystania zLOCK_MODE_LOCKED_CLOSED
lubLOCK_MODE_LOCKED_OPEN
. (b/162253907)- Safe Args zależy teraz od KotlinPoet 1.6.0 (aosp/1435911).
- Safe Args zależy teraz od AGP 4.0.1 (aosp/1442337).
Wersja 2.3.0
Wersja 2.3.0
24 czerwca 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0
Wersja 2.3.0 zawiera te zmiany.
Główne zmiany od wersji 2.2.0
- Integracja modułu funkcji: artefakty
navigation-dynamic-features-runtime
inavigation-dynamic-features-fragment
umożliwiają przechodzenie do miejsc docelowych zdefiniowanych w modułach funkcji, automatycznie obsługując instalację modułów funkcji w razie potrzeby. Więcej informacji znajdziesz w artykule Nawigacja za pomocą modułów funkcji. - Testowanie nawigacji: artefakt
navigation-testing
udostępniaTestNavHostController
, który umożliwia ustawienie bieżącego miejsca docelowego i sprawdzenie stosu wstecznego po operacjach nawigacji. Więcej informacji znajdziesz w artykule Testowanie nawigacji. - Zwracanie wyniku: element
NavBackStackEntry
powiązany z każdym miejscem docelowym na liście wstecznej nawigacji umożliwia teraz dostęp do elementuSavedStateHandle
odpowiedniego do przechowywania niewielkich ilości zapisanego stanu, który powinien być powiązany z określonym wpisem na liście wstecznej. Więcej informacji znajdziesz w sekcji Przywracanie wyniku do poprzedniego miejsca docelowego. NavigationUI
obsługaOpenable
: wszystkie użyciaDrawerLayout
wNavigationUI
zostały zastąpione bardziej ogólnym interfejsemOpenable
dodanym w CustomView1.1.0
i wdrożonym przezDrawerLayout
w DrawerLayout1.1.0
.- Obsługa działań i typów MIME w precyzyjnych linkach: precyzyjne linki zostały rozszerzone o obsługę
app:action
iapp:mimeType
oprócz wcześniej dostępnegoapp:uri
.NavController
obsługuje teraz nawigację według dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. Więcej informacji znajdziesz w artykule Nawigacja za pomocą NavDeepLinkRequest.
Znane problemy
- Obsługa działań precyzyjnych linków i typów MIME nie jest jeszcze dostępna w narzędziu do scalania plików manifestu. Do tego czasu wszystkie wygenerowane elementy
<intent-filter>
z elementu<nav-graph>
w pliku manifestu nie będą zawierać typu MIME w elemencie<data>
ani niestandardowego elementu<action>
. Musisz ręcznie dodać odpowiedni element<intent-filter>
do pliku manifestu.
Wersja 2.3.0-rc01
10 czerwca 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-rc01
Wersja 2.3.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem
NullPointerException
, który występował podczas zastępowania wystąpienia miejsca docelowego bez argumentów innym wystąpieniem z argumentami za pomocąsingleTop
. (b/158006669) - Wszystkie wyjątki
destination is unknown
zgłaszane przezNavController
zawierają teraz dodatkowe informacje do debugowania, które pomagają określić stanNavController
. (b/157764916)
Wersja 2.3.0-beta01
20 maja 2020 r.
androidx.navigation:navigation-*:2.3.0-beta01
. Wersja 2.3.0-beta01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że
Lifecycle
wNavBackStackEntry
nie było prawidłowo aktualizowane po zakończeniu procesu. (b/155218371) - Instancje
OnDestinationChangedListener
zarejestrowane przed wywołaniemsetGraph()
są teraz prawidłowo wysyłane do przywróconego miejsca docelowego po zakończeniu procesu. (b/155218371) - Gdy używasz funkcji
singleTop
, argumenty funkcjiNavBackStackEntry
są teraz prawidłowo aktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancjiOnDestinationChangeListener
. (b/156545508)
Aktualizacje zależności
- Artefakt
NavigationUI
zależy teraz od CustomView1.1.0-rc01
i DrawerLayout1.1.0-rc01
. (aosp/1309696)
Wersja 2.3.0-alpha06
29 kwietnia 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha06
(Wersja 2.3.0-alpha06 zawiera te zmiany.)
Nowe funkcje
- Precyzyjne linki zostały rozszerzone o obsługę
app:action
iapp:mimeType
oprócz wcześniej dostępnegoapp:uri
. Klasa NavController obsługuje teraz nawigację za pomocą dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. (b/136573074, b/135334841)
Zmiany w interfejsie API
- Znacznie rozszerzyliśmy obsługę języka Kotlin DSL w przypadku miejsc docelowych nawigacji dynamicznej. (b/148969800)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że intencje precyzyjnych linków były ignorowane podczas korzystania z zagnieżdżonego miejsca docelowego rozpoczęcia. (b/154532067)
Wersja 2.3.0-alpha05
15 kwietnia 2020 roku
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha05
Wersja 2.3.0-alpha05 zawiera te zmiany.
Nowe funkcje
- W przypadku dynamicznych wykresów obejmujących używających
<include-dynamic>
nie musisz już określaćapp:graphPackage
. Domyślna wartość zostanie użyta przez dodanie sufiksumoduleName
doapplicationId
po kropce. Jeśli musisz dostosowaćgraphPackage
, możesz teraz użyć symbolu zastępczego${applicationId}
. (b/152696768) - DSL Kotlin wykresu nawigacji udostępnia teraz
defaultArguments
Map
dla działań, co odzwierciedla możliwość ustawiania wartości domyślnych w elementach<action>
w plikach XML nawigacji. (b/150345605)
Poprawki błędów
- W Navigation 2.2.2: naprawiono
IllegalStateException
podczas precyzyjnego linkowania do miejsca docelowego na początku wykresu, gdy w aktywności jest wiele instancjiNavHostFragment
. (b/147378752)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.2.4
. (aosp/1277325) - Nawigacja dynamiczna zależy teraz od Play Core
1.7.2
. (aosp/1282257)
Wersja 2.3.0-alpha04
18 marca 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha04
Wersja 2.3.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Dodano obsługę aktywności modułu funkcji i miejsc docelowych fragmentów w języku Kotlin DSL Navigation. (b/148969800)
Zmiany w interfejsie API
- Klasa
DynamicExtras
nie używa już wzorca konstruktora i można ją teraz tworzyć bezpośrednio. (aosp/1253671) - Metoda
DynamicActivityNavigator
przyjmuje teraz w konstruktorze obiektContext
zamiast obiektuActivity
. (aosp/1250252)
Poprawki błędów
NavigationUI
nie ignoruje już pustych etykiet (np. miejsca docelowego z wartościąandroid:label=””
) i prawidłowo ustawia tytuł na pusty ciąg tekstowy. (b/148679860)
Aktualizacje zależności
- Artefakty dynamicznych funkcji nawigacji zależą teraz od biblioteki Play Core
1.6.5
. (b/149556401)
Wersja 2.3.0-alpha03
4 marca 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha03
Wersja 2.3.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zamiast korzystać z konkretnej klasy
DrawerLayout
,AppBarConfiguration
używa teraz interfejsuOpenable
wprowadzonego w CustomView1.1.0-alpha02
(któryDrawerLayout
jest implementowany od DrawerLayout1.1.0-alpha04
), co umożliwia używanie niestandardowych implementacjiOpenable
zNavigationUI
. (b/129030452)
Poprawki błędów
- Reguły ProGuard zachowują teraz tylko klasy
NavArgs
, które są używane, a nie wszystkie instancjeNavArgs
.navigation-common-ktx
(b/150213558)
Zmiany zależności
- Nawigacja nie zależy już od biblioteki Core
1.2.0
, ale od biblioteki Core1.1.0
. Dzięki temu deweloperzy nie muszą przechodzić na nowszą wersję zależności, gdy Nawigacja nie korzysta z żadnych nowych interfejsów API w bibliotece Core1.2.0
.
Wersja 2.3.0-alpha02
19 lutego 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha02
Wersja 2.3.0-alpha02 zawiera te zmiany.
Nowe funkcje
NavBackStackEntry
umożliwia teraz dostęp doSavedStateHandle
, który nadaje się do przechowywania niewielkich ilości zapisanego stanu, który powinien być powiązany z określonym wpisem na liście wstecznej. Przykład zastosowania znajdziesz w sekcji Zwracanie wyniku. (b/79672220)
Zmiany w interfejsie API
- Dodaliśmy wygodne metody
getCurrentBackStackEntry()
igetPreviousBackStackEntry()
, aby ułatwić pobieranieNavBackStackEntry
dla bieżącego i poprzednich miejsc docelowych. (b/79672220)
Poprawki błędów
navigateUp()
przekazuje teraz argumenty bieżącego miejsca docelowego iKEY_DEEP_LINK_INTENT
do poprzedniego miejsca docelowego podczas uruchamiania aplikacji we własnym stosie zadań. (b/147456890)
Zmiany zależności
- Nawigacja zależy teraz od Core
1.2.0
.
Wersja 2.3.0-alpha01
5 lutego 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.3.0-alpha01
Wersja 2.3.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Nowy artefakt
navigation-testing
udostępnia klasęTestNavHostController
. Ta klasa stanowi alternatywę dla używania obiektu mockNavController
podczas testowania nawigacji. Umożliwia ustawienie bieżącego miejsca docelowego i zweryfikowanie listy wstecznej po operacjach nawigacji. (b/140884273) - Nowy element
navigation-dynamic-features-fragment
(i jego zależność przechodnianavigation-dynamic-features-runtime
) umożliwia uwzględnianie miejsc docelowych lub całych wykresów nawigacji (za pomocą<include-dynamic>
) z modułów funkcji, co zapewnia bezproblemową instalację modułów funkcji na żądanie podczas przechodzenia do tych miejsc docelowych. Więcej informacji znajdziesz w artykule Nawigacja za pomocą modułów funkcji. (b/132170186)
Poprawki błędów
- W sekcji Nawigacja
2.2.1
: precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszelkie parametry zapytania, zamiast dołączać je do elementów końcowych{argument}
lub nie pasować do precyzyjnego linku. (b/147447512) - Z Menu nawigacyjnego
2.2.1
: zaktualizowaliśmynavigation-ui
reguły ProGuard dlaDrawerArrowDrawable
, abyandroid.enableJetifier=true
nie było wymagane. (b/147610424) - W Nawigacji
2.2.1
: modułnavigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu zamiast współdzielić tę samą nazwę pakietu manifestu conavigation-runtime-ktx
. (aosp/1141947)
Aktualizacje zależności
- W Nawigacji
2.2.1
: nawigacja2.2.1
zależy teraz od Lifecycle ViewModel SavedState2.2.0
i Fragment1.2.1
.
Wersja 2.2.2
Wersja 2.2.2
15 kwietnia 2020 roku
androidx.navigation:navigation-*:2.2.2
. Wersja 2.2.2 zawiera te zmiany.
Poprawki błędów
- Naprawiono
IllegalStateException
podczas precyzyjnego linkowania do miejsca docelowego na początku wykresu, gdy w aktywności występuje wiele instancjiNavHostFragment
. (b/147378752) NavigationUI
nie ignoruje już pustych etykiet (np. miejsca docelowego z wartościąandroid:label=””
) i prawidłowo ustawia tytuł na pusty ciąg tekstowy. Ta funkcja została wcześniej udostępniona w Navigation 2.3.0-alpha04. (b/148679860)- Reguły ProGuard zachowują teraz tylko klasy
NavArgs
, które są używane, a nie wszystkie instancjeNavArgs
.navigation-common-ktx
Ta funkcja została wcześniej udostępniona w Navigation 2.3.0-alpha03. (b/150213558
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.2.4
. (aosp/1277325)
Wersja 2.2.1
Wersja 2.2.1
5 lutego 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.1
Wersja 2.2.1 zawiera te zmiany.
Poprawki błędów
- Precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do elementów
{argument}
lub nie pasować do precyzyjnego linku. (b/147447512) navigation-ui
Reguły ProGuard dlaDrawerArrowDrawable
zostały zaktualizowane, aby zapewnić, żeandroid.enableJetifier=true
nie jest wymagane. (b/147610424)- Moduł
navigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu zamiast współdzielić tę samą nazwę pakietu manifestu conavigation-runtime-ktx
. (aosp/1141947)
Aktualizacje zależności
- Nawigacja
2.2.1
zależy teraz od Lifecycle ViewModel SavedState2.2.0
i Fragment1.2.1
.
Wersja 2.2.0
Wersja 2.2.0
22 stycznia 2020 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0
Wersja 2.2.0 zawiera te zmiany.
Ważne zmiany od wersji 2.1.0
- NavBackStackEntry: możesz teraz wywołać
NavController.getBackStackEntry()
, przekazując identyfikator miejsca docelowego lub wykresu nawigacji na stosie wstecznym. Zwrócony elementNavBackStackEntry
zawiera elementLifecycleOwner
,ViewModelStoreOwner
(taki sam jak zwracany przezNavController.getViewModelStoreOwner()
) iSavedStateRegistryOwner
, a także argumenty użyte do uruchomienia tego miejsca docelowego. - Integracja Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną podczas korzystania zby navGraphViewModels()
lub konstruktoraViewModelProvider
z obiektemViewModelStoreOwner
zwracanym przezNavController.getBackStackEntry()
lubNavController.getViewModelStoreOwner()
. - Obsługa parametrów zapytania w precyzyjnych linkach: precyzyjne linki z parametrami zapytania obsługują teraz zmienioną kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub mogą mieć wartość null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków.
- Ulepszona obsługa animacji:
NavHostFragment
korzysta teraz zFragmentContainerView
z Fragmentu 1.2.0, co rozwiązuje problemy z kolejnością animacji i przekazywaniem wstawień okien do fragmentów.
Wersja 2.2.0-rc04
18 grudnia 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-rc04
Wersja 2.2.0-rc04 zawiera te zmiany.
Poprawki błędów
- Dostosowaliśmy domyślne animacje zanikania używane przez
navigation-ui
, aby pasowały do dostosowanych animacji zanikania w fragmencie1.2.0-rc04
. (b/145769814)
Wersja 2.2.0-rc03
4 grudnia 2019
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-rc03
Wersja 2.2.0-rc03 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z parsowaniem linków bezpośrednich podczas używania parametrów zapytania i argumentu jako ostatniej części ścieżki, który uniemożliwiał parsowanie więcej niż 1 znaku argumentu ścieżki końcowej. (b/144554689)
- Rozwiązaliśmy problem z analizowaniem precyzyjnych linków, który powodował, że parametry opcjonalne otrzymywały wartość
"@null"
zamiastnull
. (b/141613546) NavHostFragment
teraz prawidłowo przywraca wykres po zmianie konfiguracji, gdy jest używany zFragmentContainerView
. (b/143752103)
Zmiany zależności
- Nawigacja zależy teraz od komponentów Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
i Fragment1.2.0-rc03
w odpowiednich przypadkach.
Wersja 2.2.0-rc02
7 listopada 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-rc02
Wersja 2.2.0-rc02 zawiera te zmiany.
Zmiany zależności
- Nawigacja zależy teraz od androidx.lifecycle
2.2.0-rc02
.
Wersja 2.2.0-rc01
23 października 2019 r.
androidx.navigation:navigation-*:2.2.0-rc01
zostaje opublikowany bez zmian od 2.2.0-beta01
. Wersja 2.2.0-rc01 zawiera te zmiany.
Wersja 2.2.0-beta01
9 października 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-beta01
Wersja 2.2.0-beta01 zawiera te zmiany.
Nowe funkcje
NavDestination
i jego podklasy zastępują teraztoString()
, aby podczas debugowania udostępniać bardziej przydatne informacje. (b/141264986)
Zmiany w działaniu
- Dodatkowe parametry zapytania są teraz ignorowane podczas dopasowywania precyzyjnych linków, zamiast powodować niepowodzenie dopasowania. (b/141482822)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że argumenty w ścieżce precyzyjnego linku były ignorowane, jeśli określono też parametry zapytania. (b/141505755)
navArgs()
Rozszerzenie Kotlin wActivity
wyświetla teraz lepszy komunikat o błędzie, gdy nie ma dodatków. (b/141408999)- Wygenerowane przez Safe Args klasy Java
Directions
zawierają teraz wartości domyślne. (b/141099045) - Wygenerowane przez Safe Args klasy Java
Args
zawierają teraz wartości domyślne. (b/140123727) - Gdy używasz
Toolbar
,NavigationUI
nie animuje już zmiany tekstu podczas przechodzenia między dwoma miejscami docelowymi najwyższego poziomu. (b/140848160)
Wersja 2.2.0-alpha03
18 września 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-alpha03
Wersja 2.2.0-alpha03 zawiera te zmiany.
Zmiany w działaniu
- Dzwonienie pod numer
setViewModelStore()
po zadzwonieniu pod numersetGraph
powoduje terazIllegalStateException
. To ustawienie powinno być zawsze konfigurowane przezNavHost
w ramach wstępnej konfiguracji, aby zapewnić wszystkim instancjomNavBackStackEntry
spójne miejsce na dane instancjiViewModel
. (aosp/1111821)
Poprawki błędów
- Naprawiono
ConcurrentModificationException
podczas korzystania z instancjiViewModel
dołączonych do wielu różnych instancjiViewModelStore
w zakresie wykresu nawigacji. (aosp/1112257)
Wersja 2.2.0-alpha02
5 września 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-alpha02
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
- Precyzyjne linki z parametrami zapytania obsługują teraz zmienioną kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub mogą mieć wartość null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków. (b/133273839)
- Możesz teraz wywołać funkcję
NavController.getBackStackEntry()
, przekazując identyfikator miejsca docelowego lub wykresu nawigacji na stosie wstecznym. Zwrócony elementNavBackStackEntry
zawiera elementLifecycleOwner
,ViewModelStoreOwner
(taki sam jak zwracany przezNavController.getViewModelStoreOwner()
) iSavedStateRegistryOwner
, a także argumenty użyte do uruchomienia tego miejsca docelowego. (aosp/1101691, aosp/1101710)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że dodawanie
NavHostFragment
doViewPager2
kończyło się niepowodzeniem i wyświetlaniem błęduIllegalArgumentException
. (b/133640271) NavInflater
nie wywołuje już niepotrzebnie funkcjigetResourceName()
, co przyspiesza czas rozszerzania nawet o 40%. (b/139213740)
Wersja 2.2.0-alpha01
7 sierpnia 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.2.0-alpha01
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną podczas korzystania z konstruktoraby navGraphViewModels()
lubViewModelProvider
z elementemViewModelStoreOwner
zwróconym przezNavController.getViewModelStoreOwner()
. (b/135716331)
Zmiany w interfejsie API
- Z Navigation
2.1.0-rc01
: usunięto wycofany interfejs APIgetViewModelStore()
naNavController
, który został wprowadzony w2.1.0-alpha02
. (aosp/1091021)
Poprawki błędów
NavHostFragment
korzysta teraz zFragmentContainerView
, co rozwiązuje problemy z kolejnością animacji w osi Z i przekazywaniem wstawek okna do fragmentów. (b/137310379)
Wersja 2.1.0
Wersja 2.1.0
5 września 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.1.0
Listę zmian w tej wersji znajdziesz tutaj.
Ważne zmiany od wersji 2.0.0
- Określanie zakresu ViewModels w grafie nawigacji: możesz teraz tworzyć ViewModels, których zakres jest określony na poziomie grafu nawigacji, używając delegata właściwości
by navGraphViewModels()
w przypadku użytkowników Kotlin korzystających z bibliotek-ktx
lub interfejsu APIgetViewModelStoreOwner()
dodanego doNavController
. Więcej informacji znajdziesz w artykule Udostępnianie danych związanych z interfejsem między usługami docelowymi. - Miejsca docelowe w oknie dialogowym: możesz teraz tworzyć
<dialog>
miejsca docelowe, które będą wyświetlaćDialogFragment
, gdynavigate
do nich.NavHostFragment
domyślnie obsługuje miejsca docelowe w oknie dialogowym. Więcej informacji znajdziesz w artykule Tworzenie miejsca docelowego na podstawie elementu DialogFragment. - Nawigacja za pomocą identyfikatora URI: możesz teraz
navigate
za pomocąUri
, który wykorzystuje<deepLink>
dodany do miejsca docelowego, aby do niego nawigować. Więcej informacji znajdziesz w artykule Nawigacja za pomocą URI. - NavHostController: interfejsy API używane specjalnie do tworzenia niestandardowego komponentu
NavHost
zostały przeniesione do komponentuNavHostController
, co umożliwia implementacjom łączenie komponentuNavController
z komponentami hostaLifecycleOwner
,OnBackPressedDispatcher
iViewModelStore
.
Wersja 2.1.0-rc01
7 sierpnia 2019 r.
Zostanie wycofaneandroidx.navigation:navigation-*:2.1.0-rc01
Listę zmian w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Wycofany interfejs API
getViewModelStore()
na platformieNavController
wprowadzony w2.1.0-alpha02
został usunięty. (aosp/1091021)
Wersja 2.1.0-beta02
19 lipca 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-beta02
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność od biblioteki Jacoco, która została wprowadzona w wersji
2.1.0-beta01
. (b/137782950)
Wersja 2.1.0-beta01
17 lipca 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-beta01
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
NavigationUI
animuje teraz usuwanie przycisku Wstecz podczas korzystania zsetupWithNavController()
zToolbar
lubCollapsingToolbarLayout
. (b/131403621)
Poprawki błędów
- Rozwiązaliśmy problem z synchronizacją podczas używania wielu elementów NavHostFragment w tym samym kontenerze z
findNavController()
. (b/136021571)
Wersja 2.1.0-alpha06
2 lipca 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-alpha06
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
- Atrybut
app:navGraph
używany przez NavHostFragment został przeniesiony do artefaktunavigation-runtime
. Niestandardowe nawigatory, które można dodać za pomocą kodu XML, powinny używać tego atrybutu, aby zintegrować się z panelem hosta w edytorze nawigacji. (b/133880955)
Zmiany w interfejsie API
- Interfejs API
getViewModelStore()
na platformieNavController
został wycofany na rzecz nowej metodygetViewModelStoreOwner()
, która zwracaViewModelStoreOwner
. (aosp/987010) - Implementacja miejsc docelowych w pływającym okienku, takich jak miejsca docelowe
<dialog>
, została uogólniona w interfejsie znacznikaFloatingWindow
, który jest teraz implementowany przez wszystkie miejsca docelowe<dialog>
. Metody NavigationUI do interakcji z górnym paskiem aplikacji ignorują teraz miejsca doceloweFloatingWindow
. (b/133600763)
Zmiany w działaniu
- Nawigacja prawidłowo synchronizuje swój stan z tym, co jest widoczne na ekranie, gdy używasz miejsca docelowego
<dialog>
. W rezultacie podczas nawigacji do miejsca docelowego, które nie jest oknem ani aktywnością, np. do<fragment>
, nawigacja automatycznie wyświetla<dialog>
miejsca docelowe. (b/134089818)
Poprawki błędów
- Nawigacja pomija teraz animację, która występuje podczas ponownego tworzenia aktywności podczas obsługi precyzyjnego linku, co eliminuje migotanie obrazu. (b/130362979)
- Naprawiliśmy błąd, który powodował, że stos wsteczny nawigacji był niespójny podczas usuwania fragmentu, gdy dodawany był fragment początkowy. (b/133832218)
Wersja 2.1.0-alpha05
5 czerwca 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-alpha05
Listę zmian w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Interfejsy API związane z hostem w
NavController
zostały zmienione i przeniesione do nowej podklasyNavController
, czyliNavHostController
. (aosp/966091) - Metoda
NavController
setHostOnBackPressedDispatcherOwner()
została zastąpiona metodąsetOnBackPressedDispatcher()
NavHostController
i wymaga teraz wywołania metodysetLifecycleOwner()
przed jej wywołaniem. (aosp/965409) NavHostController
zawiera teraz metodęenableOnBackPressed(boolean)
, która zastępuje klasęNavHostOnBackPressedManager
zwracaną wcześniej przezsetHostOnBackPressedDispatcherOwner()
. (aosp/966091)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że po przejściu do strony za pomocą URI stos wsteczny był nieprawidłowy. (b/132509387)
- Precyzyjne linki obsługiwane automatycznie przez NavController są teraz wywoływane tylko raz. (b/132754763)
Wersja 2.1.0-alpha04
16 maja 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-alpha04
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
NavHostFragment
prawidłowo uwzględniaapp:defaultNavHost
podczas przechwytywania zdarzeń przycisku Wstecz systemu, co naprawia regresję w Navigation2.1.0-alpha03
. b/132077777DialogFragmentNavigator
prawidłowo obsługuje teraz operacjepopBackStack()
inavigateUp()
. b/132576764- Rozwiązaliśmy problem z
IllegalStateException: unknown destination during restore
, który występował podczas wielokrotnego przechodzenia między zagnieżdżonymi wykresami. b/131733658
Wersja 2.1.0-alpha03
7 maja 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-alpha03
Listę zmian w tej wersji znajdziesz tutaj.
Znane problemy
- NavHostFragment nadal przechwytuje systemowy przycisk Wstecz, mimo że używa
app:defaultNavHost="false"
b/132077777
Nowe funkcje
- Możesz teraz tworzyć
<dialog>
miejsca docelowe, w których ponavigate
pojawi sięDialogFragment
.NavHostFragment
domyślnie obsługuje miejsca docelowe w oknie dialogowym. b/80267254 - Oprócz wywoływania funkcji
navigate
z identyfikatorem zasobu lub instancjąNavDirections
możesz teraz poruszać się za pomocą funkcjiUri
, która używa dodanego do miejsca docelowego parametru<deepLink>
, aby przejść do właściwego miejsca docelowego. b/110412864
Zmiany w działaniu
- Domyślne animacje udostępniane przez NavigationUI zostały przyspieszone z 400 ms do 220 ms, aby pasowały do domyślnej prędkości animacji aktywności i fragmentów. b/130055522
Zmiany w interfejsie API
- Metoda
createFragmentNavigator()
klasyNavHostFragment
została wycofana, a jej funkcje przeniesiono do nowej metodyonCreateNavController()
, aby wyraźniej wskazać, że jest to prawidłowy punkt wejścia do dodawania niestandardowych nawigatorów podczas tworzenia podklasyNavHostFragment
. b/122802849 - Do klasy
NavDestination
dodano metodęhasDeepLink()
, która umożliwia sprawdzenie, czy dany elementUri
może być obsługiwany przez to miejsce docelowe lub, w przypadku elementuNavGraph
, przez dowolne miejsce docelowe w grafie nawigacji. b/117437718
Poprawki błędów
- Argumenty domyślne są teraz prawidłowo przekazywane do instancji
OnDestinationChangedListener
. b/130630686 NavHostFragment
przechwytuje teraz zdarzenia systemowe Wstecz za pomocąOnBackPressedDispatcher
, co rozwiązuje problem z nawigacją warunkową w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096- W przypadku Safe Args argument
android:defaultValue=”@null”
z nieokreślonymapp:argType
jest teraz prawidłowo interpretowany jako argumentstring
. b/129629192
Wersja 2.1.0-alpha02
3 kwietnia 2019 r.
Zostanie wycofaneandroidx.navigation:*:2.1.0-alpha02
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
- Użytkownicy języka Kotlin mogą teraz tworzyć obiekty ViewModel, które są ograniczone do poziomu wykresu nawigacji, za pomocą delegata właściwości
by navGraphViewModels()
lub interfejsu APIgetViewModelStore()
dodanego doNavController
. b/111614463
Zmiany w interfejsie API
- Możesz teraz dodać
app:targetPackage
do miejsca docelowego<activity>
, aby ograniczyć dopasowywanie nazwy pakietu. Obsługujeapp:targetPackage="${applicationId}"
, aby ograniczyć pakiet do identyfikatora Twojej aplikacji. b/110975456
Poprawki błędów
- Wartość
android:name
w przypadku miejsc docelowych<activity>
nie jest już analizowana w klasie w momencie inflacji, co zapobiega występowaniu wyjątków ClassNotFoundException podczas korzystania z funkcji dynamicznych. b/124538597
Wersja 2.1.0-alpha01
19 marca 2019 r.
To pierwsza wersja alfa nawigacji 2.1.0
.
Zmiany zależności
- Nawigacja zależy teraz od
androidx.core:core:1.0.1
iandroidx.fragment:fragment:1.1.0-alpha05
. Ta wersja usuwa też zależność odandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
Zmiany w interfejsie API
- Dodano nową
Navigation.createNavigateOnClickListener(NavDirections)
metodę, która jest alternatywą dla tworzenia odbiornika kliknięć za pomocą identyfikatora zasobu i obiektu Bundle. b/127631752 FragmentNavigator.instantiateFragment
zostało wycofane. Domyślna implementacja używa terazFragmentFactory
do tworzenia instancji fragmentów.b/119054429
Poprawki błędów
- Nawigacja nie wysyła już wartości null
Bundle
, gdy do miejsca docelowego są dołączone argumenty. Rozwiązuje to problem podczas korzystania zandroid:defaultValue="@null"
. b/128531879 - Safe Args zależy teraz od KotlinPoet 1.1.0, co rozwiązuje problem z bardzo długimi nazwami pakietów. b/123654948
Wersja 2.0.0
Wersja 2.0.0
14 marca 2019 r.
Nawigacja 2.0.0
jest udostępniana bez zmian w stosunku do wersji 2.0.0-rc02
.
Wersja 2.0.0-rc02
6 marca 2019 r.
Biblioteka Navigation w wersji 2.0.0-rc02 udostępnia nowe artefakty z identyfikatorem grupy androidx.navigation
i zmienia zależności na odpowiedniki AndroidX.
Działanie wersji 2.0.0-rc02 jest identyczne z działaniem wersji 1.0.0-rc02 biblioteki Navigation. Aby zaktualizować wersję 1.0.0-rc02, nie musisz wprowadzać żadnych zmian w kodzie. Wystarczy, że zaktualizujesz zależności, aby były zgodne z nowymi zależnościami.
Aby używać wersji 2.X biblioteki Navigation, projekt musi być zmigrowany do AndroidaX. Stabilna wersja Navigation 1.0 będzie ostatnią, która korzysta z zależności Support Library. Wszystkie przyszłe wersje po 1.0 będą oparte na AndroidX i będą rozwijać stabilną wersję 2.0.
Zależności sprzed AndroidaX
W przypadku wersji biblioteki Navigation sprzed Androida X uwzględnij te zależności:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
W sekcji Safe args dodaj ten classpath w pliku najwyższego poziomu build.gradle
.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Wersja 1.0.0
Wersja 1.0.0
14 marca 2019 r.
Nawigacja 1.0.0
jest udostępniana bez zmian w stosunku do wersji 1.0.0-rc02
.
Wersja 1.0.0-rc02
26 lutego 2019 r.
To druga wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki Navigation. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował ignorowanie
popBackStack()
, jeśli wykres główny nie miał identyfikatora. b/126251695 navigateUp()
prawidłowo obsługuje teraz powrót do zadania aplikacji po wywołaniu po obsłudze precyzyjnego linku bezFLAG_ACTIVITY_NEW_TASK
b/126082008- Rozwiązanie problemu polegającego na tym, że element
ActivityNavigator.applyPopAnimationsToPendingTransition
nie stosował prawidłowej animacji zakończenia wyskakującego okienka.b/126237567 - Kod w języku Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych w języku Kotlin, takich jak
in
ifun
, w nazwie pakietu powiązanej z klasąR
. b/126020455
Wersja 1.0.0-rc01
21 lutego 2019 r.
Jest to wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki Navigation. Ta wersja zawiera jedną poprawkę błędu.
Poprawki błędów
- Rozwiązaliśmy problem podczas korzystania z fragmentów i operacji nawigacji
singleTop
b/124294805
Wersja 1.0.0-beta02
12 lutego 2019 r.
Ta wersja zawiera kilka drobnych ulepszeń i ważne poprawki błędów.
Nowe funkcje
- Możesz teraz używać
0
jakoandroid:defaultValue
w przypadku argumentówreference
. b/124248602
Zmiany w działaniu
- Precyzyjne linki są teraz traktowane priorytetowo w stosunku do precyzyjnych linków z argumentami
.*
lub argumentami pasującymi do wzorca. b/123969518
Poprawki błędów
popBackStack()
inavigateUp
prawidłowo zwracają terazfalse
podczas usuwania ostatniego miejsca docelowego ze stosu wstecznego. Naprawia to regresję wprowadzoną w1.0.0-beta01
. b/123933201- Nawigacja prawidłowo ustawia
ClassLoader
podczas przywracania zapisanego stanu instancji, co pozwala uniknąć problemów podczas używania klas niestandardowych wNavigator
zapisanym stanie lub w argumentach wysyłanych doNavDestination
. b/123893858 - Wygenerowane przez Safe Args klasy NavArgs nie powodują już awarii podczas przywracania argumentu
Parcelable[]
z zapisanego stanu instancji. b/123963545 - Safe Args teraz prawidłowo usuwa niepotrzebne wygenerowane klasy Kotlin. b/124120883
Wersja 1.0.0-beta01
4 lutego 2019 r.
To pierwsza wersja beta interfejsu Navigation API. W przyszłości interfejs Navigation API powinien pozostać stabilny do czasu wydania kolejnej wersji, chyba że wystąpi poważny problem. Ta wersja zawiera poprawki błędów i zmiany w działaniu.
Zmiany w działaniu
- Nawigacja zapewnia teraz, że wartości domyślne argumentów są traktowane identycznie w czasie działania i w przypadku Safe Args. W związku z tym tylko argumenty z atrybutem
app:argType="reference"
mogą mieć wartość domyślną wskazującą inny zasób (np.@color/colorPrimary
). Próba użycia domyślnej wartości odniesienia z innym atrybutemapp:argType
spowoduje wyjątek podczas analizowania kodu XML nawigacji. b/123551990 - Safe Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 3.3.0 aosp/888413
- Safe Args zależy teraz od Kotlin 1.3.20 aosp/888414
Poprawki błędów
- Safe Args można teraz używać w modułach biblioteki i funkcji we wszystkich wersjach wtyczki Androida do obsługi Gradle. b/121304903
- Naprawiono regresję, która powodowała, że pojedyncza operacja
popBackStack()
usuwała z góry stosu wstecznego wszystkie kopie miejsca docelowego, a nie tylko pojedyncze miejsce docelowe. b/123552990 - Rozwiązaliśmy problem, który powodował, że stan
FragmentNavigator
ulegał desynchronizacji ze stanemNavController
, co powodowałoIllegalStateException
podczas próby przywrócenia stosu wstecznego. b/123803044 - Rozwiązaliśmy problem polegający na tym, że strzałka wstecz obsługiwana przez
NavigationUI
nie pojawiała się podczas używania ProGuard z zaciemnianiem. b/123449431 - Kod wygenerowany przez Safe Args prawidłowo obsługuje teraz używanie elementu
app:argType
wskazującego statyczną klasę wewnętrzną w formacie.OuterClass$InnerClass
. b/123736741 - Kod Java wygenerowany przez Safe Args prawidłowo obsługuje teraz działania globalne i głęboko zagnieżdżone miejsca docelowe. b/123347762
Wersja 1.0.0-alpha11
23 stycznia 2019 r.
Jest to wersja poprawki 1.0.0-alpha10
, która rozwiązuje problem z Safe Args.
Poprawki błędów
- Rozwiązuje problem, który powodował, że Safe Args nie importował klasy Directions powiązanej z działaniami globalnymi. b/123307342
Wersja 1.0.0-alpha10
23 stycznia 2019 r.
Znane problemy
- Safe Args nie importuje klasy Directions powiązanej z działaniami globalnymi. b/123307342
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Użytkownicy języka Kotlin mogą teraz używać delegata właściwości
by navArgs()
, aby leniwie pobierać odwołanie do wygenerowanej przez Safe Args klasyNavArgs
wActivity
lubFragment
. b/122603367 - Safe Args umożliwia teraz generowanie kodu w języku Kotlin przez zastosowanie wtyczki
androidx.navigation.safeargs.kotlin
. Kod w języku Kotlin jest tworzony specjalnie dla modułów tylko w języku Kotlin. Używa argumentów domyślnych i klas niemutowalnych zamiast wzorca konstruktora, który jest nadal dostępny za pomocą poprzedniej wtyczkiandroidx.navigation.safeargs
. b/110263087
Zmiany w zachowaniu
- Dopasowane precyzyjne linki są teraz bardziej nastawione na precyzyjny link, który ma najwięcej pasujących argumentów. b/118393029
- Dzwonienie pod numer
setGraph()
na urządzeniuNavController
spowoduje teraz zresetowanie listy wstecznej. b/111450672 - Nieznane precyzyjne linki nie powodują już błędu
IllegalStateException
, ale są ignorowane, co rozwiązuje problemy z zagnieżdżonymi lub wieloma elementamiNavHostFragment
. b/121340440
Zmiany powodujące niezgodność
- Metoda
NavOptions.applyPopAnimationsToPendingTransition()
stosowania animacji wyskakujących do aktywności została przeniesiona doActivityNavigator
. b/122413117 - Safe Args nie duplikuje już identycznych klas w przypadku działań bez argumentów. Typ zwracany w przypadku metod bez argumentów w wygenerowanych klasach NavDirections to teraz
NavDirections
. b/123233147 - Wygenerowane przez Safe Args klasy Directions nie mają już publicznego konstruktora – należy korzystać tylko z wygenerowanych metod statycznych. b/123031660
- Wygenerowane klasy Safe Args
NavDirections
nie mają już publicznego konstruktora – powinny być generowane tylko za pomocą metod statycznych w wygenerowanych klasach Directions.b/122963206 - Zwrócony
Bundle
zNavDirections
getArguments()
jest teraz oznaczony jako@NonNull
, a nie@Nullable
. b/123243957
Poprawki błędów
NavDeepLinkBuilder
teraz prawidłowo obsługuje wiele jednoczesnychPendingIntent
do tego samego miejsca docelowego, używając argumentów przekazywanych przez Ciebie w celu określenia niepowtarzalności. b/120042732NavController
prawidłowo obsługuje teraz operacjepopBackStack()
podczas korzystania z zagnieżdżonego elementuNavHostFragment
lub innych fragmentów podrzędnych z listą wsteczną.b/122770335NavigationUI
teraz prawidłowo ustawia opis treści przycisku Wstecz. b/120395362- Wygenerowane przez Safe Args klasy Directions prawidłowo obsługują teraz działania globalne, które mają ten sam identyfikator co działanie w miejscu docelowym. b/122962504
- Wygenerowane klasy Safe Args
NavDirections
mają teraz prawidłowe równe wartościhashCode()
, gdyequals()
zwraca wartość „true”. b/123043662 FragmentNavigator
teraz wyświetla lepszy komunikat o błędzie, jeśli spróbujesz wykonać niestandardową operacjęFragmentTransactions
naNavHostFragment
FragmentManager
. Zawsze używajgetChildFragmentManager()
. b/112927148
Wersja 1.0.0-alpha09
18 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Zdecydowaliśmy się nie kontynuować rozwoju artefaktu android.arch.navigation:navigation-testing
. Usługa ta okazała się przydatna w testach wewnętrznych NavController
, ale zdecydowanie zalecamy stosowanie alternatywnych strategii testowania, takich jak symulowanie instancji NavController
, aby sprawdzić, czy wykonywane są prawidłowe wywołania navigate()
. To podejście zostało szczegółowo omówione w prezentacji na temat pojedynczego działania na konferencji AndroidDevSummit 2018. Będziemy pracować nad dodatkową dokumentacją dotyczącą testowania za pomocą Navigation.
Nowe funkcje
MenuItem
zmenuCategory="secondary"
nie będą już wyskakiwać z powrotem, gdy są używane z metodamiNavigationUI
. b/120104424AppBarConfiguration
umożliwia teraz ustawienie instancji rezerwowejOnNavigateUpListener
, która będzie wywoływana, gdynavController.navigateUp()
zwróci wartośćfalse
. b/79993862 b/120690961
Zmiany powodujące niezgodność
- Gdy używasz
<argument>
zargType="reference"
, Navigation nie analizuje już odwołania, tylko podaje sam identyfikator zasobu. b/111736515 onNavDestinationSelected()
domyślnie wraca teraz do miejsca docelowego na początku wykresu nawigacji, co sprawia, że jest zgodny z metodamisetup
. DodajmenuCategory="secondary"
doMenuItem
, aby uniknąć wycofywania z listy wstecznej.aosp/852869- Metody
fromBundle()
wygenerowanych klasArgs
przyjmują teraz wartość niezerowąBundle
zamiast wartości dopuszczającej wartość nullBundle
.aosp/845616
Poprawki błędów
- Argumenty są teraz prawidłowo analizowane z precyzyjnych linków jako prawidłowe
argType
zamiast zawsze jako ciągi znaków b/110273284 - Nawigacja prawidłowo eksportuje teraz swoje zasoby publiczne.b/121059552
- Safe Args jest teraz zgodny z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 i nowszej.b/119662045
Wersja 1.0.0-alpha08
6 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Etykiety miejsc docelowych używane z metodami
NavigationUI
będą teraz automatycznie zastępować wystąpienia{argName}
wandroid:label
prawidłowym argumentem. b/80267266 - Nawigacja zależy teraz od biblioteki pomocy w wersji 28.0.0 b/120293333
Zmiany powodujące niezgodność
- Nazwa
OnNavigatedListener
została zmieniona naOnDestinationChangedListener
b/118670572 - Funkcja
OnDestinationChangedListener
przekazuje teraz teżBundle
argumentów aosp/837142 - Atrybuty
app:clearTask
iapp:launchDocument
oraz powiązane z nimi metody zostały usunięte. Użyjapp:popUpTo
z głównym węzłem wykresu, aby usunąć wszystkie miejsca docelowe ze stosu wstecznego. b/119628354 ActivityNavigator.Extras
używa teraz wzorcaBuilder
i umożliwia ustawianie dowolnych flagIntent.FLAG_ACTIVITY_
.aosp/828140- Nazwa
NavController.onHandleDeepLink
została zmieniona nahandleDeepLink
aosp/836063 - Wiele klas i metod, które nie są przeznaczone do tworzenia podklas, np.
NavOptions
,NavInflater
,NavDeepLinkBuilder
iAppBarConfiguration
, zostało zmienionych nafinal
.aosp/835681 - Usunięto nieużywaną metodę
NavHostFragment.setGraph()
. aosp/835684 - Nieużywana metoda
NavigationUI.navigateUp(DrawerLayout, NavController)
została usunięta. aosp/835684 - Tworzenie fragmentów zostało przeniesione do
FragmentNavigator
, co ułatwia delegowanie tworzenia fragmentów doFragmentFactory
. b/119054429 - Konstruktor
NavGraphNavigator
nie przyjmuje już argumentuContext
aosp/835340 - NavigatorProvider jest teraz klasą, a nie interfejsem. Funkcja
NavigatorProvider
zwracana przezgetNavigatorProvider()
nie zmieniła swojego działania. aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń pod numernavigate()
na urządzeniuNavigator
zamiast tego. aosp/830663- Znaczne przekształcenie funkcji
Navigator
, które eliminuje potrzebę używania funkcjiOnNavigatorNavigatedListener
. Zamiast tego funkcjanavigate
zwracaNavDestination
, do którego nastąpiło przejście. - Instancje
Navigator
nie mogą już wysyłać wydarzeń typu pop-up doNavController
. Rozważ użycieOnBackPressedCallback
, aby przechwytywać naciśnięcia przycisku Wstecz i wywoływaćnavController.popBackStack()
. aosp/833716
Poprawki błędów
popUpTo
działa teraz spójnie, gdy miejscem docelowym jest element<navigation>
. b/116831650- Naprawiliśmy kilka błędów, które powodowały
IllegalArgumentException
podczas używania zagnieżdżonych wykresów b/118713731 b/113611083 b/113346925 b/113305559 - Atrybut
dataPattern
miejsc docelowych<activity>
będzie teraz wypełniać argumenty z argumentów innych niż ciągi znaków, wywołująctoString()
b/120161365
Safe Args
- Safe Args obsługuje obiekty Serializable, w tym wartości Enum. Typy wyliczeniowe
mogą ustawiać wartość domyślną za pomocą literału wyliczeniowego bez nazwy klasy
(np.
app:defaultValue="READ"
) b/111316353 - Safe Args obsługuje tablice wszystkich obsługiwanych typów b/111487504
- Safe Args ignoruje teraz podfoldery katalogów zasobów b/117893516
- Safe Args dodaje
@Override
adnotacje w odpowiednich miejscach b/117145301
Wersja 1.0.0-alpha07
29 października 2018 r.
Nowe funkcje
- Nowa klasa AppBarConfiguration umożliwia dostosowywanie miejsc docelowych, które są uznawane za najwyższego poziomu. Szczegółowe informacje znajdziesz w zaktualizowanej dokumentacji. b/117333663
- Teraz możesz przekazywać argumenty do miejsca docelowego na początku wykresu.b/110300470
- Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, myślnikami i znakami plus. b/112806402
Zmiany powodujące niezgodność
- Moduł
navigation-testing-ktx
został włączony do modułunavigation-testing artifact
i nie będzie już publikowany. - Artefakt
navigation-testing
ma teraz zależność od standardowej biblioteki Kotlin. Interfejs API został zmieniony, aby był bardziej zgodny z konwencjami języka Kotlin, ale nadal możesz go używać w przypadku testów napisanych w języku Java. - Wykresy nawigacji zarejestrowane w manifeście metadanych nie są już obsługiwane. b/118355937
- Działań nie można już dołączać do miejsc docelowych <activity>. aosp/785539
Poprawki błędów
- Precyzyjne linki prawidłowo analizują teraz parametry zapytania. b/110057514
- Miejsca docelowe aktywności prawidłowo stosują teraz wszystkie animacje wejść i wyjść. b/117145284
- Naprawiliśmy awarię, która występuje po zmianach konfiguracji podczas korzystania z niestandardowych nawigatorów. b/110763345
Safe Args
- Argumenty bezpieczne mają teraz stałą zależność od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
- Można teraz generować wskazówki dojazdu dla klas wewnętrznych. b/117407555
- Rozwiązanie problemu z generowaniem wskazówek dojazdu do wykresu <include>. b/116542123
Wersja 1.0.0-alpha06
20 września 2018 r.
Nowe funkcje
- Przejścia elementów wspólnych w przypadku miejsc docelowych fragmentów i aktywności są teraz obsługiwane b/79665225. Więcej informacji znajdziesz w artykule Implementowanie nawigacji za pomocą komponentu architektury nawigacji.
- Wybranie elementu w
NavigationView
spowoduje zamknięcie arkusza u dołu, który go zawiera b/112158843
Zmiany w interfejsie API
- Zmiana powodująca niezgodność: metoda Navigator
navigate()
przyjmuje teraz parametrNavigator.Extras
. - Metoda
getGraph()
w klasie NavController to terazNonNull
b/112243286
Poprawki błędów
NavigationUI.setupWithNavController()
nie powoduje już wycieku wyświetleń, jeśli jest używany z wyświetleniami z poszczególnych miejsc docelowych b/111961977- Funkcja Navigator
onSaveState()
jest teraz wywoływana tylko raz b/112627079
Safe Args
- Klasy kierunków miejsca docelowego nawigacji rozszerzają teraz klasę kierunków elementu nadrzędnego, jeśli taka klasa istnieje b/79871405
- Klasy Directions i Args mają teraz przydatną implementację
toString()
b/111843389
Wersja 1.0.0-alpha05
10 sierpnia 2018 r.
Poprawki błędów
- Naprawiliśmy błąd, który powodował nieprawidłowe działanie listy wstecznej. b/111907708
- Naprawiono błąd w elemencie
equals()
w klasach Generated Args. b/111450897 - Naprawianie błędu kompilacji w Safe Args. b/109409713
- Poprawianie konwersji identyfikatorów zasobów na nazwy w języku Java b/111602491
- Rozwiązywanie problemów z komunikatami o błędach dotyczącymi możliwości przyjmowania wartości null w pluginie Safe Args.
- Dodaj brakujące adnotacje dotyczące możliwości przyjmowania wartości null.
Wersja 1.0.0-alpha04
19 lipca 2018 r.
Nawigacja 1.0.0-alpha04
i powiązana z nią wtyczka Gradle Safe Args zawierają szereg zmian w interfejsie API, zmian w działaniu i poprawek błędów.
Zmiany w interfejsie API i zachowaniu
- NavHostFragment zawsze ustawia bieżący fragment jako główny fragment nawigacji, dzięki czemu menedżerowie fragmentów podrzędnych są usuwani przed usunięciem zewnętrznego NavControllera. b/111345778
Safe Args
- Zmiana powodująca niezgodność: nazwa
app:type
została zmieniona naapp:argType
, aby uniknąć konfliktów z innymi bibliotekami, takimi jak ConstraintLayout 2.0.0-alpha1 b/111110548 - Komunikaty o błędach z Safe Args są teraz klikalne b/111534438
- Klasy Args potwierdzają teraz, że atrybuty
NonNull
nie są w rzeczywistości wartością null b/111451769 - Dodano dodatkowe adnotacje
NonNull
do klas NavDirections i Args b/111455455 b/111455456
Poprawki błędów
- Rozwiązaliśmy problem z systemowym przyciskiem Wstecz po precyzyjnym linkowaniu do miejsca docelowego fragmentu b/111515685
Wersja 1.0.0-alpha03
12 lipca 2018 r.
Nawigacja 1.0.0-alpha03
i powiązana z nią wtyczka Gradle Safe Args zawierają szereg zmian w interfejsie API, zmian w działaniu i poprawek błędów.
Zmiany w interfejsie API i zachowaniu
- Dodano metodę NavigationUI.setupWithNavController dla paska narzędzi b/109868820
- Dodano metodę NavigationUI.setupWithNavController dla CollapsingToolbarLayout b/110887183
- Metoda popBackStack() zwraca teraz wartość „fałsz”, gdy stos wsteczny jest pusty lub gdy podany identyfikator miejsca docelowego nie znajduje się w stosie wstecznym b/110893637
- FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu przez FragmentManager, co pozwala uniknąć wyjątków „Can not perform this action after onSaveInstanceState” b/110987825
Safe Args
- Zmiana powodująca niezgodność: znaki alfanumeryczne w nazwach działań i argumentów zostaną zastąpione w nazwach odpowiednich metod NavDirections przez zapis camel case.
- Na przykład
DemoController.index
zmieni się wsetDemoControllerIndex
b/79995048 - Na przykład
action_show_settings
zmieni się wactionShowSettings
b/79642240
- Na przykład
- Zmiana powodująca niezgodność: argumenty są teraz domyślnie uznawane za niepuste. Aby zezwolić na wartości null w argumentach typu string i parcelable, dodaj
app:nullable="true"
b/79642307 - Możesz teraz używać
app:type="long"
z wartościami domyślnymi w formacie „123L” b/79563966 - Argumenty Parcelable są teraz obsługiwane przy użyciu pełnej i jednoznacznej nazwy klasy dla
app:type
. Jedyną obsługiwaną wartością domyślną jest"@null"
b/79563966 - Klasy argumentów implementują teraz interfejsy
equals()
ihashCode()
. b/79642246 - Wtyczkę Safe Args można teraz stosować w projektach bibliotek b/80036553
- Wtyczkę Safe Args można teraz stosować w projektach funkcji b/110011752
Poprawki błędów
- Rozwiązano problemy z nawigacją podczas metod cyklu życia fragmentu b/109916080
- Rozwiązaliśmy problemy podczas wielokrotnego przechodzenia przez zagnieżdżone wykresy b/110178671
- Rozwiązaliśmy problemy podczas korzystania z
setPopUpTo
z pierwszym miejscem docelowym na wykresie b/109909461 - Rozwiązaliśmy problem polegający na tym, że wszystkie wartości
app:defaultValue
były przekazywane jako ciągi tekstowe b/110710788 - Narzędzie aapt2 dołączone do wtyczki Androida do obsługi Gradle w wersji 3.2 Beta 01 dodaje teraz reguły zachowywania dla każdego atrybutu
android:name
w plikach XML nawigacji b/79874119 - Usunęliśmy wyciek pamięci podczas zastępowania domyślnego elementu FragmentNavigator b/110900142
Wersja 1.0.0-alpha02
7 czerwca 2018 r.
Zmiany w zachowaniu
FragmentNavigator
korzysta teraz zsetReorderingAllowed(true)
. b/109826220Nawigacja dekoduje teraz argumenty z adresów URL precyzyjnych linków. b/79982454
Poprawki błędów
Naprawiono
IllegalStateException
podczas wywoływania nawigacji z metod cyklu życia fragmentu. b/79632233Nawigacja zależy teraz od biblioteki pomocy w wersji 27.1.1, co eliminuje migotanie podczas korzystania z animacji. b/80160903
Naprawiono
IllegalArgumentException
podczas używania domyślnego hosta nawigacji („defaultNavHost="true"”) jako fragmentu podrzędnego. b/79656847Naprawiono
StackOverflowError
podczas korzystania z klasy NavDeepLinkBuilder. b/109653065Naprawiliśmy
IllegalArgumentException
podczas powrotu do zagnieżdżonego wykresu. b/80453447Rozwiązaliśmy problem z nakładającymi się fragmentami podczas używania
launchSingleTop
. b/79407969Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla zagnieżdżonych wykresów. b/79734195
Biblioteka NavigationUI będzie teraz wyróżniać prawidłowy element, gdy jako
MenuItem
używany jest zagnieżdżony wykres. b/109675998
Zmiany w interfejsie API
Atrybut
clearTask
dla działań i powiązany z nim interfejs API wNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
dla działań i powiązane z nim interfejsy API wNavOptions
zostały wycofane. b/109806636
Wersja 1.0.0-alpha01
8 maja 2018 r.
Nawigacja to platforma do tworzenia nawigacji w aplikacji. Ta pierwsza wersja to 1.0.0-alpha01
.