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 | 
|---|---|---|---|---|
| 24 września 2025 r. | 2.9.5 | - | - | - | 
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.5" // 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.5" // 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.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" 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 nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.9
Wersja 2.9.5
24 września 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.5 Wersja 2.9.5 zawiera te zmiany.
Poprawki błędów
- Bezpieczne argumenty nawigacji mogą teraz obsługiwać wbudowany język Kotlin w AGP 9.0. (I1d9d76)
Aktualizacja zależności
- Wtyczka Navigation Safe Args jest teraz zależna od wtyczki Androida do obsługi Gradle w wersji 8.4.2. (b/431847270, I5932a)
Wersja 2.9.4
10 września 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.4 Wersja 2.9.4 zawiera te zmiany.
Poprawki błędów
- Zapobieganie awarii, gdy zdarzenie przewidywanego powrotu zostanie dostarczone w środku klatki po wyłączeniu modułu obsługi w trakcie przejścia NavHost. (I5667c, b/384186542)
Wersja 2.9.3
30 lipca 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.3 Wersja 2.9.3 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd w NavController, który powodowałConcurrentModificationExceptionpodczas korzystania zOnDestinationChangedListeners. (If7406, b/417784831)
- Rozwiązano błąd podczas używania navigate(uri, navOptions,navigationExtras), który powodował ignorowanie dodatków. (I67fb7, b/430336813)
Wersja 2.9.2
16 lipca 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.2 Wersja 2.9.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że wpis nie był wznawiany po zamknięciu okna nad nim (Idb20e, b/418746335).
- Rozwiązaliśmy problem z błędem MissingFieldException, który występował podczas testowaniaSavedStateHandlez trasami bezpiecznymi pod względem typu przy użyciu niestandardowegoNavTypes. (I2f843, b/421002511)
Wersja 2.9.1
2 lipca 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.1 Wersja 2.9.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że obiekty NavEntriesutworzone 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.
Publikacja androidx.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 miejsc docelowych. Korzystając z tego interfejsu, możesz na przykładRESUMEDwiele miejsc docelowych jednocześnie.
Compose Kotlin Multiplatform
- Nawigacja oferuje teraz nową, wspólną funkcję NavController.handleDeepLink(), która przyjmujeNavDeepLinkRequestzamiastIntent. Dzięki temu platformy inne niż Android będą mogły 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 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 były wcześniej dostępne tylko za pomocą metod reified, czylicomposable<YourScreen>mają teraz wersje niekonkretne, 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.
Publikacja androidx.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ępniamy teraz szablony dla różnych platform.(I2877d)
Wersja 2.9.0-beta01
9 kwietnia 2025 r.
Publikacja androidx.navigation:navigation-*:2.9.0-beta01 Wersja 2.9.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Wspólny interfejs API parseStringAsNavUrizostał 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.
Publikacja androidx.navigation:navigation-*:2.9.0-alpha09 Wersja 2.9.0-alpha09 zawiera te zmiany.
Nowe funkcje
- Moduł navigation-testingjest teraz obsługiwany na komputerach, w systemach Linux, macOS i iOS, a także na urządzeniach z Androidem. (I2b770, b/398265336)
- NavTypejest 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.
Publikacja androidx.navigation:navigation-*:2.9.0-alpha08 Wersja 2.9.0-alpha08 zawiera te zmiany.
Poprawki błędów
- Nawigacja2.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.
Publikacja androidx.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 saveStatez 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: NavDeepLinknaprawiono 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. Dopasowywanie nie jest już dozwolone, jeśli pasują tylko 1 lub 2 pola. (I3b029, b/395712033)
- Od wersji Navigation 2.8.8: naprawiono błąd, który powodował, że 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.
Publikacja androidx.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 Nawigacji2.8.7: bezpieczne argumenty nawigacji obsługują teraz miejsca docelowe, które można łączyć. (I35320, b/362791955)
Wersja 2.9.0-alpha05
29 stycznia 2025 r.
Publikacja androidx.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 Nawigacja2.8.6:NavDestinationetykiety podane w formacie XML będą analizowane za pomocą funkcjiNavType.get, aby zapewnić zgodność z niestandardową logikąNavType. (I7ec2f, b/388100796)
- Z Nawigacji2.8.6: podczas nawigacji do aktywności za pomocądataPatternusługaActivityNavigatorbędzie teraz próbować zakodować wartość argumentu za pomocą argumentuNavType. (I16376, b/383616432)
- W Nawigacji2.8.5rozwią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.
Publikacja androidx.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 były wcześniej 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.setStartDestinationspecyficzne 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 Nawigacji2.8.5rozwiązaliśmy problem, w wyniku którego funkcjaNavHostmogła zgłaszać wyjątek w funkcjiPredictiveBackHandler, jeśli stos wsteczny został zmniejszony do 1 pozycji, a w tej samej ramce wywołano systemowe cofnięcie. (I1a429, b/375343407)
- W sekcji Nawigacja2.8.5: naprawiono błądNavDestinationNullPointerExceptionpodczas aktualizowaniastartDestinationwykresu. (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 niestandardowegoNavType. Dziękujemy, Csaba Kozák! (GH-725, b/375559962)
Wersja 2.9.0-alpha03
13 listopada 2024 r.
Publikacja androidx.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ć, gdyLifecycleObserverdołączony doNavBackStackEntrypowoduje zmianę w stosie wstecznym, gdy hostLifecycleOwner, np. zawierająca go aktywność lub fragment, zmienia stan cyklu życia. (Ia9494)
Wersja 2.9.0-alpha02
30 października 2024 r.
Publikacja androidx.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.
Publikacja androidx.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 miejsc docelowych. Korzystając z tego interfejsu, możesz na przykładRESUMEDwiele miejsc docelowych jednocześnie. (Id5559)
- W sekcji Nawigacja 2.8.3dodaliśmy nowe testy lint dla modułównavigation-common,navigation-runtimeinavigation-compose, aby ułatwić identyfikowanie tras bezpiecznych pod względem typów, które nie są prawidłowo oznaczone adnotacją@Serializable. Ta kontrola jest stosowana do wszystkich funkcji rozszerzeńNavGraphBuilderiNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
- W sekcji Nawigacja2.8.3dodaliśmy nowe testy lint dla modułównavigation-common,navigation-runtimeinavigation-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. Ta kontrola jest stosowana do wszystkich funkcji rozszerzeńNavGraphBuilderiNavDeepLinkBuilder. (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 checkpodczas 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.
Publikacja androidx.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.
Publikacja androidx.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)
- Poprawiliśmy 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. Dopasowywanie nie jest już dozwolone, jeśli pasują tylko 1 lub 2 pola. (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.
Publikacja androidx.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.
Publikacja androidx.navigation:navigation-*:2.8.6 Wersja 2.8.6 zawiera te zmiany.
Poprawki błędów
- Etykiety NavDestinationdostarczane w formacie 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ą dataPatternfunkcjaActivityNavigatorbędzie teraz próbować zakodować wartość argumentu za pomocąNavTypeargumentu. (I1a71d, b/383616432)
Wersja 2.8.5
11 grudnia 2024 r.
Publikacja androidx.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 NavHostmogł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 NavDestinationNullPointerException, który występował podczas aktualizowaniastartDestinationwykresu. (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ć, gdyLifecycleObserverdołączony doNavBackStackEntrypowoduje zmianę w stosie wstecznym, 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.
Publikacja androidx.navigation:navigation-*:2.8.4 Wersja 2.8.4 zawiera te zmiany.
Nowe funkcje
- Z 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
- Nawigacja2.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.
Publikacja androidx.navigation:navigation-*:2.8.3 Wersja 2.8.3 zawiera te zmiany.
Nowe funkcje
- Dodano nowe testy lint dla modułów navigation-common,navigation-runtimeinavigation-compose, aby pomóc w identyfikowaniu bezpiecznych pod względem typów tras, które nie są prawidłowo oznaczone adnotacją@Serializable. Ta kontrola jest stosowana do wszystkich funkcji rozszerzeńNavGraphBuilderiNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
- Dodano nowe testy lint dla modułów navigation-common,navigation-runtimeinavigation-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. Ta kontrola jest stosowana do wszystkich funkcji rozszerzeńNavGraphBuilderiNavDeepLinkBuilder. (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 checkpodczas 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.
Publikacja androidx.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.
Publikacja androidx.navigation:navigation-*:2.8.1 Wersja 2.8.1 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy nową regułę lint, która zapewnia użycie funkcji popBackStack, która przyjmuje typ klasy reifikowanej podczas próbypopBackStackza pomocą interfejsów API bezpiecznych pod względem typów. (Ief161, b/358095343)
Poprawki błędów
- Nawigacja wymaga teraz, aby trasa przekazywana do NavGraphwstartDestinationzawierał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)
- Nie można już używać precyzyjnych linków do NavDestination, z wyjątkiem precyzyjnych linków, 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. 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 Kotlina 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.
Publikacja androidx.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
- Nawigacja zapewnia teraz bezpieczeństwo typów w przypadku języka Kotlin DSL (używanego przez Navigation Compose) za pomocą Kotlin Serialization, co umożliwia definiowanie miejsc docelowych na wykresie nawigacji za pomocą obiektów i klas danych bezpiecznych pod względem typów:
    // 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 Compose Predictive Back
- Biblioteka Navigation Compose obsługuje teraz predykcyjne cofanie w aplikacji za pomocą nowych interfejsów API SeekableTransitionStatez biblioteki compose-animation. Dzięki temu możesz użyć gestu cofnięcia, aby zobaczyć poprzednie miejsce docelowe z niestandardową animacją przejścia, zanim zdecydujesz się zatwierdzić transakcję za pomocą ukończonego gestu lub ją anulować.
Kompozycja Navigation Fragment
- Dodaliśmy nowy artefakt navigation-fragment-compose, który zawiera alternatywęComposableNavHostFragmentdlaNavHostFragment, umożliwiającą dodawanie miejsc docelowych z możliwością komponowania do plików XML nawigacji. Każdecomposablemiejsce docelowe musi być wyrażone jako metoda najwyższego poziomu bez argumentów@Composable, której pełna nazwa jest używana jako atrybutandroid:namew 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,BoolArrayTypeiStringArrayType) dziedziczą teraz z tej nowej klasy.
- NavTypema 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.
Publikacja androidx.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.
Publikacja androidx.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 element NavType.EnumType. Oznacza to, że typyEnumnie wymagają już niestandardowychNavType. Pamiętaj, żeEnumSerialNamemusi 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- startDestinationbędzie teraz używać domyślnych wartości argumentów, jeśli trasa- startDestinationprzekazana do- NavGraphjest dokładnie równa- startDestination.route. (I13762, b/354046047)
Wersja 2.8.0-beta06
24 lipca 2024 r.
Publikacja androidx.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 WrongStartDestinationTypenie 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.
Publikacja androidx.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 elementyNavGraphsmiały tę samąstartDestinationtrasę. (I17b94, b/294408596)
Wersja 2.8.0-beta04
26 czerwca 2024 r.
Publikacja androidx.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)
- Ulepszono 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 testu SavedStateHandleFactorymożna teraz używać w testach innych niż testy na Androida, ale wymaga to obsługi przez Robolectric analizowania argumentów za pomocą pakietów. (I76cdc, b/340966212)
- Rozwiązaliśmy problem z awarią podczas przywracania stanu po wznowieniu aplikacji po zakończeniu procesu przy użyciu bezpiecznej pod względem typów nawigacji w Compose. (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 miejsce docelowe po powrocie będzie się prawidłowo animować, a nie wskakiwać na swoje miejsce po szybkim przesunięciu. (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.
Publikacja androidx.navigation:navigation-*:2.8.0-beta03 Wersja 2.8.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- CollectionNavTypema 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.serializeAsValueiserializeAsValues, 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 argumentemCollectionNavTypeo wartości null. Podczas nawigacji z wartością nullCollectionNavTypeargument 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.
Publikacja androidx.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.toRoutez niestandardowymNavTypedopuszczają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 wpływ również 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.
Publikacja androidx.navigation:navigation-*:2.8.0-beta01 Wersja 2.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- SavedStateHandle.toRoute()przyjmuje teraz parametr- typeMapdla niestandardowych typów argumentów. (Ie39fb, b/339026523)
- Dodano interfejs API testowy do navigation-testing, aby utworzyćSavedStateHandlez 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.
Publikacja androidx.navigation:navigation-*:2.8.0-alpha08 Wersja 2.8.0-alpha08 zawiera te zmiany.
Safe Args w Navigation Compose
- 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 zostały zakończone, a 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-composeudostępnia terazLocalFragmentlokalną kompozycję dla funkcji kompozycyjnych w ramachComposableFragment. (If35e5)
- NavTypema 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.
Publikacja androidx.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ę- ComposableNavHostFragmentdla- NavHostFragment, umożliwiającą dodawanie miejsc docelowych- composabledo plików XML nawigacji. Każde- composablemiejsce docelowe musi być wyrażone jako metoda najwyższego poziomu bez argumentów- @Composable, której pełna nazwa jest używana jako atrybut- android:namew 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.
Publikacja androidx.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
- NavHostużywa teraz- Alignment.TopStartjako domyślnego argumentu contentAlignment. Dzięki temu jest ona zgodna z domyślnym ustawieniem dla- AnimatedContenti eliminuje niektóre przypadki nieoczekiwanej zmiany skali od środka. (I09e72, b/330111602)
- Podczas wykonywania gestu przewidywanego powrotu w trakcie korzystania z Navigation Compose ikona NavHostbę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.
Publikacja androidx.navigation:navigation-*:2.8.0-alpha05 Wersja 2.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Teraz możesz przekazywać argumenty do NavGraphstartDestinationbezpośrednio wstartDestinationbez korzystania zdefaultValue. Dotyczy to również zagnieżdżonych elementówNavGraphstartDestinations. (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,BoolArrayTypeiStringArrayType) są teraz typuCollectionNavType(Idcf79, b/188693139).
- NavTypeudostępnia teraz nowy otwarty- valueEqualsinterfejs API, 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 przypadkuNavTypesopartych na ciągach znaków. Rozwiązuje to problem, w którym taka wartość była uznawana za nieprawidłową (lub brak wartości) we wszystkich typach. (I18302, b/327274038)
- Funkcje NavControllerobsługujące trasy, takie jaknavigatelubpopBackStack, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicyNavTypes. (Iea805, b/327229511)
Wersja 2.8.0-alpha04
6 marca 2024 roku
Publikacja androidx.navigation:navigation-*:2.8.0-alpha04 Wersja 2.8.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Możesz teraz określać SizeTranformdla przejść w Navigation Compose, definiując je w ramach inicjowania funkcjicomposablelubnavigation. (I91062, b/296912651)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że NavHostw 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.
Publikacja androidx.navigation:navigation-*:2.8.0-alpha03 Wersja 2.8.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- NavBackStackEntry.savedStateHandlejest 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ązanie problemu w komponencie Navigation, który powodował, że NavGraphViewModele byłyDESTROYEDzbyt wcześnie, ponieważ powiązany z nimi wpisViewModelnie 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.
Publikacja androidx.navigation:navigation-*:2.8.0-alpha02 Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Biblioteka Navigation Compose obsługuje teraz predykcyjne cofanie w aplikacji za pomocą nowych interfejsów API SeekableTransitionStatez biblioteki compose-animation. Dzięki temu możesz użyć gestu cofnięcia, aby zobaczyć poprzednie miejsce docelowe z niestandardową animacją przejścia, zanim zdecydujesz się zatwierdzić transakcję za pomocą ukończonego gestu lub ją anulować. (I8b8e9)
Wersja 2.8.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.navigation:navigation-*:2.8.0-alpha01 Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto wyciek BackStackState, w którym wiele wywołańsaveStatew 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 znaków nie były prawidłowo wyświetlane podczas używania funkcji pomocniczych NavigationUIdo 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 NavigationUIdo wypełniania tytułu pasków aplikacji.
Wersja 2.7.7
Wersja 2.7.7
7 lutego 2024 r.
Publikacja androidx.navigation:navigation-*:2.7.7 Wersja 2.7.7 zawiera te zatwierdzenia.
Poprawki błędów
- Przeniesiono z Navigation 2.8.0-alpha01: naprawiono wyciekBackStackState, w którym wiele wywołańsaveState()w jednymNavBackStackEntrypowodowało zapisywanie wielu stanów, ale można było przywrócić tylko pierwszy zapisany stan. (I598b0, b/309559751)
- Przeniesiono z Nawigacji2.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 pomocniczychNavigationUIdo 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 NavigationUIdo wypełniania tytułu pasków aplikacji.
Wersja 2.7.6
Wersja 2.7.6
13 grudnia 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.6 Wersja 2.7.6 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja NavGraphequals()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
Publikacja androidx.navigation:navigation-*:2.7.5 Wersja 2.7.5 zawiera te zatwierdzenia.
Ulepszenia wydajności
- Znacznie zwiększyliśmy wydajność (zarówno pod względem czasu, jak i liczby przydziałów) porównywania 2 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)
- NavHostbę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 setGraphbył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 szybkiej kolejności, 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 ViewModelzostanie prawidłowo wyczyszczone, jeśli polesaveStatema wartość false. (Idf242, b/298164648)
- Naprawiono problem, w którym NavControllermogł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łaniemsetGraphtylko 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 ViewModelzagnieżdżonych fragmentów nie były czyszczone podczas wywoływaniaclearBackStack.
Wersja 2.7.4
Wersja 2.7.4
4 października 2023 roku
Publikacja androidx.navigation:navigation-*:2.7.4 Wersja 2.7.4 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę znaku popUpTo, aby można było 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, która występuje, gdy przerwanie nawigacji inną nawigacją za pomocąpopUpTopowoduje awarięFragmentNavigator. (I3c848, b/301887045)
- Rozwiązaliśmy problem polegający 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)
- DialogFragmentbędzie teraz prawidłowo przechodzić do stanu- RESUMEDpo 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.
Publikacja androidx.navigation:navigation-*:2.7.3 Wersja 2.7.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem w nawigacji z fragmentami, który powodował, że lista visibleEntrieszawierała nieprawidłowe wpisy. (I5caa9, b/288520638)
- Rozwiązaliśmy problem, który powodował, że miejsce docelowe pływającego okna (np.Dialogs,Bottomsheetsitp.) 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.
Publikacja androidx.navigation:navigation-*:2.7.2 Wersja 2.7.2 zawiera te zatwierdzenia.
Poprawki błędów
- Nawigacja zależy teraz od Cyklu życia2.6.2, co rozwiązuje problem z interakcją międzyrememberSaveableaNavHostw Nawigacji Compose, która powodowała, że stanrememberSaveablemiejsc docelowych i wszystkich instancjiViewModelnależących doSavedStateHandlenie 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 CREATEDcyklu ż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 STARTEDzamiast 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
- Biblioteka Navigation Compose zależy teraz od biblioteki Compose w wersji 1.5.1.
Wersja 2.7.1
Wersja 2.7.1
23 sierpnia 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.1 Wersja 2.7.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem w nawigacji z Compose, który powodował, że podczas korzystania z Scaffoldmógł pojawić się błąd związany z próbą uzyskania dostępu doLifecycle.State.DESTROYEDViewModel. (I1dc11, b/268422136)
Wersja 2.7.0
Wersja 2.7.0
9 sierpnia 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.0 Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.6.0
Animacje z Accompanist
Teraz, gdy AnimatedContent jest stabilny, mogliśmy przenieść kod z animacji nawigacji w bibliotece Accompanist z powrotem do Navigation Compose.
Oznacza to, że cała obsługa ustawiania niestandardowych przejść, która istniała w AnimatedNavHost, jest bezpośrednio obsługiwana 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 1.5.0Compose, a nie od1.1.0.
Wersja 2.7.0-rc01
26 lipca 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.0-rc01 Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że lambdy EnterTransitioniExitTransitionutworzone w ramach funkcjiNavHostmogły pozostać w pamięci nawet po usunięciu funkcjiNavHostz kompozycji. (I893d0)
Znane problemy
- W nawigacji w wersji 2.6.x występuje problem, który podczas nawigacji z użyciem popUpTo może powodować błąd IllegalArgumentException. 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.
Publikacja androidx.navigation:navigation-*:2.7.0-beta02 Wersja 2.7.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Biblioteka Navigation Compose ma teraz odpowiednią kolejność osi Z w przypadku niestandardowych przejść, które korzystają z opcji nawigacji popUpTo.(/Ib1c3a, b/285153947)
Wersja 2.7.0-beta01
7 czerwca 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.0-beta01 Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- NavHostw Navigation Compose prawidłowo przechwytuje wywołania systemowe, nawet po tym, jak- Activityzostało- STOPPEDi- RESUMED. (Icb6de, b/279118447)
Wersja 2.7.0-alpha01
24 maja 2023 r.
Publikacja androidx.navigation:navigation-*:2.7.0-alpha01 Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.
Animacje z Accompanist
Teraz, gdy AnimatedContent jest stabilny, mogliśmy przenieść kod z animacji nawigacji w bibliotece Accompanist z powrotem do Navigation Compose.
Oznacza to, że cała obsługa ustawiania niestandardowych przejść, która istniała w AnimatedNavHost, jest bezpośrednio obsługiwana 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
- Nawigacja2.6.0-rc02: rozwiązaliśmy problem z nawigacją we fragmentach, który polegał na tym, że nawigowanie za pomocąpopUpToi usuwanie fragmentu ze stosu wstecznego bez ponownego tworzenia jego widoku powodowało zatrzymanie działania systemowego przycisku Wstecz. (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.
Publikacja androidx.navigation:navigation-*:2.6.0 Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany w nawigacji od wersji 2.5.0
- NavBackStackEntry- argumentsi- argumentsprzekazywane do- OnDestinationChangedListenersą 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 do- argumentsani innych instancji- OnDestinationChangedListener.
- NavDeepLinkobsł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.- NavTypezawiera teraz też metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości.
- Niestandardowe podklasy NavTypemogą teraz zastępowaćserializeAsValue, aby serializować wartość do postaci ciągu znaków, co umożliwia serializację i deserializację (za pomocąparseValue) w całości w klasieNavType.StringTypezastępuje teraz tę metodę, aby wywoływaćUri.encodena podanymString.
Ważne zmiany w Navigation Compose od wersji 2.5.0
- Podczas wyświetlania podglądu funkcji kompozycyjnej za pomocą NavHostdomyślnie będzie teraz wyświetlany elementstartDestinationz elementu NavGraph.
- NavController.popBackStack(route),- NavController.getBackStackEntry(route)i- NavController.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 NavDeepLinkza pomocąnavDeepLinkKotlin DSL spowoduje teraz wyświetlenie ostrzeżenia narzędzia lint, ż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
- NavHostFragmentnie przechwytuje już samego systemowego przycisku Wstecz. Dzięki temu podstawowy- FragmentManagermoże obsługiwać przycisk Wstecz. Dzięki temu Fragment- 1.7.0-alpha01i 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 operacji FragmentTransaction, która dodaje fragment do stosu wstecznegoFragmentManager, spowoduje teraz zgłoszenie wyjątkuIllegalArgumentException. Fragmenty należy zawsze dodawać za pomocą interfejsunavigate()API.
- Jeśli w atrybutach app:dataiapp:dataPatternelementu 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ąpackageNamekontekstu podczas rozwijania.
- FragmentNavigatorkorzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlania- NavBackStackEntries. Oznacza to, że- NavBackStackEntry- Lifecyclebędzie teraz czekać na zakończenie efektów specjalnych związanych z wejściem i wyjściem fragmentu, zanim przesunie swój ostatni- Lifecycle.State.
- DialogFragmentNavigatorkorzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlania- NavBackStackEntries. Oznacza to, że- NavBackStackEntry- Lifecyclebędzie teraz czekać, aż- DialogFragment- Lifecycleprzejdzie do stanu- DESTROYED, zanim sam przejdzie do stanu- DESTROYED.
- NavHostFragmentumożliwia teraz pobranie- NavControllerod razu po podłączeniu- NavHostFragmentdo- FragmentManager, a nie dopiero po- onCreate().
- 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),NavigationUItraktuje 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 funkcjiisTopLevelDestinationwAppBarConfiguration.
- Integracje setupWithNavControllerwNavigationUIdo pracy z górnym paskiem aplikacji będą teraz analizować wartościR.stringargumentówReferenceTypeznalezionych wandroid:labeli zwracać ich wartości typu String zamiast automatycznie generowanej liczby całkowitej zasobu.
- NavigationUIudostępnia teraz logi, gdy nie uda się nawigować za pomocą wybranego- MenuItem.
Wersja 2.6.0-rc02
24 maja 2023 r.
Publikacja androidx.navigation:navigation-*:2.6.0-rc02 Wersja 2.6.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z nawigacją we fragmentach, który polegał na tym, że nawigowanie za pomocą popUpToi usuwanie fragmentu ze stosu wstecznego 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.
Publikacja androidx.navigation:navigation-*:2.6.0-rc01 Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem w Navigation z fragmentami, w którym usunięcie fragmentu za pomocą nawigacji z popUpTow wywołaniu zwrotnym cyklu życiaonResume()powodowałoIllegalStateException. (I21884, b/279644470)
Wersja 2.6.0-beta01
19 kwietnia 2023 r.
Publikacja androidx.navigation:navigation-*:2.6.0-beta01 Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- NavBackStackEntryudostępnia teraz niestandardową implementację- toString. (Iff00b)
Poprawki błędów
- Jeśli używasz nawigacji z fragmentami, próba ręcznego wykonania operacji FragmentTransaction, która dodaje fragment do stosu wstecznegoFragmentManager, spowoduje teraz zgłoszenie wyjątkuIllegalArgumentException. 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ć do stanuRESUMEDLifecycle.State. (Id8067, b/276495952)
Wersja 2.6.0-alpha09
5 kwietnia 2023 r.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha09 Wersja 2.6.0-alpha09 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono sprawdzanie nieprawidłowej trasy, tak aby w przypadku, gdy NavDestinationzawiera 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 polaNavArgument, które nie mogą mieć wartości null. (Ic62bf, b/274697949)
- Nawigacja za pomocą linków bezpośrednich oparta na Action/MimeTypezakończy się teraz niepowodzeniem, jeśli w operacji nawigacji brakuje niepustego parametruNavArgumentwymaganego przezNavDestination, z którym pasujeAction/MimeType. (Ibfa17, b/271777424)
- Gdy NavControllerustawi 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żywaniaonLaunchSingleTopbez 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.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha08 Wersja 2.6.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- NavHostFragmentumożliwia teraz pobranie- NavControllerod razu po podłączeniu- NavHostFragmentdo- FragmentManager, a nie dopiero po- onCreate(). (Ic6382, b/220186282)
Poprawki błędów
- Rozwiązaliśmy problem z NullPointerExceptionpodczas 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ą popUpToużyjesz przycisku Wstecz, stanNavControllerzostanie przywrócony do prawidłowego wpisu. (I3a8ec, b/270447657)
- FragmentNavigatorbędzie teraz prawidłowo wysuwać wpisy, gdy stos wsteczny zostanie wysunięty za pomocą przycisku Wstecz lub- popBackStack(), a także w zależności od tego, czy transakcja używa efektów dla fragmentu. (I81bdf)
- Dodawanie fragmentów do FragmentNavigatorFragmentManagerbez 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.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha07 Wersja 2.6.0-alpha07 zawiera te zmiany.
Poprawki błędów
- Warianty interfejsu API getBackStackEntry,popBackStack,clearBackStack, 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()zNavControllernie 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 MenuItemw elemencieBottomNavigationViewbył podświetlany. (I634f6, b/270447657)
- Rozwiązaliśmy regresję w wersji 2.6.0-alpha06, która powodowała, że NavBackStackEntrynie były przenoszone do stanu RESUMED podczas korzystania zAnimation. (Ib3589, b/269646882)
Wersja 2.6.0-alpha06
22 lutego 2023 roku
Publikacja androidx.navigation:navigation-*:2.6.0-alpha06 Wersja 2.6.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas wyświetlania podglądu funkcji kompozycyjnej za pomocą NavHostdomyślnie będzie teraz wyświetlany elementstartDestinationz elementu NavGraph. (I2b89f)
Zmiany w interfejsie API
- Wszystkie przeciążenia NavControllernavigatesą teraz oznaczone adnotacją@MainThread, aby mieć pewność, że są wywoływane w głównym wątku. (I2c0b0, b/263427111)
Poprawki błędów
- Naprawiliśmy awarię, która występowała podczas próby nawigacji przy użyciu dynamicznej nawigacji po fragmentach. (I3ee29, b/268360479)
- Usunęliśmy błąd, który powodował, że przejście do innego fragmentu za pomocą systemowego przycisku Wstecz nie aktualizowało paska u dołu do prawidłowo wybranego elementu (If559f, b/269044426).
Znane problemy
- Podczas korzystania z nawigacji z fragmentami cykl życia NavBackStackEntrynie osiąga stanuRESUMED, gdy używasz interfejsów 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, elementBottomMenuItemnie jest prawidłowo aktualizowany. (b/270447657)
- Podczas korzystania z nawigacji z fragmentami po przywróceniu stanu element NavBackStackEntryLifecyclenie otrzymuje wartościDESTROYED, gdy jego fragment ma wartośćDESTROYED. (b/270610768)
Wersja 2.6.0-alpha05
8 lutego 2023 r.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha05 Wersja 2.6.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- NavController.popBackStack(route),- NavController.getBackStackEntry(route)i- NavController.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)
- FragmentNavigatorkorzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlania- NavBackStackEntries. Oznacza to, że- NavBackStackEntry- Lifecyclebędzie teraz czekać na zakończenie efektów specjalnych związanych z wejściem i wyjściem fragmentu, zanim przesunie swój ostatni- Lifecycle.State. (I3cb19, b/238686802)
- DialogFragmentNavigatorkorzysta teraz z interfejsów API przejścia podczas nawigacji i wyświetlania- NavBackStackEntries. Oznacza to, że- NavBackStackEntry- Lifecyclebędzie teraz czekać, aż- DialogFragment- Lifecycleprzejdzie do stanu- DESTROYED, zanim sam przejdzie do stanu- DESTROYED. (I53ee5, b/261213893)
Zmiany w interfejsie API
- NavigatorStateudostępnia teraz interfejs API- prepareForTransition, który umożliwia- Navigatorom przenoszenie- NavBackStackEntriesdo pośrednich- Lifecycle.State. (I42c21, b/238686802)
- Możesz teraz uzyskać dostęp do listy wstecznej powiązanej z usługą NavGraphNavigatorlubComposeNavigatorza pomocą usługibackstack.ComposeNavigatorudostę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ń w przypadku korzystania z interfejsów API push/popWithTransition, gdy wpis jest już obsługiwany. (Iadbfa, b/261213893)
- Jeśli używasz elementu launchSingleTopz zagnieżdżonym elementemNavGraph, wszystkie miejsca docelowe, począwszy od pierwotnego miejsca docelowego aż po jego elementstartDestination, zostaną prawidłowo dodane na górze listy wstecznej. (Id4bea, b/253256629)
- Nawigacja będzie teraz prawidłowo zastępować instancję DialogFragmentpodczas 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.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha04 Wersja 2.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Niestandardowe podklasy NavTypemogą teraz zastępowaćserializeAsValue, aby serializować wartość do postaci ciągu znaków, co umożliwia serializację i deserializację (za pomocąparseValue) w całości w klasieNavType.StringTypezastępuje teraz tę metodę, aby wywoływaćUri.encodena podanymString. (Ie5213, b/247637434)
- NavigationUIudostępnia teraz logi, gdy nie uda się nawigować za pomocą wybranego- MenuItem. (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.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha03 Wersja 2.6.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- W sekcji Nawigacja 2.5.3:NavHostnie będzie już powodowaćNoSuchElementException, gdy nie będzie dostępnego miejsca docelowego, do któregoCrossfademoże się udać. Teraz będzie po prostu pomijać kompozycję. (Ieb46e, b/253299416)
- Nawigacja2.5.3: rozwiązaliśmy problem, który powodował, ż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.
Publikacja androidx.navigation:navigation-*:2.6.0-alpha02 Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w zachowaniu
- Gdy przekazujesz identyfikator wykresu nawigacji do AppBarConfiguration(np. za pomocąMenu),NavigationUItraktuje 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 funkcjiisTopLevelDestinationwAppBarConfiguration. (Ie936e, b/238496771)
Poprawki błędów
- Komponent navigation:navigation-fragmentzależy teraz od wersji Fragmentu1.5.2. (I00ba4)
- Wybrany element menu nie będzie już aktualizowany podczas przechodzenia do FloatingWindowmiejsca docelowego, np. okna. (I4cde8, b/240308330)
Wersja 2.6.0-alpha01
7 września 2022 roku
Publikacja androidx.navigation:navigation-*:2.6.0-alpha01 Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Integracje setupWithNavControllerwNavigationUIdo pracy z górnym paskiem aplikacji będą teraz analizować wartościR.stringargumentówReferenceTypeznalezionych wandroid:labeli zwracać ich wartości typu String zamiast automatycznie generowanej liczby całkowitej zasobu. (I5f803, b/167959935)
- NavDeepLinkobsł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.- NavTypezawiera 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:dataiapp:dataPatternelementu 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ąpackageNamekontekstu podczas rozwijania. (Iaabde, b/234223561)
- Próba utworzenia pustego NavDeepLinkza pomocąnavDeepLinkKotlin DSL spowoduje teraz wyświetlenie ostrzeżenia narzędzia lint, ż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.stringi przekształcając je w wartości typu String. (I07d89, b/236269380)
Zmiany w zachowaniu
- argumentsNavBackStackEntry i- argumentsprzekazywane do- OnDestinationChangedListenersą 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 do- argumentsani innych instancji- OnDestinationChangedListener. (I676f5)
Poprawki błędów
- W sekcji Nawigacja2.5.2: nawigacja dynamiczna 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ę Fragmentu podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagilaunchSingleTopna wartość true. (I5a2f1, b/237374580)
- W nawigacji2.5.2: naprawionoIllegalStateExceptionspowodowany 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.
Publikacja androidx.navigation:navigation-*:2.5.3 Wersja 2.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- NavHostnie będzie już powodować- NoSuchElementException, gdy nie będzie dostępnego miejsca docelowego, do którego- Crossfademoż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 zostało usunięte ze stosu wstecznego. (I64949)
Wersja 2.5.2
7 września 2022 roku
Publikacja androidx.navigation:navigation-*:2.5.2 Wersja 2.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Nawigacja dynamiczna próbuje teraz prawidłowo instalować 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 launchSingleTopna wartość true. (I5a2f1, b/237374580)
- Rozwiązano problem IllegalStateExceptionspowodowany 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.2zależy teraz od fragmentu1.5.2. (aosp/2178734)
Wersja 2.5.1
27 lipca 2022 roku
Publikacja androidx.navigation:navigation-*:2.5.1 Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Navigation Safe Argsnie będzie już powodować ostrzeżeń o wycofaniu w generowanych klasach podczas używania niestandardowych typów argumentów zapisanych w- Bundle. (Id86ed, b/237725966)
Aktualizacje zależności
- Biblioteka Navigation zależy teraz 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.
Publikacja androidx.navigation:navigation-*:2.5.0 Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
- Integracja CreationExtras – Navigationmoże teraz udostępniać bezstanowyViewModelProvider.Factoryza pomocą Lifecycle2.5.0’sCreationExtras.
Navigation SafeArgs
- Navigation Safe Argsuaktualnił zależność- Android Gradle Plugin, aby korzystać z- 7.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 visibleEntriesnie jest już eksperymentalny i udostępnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie zNavController.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Publikacja androidx.navigation:navigation-*:2.5.0-rc02 Wersja 2.5.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd powodujący awarię przy szybkim przełączaniu się między miejscami docelowymi u dołu ekranu podczas korzystania z komponentu Navigation Compose NavHost. (I3979a, b/234054916)
- Navigation SafeArgsnie będzie już ulegać awarii podczas używania- applicationIdSuffixi przestrzeni nazw bez- applicationIdlub gdy- applicationIdi przestrzeń nazw będą się różnić. (I754b1, b/233119646)
- NavArgumentma teraz niestandardową funkcję- toString(), która wyświetla wewnętrzne wartości argumentu. (I900a8)
Wersja 2.5.0-rc01
11 maja 2022 roku
Publikacja androidx.navigation:navigation-*:2.5.0-rc01 Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
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 NavHostiDialogHostsą teraz usuwane w oczekiwanej kolejności, tzn. wewnętrzne funkcje kompozycyjne są usuwane przed zewnętrznymi. (I157e6)
- Navigation SafeArgs używa teraz PathSensitivity.RELATIVEwArgumentsGenerationTask, 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 UnrememberedGetBackStackEntryDetectorzostała zaktualizowana, aby zapewnić, że wywołanierememberotaczające wywołaniegetBackStackEntry()również przekazuje obiektNavBackStackEntryjako klucz.(Ib7081, b/227382831)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Publikacja androidx.navigation:navigation-*:2.5.0-beta01 Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- DialogNavigatorużywa teraz- popWithTransitionpodczas wykonywania połączenia- dismiss(). Rozwiązuje to problem z wyścigiem, który występował podczas używania elementu- ViewModelw miejscu docelowym- dialogi powodował błąd- IllegalStateExceptionpodczas zamykania okna za pomocą przycisku Wstecz lub kliknięcia poza oknem. (Id7376, b/226552301)
Aktualizacje zależności
- Nawigacja zależy teraz od Cyklu życia2.5.0-beta01, co rozwiązuje problem zIllegalStateExceptionpodczas zagnieżdżania jednegoNavHostw drugimNavHostna 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
Publikacja androidx.navigation:navigation-*:2.5.0-alpha04 Wersja 2.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- visibleEntriesnie jest już funkcją eksperymentalną. (I4829f, b/225394514)
Poprawki błędów
- Komponent NavHost zależy teraz od visibleEntrieszNavController, aby określić, które wpisy mają być tworzone. Oznacza to, że podczas korzystania z zagnieżdżonego elementu NavHost wewnętrzny elementNavHostpowinien teraz prawidłowo animować wyjście. (I4ba2b, b/225394514)
- Wartość visibleEntriesStateFlowpodawana przezNavControllerjest teraz oparta na maksymalnym stanie cyklu życia wpisu, a nie na bieżącym stanie cyklu życia. Oznacza to, że nawet jeśli stan hostanavControllerzmieni się na stan inny niż STARTED, lista widocznych wpisów pozostanie bez zmian. (I9e2a8, b/225394514)
- SavedStateViewFactoryobsługuje teraz używanie- CreationExtrasnawet wtedy, gdy zostało zainicjowane za pomocą- SavedStateRegistryOwner. Jeśli podasz dodatkowe informacje, zainicjowane argumenty zostaną zignorowane. (I6c43b, b/224844583)
- NavDeepLinkmoż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 Argsnie będzie już ulegać awarii podczas używania przestrzeni nazw, gdy nie ma- AndroidManifest.xml. (I17ccf, b/227229815)
Wersja 2.5.0-alpha03
23 lutego 2022 r.
Publikacja androidx.navigation:navigation-*:2.5.0-alpha03 Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Możesz teraz przekazywać wartość CreationExtrasdo funkcjiby navGraphViewModels, aby utworzyćViewModel. (I29217, b/217618359)
Poprawki błędów
- NavDeepLinksteraz prawidłowo obsługują zakodowane znaki nowego wiersza osadzone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060)
- CreationExtrasbędzie teraz działać prawidłowo w połączeniu z- NavBackStackEntriespodczas tworzenia obiektów ViewModel. (I69161, b/217617710)
- Bezpieczne argumenty nawigacji obsługują teraz używanie przestrzeni nazw zdefiniowanej w build.gradlezamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)
Wersja 2.5.0-alpha02
9 lutego 2022 r.
Publikacja androidx.navigation:navigation-*:2.5.0-alpha02 Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Z Nawigacji 2.4.1:NavHostFragmentbędzie teraz prawidłowo ustawiaćOnBackPressedDispatcherpodczas używania powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)
- W Nawigacji2.4.1: w przypadku głębokiego linkowania przez wiele zagnieżdżonych elementówNavGraphstos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe. (I504c0, b/214383060)
Wersja 2.5.0-alpha01
26 stycznia 2022 r.
Publikacja androidx.navigation:navigation-*:2.5.0-alpha01 Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- NavBackStackEntryjest teraz zintegrowany z interfejsem ViewModel CreationExtras, który został wprowadzony w ramach Lifecycle- 2.5.0-alpha01. (Ib9fe2, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że dostęp do ViewModelutworzonego za pomocąby navGraphViewModels()zonCreate()fragmentu kończył się niepowodzeniem i wyświetlany był błądIllegalStateException. (I8a14d)
- NavDeepLinks 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
Publikacja androidx.navigation:navigation-*:2.4.2 Wersja 2.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Wycofane z Nawigacji 2.5.0-alpha03:NavDeepLinksteraz 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.gradlezamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)
- Wycofano z Nawigacji2.5.0-alpha04:Navigation Safe Argsnie będzie już powodować awarii podczas korzystania z przestrzeni nazw, gdy nie maAndroidManifest.xml. (I17ccf, b/227229815)
- Wycofano z Nawigacji2.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.
Publikacja androidx.navigation:navigation-*:2.4.1 Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- NavHostFragmentbędzie teraz prawidłowo ustawiać- OnBackPressedDispatcherpodczas 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 NavGraphstos wsteczny 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)
- Przeniesione z Navigation 2.5.0-alpha01:NavDeepLinkargumenty nie są już niepotrzebnie dekodowane dwukrotnie, co oznacza, że do miejsca docelowego przekazywane są teraz prawidłowo zdekodowane argumenty. (I31b0a, b/210711399)
- Przeniesione z Navigation2.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.
Publikacja androidx.navigation:navigation-*:2.4.0 Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
- Wszystkie artefakty Navigation zostały przepisane w języku Kotlin. Poprawiliśmy w ten sposób 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-ktxbędą nadal publikowane, ale będą całkowicie puste.
- Artefakt navigation-fragmentzawiera teraz gotową implementację układu dwupanelowego za pomocą nowego elementuAbstractListDetailFragment. Ten fragment używa klasySlidingPaneLayoutdo zarządzania panelem listy (który zapewnia podklasa) i panelem szczegółów, który korzysta z klasyNavHostFragmentjako implementacji, jak widać w naszej przykładowej implementacji.
- Metoda currentBackStackEntryAsFlow()wNavControllerudostę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 NavBackStackEntryjakoStateFlowza pomocą eksperymentalnej właściwościvisibleEntries.
- Możesz teraz rozszerzyć klasę NavType, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas programistycznego tworzenia wykresu nawigacji, np. za pomocą języka DSL Kotlin do tworzenia wykresów nawigacji.
- Nawigacja udostępnia teraz interfejsy API - findStartDestination()i- getHierarchy(), które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.- findStartDestination()to funkcja rozszerzająca- NavGraph, która lokalizuje rzeczywiste miejsce docelowe, które będzie wyświetlane podczas nawigacji do wykresu, nawet jeśli- startDestinationjest zagnieżdżoną funkcją- NavGraph.- getHierarchy()to funkcja na- NavDestination, 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ły- BottomNavigationView, zostały zaktualizowane tak, aby zamiast tego przyjmowały jego klasę nadrzędną wprowadzoną w Materialu- 1.4.0,- NavigationBarView. Dzięki temu można używać tych metod w przypadku- NavigationRailView.
- Podczas tworzenia elementu - <action>za pomocą XML atrybuty animacji mogą używać atrybutów pobranych z motywu za pomocą składni- app:enterAnim="?attr/transitionEnter".
- Safe Args generuje teraz metodę - fromSavedStateHandle()dla każdej klasy- NavArgs. (#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 przypadkach, gdy definiujesz wykres nawigacji w formacie XML i możesz używać 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, argumenty dynamiczne 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ść popUpToKotlin 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 @Composablefunkcji.
Ta wersja zapewnia:
- Kompozycja NavHost, która umożliwia tworzenie wykresu nawigacji za pomocą języka Kotlin DSL z użyciem miejsc docelowychcomposableidialogoraz obsługą opcjonalnych nawigatorów, takich jak te z Accompanist Navigation Material.
- Obowiązkowa obsługa płynnego przechodzenia między miejscami docelowymi. Accompanist Navigation Animation umożliwia kontrolowanie przejść wejścia i wyjścia za pomocą eksperymentalnych interfejsów API Compose.
- Określanie zakresu Lifecycledla każdego miejsca docelowego, które można komponować. Każde miejsce docelowe osiąga stanRESUMEDdopiero po zakończeniu wszystkich przejść wejściowych i natychmiast przechodzi do stanuSTARTEDpo rozpoczęciu wszystkich przejść wyjściowych. Dzięki temu możesz uniknąć wszystkich problemów związanych ze stanemIllegalStateExceptioni wielodotykiem, wywołując połączenienavigatetylko wtedy, gdy stanLifecycletoRESUMED.
- Określanie zakresu ViewModel(za pomocą interfejsu APIviewModel()Lifecycle ViewModel Compose2.4.0lubhiltViewModel()Hilt Navigation Compose1.0.0na 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()ViewModelu, który wskazuje trwałe usunięcie i wyczyszczenie stanu powiązanego z tymNavBackStackEntry.
- Określanie zakresu stanu rememberSaveablena 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 NavControlleroraz 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()i- currentBackStackEntryAsState(), aby umożliwić przenoszenie stanu i łączenie- NavControllerz kompozycjami poza- NavHost(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
Kontroler NavController odpowiada za zarządzanie listą wsteczną miejsc docelowych, dodawanie do niej 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 obsługę 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 logicznych- app:popUpToSaveStatei- app:restoreState, aby zapisywać stan wszystkich miejsc docelowych, które zostały wyświetlone za pomocą elementu- app:popUpTo, oraz przywracać stan powiązany z miejscem docelowym przekazanym jako- app: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 - navOptionsKotlin DSL możesz dodać właściwości logiczne- restoreStatei- saveStatedo- popUpTokonstruktora:- // 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 - NavOptionsza pomocą metody- NavOptions.Buildermożesz użyć metody- setRestoreState()i nowego przeciążenia do- setPopUpTo(), które przyjmuje dodatkowy parametr- saveState.- 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 parametr- saveState.
- Za pomocą metody - clearBackStack()możesz wyczyścić każdy stan zapisany za pomocą metod- popBackStack()lub- popUpToSaveState.
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
- NavDeepLinkBuilderdodaje teraz- PendingIntent.FLAG_IMMUTABLEdo- PendingIntentzwracanego przez- createPendingIntent(), 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.1i oznacza metodysetGraph(),popBackStack(),navigateUp()inavigate(), które aktualizująNavBackStackEntryLifecycle, 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 w Uriznajdują się wszystkie wymagane argumenty (czyli te bez wartości domyślnych).
- NavDeepLinkPrzeanalizowane 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 Nawigacji2.5.0-alpha01: dostęp do elementuViewModelutworzonego za pomocąby navGraphViewModels()z poziomuonCreate()fragmentu kończy się niepowodzeniem i wyświetleniem błęduIllegalStateException. (b/213504272)
- Naprawiono w Navigation2.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
Publikacja androidx.navigation:navigation-*:2.4.0-rc01 Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w działaniu
- NavDeepLinkAnalizowane argumenty traktują teraz znaki funta w taki sam sposób jak znaki zapytania, czyli jako separatory 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)
- NavControllernie będzie już ulegać awarii podczas wysuwania zagnieżdżonego miejsca docelowego za pomocą przejść po przywróceniu- NavController. (I0f7c9, b/205021623)
- Komunikat o błędzie podczas używania nieprawidłowego elementu startDestinationbędzie teraz domyślnie wyświetlać 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 między miejscem docelowym rozpoczęcia 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 ViewModelzNavBackStackEntryokna 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 activityz komponentemNavHostNavigation 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
- SafeArgsnie 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.
Publikacja androidx.navigation:navigation-*:2.4.0-beta02 Wersja 2.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Obsługa jawnych i niejawnych linków do konkretnych miejsc w aplikacji automatycznie dodaje teraz flagę saveStatepodczas przechodzenia do innego wykresu, dzięki czemu 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.STARTEDwpisy NavBackStackEntries były przenoszone doLifecycle.State.CREATED, gdyNavHostbył dodawany bezpośrednio dosetContent()aktywności. (Ia5ac1, b/203536683)
- Rozwiązaliśmy problem polegający na tym, że usunięcie miejsca docelowego DialogFragmentze stosu 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 API onNavDestinationSelectednaNavigationUIzwracałtrue, nawet jeśli nienavigate()do tego wykresu nawigacji. Teraz używa tej samej logiki, której wewnętrznie używasetupWithNavController, aby wybierać tylkoMenuItempowiązane z bieżącym miejscem docelowym za pomocąhierarchytego miejsca. (I2b053)
Wersja 2.4.0-beta01
27 października 2021 roku
Publikacja androidx.navigation:navigation-*:2.4.0-beta01 Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz używać by navGraphViewModelz 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 visibleEntriesjest 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 NavDeepLinknie 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_widthilayout_weightw panelu listy zwracanym przezonCreateListPaneView()były nieprawidłowo obsługiwane lub ignorowane. (f5fbf3)
- Stan wizualny miejsc docelowych w oknie dialogowym jest teraz prawidłowo zsynchronizowany ze stanem DialogFragmentNavigator. Oznacza to, że ręczne wywoływanie asynchronicznego interfejsu APIdismiss()dlaDialogFragmentteraz prawidłowo usuwa wszystkie miejsca docelowe okien powyżej okna, które zostało zamknięte. Nie ma to wpływu na przypadki, w których zamykasz okno dialogowe, klikającpopUpTolubpopBackStack(). (I77ba2)
- AbstractAppBarOnDestinationChangedListenerma teraz bardziej przejrzyste komunikaty o błędach dotyczące- onDestinationChanged(). (Ie742d)
Wersja 2.4.0-alpha10
29 września 2021 r.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha10 Wersja 2.4.0-alpha10 zawiera te zatwierdzenia.
Nowe funkcje
- Kontroler NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji za pomocą NavBackStackEntryStateFlow (Ia964e).visibleEntries
- rememberNavController()przyjmuje teraz opcjonalny zestaw instancji- Navigator, które zostaną dodane do zwracanego- NavController, 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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha09 Wersja 2.4.0-alpha09 zawiera te zatwierdzenia.
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 precyzyjnych linków do konstruktora zagnieżdżonego wykresu nawigacji, a zostaną one automatycznie dodane do wynikowego wykresu. (I8a470, b/182545357)
Zmiany w interfejsie API
- Funkcja navArgumentKotlin DSL jest teraz częściąnavigation-commonzamiastnavigation-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ą DESTROYEDdopiero wtedy, gdy wszystkie ich elementy podrzędne będąDESTROYED. (I86552, b/198741720)
- Argumenty z wartością null NavDeepLinknie wymagają już wartości domyślnej. (Ia14ef, b/198689811)
- Wywołanie setGraph()z nowym wykresem będzie teraz usuwać zapisane stosy wsteczne, a nie tylko je zamykać. (I97f96)
- Rozwiązaliśmy problem, który powodował, że instancje OnDestinationChangedListenericurrentBackStackEntryFlownie 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 Compose2.4.0-beta01. (Ib86a3)
Wersja 2.4.0-alpha08
1 września 2021 roku
Publikacja androidx.navigation:navigation-*:2.4.0-alpha08 Wersja 2.4.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz rozszerzyć klasę NavType, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas programistycznego tworzenia wykresu nawigacji, 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 w Uriznajdują się wszystkie wymagane argumenty (czyli te bez wartości domyślnych). (#204, b/185527157)
Poprawki błędów
- Używanie adnotacji getBackStackEntryipreviousBackStackEntryw 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 ArrayIndexOutOfBoundsExceptionw 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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha07 Wersja 2.4.0-alpha07 zawiera te zatwierdzenia.
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)
- NavHostobserwuje teraz zmiany w- Lifecycle.State- NavBackStackEntry, co oznacza, że użycie- NavHostwe fragmencie spowoduje prawidłowe ponowne skomponowanie w miarę zmian cyklu życia, a nie wyświetlenie pustego ekranu. (I4eb85, b/195864489)
- Rozwiązaliśmy problem polegający na tym, że zamknięcie elementu DialogFragmentnie powodowało prawidłowej aktualizacji stanu elementuNavControllerpo 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ę toSavedStateHandledla argumentów, których można używać do testowania koduViewModel. (If1e2d, b/193353880)
Wersja 2.4.0-alpha06
4 sierpnia 2021 r.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha06 Wersja 2.4.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metody requireSlidingPaneLayout()irequireDetailPaneNavHostFragment()wAbstractListDetailFragmentzostały zmienione nagetSlidingPaneLayout()igetDetailPaneNavHostFragment(). (I34a08)
Zmiany w zachowaniu
- Podczas nawigacji z animacjami (np. Crossfade)Lifecyclenowego miejsca docelowego będzie teraz docierać doRESUMEDdopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889)
- NavHostw 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 bezUrii korzystania z nawigacji po trasie lub precyzyjnym linku. (938a0c, b/193805425)
- Rozwiązaliśmy problem w Navigation Compose, który powodował, że precyzyjny link NavBackStackEntrynie 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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha05 Wersja 2.4.0-alpha05 zawiera te zmiany.
Zmiany w zachowaniu
- Biblioteka Navigation Compose NavHostzawsze używa teraz przejść między stronami podczas nawigacji między miejscami docelowymi. (I07049, b/172112072)
- Możesz teraz wprowadzać zmiany w grafie NavHost. Wykresy z tym samym elementem startDestination i miejscami docelowymi na wykresie będą uznawane za równe i nie będą czyścić NavControllerstosu wstecznego. (I0b8db, b/175392262)
Poprawki błędów
- Naprawiono NoSuchElementException, gdy wywoływaniepopBackStack()wLifecycleObserverdołączonym doNavBackStackEntrypowodowałoNoSuchElementExceptionz powodu aktualizacji stanu NavController. (I64621)
- AbstractListDetailFragmentumożliwia teraz całkowite usunięcie z pliku APK, gdy- AbstractListDetailFragmentnie jest używany.- SlidingPaneLayout(I611ad)
- NavGraphi- NavDestinationzastę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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha04 Wersja 2.4.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Artefakt navigation-fragmentzawiera teraz gotową implementację układu dwupanelowego za pomocą nowego elementuAbstractListDetailFragment. Ten fragment używa klasySlidingPaneLayoutdo zarządzania panelem listy (który zapewnia podklasa) i panelem szczegółów, który korzysta z klasyNavHostFragmentjako implementacji, jak widać w naszej przykładowej implementacji. (Iac4be, b/191276636)
- NavHostartefaktu- navigation-composeobsługuje teraz- dialogmiejsc docelowych oprócz- composablemiejsc docelowych. Każde z tych miejsc docelowych okna dialogowego będzie wyświetlane w funkcji Composable- Dialog, unosząc się nad bieżącym miejscem docelowym- composable. (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 addwNavigatorStatezostała zmieniona napush. Wszystkie bieżące wywołania funkcjiadd()należy zmienić na wywołania funkcji push(). (Ie89fc, b/172112072)
- Niestandardowe instancje Navigatormogą teraz używać interfejsów APIpushWithTransactionipopWithTransitionwNavigatorStatedo asynchronicznego wysyłania lub pobierania miejsca docelowego. Pamiętaj, że te interfejsy API nie są jeszcze używane przez żadną z uwzględnionych usług nawigacyjnych. (Ic4d7c, b/172112072)
Zmiany w zachowaniu
- NavDeepLinkBuilderdodaje teraz- PendingIntent.FLAG_IMMUTABLEdo- PendingIntentzwracanego przez- createPendingIntent(), 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 NullPointerExceptionpodczas 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 pełnego trybu 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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha03 Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.
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 z wywoływaniem IllegalStateExceptionpo wcześniejszym usunięciu głównego wykresu NavControllera.popBackStack()(I2a330, b/190265699)
- Reguły ProGuard dla by navArgs()są teraz prawidłowo stosowane podczas korzystania znavigation-commonlub innych artefaktów, które od niego zależą. (I68800, b/190082521)
- OnDestinationChangedListener, które po raz pierwszy odbiera wywołanie zwrotne,- navigate()otrzymuje teraz drugie wywołanie zwrotne z miejscem docelowym, do którego- OnDestinationChangedListenerdotarł. (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ż zależy 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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha02 Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Trasy są teraz obsługiwane w przypadku miejsc docelowych Activity, Fragment i Dialog, a także w całym dynamicznym interfejsie DSL Kotlin do nawigacji. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
- NavigationUItymczasowo dodał eksperymentalne interfejsy API, które umożliwiają 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()i- getHierarchy(), które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.- findDestination()to funkcja rozszerzająca- NavGraph, która znajduje miejsce docelowe w grafie.- getHierarchy()to funkcja na- NavDestination, 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 Material- 1.4.0,- NavigationBarView. Dzięki temu można używać tych metod w przypadku- NavigationRailView. (Ib0b36, b/182938895)
- Podczas rozwijania elementu - <action>za pomocą XML atrybuty animacji mogą używać atrybutów pobranych z motywu za pomocą składni- app:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)
Zmiany w interfejsie API
- Konstruktory DSL w Kotlinie, które używają identyfikatora, zostały wycofane i należy je zastąpić konstruktorami korzystającymi z tras (I85b42, b/188816479) (I9f58f, b/188816479).
Poprawki błędów
- DialogFragmentNavigatorkorzysta teraz z interfejsu- NavigatorState.pop()API, aby informować- NavController, gdy okno zamyka się po naciśnięciu systemowego przycisku Wstecz lub kliknięciu poza nim. Dzięki temu stan- NavControllerjest zawsze zsynchronizowany ze stanem nawigatora. (I2ead9)
- Nawigacja nie zwraca już wartości - ConcurrentModificationException, gdy używasz manipulowania listą- OnDestinationChangedListenersza pomocą wywołania zwrotnego- onDestinationChanged. (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 - findNodema teraz wartość- resIdzamiast- resid. (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.
Publikacja androidx.navigation:navigation-*:2.4.0-alpha01 Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Metoda currentBackStackEntryAsFlow()wNavControllerudostę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
Kontroler NavController odpowiada za zarządzanie listą wsteczną miejsc docelowych, dodawanie do niej 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 logicznych- app:popUpToSaveStatei- app:restoreState, aby zapisywać stan wszystkich miejsc docelowych, które zostały wyświetlone za pomocą elementu- app:popUpTo, oraz przywracać stan powiązany z miejscem docelowym przekazanym jako- app: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 - navOptionsKotlin DSL możesz dodać właściwości logiczne- restoreStatei- saveStatedo- popUpTokonstruktora:- // 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 - NavOptionsza pomocą metody- NavOptions.Buildermożesz użyć metody- setRestoreState()i nowego przeciążenia do- setPopUpTo(), które przyjmuje dodatkowy parametr- saveState.- 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 parametr- saveState.
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ść popUpTow 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. Poprawiliśmy w ten sposób 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-ktxbędą nadal publikowane, ale będą całkowicie puste. (b/184292145)
- NavDeepLinkBuilderobsł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 NavBackStackEntryjest teraz udostępniany w ramach publicznego interfejsu API. (Ie033a)
- Pola nameiargumentoraz funkcje destrukcjiNamedNavArgumentsą teraz publiczne. (#174, b/181320559)
- Wprowadziliśmy nowe rozszerzenie NavBackStackEntry#provideToCompositionLocals, które udostępniaNavBackStackEntryodpowiednim lokalizacjom kompozycji. (#175, b/187229439)
Safe Args
- Safe Args generuje teraz metodę - fromSavedStateHandle()dla każdej klasy- NavArgs. (#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.1i oznacza metodysetGraph(),popBackStack(),navigateUp()inavigate(), które aktualizująNavBackStackEntryLifecycle, 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, dzięki czemu precyzyjny link, np. http://www.example.com/red, może pasować 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-alpha01jest zgodny tylko z Compose w wersji- 1.0.0-beta07lub 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)
- NavHostFragmentobsługuje teraz niestandardowe nawigatory, które używają tego samego- @Navigator.Name("dialog")co domyślny- DialogFragmentNavigator. (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 nameiargumentoraz funkcji dekonstrukcjiNamedNavArgument. (#174, b/181320559)
- Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia NavBackStackEntry#provideToCompositionLocals, które udostępniaNavBackStackEntryodpowiednim lokalizacjom 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.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- NavHostakceptuje teraz- Modifier, który jest przekazywany do kontenera kompozycyjnego opakowującego kompozycje docelowe. (I85aca, b/175125483)
Poprawki błędów
- NavHostdziała teraz nawet wtedy, gdy nie znaleziono- OnBackPressedDispatcherOwner, np. podczas wyświetlania podglądu- NavHost. (I7d8b4)
- Biblioteka Navigation Compose zależy teraz od Navigation 2.3.5, co rozwiązuje problem podczas używaniaBackHandlerw miejscu docelowymNavHost. (I7e63b, b/182284739)
Wersja 1.0.0-alpha09
10 marca 2021 r.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- LocalViewModelStoreOwner.currentzwraca teraz wartość dopuszczającą wartość null- ViewModelStoreOwner, aby lepiej określać, czy w bieżącej kompozycji jest dostępny element- ViewModelStoreOwner. Interfejsy API, które wymagają- ViewModelStoreOwner, np.- viewModel()i- NavHost, nadal zgłaszają wyjątek, jeśli nie ustawiono- ViewModelStoreOwner. (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.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- NavHostwypełnia teraz- LocalSavedStateRegistryOwnerCompositionLocal wartością- NavBackStackEntrymiejsca docelowego, dzięki czemu każdy stan zapisany bezpośrednio w- SavedStateRegistrybędzie zapisywany i przywracany wraz z miejscem docelowym. (I435d7, b/179469431)
Wersja 1.0.0-alpha07
10 lutego 2021 r.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
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)
- NavHostkorzysta teraz z nowego interfejsu- LocalOnBackPressedDispatcherOwnerz biblioteki Activity-Compose w wersji 1.3.0-alpha01, aby uzyskać wartość- OnBackPressedDispatcherustawioną w obiekcie- NavController. (I65b12)
Wersja 1.0.0-alpha06
28 stycznia 2021 roku
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
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.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zaktualizowano, aby zależał od Compose w wersji 1.0.0-alpha10.
Wersja 1.0.0-alpha04
16 grudnia 2020 roku
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
- Zaktualizowano pod kątem zgodności z Compose 1.0.0-alpha09.
Wersja 1.0.0-alpha03
2 grudnia 2020 r.
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
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
Publikacja androidx.navigation:navigation-compose:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
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 zamiast identyfikatora przyjmuje trasę, 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.
Publikacja android.navigation:navigation-compose:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Artefakt navigation-compose zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa @Composablefunkcji.
Ta pierwsza wersja zapewnia:
- Funkcja NavHost, która umożliwia tworzenie wykresu nawigacji za pomocą języka Kotlin DSL.
- Określanie zakresu cyklu życia, ViewModeli 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 łączenieNavControllerz kompozycjami 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.
Publikacja androidx.navigation:navigation-*:2.3.5 Wersja 2.3.5 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas nawigacji za pomocą NavDeepLinkRequestlubUrimoż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
- OnBackPressedCallbacksdodany do dyspozytora z- NavBackStackEntryjako LifecycleOwner prawidłowo przechwytuje naciśnięcie przycisku Wstecz- STOPPEDpo tym, jak cykl życia działania przejdzie w stan- STARTED(Iff94f, b/182284739).
- Analizowanie domeny precyzyjnego linku nie uwzględnia już wielkości liter, dzięki czemu www.example.compasuje 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 bentrengroveza 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.
Publikacja androidx.navigation:navigation-*:2.3.4 Wersja 2.3.4 zawiera te zatwierdzenia.
Nowe funkcje
- ReferenceTypemożna teraz prawidłowo analizować, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. Obsługuje to zarówno surową wartość całkowitą, jak i wartości szesnastkowe poprzedzone znakiem- 0x. (#127, b/179166693)
- Tag android:defaultValuew przypadku argumentu z atrybutemapp: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 setViewModelStorelubsetLifecycleOwnerz 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 Javy. (I8fbc5, b/179463137)
Wkład zewnętrzny
- Dziękujemy JvmNameza żądanie pull, dzięki któremu argumentyReferenceTypemogą być teraz prawidłowo analizowane, gdy są wysyłane jako część identyfikatora URI linku bezpośredniego. (#127, b/179166693)
- Dziękujemy tatocasterza prośbę o scalenie, która umożliwia używaniedefaultValuejako 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.
Publikacja androidx.navigation:navigation-*:2.3.3 Wersja 2.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Nie występuje już awaria podczas wyodrębniania elementu NavBackStackEntry, zanim jegoLifecyclezostanie przeniesiony doCREATED. (Ie3ba3)
- Naprawiono regresję spowodowaną przez b/171364502, w której przejście do aktywności z wartością zasobu animacji 0powodowałoResourceNotFoundException. (I7aedb, b/176819931)
Wersja 2.3.2
Wersja 2.3.2
2 grudnia 2020 r.
Publikacja androidx.navigation:navigation-*:2.3.2 Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem w NavigationUI, który powodował, że użycie miejsca docelowego<activity>zonNavDestinationSelectednie powodowało przejścia do aktywności. (I22e34, b/171364502)
- Rozwiązaliśmy problem, który powodował, że navigation-dynamic-features-fragmentskutkowało wielokrotnym przechodzeniem 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 OnDestinationChangedListenerpodczas 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 dodaje obsługę trybu 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 nawigacji z użyciem symboli- FragmentScenarioi- Navigation.setViewNavController(). (I69e0d)
Wersja 2.3.1
Wersja 2.3.1
14 października 2020 r.
Publikacja androidx.navigation:navigation-*:2.3.1 Wersja 2.3.1 zawiera te zatwierdzenia.
Nowe funkcje
- Do interfejsu nawigacji dodano domyślne zasoby Animatora, 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-uizależy teraz od DrawerLayout 1.1.1, co zapewnia możliwość otwierania panelu przez- NavigationUInawet w przypadku korzystania z- LOCK_MODE_LOCKED_CLOSEDlub- LOCK_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.
Publikacja androidx.navigation:navigation-*:2.3.0 Wersja 2.3.0 zawiera te zatwierdzenia.
Główne zmiany od wersji 2.2.0
- Integracja modułu funkcji: artefakty navigation-dynamic-features-runtimeinavigation-dynamic-features-fragmentumoż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-testingudostę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 NavBackStackEntrypowiązany z każdym miejscem docelowym na liście wstecznej nawigacji umożliwia teraz dostęp do elementuSavedStateHandle, 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. Więcej informacji znajdziesz w sekcji Przywracanie wyniku do poprzedniego miejsca docelowego.
- NavigationUIobsługa- Openable: wszystkie użycia- DrawerLayoutw- NavigationUIzostały zastąpione bardziej ogólnym interfejsem- Openabledodanym w CustomView- 1.1.0i wdrożonym przez- DrawerLayoutw DrawerLayout- 1.1.0.
- Obsługa działań i typów MIME w precyzyjnych linkach: precyzyjne linki zostały rozszerzone o obsługę app:actioniapp:mimeTypeoprócz wcześniej dostępnegoapp:uri.NavControllerobsł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 czasu zakończenia tych prac 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.
Publikacja androidx.navigation:navigation-*:2.3.0-rc01 Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
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 unknownzgłaszane przezNavControllerzawierają 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 zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że LifecyclewNavBackStackEntrynie było prawidłowo aktualizowane po zakończeniu procesu. (b/155218371)
- Instancje OnDestinationChangedListenerzarejestrowane 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 funkcjiNavBackStackEntrysą teraz prawidłowo aktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancjiOnDestinationChangeListener. (b/156545508)
Aktualizacje zależności
- Artefakt NavigationUIzależy teraz od CustomView1.1.0-rc01i DrawerLayout1.1.0-rc01. (aosp/1309696)
Wersja 2.3.0-alpha06
29 kwietnia 2020 r.
Publikacja androidx.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:actioniapp:mimeTypeopró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ę 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. (b/154532067)
Wersja 2.3.0-alpha05
15 kwietnia 2020 roku
Publikacja androidx.navigation:navigation-*:2.3.0-alpha05 Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- W przypadku dynamicznych wykresów obejmujących używających <include-dynamic>nie musisz już określaćapp:graphPackage. Zostanie użyta wartość domyślna przez dodanie sufiksumoduleNamedoapplicationIdpo kropce. Jeśli musisz dostosowaćgraphPackage, możesz teraz użyć symbolu zastępczego${applicationId}. (b/152696768)
- DSL Kotlin wykresu nawigacji udostępnia teraz defaultArgumentsMapdla 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 IllegalStateExceptionpodczas 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 Core1.7.2. (aosp/1282257)
Wersja 2.3.0-alpha04
18 marca 2020 r.
Publikacja androidx.navigation:navigation-*:2.3.0-alpha04 Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.
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 DynamicExtrasnie używa już wzorca konstruktora i można ją teraz tworzyć bezpośrednio. (aosp/1253671)
- Metoda DynamicActivityNavigatorprzyjmuje teraz w konstruktorze obiektContextzamiast obiektuActivity. (aosp/1250252)
Poprawki błędów
- NavigationUInie 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.
Publikacja androidx.navigation:navigation-*:2.3.0-alpha03 Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zamiast korzystać z konkretnej klasy DrawerLayout,AppBarConfigurationużywa teraz interfejsuOpenablewprowadzonego w CustomView1.1.0-alpha02(któryDrawerLayoutjest implementowany od DrawerLayout1.1.0-alpha04), co umożliwia używanie niestandardowych implementacjiOpenablezNavigationUI. (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.
Publikacja androidx.navigation:navigation-*:2.3.0-alpha02 Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- NavBackStackEntryumożliwia teraz dostęp do- SavedStateHandle, 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ć pobieranieNavBackStackEntrydla bieżących i poprzednich miejsc docelowych. (b/79672220)
Poprawki błędów
- navigateUp()przekazuje teraz argumenty bieżącego miejsca docelowego i- KEY_DEEP_LINK_INTENTdo poprzedniego miejsca docelowego podczas uruchamiania aplikacji na 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.
Publikacja androidx.navigation:navigation-*:2.3.0-alpha01  Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy artefakt navigation-testingudostępnia klasęTestNavHostController. Ta klasa stanowi alternatywę dla używania obiektu mockNavControllerpodczas 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 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-uireguły ProGuard dlaDrawerArrowDrawable, abyandroid.enableJetifier=truenie było wymagane. (b/147610424)
- W Nawigacji2.2.1: modułnavigation-common-ktxma teraz unikalną nazwę pakietu manifestu zamiast współdzielić tę samą nazwę pakietu manifestu conavigation-runtime-ktx. (aosp/1141947)
Aktualizacje zależności
- W Nawigacji: nawigacja 2.2.1zależy teraz od Lifecycle ViewModel SavedState2.2.0i Fragment1.2.1.2.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 zatwierdzenia.
Poprawki błędów
- Naprawiono IllegalStateExceptionpodczas precyzyjnego linkowania do miejsca docelowego na początku wykresu, gdy w aktywności występuje wiele instancjiNavHostFragment. (b/147378752)
- NavigationUInie 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-ktxTa 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.
Publikacja androidx.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-uiReguły ProGuard dla- DrawerArrowDrawablezostały zaktualizowane, aby zapewnić, że- android.enableJetifier=truenie jest wymagane. (b/147610424)
- Moduł navigation-common-ktxma 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.1zależy teraz od Lifecycle ViewModel SavedState2.2.0i Fragment1.2.1.
Wersja 2.2.0
Wersja 2.2.0
22 stycznia 2020 r.
Publikacja androidx.navigation:navigation-*:2.2.0  Wersja 2.2.0 zawiera te zatwierdzenia.
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 obiektNavBackStackEntryzawiera obiektLifecycleOwner,ViewModelStoreOwner(taki sam jak zwracany przezNavController.getViewModelStoreOwner()) iSavedStateRegistryOwner, a także argumenty użyte do uruchomienia tego miejsca docelowego.
- Integracja ViewModelu cyklu życia z SavedState: SavedStateViewModelFactoryjest teraz domyślną fabryką używaną podczas korzystania zby navGraphViewModels()lub konstruktoraViewModelProviderzViewModelStoreOwnerzwracanym 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: NavHostFragmentkorzysta teraz zFragmentContainerViewz 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.
Publikacja androidx.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
Publikacja androidx.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 parsowaniem precyzyjnych linków, który powodował, że parametry opcjonalne otrzymywały wartość "@null"zamiastnull. (b/141613546)
- NavHostFragmentteraz prawidłowo przywraca wykres po zmianie konfiguracji, gdy jest używany z- FragmentContainerView. (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-rc03i Fragment1.2.0-rc03w odpowiednich przypadkach.
Wersja 2.2.0-rc02
7 listopada 2019 r.
Publikacja androidx.navigation:navigation-*:2.2.0-rc02  Wersja 2.2.0-rc02 zawiera te zmiany.
Zmiany zależności
- Nawigacja zależy teraz od androidx.lifecycle2.2.0-rc02.
Wersja 2.2.0-rc01
23 października 2019 r.
androidx.navigation:navigation-*:2.2.0-rc01 została opublikowana 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.
Publikacja androidx.navigation:navigation-*:2.2.0-beta01  Wersja 2.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- NavDestinationi jego podklasy zastępują teraz- toString(), aby podczas debugowania dostarczać 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 w- Activitywyświetla teraz lepszy komunikat o błędzie, gdy nie ma dodatków. (b/141408999)
- Wygenerowane przez Safe Args klasy Java Directionszawierają teraz wartości domyślne. (b/141099045)
- Wygenerowane przez Safe Args klasy Java Argszawierają teraz wartości domyślne. (b/140123727)
- Gdy używasz Toolbar,NavigationUInie 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.
Publikacja androidx.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 numersetGraphpowoduje terazIllegalStateException. To ustawienie powinno być zawsze konfigurowane przezNavHostw ramach wstępnej konfiguracji, aby zapewnić wszystkim instancjomNavBackStackEntryspójne miejsce na dane instancjiViewModel. (aosp/1111821)
Poprawki błędów
- Naprawiono ConcurrentModificationExceptionpodczas korzystania z instancjiViewModeldołączonych do wielu różnych instancjiViewModelStorew zakresie wykresu nawigacji. (aosp/1112257)
Wersja 2.2.0-alpha02
5 września 2019 r.
Publikacja androidx.navigation:navigation-*:2.2.0-alpha02  Zatwierdzenia zawarte 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 obiektNavBackStackEntryzawiera obiektLifecycleOwner,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 NavHostFragmentdoViewPager2kończyło się niepowodzeniem z błędemIllegalArgumentException. (b/133640271)
- NavInflaternie wywołuje już niepotrzebnie funkcji- getResourceName(), co przyspiesza czas rozszerzania nawet o 40%. (b/139213740)
Wersja 2.2.0-alpha01
7 sierpnia 2019 r.
Publikacja androidx.navigation:navigation-*:2.2.0-alpha01  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- SavedStateViewModelFactoryjest teraz domyślną fabryką używaną podczas korzystania z konstruktora- by navGraphViewModels()lub- ViewModelProviderz elementem- ViewModelStoreOwnerzwróconym przez- NavController.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
- NavHostFragmentkorzysta teraz z- FragmentContainerView, 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.
Publikacja androidx.navigation:navigation-*:2.1.0  Zatwierdzenia zawarte 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-ktxlub 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, gdynavigatedo nich.NavHostFragmentdomyś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 navigateza pomocąUri, który korzysta z<deepLink>dodanego 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 elementu NavHostzostały przeniesione do klasyNavHostController, co umożliwia implementacjom łączenie elementuNavControllerz elementamiLifecycleOwner,OnBackPressedDispatcheriViewModelStore.
Wersja 2.1.0-rc01
7 sierpnia 2019 r.
Publikacja androidx.navigation:navigation-*:2.1.0-rc01  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Wycofany interfejs API getViewModelStore()na platformieNavControllerwprowadzony w2.1.0-alpha02został usunięty. (aosp/1091021)
Wersja 2.1.0-beta02
19 lipca 2019 r.
Publikacja androidx.navigation:*:2.1.0-beta02  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność jacoco, która została wprowadzona w wersji 2.1.0-beta01. (b/137782950)
Wersja 2.1.0-beta01
17 lipca 2019 r.
Publikacja androidx.navigation:*:2.1.0-beta01  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- NavigationUIanimuje teraz usuwanie przycisku Wstecz podczas korzystania z- setupWithNavController()na urządzeniu- Toolbarlub- CollapsingToolbarLayout. (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.
Publikacja androidx.navigation:*:2.1.0-alpha06  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Atrybut app:navGraphuż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 platformieNavControllerzostał wycofany na rzecz nowej metodygetViewModelStoreOwner(), która zwraca wartośćViewModelStoreOwner. (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.
Publikacja androidx.navigation:*:2.1.0-alpha05  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Interfejsy API związane z hostem w NavControllerzostały zmienione i przeniesione do nowej podklasyNavController, czyliNavHostController. (aosp/966091)
- Metoda NavControllersetHostOnBackPressedDispatcherOwner()została zastąpiona metodąsetOnBackPressedDispatcher()NavHostControlleri wymaga teraz wywołania metodysetLifecycleOwner()przed jej wywołaniem. (aosp/965409)
- NavHostControllerzawiera teraz metodę- enableOnBackPressed(boolean), która zastępuje klasę- NavHostOnBackPressedManagerzwracaną wcześniej przez- setHostOnBackPressedDispatcherOwner(). (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.
Publikacja androidx.navigation:*:2.1.0-alpha04  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- NavHostFragmentprawidłowo uwzględnia- app:defaultNavHostpodczas przechwytywania zdarzeń przycisku Wstecz systemu, co naprawia regresję w Navigation- 2.1.0-alpha03. b/132077777
- DialogFragmentNavigatorprawidłowo obsługuje teraz operacje- popBackStack()i- navigateUp(). 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.
Publikacja androidx.navigation:*:2.1.0-alpha03  Zatwierdzenia zawarte 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, które będą wyświetlaćDialogFragment, gdynavigatedo nich.NavHostFragmentdomyślnie obsługuje miejsca docelowe w oknie dialogowym. b/80267254
- Oprócz wywoływania funkcji navigateza pomocą identyfikatora zasobu lub instancjiNavDirectionsmoż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()klasyNavHostFragmentzostał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 NavDestinationdodano metodęhasDeepLink(), która umożliwia sprawdzenie, czy dany elementUrimoż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
- NavHostFragmentprzechwytuje 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:argTypejest teraz prawidłowo interpretowany jako argumentstring. b/129629192
Wersja 2.1.0-alpha02
3 kwietnia 2019 r.
Publikacja androidx.navigation:*:2.1.0-alpha02  Zatwierdzenia zawarte 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:targetPackagedo miejsca docelowego<activity>, aby ograniczyć dopasowywanie nazwy pakietu. Obsługujeapp:targetPackage="${applicationId}", aby ograniczyć pakiet do identyfikatora własnej aplikacji. b/110975456
Poprawki błędów
- Wartość android:namew 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.1iandroidx.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.instantiateFragmentzostało wycofane. Domyślna implementacja używa teraz- FragmentFactorydo 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 zawiera 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 wartości 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 bez- FLAG_ACTIVITY_NEW_TASKb/126082008
- Rozwiązanie problemu polegającego na tym, że element ActivityNavigator.applyPopAnimationsToPendingTransitionnie 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 inifun, 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 singleTopb/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ć 0jakoandroid:defaultValuew przypadku argumentówreference. b/124248602
Zmiany w działaniu
- Precyzyjne dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z dopasowaniami argumentów .*lub. b/123969518
Poprawki błędów
- Metody popBackStack()inavigateUpzwracają teraz prawidłową wartośćfalsepodczas usuwania ostatniego miejsca docelowego ze stosu wstecznego. Naprawia to błąd wprowadzony w1.0.0-beta01. b/123933201
- Nawigacja prawidłowo ustawia ClassLoaderpodczas przywracania zapisanego stanu instancji, co pozwala uniknąć problemów podczas używania klas niestandardowych wNavigatorzapisanym 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 krytyczny 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 za pomocą 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:argTypespowoduje 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
- Argumenty bezpieczne można teraz stosować 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 wszystkie kopie miejsca docelowego z góry stosu wstecznego, a nie tylko jedno miejsce docelowe naraz. b/123552990
- Rozwiązaliśmy problem, który powodował, że stan FragmentNavigatorulegał desynchronizacji ze stanemNavController, co powodowałoIllegalStateExceptionpodczas próby przywrócenia stosu wstecznego. b/123803044
- Rozwiązaliśmy problem polegający na tym, że strzałka wstecz NavigationUInie pojawiała się podczas korzystania z ProGuarda z zaciemnianiem. b/123449431
- Kod wygenerowany przez Safe Args prawidłowo obsługuje teraz używanie elementu app:argTypewskazują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 czynnościami 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 klasyNavArgswActivitylubFragment. 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 w poprzedniej wersji 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ądzeniuNavControllerspowoduje 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 tagamiNavHostFragment. 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 przez metody 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 nie mają już publicznego konstruktora – powinny być generowane tylko za pomocą metod statycznych w wygenerowanych klasach Directions. b/122963206NavDirections
- Zwrócony BundlezNavDirectionsgetArguments()jest teraz oznaczony jako@NonNullzamiast@Nullable. b/123243957
Poprawki błędów
- NavDeepLinkBuilderteraz prawidłowo obsługuje wiele jednoczesnych- PendingIntentdo tego samego miejsca docelowego, używając argumentów przekazywanych przez Ciebie w celu określenia niepowtarzalności. b/120042732
- NavControllerprawidłowo obsługuje teraz operacje- popBackStack()podczas korzystania z zagnieżdżonego elementu- NavHostFragmentlub innych fragmentów podrzędnych z listą wsteczną.b/122770335
- NavigationUIteraz prawidłowo ustawia opis treści przycisku Wstecz. b/120395362
- Wygenerowane przez Safe Args klasy Directions prawidłowo obsługują teraz działania globalne o tym samym identyfikatorze co działanie w miejscu docelowym. b/122962504
- Wygenerowane klasy Safe Args NavDirectionsmają teraz prawidłowe równe wartościhashCode(), gdyequals()zwraca wartość „true”. b/123043662
- FragmentNavigatorwyświetla teraz lepszy komunikat o błędzie, jeśli spróbujesz wykonać niestandardową- FragmentTransactionsna- NavHostFragment.- FragmentManagerZawsze używaj- getChildFragmentManager(). 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ć prac nad artefaktem 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ą biblioteki Navigation.
Nowe funkcje
- MenuItemz- menuCategory="secondary"nie będą już usuwać elementów z wstecznej listy, gdy są używane z metodami- NavigationUI. b/120104424
- AppBarConfigurationumożliwia teraz ustawienie instancji rezerwowej- OnNavigateUpListener, która będzie wywoływana, gdy- navController.navigateUp()zwróci- 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 metodami- setup. Dodaj- menuCategory="secondary"do- MenuItem, aby uniknąć wycofywania z listy wstecznej. aosp/852869
- Metody fromBundle()wygenerowanych klasArgsprzyjmują teraz wartość niezerowąBundlezamiast 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 argTypezamiast 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 NavigationUIbędą teraz automatycznie zastępować wystąpienia{argName}wandroid:labelprawidłowym argumentem. b/80267266
- Nawigacja zależy teraz od biblioteki pomocy w wersji 28.0.0 b/120293333
Zmiany powodujące niezgodność
- Nazwa OnNavigatedListenerzostała zmieniona naOnDestinationChangedListenerb/118670572
- OnDestinationChangedListenerprzekazuje teraz też- Bundleargumentów aosp/837142
- Atrybuty app:clearTaskiapp:launchDocumentoraz powiązane z nimi metody zostały usunięte. Użyjapp:popUpToz głównym węzłem wykresu, aby usunąć wszystkie miejsca docelowe ze stosu wstecznego. b/119628354
- ActivityNavigator.Extrasużywa teraz wzorca- Builderi umożliwia ustawianie dowolnych flag- Intent.FLAG_ACTIVITY_aosp/828140
- Nazwa NavController.onHandleDeepLinkzostała zmieniona nahandleDeepLinkaosp/836063
- Wiele klas i metod, które nie są przeznaczone do tworzenia podklas, np. NavOptions,NavInflater,NavDeepLinkBuilderiAppBarConfiguration, 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 NavGraphNavigatornie przyjmuje już argumentuContextaosp/835340
- NavigatorProvider jest teraz klasą, a nie interfejsem. Funkcja NavigatorProviderzwracana przezgetNavigatorProvider()nie zmieniła swojego działania. aosp/830660
- NavDestination.navigate()został(a) usunięty(a). Zadzwoń pod numer- navigate()na urządzeniu- Navigatorzamiast tego. aosp/830663
- Znaczne przekształcenie funkcji Navigator, które eliminuje konieczność używania funkcjiOnNavigatorNavigatedListener, a zamiast tego powoduje, że funkcjanavigatezwracaNavDestination, do którego nastąpiło przejście.
- Instancje Navigatornie 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
- popUpTodziała teraz spójnie, gdy miejscem docelowym jest element- <navigation>. b/116831650
- Naprawiliśmy kilka błędów, które powodowały IllegalArgumentExceptionpodczas używania zagnieżdżonych wykresów b/118713731 b/113611083 b/113346925 b/113305559
- Atrybut dataPatternmiejsc 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 @Overrideadnotacje 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 plusa. b/112806402
Zmiany powodujące niezgodność
- Moduł navigation-testing-ktxzostał włączony do modułunavigation-testing artifacti nie będzie już publikowany.
- Artefakt navigation-testingma 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ązaliśmy problem 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.
- Wybór elementu w NavigationViewspowoduje zamknięcie arkusza u dołu ekranu, 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 terazNonNullb/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 wskazówek dojazdu do miejsca docelowego w nawigacji rozszerzają teraz klasę wskazówek dojazdu 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()klas 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 kontrolera NavController b/111345778
Safe Args
- Zmiana powodująca niezgodność: app:typezostało zmienione 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 NonNullnie są w rzeczywistości wartością null b/111451769
- Do wygenerowanych klas NavDirections i Args dodano dodatkowe adnotacje NonNullb/111455455 b/111455456
Poprawki błędów
- Rozwiązaliśmy problem z systemowym przyciskiem Wstecz po przejściu do fragmentu docelowego za pomocą precyzyjnego linku 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.indexzmieni się wsetDemoControllerIndexb/79995048
- Na przykład action_show_settingszmieni się wactionShowSettingsb/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ązanie problemów z nawigacją podczas metod cyklu życia fragmentu b/109916080
- Rozwiązaliśmy problemy występujące podczas wielokrotnego przechodzenia przez zagnieżdżone wykresy b/110178671
- Rozwiązaliśmy problemy podczas korzystania z setPopUpToz pierwszym miejscem docelowym na wykresie b/109909461
- Rozwiązaliśmy problem polegający na tym, że wszystkie wartości app:defaultValuebył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:namew plikach XML nawigacji b/79874119
- Usunięto wyciek pamięci podczas zastępowania domyślnego elementu FragmentNavigator b/110900142
Wersja 1.0.0-alpha02
7 czerwca 2018 r.
Zmiany w zachowaniu
- FragmentNavigatorkorzysta teraz z usługi- setReorderingAllowed(true). b/109826220
- Nawigacja dekoduje teraz argumenty z adresów URL precyzyjnych linków. b/79982454 
Poprawki błędów
- Naprawiono błąd - IllegalStateExceptionpodczas wywoływania funkcji navigate z metod cyklu życia fragmentu. b/79632233
- Nawigacja zależy teraz od biblioteki pomocy w wersji 27.1.1, co eliminuje migotanie podczas korzystania z animacji. b/80160903 
- Naprawiono - IllegalArgumentExceptionpodczas używania domyślnego hosta nawigacji z wartością „true” jako fragmentu podrzędnego. b/79656847
- Naprawiono - StackOverflowErrorpodczas korzystania z klasy NavDeepLinkBuilder. b/109653065
- Naprawiliśmy - IllegalArgumentExceptionpodczas powrotu do zagnieżdżonego wykresu. b/80453447
- Rozwiązaliśmy problem z nakładającymi się fragmentami podczas używania - launchSingleTop. b/79407969
- Biblioteka Navigation 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 - MenuItemużywany jest zagnieżdżony wykres. b/109675998
Zmiany w interfejsie API
- Atrybut - clearTaskdla działań i powiązany z nim interfejs API w- NavOptionszostały wycofane. b/80338878
- Atrybut - launchDocumentdla działań i powiązane z nim interfejsy API w- NavOptionszostał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.
