Nawigacja
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
17 kwietnia 2024 r. | 2.7.7 | - | - | 2.8.0-alfa07 |
Deklarowanie zależności
Aby dodać zależność od nawigacji, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowy
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
Aby dodać bezpieczne argumenty do projektu, umieść w pliku build.gradle
najwyższego poziomu ten parametr classpath
:
Odlotowy
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Musisz też zastosować jedną z dwóch dostępnych wtyczek.
Aby wygenerować kod języka Java odpowiedniego dla Javy lub mieszanych modułów Java i Kotlin, dodaj ten wiersz do pliku build.gradle
aplikacji lub modułu:
Odlotowy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Aby wygenerować kod Kotlin odpowiedni dla modułów tylko w Kotlin, dodaj:
Odlotowy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Musisz mieć android.useAndroidX=true
w pliku gradle.properties
zgodnie z instrukcjami migracji do AndroidaX.
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ć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.8
Wersja 2.8.0-alfa07
17 kwietnia 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha07
została zwolniona. Wersja 2.8.0-alfa07 zawiera te zatwierdzenia.
Nowe funkcje
Dodaje nowy artefakt
navigation-fragment-compose
zawierający alternatywę typuComposableNavHostFragment
doNavHostFragment
, który umożliwia dodanie miejsc docelowychcomposable
do plików XML nawigacji. Każde miejsce docelowecomposable
musi być wyrażone jako metoda najwyższego poziomu bez argumentów@Composable
, której w pełni kwalifikowana nazwa jest używana jako atrybutandroid:name
w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc docelowych tworzony jest fragment zawierający treść kompozycyjną. (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
- Obsługa bezpiecznego argumentu w tworzeniu wiadomości w Nawigacji przy użyciu metody opartej na ciągłej serializacji Kotlina. Te interfejsy API nie zostały ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta po utworzeniu całej platformy interfejsu API w przyszłej wersji. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73, I8b73
Wersja 2.8.0-alfa06
3 kwietnia 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha06
została zwolniona. Wersja 2.8.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozpoczęła się obsługa bezpiecznych argumentów w tworzeniu wiadomości w Nawigacji przy użyciu metody opartej na serializacji Kotlin. Te interfejsy API nie zostały ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta po utworzeniu całej platformy interfejsu API w przyszłej wersji. (I644e7, I98896, I3a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, I24e41, If9e
Poprawki błędów
- W funkcji
NavHost
domyślnym argumentem jest terazAlignment.TopStart
. Pozwala to zachować zgodność z wartością domyślną funkcjiAnimatedContent
i eliminuje niektóre przypadki nieoczekiwanej skali od punktu środkowego. (I09e72, b/330111602) - Gdy przesuniesz gest przewidywania wstecz podczas korzystania z nawigacji tworzenia wiadomości,
NavHost
poprawnie uzupełni niestandardowe przejście, a nie od razu. (I99017, b/327292110)
Wersja 2.8.0-alfa05
20 marca 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha05
została zwolniona. Wersja 2.8.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz przekazywać argumenty do obiektu
startDestination
obiektuNavGraph
bezpośrednio na trasiestartDestination
bez korzystania zdefaultValue
. Dotyczy to też zagnieżdżonych obiektówNavGraph
typustartDestinations
. (I0e0b5, b/109505019, b/188693139)
Zmiany w interfejsie API
- Dodano nową abstrakcyjną klasę
CollectionNavType<T>
, która jest podklasą klasyNavType<T>
dla argumentów opartych na zbiorze, takich jak lista, tablice czy mapy. (Ic6d63, b/188693139) - Wszystkie domyślne macierze
NavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
iStringArrayType
) mają teraz typCollectionNavType
(Idcf79, b/188693139) NavType
udostępnia teraz nowy otwarty interfejs APIvalueEquals
, który określa, czy 2 wartości tego samego typu są sobie równe. (I6cb97, b/327229511)
Poprawki błędów
- Parametry zapytania w precyzyjnych linkach dopuszczają teraz wartości w postaci nawiasów klamrowych wokół nazwy argumentu (tj.
{argName}
) jako prawidłowe wartości w przypadku metodyNavTypes
opartej na ciągach znaków. Rozwiązano problem, w wyniku którego taka wartość była uznawana za nieprawidłową (lub jej brak) dla wszystkich typów. (I18302, b/327274038) - Funkcje
NavController
, które obsługują trasy takie jaknavigate
ipopBackStack
, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicyNavTypes
. (Iea805, b/327229511)
Wersja 2.8.0-alfa04
6 marca 2024 roku
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha04
została zwolniona. Wersja 2.8.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz określić
SizeTranform
dla przejść w nawigacji tworzenia wiadomości, definiując je w ramach inicjowania funkcjicomposable
lubnavigation
. (I91062, b/296912651)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
NavHost
w Nawigacji tworzenia wiadomości nie wyświetlała prawidłowo przejścia podczas korzystania z systemu Wstecz bez gestu. (Iceeae, b/325998468)
Wersja 2.8.0-alfa03
21 lutego 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha03
została zwolniona. Wersja 2.8.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Czat
NavBackStackEntry.savedStateHandle
jest teraz oznaczony jako@MainThread
, ponieważ używa kodu, który i tak musi znajdować się w wątku głównym. (Ibb988, b/299523245)
Poprawki błędów
- Naprawiono błąd w Nawigacji, który powodował, że widoki modeli
NavGraph
były zbyt szybko ustawione naDESTROYED
, ponieważ powiązany wpisViewModel
nie był częścią zapisanego stanu. (Ib6bb7, b/317581849)
Aktualizacja zależności
- Tworzenie wiadomości w Nawigacji zależy teraz od trybu Utwórz w wersji 1.7.0-alfa03.
Wersja 2.8.0-alfa02
7 lutego 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha02
została zwolniona. Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Nawigacja w tworzeniu wiadomości zapewnia teraz obsługę funkcji przewidywania w aplikacji przez nowe interfejsy API
SeekableTransitionState
firmy compose-animation. Dzięki temu możesz używać gestu cofania, aby zobaczyć poprzednie miejsce docelowe z niestandardowym przejściem, zanim zdecydujesz, czy chcesz sfinalizować transakcję, wykonując gest czy anulować, czy też anulować. (I8b8e9)
Wersja 2.8.0-alfa01
24 stycznia 2024 r.
Aplikacja androidx.navigation:navigation-*:2.8.0-alpha01
została zwolniona. Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono wyciek błędu
BackStackState
, w wyniku którego wiele wywołańsaveState
w miejscu docelowym powodowało zapisanie wielu stanów, ale udało się przywrócić tylko pierwsze z nich. (I598b0, b/309559751) - Naprawiono błąd, który powodował, że argumenty inne niż ciąg znaków nie były prawidłowo wyświetlane podczas wypełniania tytułów pasków aplikacji za pomocą pomocników
NavigationUI
. (#636, b/316676794)
Aktualizacja zależności
- Tworzenie wiadomości w nawigacji zależy teraz od tego, czy funkcja Utwórz
1.7.0-alpha01
rozwiązuje problem, który mógł spowodować nieoczekiwaną animację skali. (b/297258205)
Wkład z zewnątrz
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciąg znaków podczas używania pomocników
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.7
Wersja 2.7.7
7 lutego 2024 r.
Aplikacja androidx.navigation:navigation-*:2.7.7
została zwolniona. Wersja 2.7.7 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto z Nawigacji
2.8.0-alpha01
: naprawiono wyciekBackStackState
, w którym wiele wywołańsaveState()
w jednym elemencieNavBackStackEntry
powodowało zapisanie kilku stanów, ale przywrócono tylko pierwszy zapisany stan. (I598b0, b/309559751) - Usunięto z Nawigacji
2.8.0-alpha01
: rozwiązaliśmy problem, który powodował, że argumenty inne niż ciąg znaków nie były prawidłowo wyświetlane podczas wypełniania tytułów pasków aplikacji za pomocą elementów pomocniczychNavigationUI
. (#636, b/316676794)
Wkład z zewnątrz
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciąg znaków podczas używania pomocników
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.6
Wersja 2.7.6
13 grudnia 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.6
została zwolniona. Wersja 2.7.6 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
NavGraph
equals()
prawidłowo uwzględnia teraz węzły innego wykresu, a nie tylko ten wywołujący. Dzięki temu wykresy zawierające węzły o różnych identyfikatorach nie będą już uznawane za takie same (I401cb, b/311414915).
Wersja 2.7.5
Wersja 2.7.5
1 listopada 2023 roku
Aplikacja androidx.navigation:navigation-*:2.7.5
została zwolniona. Wersja 2.7.5 zawiera te zatwierdzenia.
Ulepszenia wydajności
- Znacznie poprawiła wydajność porównania dwóch wykresów (zarówno pod względem czasu, jak i liczby przydziałów). Oznacza to, że wywołania takie jak
setGraph
, które wewnętrznie porównują nowy wykres z istniejącym, są znacznie szybsze i zmniejszają liczbę pomijanych klatek. Dziękujemy Michałowi Z za szczegółową analizę, która pozwoliła na to ulepszenie. (I6ad62) NavHost
będzie teraz renderować miejsce docelowe początkowego w ramach pierwszej karnetu kompozycji, zamiast czekać na zakończenie odczytu przez drugi bilet. (I439a7, b/304852206)
Poprawki błędów
- Naprawiono błąd polegający na tym, że po wywołaniu funkcji
setGraph
więcej niż raz z dokładnie tym samym wykresem pojawiało się wyskakujące okienko, tylko w przypadku, gdy miejsce docelowe na wykresie zawierało działanie łączące dwa miejsca docelowe. (Ieaed7) - Okna, do których przekierowano i zamknięto w krótkiej kolejności, nie będą już trafiać na listę elementu
NavController.visibleEntries
. (I67586, b/287969970) - Gdy wpis zostanie wypełniony, a następnie zmieni się konfiguracja,
ViewModel
wpisu zostanie teraz prawidłowo wyczyszczony, jeśli wartośćsaveState
ma wartość false (fałsz). (Idf242, b/298164648) - Naprawiono błąd, który powodował, że funkcja
NavController
obsługiwała ten sam precyzyjny link więcej niż raz, jeśli stos wsteczny był całkowicie pusty przed zmianą konfiguracji lub wywoływał metodęsetGraph
tylko wtedy, gdy intencja przychodzący miał ustawioną flagęFLAG_ACTIVITY_NEW_TASK
. (I73c7f)
Aktualizacje zależności
- Nawigacja z użyciem fragmentów kodu zależy teraz od fragmentu 1.6.2, przez co naprawiono problem, który powodował, że wystąpienia zagnieżdżonych fragmentów
ViewModel
nie były czyszczone podczas wywoływaniaclearBackStack
.
Wersja 2.7.4
Wersja 2.7.4
4 października 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.4
została zwolniona. Wersja 2.7.4 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę trasy
popUpTo
z argumentami umożliwiającymi powrót do określonego wpisu, który używa tych konkretnych argumentów, co pasuje do obsługipopBackStack
. (I731f4, b/299255572)
Poprawki błędów
- Rozwiąż problem, który powodował, że przerwanie innej nawigacji w aplikacji
popUpTo
powodowało awarię aplikacjiFragmentNavigator
. (I3c848, b/301887045) - Rozwiązaliśmy problem polegający na tym, że naciśnięcie systemu wstecznego powodowało, że
currentDestination
nie był prawidłowo aktualizowany tak, aby pasował do wyświetlanego fragmentu. (Id0d6c, b/289877514) - Cykl życia elementu
DialogFragment
zostanie teraz prawidłowo przeniesiony do stanuRESUMED
po zamknięciu okna nad nim. (I88f0d, b/301811387)
Wersja 2.7.3
Wersja 2.7.3
20 września 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.3
została zwolniona. Wersja 2.7.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd w Nawigacji dotyczący fragmentów kodu, który powodował, że lista
visibleEntries
zawierała nieprawidłowe wpisy. (I5caa9, b/288520638) - Rozwiązaliśmy problem, który powodował, że miejsce docelowe w pływającej oknie (np.
Dialogs
,Bottomsheets
itp.) nie otrzymuje wywołania zwrotnego cyklu życia produktuRESUMED
. (I3b866, b/287505132)
Wersja 2.7.2
Wersja 2.7.2
6 września 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.2
została zwolniona. Wersja 2.7.2 zawiera te zatwierdzenia.
Poprawki błędów
- Nawigacja zależy teraz od Cykl życia
2.6.2
, przez co naprawiono interakcję międzyrememberSaveable
a elementemNavHost
funkcji nawigacyjnej tworzenia wiadomości, która spowodowałaby poprawne przywrócenie stanurememberSaveable
miejsc docelowych i instancjiSavedStateHandle
należących doViewModel
po śmierci i przywróceniu procesu. (b/298059596, b/289436035) - Naprawiono błąd polegający na tym, że w jednoczesnym widoku wielu okien dialogowych w nawigacji tworzenia wiadomości (np. niewidoczne na samej górze) znajdowały się okna w stanie
CREATED
, a nieSTARTED
. (Aosp/2728520, b/289257213) - Naprawiono błąd związany z jednoczesnym wyświetlaniem wielu okien dialogowych w ramach tworzenia Nawigacji. Zamknięcie najwyższego poziomu okna powodowało, że nowe okno najwyższego poziomu zatrzymywało się w stanie cyklu życia
STARTED
zamiast poprawnego przenoszenia doRESUMED
. (Aosp/2629401, b/286371387) - Args bezpiecznego nawigacji nie tworzy już instancji zadania z zainteresowaniem, jeśli nie jest ono rzeczywiście wykonywane. (I0e385, b/260322841)
Aktualizacja zależności
- Nawigacja i tworzenie wiadomości zależy teraz od funkcji Utwórz w wersji 1.5.1.
Wersja 2.7.1
Wersja 2.7.1
23 sierpnia 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.1
została zwolniona. Wersja 2.7.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z nawigacją przy tworzeniu wiadomości, który powodował, że podczas korzystania z interfejsu
Scaffold
podczas próby uzyskania dostępu do elementuViewModel
wLifecycle.State.DESTROYED
mógł pojawiać się błąd. (I1dc11, b/268422136)
Wersja 2.7.0
Wersja 2.7.0
9 sierpnia 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.0
została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.6.0
Animacje od Accompanist
AnimatedContent
jest już stabilny, więc mogliśmy przenieść kod z animacji nawigacji Accompanist z powrotem do samego tworzenia nawigacji.
Oznacza to, że wszystkie funkcje przenoszenia niestandardowych, które wcześniej były dostępne w AnimatedNavHost
, są bezpośrednio obsługiwane w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist i wkrótce ją wycofamy wraz ze wskazówkami dotyczącymi powrotu do interfejsu Nawigacja. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa aplikacji Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)
Poprawki błędów
- NavHost w interfejsie Navigation Compose prawidłowo przechwytuje teraz połączenia zwrotne systemu, nawet jeśli działanie zostało ZATRZYMANE i WZNÓWNE. (Icb6de, b/279118447)
Aktualizacje zależności
- Nawigacja zależy teraz od funkcji Utwórz
1.5.0
w okresie od1.1.0
.
Wersja 2.7.0-rc01
26 lipca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.0-rc01
została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że lambda
EnterTransition
iExitTransition
utworzone w ramach funkcjiNavHost
mogły potencjalnie pozostawać w pamięci nawet po usunięciu elementuNavHost
z kompozycji. (I893d0)
Znane problemy
- W Nawigacji 2.6.x występuje problem, który polega na tym, że podczas nawigowania z wykorzystaniem popUpTo może spowodować wyświetlenie interfejsu
IllegalArgumentException
. Tego wyjątku można uniknąć, zmieniając strukturę wykresu zgodnie ze wskazówkami podanymi tutaj. (b/287133013)
Wersja 2.7.0-beta02
28 czerwca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.0-beta02
została zwolniona. Wersja 2.7.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja tworzenia wiadomości w Nawigacji ma teraz właściwą kolejność w kolejności niestandardowych przejść, z których korzysta się przy użyciu opcji
popUpTo
(/Ib1c3a, b/285153947).
Wersja 2.7.0-beta01
7 czerwca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.0-beta01
została zwolniona. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
NavHost
w funkcji tworzenia wiadomości w nawigacji prawidłowo przechwytuje teraz połączenia zwrotne systemowe, nawet jeśliActivity
ma wartośćSTOPPED
iRESUMED
. (Icb6de, b/279118447)
Wersja 2.7.0-alfa01
24 maja 2023 r.
Aplikacja androidx.navigation:navigation-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.
Animacje od Accompanist
AnimatedContent
jest już stabilny, więc mogliśmy przenieść kod z animacji nawigacji Accompanist z powrotem do samego tworzenia nawigacji.
Oznacza to, że wszystkie funkcje przenoszenia niestandardowych, które wcześniej były dostępne w AnimatedNavHost
, są bezpośrednio obsługiwane w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist i wkrótce ją wycofamy wraz ze wskazówkami dotyczącymi powrotu do interfejsu Nawigacja. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa aplikacji Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)
Poprawki błędów
- Z obszaru Nawigacja
2.6.0-rc02
: usunięto problem z nawigacją we fragmentach, który powodował, że nawigowanie za pomocą opcjipopUpTo
i wyrwanie fragmentu z wstecznego stosu bez odtworzenia widoku powodowało powrót systemu do działania. (Ieb8d4, b/281726455)
Aktualizacje zależności
- Nawigacja zależy teraz od opcji Utwórz
1.5.0-beta01
.
Wersja 2.6.0
Wersja 2.6.0
7 czerwca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany w nawigacji wprowadzone od wersji 2.5.0
- Metody
arguments
używane wNavBackStackEntry
iarguments
przekazywane doOnDestinationChangedListener
są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przejścia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne w kolejnych wystąpieniach usługiarguments
lubOnDestinationChangedListener
. NavDeepLink
obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które zostaną zmapowane na typ tablicy argumentu.NavType
zawiera też teraz metodę domyślną, którą można zastąpić, by połączyć 2 przeanalizowane wartości.- Niestandardowe podklasy
NavType
mogą teraz zastąpić typserializeAsValue
, aby zserializować wartość w ciągu znaków. Dzięki temu zarówno serializacja, jak i deserializacja (za pomocąparseValue
) mogą być całkowicie zawarte w klasieNavType
. MetodaStringType
zastępuje teraz tę metodę, aby wywoływać metodęUri.encode
na określonym obiekcieString
.
Ważne zmiany w tworzeniu wiadomości w nawigacji wprowadzone od wersji 2.5.0
- Podczas wyświetlania podglądu elementu kompozycyjnego z
NavHost
domyślnie pokazuje sięstartDestination
wykresu nawigacyjnego. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
obsługują teraz trasy z argumentami wypełnionymi częściowo lub w pełni. Pamiętaj, że argumenty muszą być dokładnie dopasowane do argumentów wpisu.- Próba utworzenia pustego elementu
NavDeepLink
przy użyciu DSLnavDeepLink
Kotlin spowoduje teraz wyświetlenie ostrzeżenia o lintowaniu wskazującego, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME.
Ważne zmiany w nawigacji z fragmentami kodu wprowadzone od wersji 2.5.0
NavHostFragment
nie przechwytuje już samego systemowego przycisku Wstecz. Dzięki temu bazowyFragmentManager
może obsługiwać system z powrotem. Dzięki temu Fragment1.7.0-alpha01
i wyższe wersje mogą generować animację przewidywanego przejścia wstecz w aplikacji na urządzeniach z Androidem U.- Próba ręcznego wykonania funkcji
FragmentTransaction
, która dodaje fragment do stosu wstecznego obiektuFragmentManager
, podczas korzystania z nawigacji z fragmentami powoduje teraz wystąpienie błęduIllegalArgumentException
. Zawsze dodawaj fragmenty za pomocą interfejsu APInavigate()
. - Jeśli używasz dokładnego ciągu
${applicationId}
jako symbolu zastępczego w atrybutachapp:data
iapp:dataPattern
w elemencie aktywności pliku XML nawigacyjnych, po inflacji zmienna zostanie automatycznie wypełniona wartościąpackageName
kontekstu. - Podczas poruszania się i wyświetlania
NavBackStackEntries
interfejsFragmentNavigator
używa teraz interfejsów API przenoszenia. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie czekać na zakończenie efektów specjalnych wejścia i wyjścia, zanim przeniesiesz końcowy elementLifecycle.State
. - Podczas poruszania się i wyświetlania
NavBackStackEntries
interfejsDialogFragmentNavigator
używa teraz interfejsów API przenoszenia. Oznacza to, żeLifecycle
NavBackStackEntry
będzie czekać, ażDialogFragment
Lifecycle
przejdzie doDESTROYED
, zanim przejdzie do samejDESTROYED
. NavHostFragment
umożliwia teraz pobranieNavController
, gdy tylkoNavHostFragment
zostanie dołączony doFragmentManager
, a nie dopiero poonCreate()
.- Obsługa modułów funkcji dynamicznych w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery.
- Bezpieczne argumenty nawigacji zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że są one obecnie zgodne tylko z wersjami 7.3.0 i nowszymi.
Ważne zmiany w interfejsie NavigationUI wprowadzone od wersji 2.5.0
- Podczas przekazywania identyfikatora wykresu nawigacyjnego do funkcji
AppBarConfiguration
(np. za pomocąMenu
)NavigationUI
traktuje teraz tylko początkowe miejsce docelowe na wykresie nawigacyjnym jako miejsce docelowe najwyższego poziomu i nie oznacza nieprawidłowo każdego miejsca docelowego na wykresie jako miejsca docelowego najwyższego poziomu. Sposób przekazywania identyfikatora konkretnego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. - Integracje
setupWithNavController
w usłudzeNavigationUI
na potrzeby pracy z górnym paskiem aplikacji będą teraz analizować wartościR.string
dla argumentówReferenceType
znalezionych wandroid:label
jako wartości ciągów zamiast wyświetlać automatycznie wygenerowaną liczbę całkowitą zasobu. NavigationUI
udostępnia teraz dzienniki, gdy nie uda się przejść przez wybrany adresMenuItem
.
Wersja 2.6.0-rc02
24 maja 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-rc02
została zwolniona. Wersja 2.6.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z nawigacją we fragmentach, który powodował, że nawigowanie za pomocą funkcji
popUpTo
i wysuwanie fragmentu z tylnego stosu bez odtworzenia widoku powodowało powrót do działania systemu. (Ieb8d4, b/281726455)
Wersja 2.6.0-rc01
10 maja 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-rc01
została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd w Nawigacji zawierający fragmenty, które powodowały, że usunięcie fragmentu w trakcie nawigowania z użyciem funkcji
popUpTo
w wywołaniu zwrotnym cyklu życiaonResume()
powodowało wyświetlenie błęduIllegalStateException
. (I21884, b/279644470)
Wersja 2.6.0-beta01
19 kwietnia 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-beta01
została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
NavBackStackEntry
udostępnia teraz niestandardową implementację interfejsutoString
. (Iff00b)
Poprawki błędów
- Próba ręcznego wykonania funkcji
FragmentTransaction
, która dodaje fragment do stosu wstecznego obiektuFragmentManager
, podczas korzystania z nawigacji z fragmentami powoduje teraz wystąpienie błęduIllegalArgumentException
. Zawsze dodawaj fragmenty za pomocą interfejsu APInavigate()
. (I6d38e) - Jeśli element
navigate
dodaje wpis i elementpopBackStack
, który usuwa go w tej samej ramce, wynikowa pozycja na górze stosu wstecznego będzie konsekwentnie ponownie umieszczać ją w kolumnieLifecycle.State
RESUMED
. (Id8067, b/276495952)
Wersja 2.6.0-alfa09
5 kwietnia 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha09
została zwolniona. Wersja 2.6.0-alpha09 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono nieprawidłowe sprawdzanie trasy. Jeśli
NavDestination
zawiera niedopuszczalne wartościNavArgument
, trasa tego miejsca docelowego musi zawierać obiekty zastępcze argumentów o takiej samej nazwie jak niedopuszczalna wartośćNavArgument
. (Ic62bf, b/274697949) - Nawigacje po precyzyjnych linkach oparte na
Action/MimeType
będą teraz kończyć się niepowodzeniem, jeśli w operacji nawigacji brakuje nie wartościowego elementuNavArgument
wymaganego przez parametrNavDestination
, do którego pasuje elementAction/MimeType
. (Ibfa17, b/271777424) - Gdy
NavController
ustawia wykres z tą samą trasą i miejscami docelowymi co poprzedni wykres, teraz prawidłowo zastępuje bieżące węzły wykresu i miejsca docelowe stosu wstecznego nowymi instancjami. Rozwiązuje to awarię, która występowała podczas korzystania zonLaunchSingleTop
bez zapisywania stanu w sekcji tworzenia wiadomości w nawigacji. Naprawia to również błąd związany z przechodzeniem do miejsc docelowych powiązanych z kompilacją wykresu głównego i nieprawidłowym stosem wstecznym. (I5bc58, b/275258161, b/275407804)
Wersja 2.6.0-alfa08
22 marca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha08
została zwolniona. Wersja 2.6.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
NavHostFragment
umożliwia teraz pobranieNavController
, gdy tylkoNavHostFragment
zostanie dołączony doFragmentManager
, a nie dopiero poonCreate()
. (Ic6382, b/220186282)
Poprawki błędów
- Naprawiono błąd
NullPointerException
podczas wywoływania zagnieżdżonego wykresu zawierającego argument niedopuszczający wartości null. (6b3581, b/249988437) - Gdy powrócisz do systemu po wykonaniu nawigacji za pomocą przycisku
popUpTo
, stan elementuNavController
wyświetli się w prawidłowym miejscu. (I3a8ec, b/270447657) FragmentNavigator
będzie teraz poprawnie wyświetlać wpisy, gdy stos wsteczny zostanie przesunięty przez system wstecz lubpopBackStack()
, a także, czy transakcja korzysta z efektów dla danego fragmentu. (I81bdf)- Dodanie fragmentów do komponentu
FragmentManager
obiektuFragmentNavigator
bez użycia nawigacji nie będzie już powodować awarii. (b17204, b/274167493)
Aktualizacje zależności
- Nawigacja zależy teraz od cyklu życia
2.6.1
. (586fe7) - Nawigacja zależy teraz od stanu SavedState
1.2.1
. (078e4e) - Nawigacja zależy teraz od programu ProfileInstaller
1.3.0
. (512f0c)
Wersja 2.6.0-alfa07
8 marca 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha07
została zwolniona. Wersja 2.6.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Warianty interfejsów API
getBackStackEntry
,popBackStack
iclearBackStack
, które przyjmują trasy, przyjmują teraz wzorce tras z argumentami z wartościami null i parametrami zapytania z wartością null (I22294, b/269302500). - Rozwiązaliśmy problem, który powodował, że wywołanie metody
clearBackStack()
z metodyNavController
nie wyczyściło zapisanego stanu w menedżerze fragmentów powiązanym z wyczyszczonym stosem wstecznym. (Ic1cce, b/271190202) - Naprawiliśmy regresję w wersjach 2.6.0–alfa06, która powodowała podświetlenie nieprawidłowego elementu
MenuItem
wBottomNavigationView
podczas używania systemu z powrotem między kartami. (I634f6, b/270447657) - Poprawiono regresję w wersji 2.6.0–alfa06, która powodowała, że podczas korzystania z komponentów
Animation
komponentyNavBackStackEntry
nie były przenoszone do stanu WZNÓW. (Ib3589, b/269646882)
Wersja 2.6.0-alfa06
22 lutego 2023 roku
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha06
została zwolniona. Wersja 2.6.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas wyświetlania podglądu elementu kompozycyjnego z
NavHost
domyślnie pokazuje sięstartDestination
wykresu nawigacyjnego. (I2b89f)
Zmiany w interfejsie API
- Wszystkie przeciążenia typu
navigate
(NavController
) są teraz oznaczone adnotacją@MainThread
, aby upewnić się, że są wywoływane w wątku głównym. (I2c0b0, b/263427111)
Poprawki błędów
- Usunięto awarię, która występowała podczas próby nawigacji podczas korzystania z nawigacji po fragmentach dynamicznych. (I3ee29, b/268360479)
- Naprawiono błąd polegający na tym, że przejście do innego fragmentu za pomocą systemowego przycisku Wstecz nie powoduje zaktualizowania dolnego paska na właściwym wybranym elemencie (If559f, b/269044426)
Znane problemy
- Gdy używasz nawigacji z fragmentami, cykl życia obiektu
NavBackStackEntry
nie osiąga proguRESUMED
przy korzystaniu z interfejsów APIAnimation
. (b/269646882) - Jeśli podczas korzystania z nawigacji z użyciem fragmentów i nawigacji za pomocą funkcji
BottomNavigation
spróbujesz przywrócić stos wsteczny z wieloma wpisami, wartośćBottomMenuItem
nie zostanie poprawnie zaktualizowana. (b/270447657) - W przypadku korzystania z nawigacji z fragmentami kodu po przywróceniu stanu
NavBackStackEntry
Lifecycle
nie pobieraDESTROYED
, gdy jego fragment ma wartośćDESTROYED
. (b/270610768)
Wersja 2.6.0-alfa05
8 lutego 2023 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha05
została zwolniona. Wersja 2.6.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
obsługują teraz trasy z argumentami wypełnionymi częściowo lub w pełni. Pamiętaj, że argumenty muszą być dokładnie dopasowane do argumentów wpisu. (Iebd28, Ic678c, I3b37b, b/257514373)- Podczas poruszania się i wyświetlania
NavBackStackEntries
interfejsFragmentNavigator
używa teraz interfejsów API przenoszenia. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie czekać na zakończenie efektów specjalnych wejścia i wyjścia, zanim przeniesiesz końcowy elementLifecycle.State
. (I3cb19, b/238686802) - Podczas poruszania się i wyświetlania
NavBackStackEntries
interfejsDialogFragmentNavigator
używa teraz interfejsów API przenoszenia. Oznacza to, żeLifecycle
NavBackStackEntry
będzie czekać, ażDialogFragment
Lifecycle
przejdzie doDESTROYED
, zanim przejdzie do samejDESTROYED
. (I53ee5, b/261213893)
Zmiany w interfejsie API
NavigatorState
udostępnia teraz interfejs APIprepareForTransition
, który umożliwiaNavigator
przenoszenieNavBackStackEntries
do pośrednich komponentówLifecycle.State
. (I42c21, b/238686802)- Za pomocą usługi
backstack
możesz teraz uzyskać dostęp do stosu wstecznego powiązanego z elementemNavGraphNavigator
lubComposeNavigator
.ComposeNavigator
udostępnia teraz także wywołanie zwrotneonTransitionComplete()
, aby oznaczyć jako zakończoną operacjęNavBackStackEntry
, która wykonała nawigację lub operacjępopBackStack
. (I02062, I718db, b/257519195)
Poprawki błędów
- Podczas używania interfejsów API
push/popWithTransition
, a wpis jest już obsługiwany, stan nawigacji będzie teraz niedostępny. (Iadbfa, b/261213893) - Gdy używasz funkcji
launchSingleTop
z zagnieżdżonymNavGraph
, wszystkie miejsca docelowe od pierwotnego miejsca docelowego dostartDestination
zostaną prawidłowo dodane tylko na początku stosu. (Id4bea, b/253256629) - Nawigacja będzie teraz prawidłowo zastąpić instancję
DialogFragment
podczas nawigacji do tego samego miejsca docelowego z flagąlaunchSingleTop
ustawioną na „prawda”. (I45b5a, b/149572817) - Nawigacja SafeArgs nie będzie już powodować błędu kompilacji w przypadku używania argumentów mających dokładnie 19 znaków. (Id60bc, b/257110095)
Wersja 2.6.0-alfa04
9 listopada 2022 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha04
została zwolniona. Wersja 2.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Niestandardowe podklasy
NavType
mogą teraz zastąpić typserializeAsValue
, aby zserializować wartość w ciągu znaków. Dzięki temu zarówno serializacja, jak i deserializacja (za pomocąparseValue
) mogą być całkowicie zawarte w klasieNavType
. MetodaStringType
zastępuje teraz tę metodę, aby wywoływać metodęUri.encode
na określonym obiekcieString
. (Ie5213, b/247637434) NavigationUI
udostępnia teraz dzienniki, gdy nie uda się przejść przez wybrany adresMenuItem
. (I2af5a, b/247730357)
Poprawki błędów
- Precyzyjne linki nawigacyjne są teraz analizowane leniwie, a nie inicjowane na wykresie, co może poprawić wydajność aplikacji podczas uruchamiania. (Iab0ab)
- Naprawiono awarię powodowaną przez nawigację po precyzyjnym linku do miejsca docelowego z pustymi domyślnymi argumentami. (I51c24, b/243183636)
Aktualizacja zależności
- Obsługa modułów funkcji dynamicznych w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery. (Ib4ddc)
- Bezpieczne argumenty nawigacji zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że są one obecnie zgodne tylko z wersjami 7.3.0 i nowszymi (I47e49).
Wersja 2.6.0-alfa03
24 października 2022 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Z nawigacji
2.5.3
:NavHost
nie będzie już powodować pojawienia sięNoSuchElementException
, gdy nie ma miejsca docelowego do utworzenia elementuCrossfade
. Pomija teraz kompozycję. (Ieb46e, b/253299416) - Z poziomu nawigacji
2.5.3
: usunięto problem, który polegał na tym, że zapisany stan tworzenia (np. zastosowaniarememberSaveable
) nie był zapomniany i był usuwany po usunięciu miejsca docelowego poza stos wstecz. (I64949)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.5.4
. (Icd424)
Wersja 2.6.0-alfa02
5 października 2022 r.
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w działaniu
- Podczas przekazywania identyfikatora wykresu nawigacyjnego do funkcji
AppBarConfiguration
(np. za pomocąMenu
)NavigationUI
traktuje teraz tylko początkowe miejsce docelowe na wykresie nawigacyjnym jako miejsce docelowe najwyższego poziomu i nie oznacza nieprawidłowo każdego miejsca docelowego na wykresie jako miejsca docelowego najwyższego poziomu. Sposób przekazywania identyfikatora konkretnego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. (Ie936e, b/238496771)
Poprawki błędów
- Komponent
navigation:navigation-fragment
zależy teraz od fragmentu w wersji1.5.2
. (I00ba4) - Wybrana pozycja menu nie będzie już aktualizowana podczas przechodzenia do miejsca docelowego w usłudze
FloatingWindow
, np. okna dialogowego. (I4cde8, b/240308330)
Wersja 2.6.0-alfa01
7 września 2022 roku
Aplikacja androidx.navigation:navigation-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Integracje
setupWithNavController
w usłudzeNavigationUI
na potrzeby pracy z górnym paskiem aplikacji będą teraz analizować wartościR.string
dla argumentówReferenceType
znalezionych wandroid:label
jako wartości ciągów zamiast wyświetlać automatycznie wygenerowaną liczbę całkowitą zasobu. (I5f803, b/167959935) NavDeepLink
obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które zostaną zmapowane na typ tablicy argumentu.NavType
zawiera też teraz metodę domyślną, którą można zastąpić, by połączyć 2 przeanalizowane wartości. (Id68c3, b/209977108)- Jeśli używasz dokładnego ciągu
${applicationId}
jako symbolu zastępczego w atrybutachapp:data
iapp:dataPattern
w elemencie aktywności pliku XML nawigacyjnych, po inflacji zmienna zostanie automatycznie wypełniona wartościąpackageName
kontekstu. (Iaabde, b/234223561) - Próba utworzenia pustego elementu
NavDeepLink
przy użyciu DSLnavDeepLink
Kotlin spowoduje teraz wyświetlenie ostrzeżenia o lintowaniu wskazującego, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME. (I08d2f, b/154038883)
Zmiany w interfejsie API
- Dodaliśmy nową funkcję rozszerzenia
NavDestination
, która umożliwia analizowanie etykiet dynamicznych z argumentami w postaciandroid:label="{arg}"
w ciągu znaków. Obsługuje argumentyReferenceType
przez analizowanie wartościR.string
w ich wartości ciągów. (I07d89, b/236269380)
Zmiany w działaniu
- Wartości
arguments
NavBackStackEntry iarguments
przekazywane doOnDestinationChangedListener
są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przejścia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne w kolejnych wystąpieniach usługiarguments
lubOnDestinationChangedListener
. (I676f5)
Poprawki błędów
- Z poziomu Nawigacji
2.5.2
: dynamiczna nawigacja przed przejściem do nich teraz próbuje zainstalować miejsca docelowe aktywności z innych modułów. (Ia2c16, b/240292838) - Z poziomu Nawigacja
2.5.2
: nawigacja prawidłowo zastępuje wystąpienie Fragment podczas nawigowania do tego samego miejsca docelowego i ustawiania flagilaunchSingleTop
na wartość true. (I5a2f1, b/237374580) - Z poziomu Nawigacji
2.5.2
: usunięto błądIllegalStateException
spowodowany przejściem do podwójnie zagnieżdżonego wykresu, który współużytkuje element nadrzędny z nowym miejscem docelowym w wyskakującym okienku. (I9f7cb, b/243778589)
Wersja 2.5
Wersja 2.5.3
24 października 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.3
została zwolniona. Wersja 2.5.3 zawiera te zatwierdzenia.
Poprawki błędów
NavHost
nie będzie już powodować działaniaNoSuchElementException
, gdy nie ma dostępnego miejsca docelowego do utworzeniaCrossfade
. Pomija teraz kompozycję. (Ieb46e, b/253299416)- Rozwiązaliśmy problem, który powodował, że zapisane informacje o stanie tworzenia (np. przypadki użycia
rememberSaveable
) nie były zapomniane i były usuwane po usunięciu miejsca docelowego poza stos. (I64949)
Wersja 2.5.2
7 września 2022 roku
Aplikacja androidx.navigation:navigation-*:2.5.2
została zwolniona. Wersja 2.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dynamiczna nawigacja próbuje teraz prawidłowo zainstalować miejsca docelowe aktywności z innych modułów, zanim je otworzy. (Ia2c16, b/240292838)
- Teraz nawigacja prawidłowo zastąpi instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi
launchSingleTop
na wartość true. (I5a2f1, b/237374580) - Naprawiono błąd
IllegalStateException
powodowany przez przejście do podwójnie zagnieżdżonego wykresu, który ma element nadrzędny z nowym miejscem docelowym w wyskakującym okienku. (I9f7cb, b/243778589)
Aktualizacja zależności
- Nawigacja
2.5.2
zależy teraz od fragmentu1.5.2
. (Aosp/2178734)
Wersja 2.5.1
27 lipca 2022 roku
Aplikacja androidx.navigation:navigation-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Gdy używasz niestandardowych typów argumentów zapisanych w funkcji
Bundle
,Navigation Safe Args
nie będzie już powodować ostrzeżeń o wycofaniu w wygenerowanych klasach. (Id86ed, b/237725966)
Aktualizacje zależności
- Biblioteka nawigacji jest teraz zależna od cyklu życia
2.5.1
. (Ib4451) - Biblioteka nawigacji zależy teraz od aktywności
1.5.1
. (I3efe8) - Biblioteka nawigacji korzysta teraz z fragmentu
1.5.1
. (I56177)
Wersja 2.5.0
29 czerwca 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
- Integracja dodatku do tworzenia –
Navigation
ma teraz możliwość dostarczania bezstanowego elementuViewModelProvider.Factory
za pomocą funkcjiCreationExtras
w cyklu życia2.5.0
.
Nawigacja (SafeArgs)
Navigation Safe Args
uaktualnił(a) zależnośćAndroid Gradle Plugin
w zależności od interfejsu7.0.4
, zmniejszając zgodność wersji AGP przed7.0
.- Dodaliśmy obsługę atrybutu build.gradle w przestrzeni nazw, który ma być używany zamiast atrybutu applicationId.
Inne zmiany
- Interfejs API
visibleEntries
nie jest już eksperymentalny i udostępnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie z zasadąNavController
.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0-rc02
została zwolniona. Wersja 2.5.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem powodujący awarię powodowaną przez szybkie przełączanie między dolnymi miejscami docelowymi podczas korzystania z funkcji tworzenia wiadomości w nawigacji (
NavHost
). (I3979a, b/234054916) Navigation SafeArgs
nie będzie już ulegał awarii, gdy użyjeszapplicationIdSuffix
i przestrzeni nazw bezapplicationId
lub gdyapplicationId
i przestrzeń nazw będą się różnić. (I754b1, b/233119646)NavArgument
ma teraz niestandardową funkcjętoString()
, która wyświetla wewnętrzne wartości argumentu. (I900a8)
Wersja 2.5.0-rc01
11 maja 2022 roku
Aplikacja androidx.navigation:navigation-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową regułę lintowania ostrzegającą przed umieszczeniem elementów
<deeplink>
wewnątrz elementów<activity>
w plikunavigation.xml
.(Ic15a5, b/178403185)
Poprawki błędów
- Zakresy kompozycyjne w
NavHost
iDialogHost
są teraz rozmieszczone w oczekiwanej kolejności, np. wewnętrzne zakresy kompozycyjne są usuwane przed zewnętrznymi elementami kompozycyjnymi. (I157e6) - Nawigacja SafeArgs korzysta teraz z elementu
PathSensitivity.RELATIVE
w elemencieArgumentsGenerationTask
, aby umożliwić ponowne wykorzystanie pamięci podręcznej. Oznacza to, że wpis w pamięci podręcznej można teraz ponownie wykorzystać z kompilacji CI do kompilacji lokalnej. (I5f67c, b/173420454) - Reguła lintowania
UnrememberedGetBackStackEntryDetector
została zaktualizowana, aby mieć pewność, że wywołanieremember
otaczające wywołaniegetBackStackEntry()
przekazuje również obiektNavBackStackEntry
jako klucz.(Ib7081, b/227382831)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Podczas wykonywania wywołania
dismiss()
DialogNavigator
teraz używa metodypopWithTransition
. Naprawia to warunek wyścigu, gdy używany jest obiektViewModel
w miejscu docelowymdialog
, który spowodowałby wyświetlenie oknaIllegalStateException
przy zamykaniu okna przez kliknięcie przycisku wstecz lub kliknięcie poza oknem, aby zamknąć okno. (Id7376, b/226552301)
Aktualizacje zależności
- Nawigacja zależy teraz od cyklu życia
2.5.0-beta01
, gdy naprawiasz elementIllegalStateException
podczas zagnieżdżania elementuNavHost
w innym obiekcieNavHost
w dolnej karcie nawigacyjnej innej niż podstawowa, gdy używasz kilku stosów wstecz.
Wersja 2.5.0-alfa04
6 kwietnia 2022 roku
Aplikacja androidx.navigation:navigation-*:2.5.0-alpha04
została zwolniona. Wersja 2.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Aplikacja
visibleEntries
nie jest już eksperymentalna. (I4829f, b/225394514)
Poprawki błędów
- NavHost określa, które wpisy do utworzenia, korzystać z
visibleEntries
z tabeliNavController
. Oznacza to, że jeśli używasz zagnieżdżonego hosta NavHost, wewnętrzny obiektNavHost
powinien teraz być odpowiednio animowany. (I4ba2b, b/225394514) - Wartość
visibleEntries
StateFlow
podana przezNavController
jest teraz oparta na maksymalnym stanie cyklu życia wpisu, a nie na obecnym stanie cyklu życia. Oznacza to, że nawet jeśli cykl życia hostanavController
spadnie poniżej zakresu STARTED, lista widocznych całości pozostanie taka sama. (I9e2a8, b/225394514) SavedStateViewFactory
obsługuje teraz użycieCreationExtras
, nawet jeśli zainicjowano go za pomocąSavedStateRegistryOwner
. W przypadku podania dodatków zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)NavDeepLink
może teraz analizować identyfikatory URI z jednym parametrem zapytania bez wartości. (I0efe8, b/148905489)- Pusty ciąg jest teraz uznawany za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
- Podczas korzystania z przestrzeni nazw
Navigation Safe Args
nie będzie już ulegać awarii, aAndroidManifest.xml
nie będzie dostępny. (I17ccf, b/227229815)
Wersja 2.5.0-alfa03
23 lutego 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Możesz teraz przekazać pakiet
CreationExtras
doby navGraphViewModels
, aby utworzyćViewModel
. (I29217, b/217618359)
Poprawki błędów
NavDeepLinks
prawidłowo obsługuje teraz zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060)CreationExtras
będzie teraz działać prawidłowo, gdy będzie używany zNavBackStackEntries
do tworzenia modeli. (I69161, b/217617710)- Bezpieczne argumenty nawigacji obsługują teraz przestrzeń nazw zdefiniowaną w pliku
build.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)
Wersja 2.5.0-alfa02
9 lutego 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Z nawigacji
2.4.1
:NavHostFragment
będzie teraz prawidłowo ustawiać obiektOnBackPressedDispatcher
podczas korzystania z powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959) - Z nawigacji
2.4.1
: w przypadku precyzyjnych linków przez wiele zagnieżdżonych tagówNavGraph
, stos wsteczny będzie teraz prawidłowo uwzględniać pośrednie miejsca docelowe początkowe. (I504c0, b/214383060)
Wersja 2.5.0-alfa01
26 stycznia 2022 r.
Aplikacja androidx.navigation:navigation-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
NavBackStackEntry
integruje się teraz z funkcją ViewModel CreationExtras w ramach cyklu życia2.5.0-alpha01
. (Ib9fe2, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że dostęp do obiektu
ViewModel
utworzonego za pomocąby navGraphViewModels()
zonCreate()
fragmentu kończył się niepowodzeniem z użyciemIllegalStateException
. (I8a14d) NavDeepLink
nie będzie już niepotrzebnie dekodować argumentów dwukrotnie, co oznacza, że właściwe argumenty będą teraz przekazywane do miejsca docelowego. (I31b0a, b/210711399)
Bezpieczne argumenty
- Bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że argumenty bezpieczeństwa nawigacji nie będą już zgodne z Androidem Studio w wersjach starszych niż 7.0, ale teraz są zgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 i nowszych. (I41c88, b/213086135, b/207670704)
Wersja 2.4.2
Wersja 2.4.2
6 kwietnia 2022 roku
Aplikacja androidx.navigation:navigation-*:2.4.2
została zwolniona. Wersja 2.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Przywrócone z Nawigacji
2.5.0-alpha03
:NavDeepLinks
prawidłowo obsługuje teraz zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060) - Usunięto z nawigacji
2.5.0-alpha03
: Nawigacja SafeArgs obsługuje teraz przestrzeń nazw zdefiniowaną wbuild.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933) - Przywrócona z Nawigacji
2.5.0-alpha04
:Navigation Safe Args
nie będzie już ulegał awarii, gdy używasz przestrzeni nazw. Nie będzie też mieć elementuAndroidManifest.xml
. (I17ccf, b/227229815) - Przeniesione z nawigacji
2.5.0-alpha04
: pusty ciąg znaków jest teraz uznawany za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
Wersja 2.4.1
Wersja 2.4.1
9 lutego 2022 r.
Aplikacja androidx.navigation:navigation-*:2.4.1
została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
NavHostFragment
będzie teraz prawidłowo ustawiać atrybutOnBackPressedDispatcher
w przypadku korzystania z powiązania z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)- W przypadku precyzyjnych linków poprzez wiele zagnieżdżonych tagów
NavGraph
stos wsteczny będzie teraz prawidłowo uwzględniać pośrednie miejsca docelowe początkowego. (I504c0, b/214383060) - Usunięto z Nawigacji
2.5.0-alpha01
: usunęliśmy problem, który powodował, że dostęp do modelu widoku utworzonego za pomocąby navGraphViewModels()
za pomocą elementuonCreate()
fragmentu kończył się niepowodzeniem z wartościąIllegalStateException
. (I8a14d) - Przywrócone z nawigacji
2.5.0-alpha01
: argumentyNavDeepLink
nie dekodują już niepotrzebnie argumentów dwa razy, co oznacza, że poprawnie zdekodowane argumenty są teraz przekazywane do miejsca docelowego. (I31b0a, b/210711399) - Zaktualizowane z nawigacji
2.5.0-alpha01
: bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że argumenty bezpieczeństwa nawigacji nie będą już zgodne z Androidem Studio w wersjach starszych niż 7.0, ale teraz są zgodne 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.
Aplikacja androidx.navigation:navigation-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
- Wszystkie artefakty nawigacji zostały przepisane w Kotlin. Poprawia to wartość null klas korzystających z klas ogólnych (takich jak
NavType
podklas). Wszystkie funkcje rozszerzenia Kotlin, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich głównych artefaktów. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. - Artefakt
navigation-fragment
zawiera teraz wstępnie utworzoną implementację układu z 2 panelami w nowej wersjiAbstractListDetailFragment
. Ten fragment używa elementuSlidingPaneLayout
do zarządzania panelem listy (dostępnym przez Twoją podklasę) i panelem szczegółów, w którym jako implementacja wykorzystujeNavHostFragment
, jak widać w naszej przykładowej implementacji. - Metoda
currentBackStackEntryAsFlow()
wNavController
dostarczaFlow
, który jest emitowany po każdej zmianie bieżącego parametruNavBackStackEntry
. Tego procesu można użyć jako alternatywy dla ręcznego zarządzania elementemOnDestinationChangedListener
. - NavController umożliwia teraz pobranie listy wszystkich widocznych instancji
NavBackStackEntry
w postaciStateFlow
za pomocą eksperymentalnej właściwościvisibleEntries
. - Można teraz rozszerzyć klasę
NavType
, aby tworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia wykresu nawigacyjnego, np. Grafu nawigacyjnego Kotlin DSL. Nawigacja udostępnia teraz interfejsy API
findStartDestination()
igetHierarchy()
, których można używać do implementacji niestandardowego interfejsu NavigationUI.findStartDestination()
to funkcja rozszerzenia wNavGraph
, która lokalizuje rzeczywistą lokalizację początkową, która będzie wyświetlana po przejściu na wykres, nawet jeślistartDestination
jest zagnieżdżoną funkcjąNavGraph
.getHierarchy()
to funkcja w obiekcieNavDestination
, która może służyć do sprawdzania, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody
NavigationUI
, które korzystały z metodyBottomNavigationView
, zostały zaktualizowane tak, aby przyjmowały klasy nadrzędną wprowadzone w materiale1.4.0
(NavigationBarView
). Dzięki temu można używać tych metod wNavigationRailView
.Gdy uzupełniasz element
<action>
za pomocą kodu XML, atrybuty animacji mogą korzystać z atrybutów pobranych z motywu przy użyciu składniapp:enterAnim="?attr/transitionEnter"
.Safe Args generuje teraz metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Trasy nawigacyjne a DSL Kotlin
Poprzednie wersje Nawigacji polegały na tym, że każde miejsce docelowe miało stały identyfikator w postaci liczby całkowitej, który jednoznacznie identyfikował miejsce na liście bliźniaczych miejsc docelowych i umożliwiał navigate()
dojazd do niego bezpośrednio lub poprzez określone działanie. Ta zasada jest przydatna i przydatna zwłaszcza w przypadkach, gdy definiujesz wykres nawigacyjny w formacie XML i możesz używać automatycznie generowanych stałych R.id
lub Safe Args (które korzystają z tych stałych do generowania kodu w czasie kompilacji), ale ten system unikalnych liczb całkowitych nie oddaje znaczenia i ekspresji semantycznej grafów tworzonych automatycznie w czasie działania przez Nawigacja Kotlin DSL.
W tej wersji wprowadziliśmy nową opcję jednoznacznego identyfikowania miejsca docelowego na wykresie nawigacyjnym według jego trasy. Trasa to atrybut String
, który określa niepowtarzalną ścieżkę do miejsca docelowego. Wszystkie metody Kotlin DSL, które przyjmowały identyfikator miejsca docelowego, zostały wycofane i zastąpione odpowiednikiem interfejsu API, który pobiera trasę.
Każda trasa powinna być traktowana jako część elementu Uri
określająca miejsce docelowe, np. home
, profile/{userId}
, profile/{userId}/friends
itp. Gdy tożsamość miejsca docelowego jest powiązana z konkretnym fragmentem treści, te argumenty dynamiczne powinny należeć do trasy, zgodnie z tymi samymi regułami co precyzyjne linki.
Wszystkie interfejsy API NavController
, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które przejmuje trasę String
. Dotyczy to m.in. navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Miało to wpływ na interfejs API:
- Właściwość
popUpTo
Kotlin w strefie DSL Kotlin została wycofana i zastąpiona usługąpopUpToId
. - Interfejs
getStartDestination()
API został wycofany i zastąpiony przezgetStartDestinationId()
.
W odróżnieniu od nawigowania według identyfikatora nawigacja według trasy podlega tym samym regułom co w przypadku niejawnych precyzyjnych linków. Oznacza to, że możesz bezpośrednio przechodzić do dowolnego miejsca docelowego na dowolnym zagnieżdżonym wykresie. Trasy te są przydatne w projektach z wieloma modułami bez konieczności dodawania widocznego na zewnątrz precyzyjnego linku do każdego miejsca docelowego.
Tworzenie wiadomości w ramach Nawigacji
Artefakt navigation-compose
umożliwia integrację komponentu nawigacji z Jetpack Compose. Funkcja ta używa funkcji @Composable
jako miejsc docelowych w aplikacji.
Ta wersja zapewnia:
- Obiekt kompozycyjny
NavHost
, który umożliwia tworzenie wykresu nawigacyjnego przy użyciu DSL Kotlin przy użyciu miejsc docelowychcomposable
idialog
oraz obsługa opcjonalnych nawigatorów, takich jak Accompanist Navigation Materiały. - Obowiązkowa obsługa przechodzenia między miejscami docelowymi. Accompanist Navigation Animation może służyć do sterowania przejściami między wejściami i wyjściami za pomocą eksperymentalnych interfejsów API Compose.
- Zakres elementu
Lifecycle
do każdego miejsca docelowego kompozycyjnego. Każde miejsce docelowe osiąga stanRESUMED
tylko po zakończeniu wprowadzania przejść i natychmiast maleje doSTARTED
, gdy zaczynają się przejścia wyjścia. Pozwala to uniknąć wszystkich problemów zIllegalStateException
i korzystaniem z wielu interakcji, ponieważ wywołuje wywołanienavigate
tylko wtedy, gdyLifecycle
ma wartośćRESUMED
. - Zakres obiektu
ViewModel
(za pomocą interfejsu APIviewModel()
w narzędziu Lifecycle ViewModel Compose2.4.0
lubhiltViewModel()
w komponowaniu nawigacji po Hilt1.0.0
na poziomie miejsca docelowego, zapewniający zakres, który jest zdolny przetrwać zmiany konfiguracji i znajduje się w tylnym stosie (gdy treść kompozycyjna jest w inny sposób zutylizowana) oraz sygnał wonCleared()
modelu widoku danych, który wskazuje trwałe usunięcie i czyszczenie stanu powiązanego z tym elementemNavBackStackEntry
. - Określanie zakresu stanu
rememberSaveable
na poziomie miejsca docelowego, dzięki czemu wszystkie stany kompozycyjne są zapisywane i przywracane automatycznie po powrocie do miejsca docelowego. - Pełna obsługa zapisywania i przywracania stanu urządzenia
NavController
oraz stanu miejsca docelowego po śmierci i przywracaniu. - 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 określone elementy pomocnicze w językach
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić stan podnoszenia i połączyć elementNavController
z elementami kompozycyjnymi poza elementemNavHost
(takim jak dolny pasek nawigacyjny).
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 nawigacji w trakcie tworzenia wiadomości.
Wiele wstecznych stosów
Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie do niego miejsc docelowych po navigate()
do nich i usuwanie ich po wywołaniu funkcji popBackStack()
lub wywołaniu przycisku Wstecz w systemie. Istniejąca klasa NavOptions
i integracja z elementami <action>
w kodzie XML wykresu nawigacyjnego zostały rozszerzone, aby umożliwić zapisywanie i przywracanie stosu wstecznego.
W związku z tą zmianą metody NavigationUI
w onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan miejsc docelowych z wyprzedzeniem, co zapewnia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami fragmentowymi jest to zalecany sposób integracji z wieloma stosami wstecznymi.
Podstawowe interfejsy API do zapisywania i przywracania stanu są dostępne na kilku platformach:
W pliku XML Nawigacji element
<action>
może teraz korzystać z atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
, aby zapisać stan miejsc docelowych otwieranych przezapp:popUpTo
i przywrócić stan powiązany z miejscem docelowym przekazanym jakoapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
W
navOptions
Kotlin DSL możesz dodać właściwość wartości logicznejrestoreState
i właściwość wartości logicznejsaveState
w konstruktorzepopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Podczas ręcznego tworzenia obiektu
NavOptions
za pomocąNavOptions.Builder
możesz użyćsetRestoreState()
i nowego przeciążenia dlasetPopUpTo()
, które wymaga dodatkowego parametrusaveState
.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);
Automatyczne wywołania funkcji
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.Aby usunąć każdy stan, który został zapisany za pomocą
popBackStack()
lubpopUpToSaveState
, można użyć metodyclearBackStack()
.
We wszystkich przypadkach NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym dowolnego miejsca docelowego nawigacji o zakresie ViewModel
. Interfejsy API Navigator
zostały zaktualizowane, aby umożliwić użytkownikom zapisywanie i przywracanie własnego stanu w przypadku każdego komponentu Navigator
.
Zmiany w działaniu
NavDeepLinkBuilder
dodaje teraz parametrPendingIntent.FLAG_IMMUTABLE
do wartościPendingIntent
zwracanej przez metodęcreatePendingIntent()
, dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami podczas kierowania na Androida 12.- Nawigacja zależy teraz od cyklu życia
2.3.1
i oznacza terazsetGraph()
,popBackStack()
,navigateUp()
inavigate()
metody, które aktualizują parametrNavBackStackEntry
Lifecycle
jako@MainThread
, dopasowując nawigację do egzekwowania zasad w wątku głównym wprowadzonego w cyklu życia2.3.0
. - Precyzyjne linki sprawdzają teraz, czy w polu
Uri
znajdują się wszystkie wymagane argumenty (czyli bez wartości domyślnych). - Argumenty analizowane w funkcji
NavDeepLink
traktowane są teraz tak samo jak znaki zapytania jako separator między segmentami ścieżki. Pozwala to uniknąć rozciągnięcia argumentu po znaku funta. - Podczas generowania działań kod Kotlin wygenerowany z Safe Args ustawia teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi.
- Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi.
- Usługa Safe-Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie dotyczące używania
applicationIdTextResource
nie powinno już się pojawiać.
Znane problemy
- Poprawiono w Nawigacji
2.5.0-alpha01
: uzyskanie dostępu do elementuViewModel
utworzonego za pomocąby navGraphViewModels()
z obiektuonCreate()
fragmentu kończy się niepowodzeniem z wartościąIllegalStateException
. (b/213504272) - Poprawiono w Nawigacji
2.5.0-alpha01
: interfejs Safe Args 2.4.0 jest niezgodny z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (b/213086135) - Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacyjnymi nie umożliwiają poprawnego utworzenia pełnego stosu. (b/214383060)
Wersja 2.4.0-rc01
15 grudnia 2021 roku
Aplikacja androidx.navigation:navigation-*:2.4.0-rc01
została zwolniona. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w działaniu
- Argumenty analizowane przez funkcję
NavDeepLink
są teraz traktowane tak samo jak znaki zapytania jako separator między argumentami. (I21309, b/180042703)
Poprawki błędów
- Precyzyjne linki nie będą już ignorować argumentów o wartościach, które są takie same jak nazwa obiektu zastępczego. (If8017, b/207389470)
NavController
nie będzie już ulegać awariom podczas otwierania zagnieżdżonego miejsca docelowego za pomocą przejść po przywróceniu interfejsuNavController
. (I0f7c9, b/205021623)- Komunikat o błędzie wyświetlany podczas korzystania z nieprawidłowego parametru
startDestination
będzie teraz domyślnie kierował na trasę miejsca docelowego (o ile jest ona dostępna). (I86b9d, b/208041894)
Poprawki błędów związanych z nawigacją przy tworzeniu wiadomości
- Naprawiono potencjalną awarię powodowaną przez szybkie przełączanie między miejscem początkowym a innym miejscem docelowym za pomocą elementów menu nawigacyjnego u dołu. (Ic8976, b/208887901)
- Miejsce docelowe okna jest teraz prawidłowo przywracane u góry ekranu po zmianie konfiguracji lub zakończeniu procesu. (I4c0dc, b/207386169)
- Naprawiono błąd, który powodował, że próba pobrania polecenia
ViewModel
z elementuNavBackStackEntry
okna kończyła się niepowodzeniem po zamknięciu okna. (I6b96d, b/206465487) - Rozwiązaliśmy problem, który powodował, że podczas korzystania z miejsc docelowych w
activity
z elementemNavHost
funkcji nawigacji w przypadku tworzenia wiadomości można było zmieniać kompozycje w nieskończoność. (I8f64c) - Naprawiono wyciek w funkcji tworzenia wiadomości w nawigacji, w którym utrzymywano odniesienie do starej aktywności po zmianie konfiguracji lub śmierci procesu. (I4efcb, b/204905432)
Poprawki błędów związanych z bezpiecznymi argumentami
SafeArgs
nie ulega już awarii podczas próby przywrócenia niestandardowych tablic parcelowa po zakończeniu procesu. (I618e8, b/207315994)- Naprawiliśmy błąd w bezpiecznych argumentach, który uniemożliwiał tablicom logicznym stosowanie wartości
null
. (I8c396, b/174787525)
Wersja 2.4.0-beta02
3 listopada 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-beta02
została zwolniona. Wersja 2.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W przypadku obsługi zarówno jawnych, jak i niejawnych precyzyjnych linków podczas przechodzenia do innego wykresu jest teraz automatycznie dodawana flaga
saveState
. Dzięki temu kod (np.NavigationUI.setupWithNavController
) i kod korzystający z wielu wstecznych stosów działają zgodnie z oczekiwaniami. (Ic8807)
Zmiany w działaniu
- Wzorce precyzyjnych linków są teraz leniwie kompilowane w NavDeepLink, a nie podczas inflacji. Powinno to skrócić czas inflacji wykresów nawigacyjnych zawierających precyzyjne linki. (b8d257, b/184149935)
Poprawki błędów
- Naprawiono błąd, który powodował, że element NavBackStackEntries był przesuwany w dół do
Lifecycle.State.CREATED
po przeniesieniu doLifecycle.State.STARTED
, gdyNavHost
był dodawany bezpośrednio dosetContent()
aktywności. (Ia5ac1, b/203536683) - Naprawiono warunek wyścigu, w którym wyświetlenie miejsca docelowego
DialogFragment
poza stos, zanim okno rzeczywiście zostało wyświetlone, nie zamykało okna. Powodowało to awarię, gdy użytkownik ręcznie zamknął okno błędu. (I687e5) - Rozwiązaliśmy problem, który powodował, że interfejs API
onNavDestinationSelected
wNavigationUI
zwracał wartośćtrue
nawet wtedy, gdy nie była wyświetlana wartośćnavigate()
dla tego wykresu nawigacyjnego. Teraz wykorzystuje tę samą logikę, która jest używana wewnętrznie przezsetupWithNavController
, do wyboru tylkoMenuItem
powiązanego z bieżącym miejscem docelowym za pomocąhierarchy
miejsca docelowego. (I2b053).
Wersja 2.4.0-beta01
27 października 2021 roku
Aplikacja androidx.navigation:navigation-*:2.4.0-beta01
została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz używać
by navGraphViewModel
z trasą jako alternatywy dla używania identyfikatora, aby lepiej obsługiwać używanie DSL nawigacji Kotlin z fragmentami. (I901e3, b/201446416)
Zmiany w interfejsie API
- Interfejs API
visibleEntries
ma teraz charakter eksperymentalny. (I93f6f)
Poprawki błędów
- Modele ViewModel nie będą już niszczone po przerwaniu przejść między tymi samymi ekranami (Id52d8, b/200817333).
- Argumenty zerowe
NavDeepLink
nie wymagają już wartości domyślnej przy dodawaniu precyzyjnych linków do elementówNavDestination
. (I5aad4, b/201320030) - Zdarzenia NavBackStack Entries z różnymi cyklami życia nie są już uznawane za równe. Oznacza to, że NavHost prawidłowo utworzy wszystkie miejsca docelowe podczas nawigacji z elementami singleTop oraz podczas ponownego wybierania dolnych elementów menu. (I1b351, b/196997433)
- Rozwiązaliśmy problem z atrybutem
AbstractListDetailFragment
, który powodował, że atrybutylayout_width
ilayout_weight
w panelu listy zwracane przezonCreateListPaneView()
były nieprawidłowo obsługiwane lub ignorowane. (f5fbf3) - Wizualny stan miejsc docelowych okien dialogowych jest teraz prawidłowo zsynchronizowany ze stanem obiektu
DialogFragmentNavigator
. Oznacza to, że ręczne wywołanie asynchronicznego interfejsudismiss()
API dla interfejsuDialogFragment
prawidłowo wyczyści teraz wszystkie miejsca docelowe w oknie, które znajduje się nad teraz zamkniętym oknem. Nie ma to wpływu na sytuacje, w których zamykasz okno za pomocąpopUpTo
lubpopBackStack()
. (I77ba2) AbstractAppBarOnDestinationChangedListener
Teraz zawiera czytelniejsze komunikaty o błędach dlaonDestinationChanged()
. (Ie742d)
Wersja 2.4.0-alfa10
29 września 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha10
została zwolniona. Wersja 2.4.0-alpha10 zawiera te zatwierdzenia.
Nowe funkcje
- NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji
NavBackStackEntry
za pomocą metodyvisibleEntries
StateFlow (Ia964e) rememberNavController()
przyjmuje teraz opcjonalny zestaw instancjiNavigator
, które zostaną dodane do zwróconego obiektuNavController
, aby lepiej obsługiwać opcjonalne nawigatory, takie jak Accompanist Navigation Material. (I4619e)
Poprawki błędów
- Dynamiczna nawigacja nie będzie już ulegać awariom po utworzeniu aktywności. (Ifa6a3, b/197942869)
- Naprawiono problem z systemowym przyciskiem Wstecz, który pojawia się dopiero po powrocie do miejsca docelowego kompozycyjnego zawierającego element
NavHost
. (3ed148, b/195668143) - SafeArgs generuje teraz argumenty dla
fromBundle()
ifromSavedStateHandle()
we właściwej kolejności parametrów. (I824a8, b/200059831)
Wersja 2.4.0-alfa09
15 września 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha09
została zwolniona. Wersja 2.4.0-alpha09 zawiera te zatwierdzenia.
Nowe funkcje
- Za pomocą metody
clearBackStack()
możesz teraz wyczyścić każdy stan, który został zapisany za pomocąpopBackStack()
lubpopUpToSaveState
. (I80a0f) - Możesz teraz przekazać listę argumentów lub precyzyjnych linków do kreatora zagnieżdżonego wykresu nawigacyjnego, a zostaną one automatycznie dodane do wynikowego wykresu. (I8a470, b/182545357)
Zmiany w interfejsie API
- Funkcja DSL
navArgument
Kotlin jest teraz częściąnavigation-common
, a nienavigation-compose
. Aby nadal korzystać z tej funkcji, będzie to wymagało zaktualizowania importów. (I1d095)
Zmiany w działaniu
- Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi. (I89709, b/198493585)
Poprawki błędów
- W przypadku korzystania z nawigacji tworzenia wiadomości funkcja Nav Graphs będzie miała wartość
DESTROYED
tylko wtedy, gdy wszystkie ich elementy podrzędne będąDESTROYED
. (I86552, b/198741720) - Argumenty nubelne
NavDeepLink
nie wymagają już wartości domyślnej. (Ia14ef, b/198689811) - Wywołanie metody
setGraph()
za pomocą nowego wykresu spowoduje też usunięcie wszystkich zapisanych wstecznych stosów poza wcześniejszym wyświetlaniem stosu wstecznego. (I97f96) - Rozwiązaliśmy problem, który powodował, że instancje
OnDestinationChangedListener
orazcurrentBackStackEntryFlow
nie były powiadamiane podczas korzystania zlaunchSingleTop
. (Iaaebc)
Aktualizacje zależności
- Tworzenie wiadomości w Nawigacji opiera się teraz na tworzeniu aktywności w wersji 1.3.1. (I05829)
- Tworzenie wiadomości w Nawigacji zależy teraz od ustawienia Tworzenie widoku modelu cyklu życia
2.4.0-beta01
. (Ib86a3)
Wersja 2.4.0-alfa08
1 września 2021 roku
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha08
została zwolniona. Wersja 2.4.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- Można teraz rozszerzyć klasę
NavType
, aby tworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia wykresu nawigacyjnego, np. Grafu nawigacyjnego Kotlin DSL. (I78440, b/196871885)
Zmiany w działaniu
- Podczas generowania działań kod Kotlin wygenerowany z Safe Args ustawia teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi. (Idb697, b/188855904)
- Precyzyjne linki sprawdzają teraz, czy w polu
Uri
znajdują się wszystkie wymagane argumenty (czyli bez wartości domyślnych). (#204, b/185527157)
Poprawki błędów
- Użycie funkcji
getBackStackEntry
ipreviousBackStackEntry
w ramach funkcji composable() w połączeniu z komponentemremember()
nie będzie już sprawiać, że miejsce docelowe nie będzie znajdować się w stosie wstecznym. (I75138, b/194313238) - Tworzenie wiadomości w nawigacji przebiega teraz prawidłowo podczas zmieniania wstecznych argumentów stosu i używania funkcji
launchSingleTop=true
. (Iebd69, b/186392337) - Przy wywołaniu metody
setGraph
nie będzie już wyświetlanyArrayIndexOutOfBoundsException
z wykresem zawierającym 13 lub 29 miejsc docelowych. (I1a9f1, b/195171984) - Generator Java SafeArgs nie powinien już powodować ostrzeżeń dotyczących lint podczas generowania klas Args. (I1a666, b/185843837)
Wkład z zewnątrz
- Dziękujemy ospixd za sprawdzenie, czy precyzyjne linki sprawdzają, czy w atrybucie
Uri
znajdują się wszystkie wymagane argumenty (te bez wartości domyślnych). (#204, b/185527157)
Wersja 2.4.0-alfa07
18 sierpnia 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha07
została zwolniona. Wersja 2.4.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Tworzenie wiadomości w ramach nawigacji prawidłowo zapisuje stan po zmianie konfiguracji i wykresach podczas korzystania z funkcji stosu wstecznej. (If5a3d, b/195141957)
- Ponowne wybranie tej samej karty podczas korzystania z nawigacji tworzenia wiadomości z wieloma stosami wstecznymi nie spowoduje już wyświetlenia pustego ekranu. (I860dc, b/194925622)
NavHost
obserwuje teraz zmiany w elemencieLifecycle.State
elementuNavBackStackEntry
, co oznacza, że użycie elementuNavHost
we fragmencie zostanie teraz prawidłowo skompilowane ze względu na zmiany w cyklu życia, a nie spowoduje to wyświetlenie pustego ekranu. (I4eb85, b/195864489)- Rozwiązaliśmy problem, który powodował, że zamknięcie
DialogFragment
nie powodowało prawidłowej aktualizacji stanuNavController
po odtworzeniu działania (np. po zmianie konfiguracji). (Icd72b) - Naprawiliśmy błąd polegający na tym, że wyświetlenie miejsca docelowego okna nie aktualizowało obsługi przycisku Wstecz w systemie NavController. Może to powodować przechwycenie przycisku Wstecz, mimo że nie ma on stosu wstecznego do wyświetlenia. (If3b34)
- Funkcja Safe-args automatycznie generuje teraz metodę
toSavedStateHandle
dla argumentów, których można używać do testowania koduViewModel
. (If1e2d, b/193353880)
Wersja 2.4.0-alfa06
4 sierpnia 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha06
została zwolniona. Wersja 2.4.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nazwy metod
requireSlidingPaneLayout()
irequireDetailPaneNavHostFragment()
wAbstractListDetailFragment
zostały zmienione nagetSlidingPaneLayout()
igetDetailPaneNavHostFragment()
. (I34a08)
Zmiany w działaniu
- Podczas nawigacji przy użyciu animacji (np.
Crossfade
) elementLifecycle
w nowym miejscu docelowym osiągnie teraz wartośćRESUMED
dopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889) - Opcja
NavHost
w nawigacji tworzenia wiadomości ustawia teraz wykres jako część pierwszej kompozycji. (Ieb7be)
Poprawki błędów
- Otwarcie ostatniego miejsca docelowego na wykresie nawigacyjnym nie powoduje już wywołania zdarzenia
ClassCastException
. (If0543, b/172112072, b/194301889) - Naprawiliśmy błąd
NullPointerException
występujący w przypadku dodawania precyzyjnego linku bez elementuUri
oraz nawigowania po trasie lub precyzyjnym linku. (938a0c, b/193805425) - Rozwiązaliśmy problem z nawigacją tworzenia wiadomości, który powodował, że precyzyjny link
NavBackStackEntry
nie osiągał stanuRESUMED
. (I192c5) - Naprawiono błąd polegający na tym, że wyświetlenie miejsca docelowego w oknie dialogowym nie aktualizowało obsługi systemowego przycisku Wstecz w kontrolerze NavController, co potencjalnie powodowało przechwycenie przycisku Wstecz, mimo że nie ma on stosu wstecznego do wyświetlenia. (Aosp/1782668)
Wersja 2.4.0-alfa05
21 lipca 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha05
została zwolniona. Wersja 2.4.0-alpha05 zawiera te zatwierdzenia.
Zmiany w działaniu
- Funkcja
NavHost
w funkcji tworzenia wiadomości w Nawigacji będzie teraz zawsze używała przenikania podczas nawigowania między miejscami docelowymi. (I07049, b/172112072) - Możesz teraz wprowadzić zmiany na wykresie NavHost. Wykresy z tym samym punktem początkowym i tymi samymi miejscami docelowymi na wykresie zostaną uznane za równe i nie spowodują usunięcia stosu wstecznego
NavController
. (I0b8db, b/175392262)
Poprawki błędów
- Poprawiliśmy
NoSuchElementException
podczas wywoływania funkcjipopBackStack()
z poziomu interfejsuLifecycleObserver
powiązanego z elementemNavBackStackEntry
spowodowanym przez aktualizacje stanu kontrolera NavController. (I64621) AbstractListDetailFragment
umożliwia teraz całkowite usunięcie elementuSlidingPaneLayout
z pliku APK, gdy nie jest używanyAbstractListDetailFragment
. (I611ad)NavGraph
iNavDestination
zastępują teraz metodę równości, więc 2 obiekty o tych samych wartościach będą uznawane za równe. (I166eb, b/175392262)
Wersja 2.4.0-alfa04
1 lipca 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha04
została zwolniona. Wersja 2.4.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Artefakt
navigation-fragment
zawiera teraz wstępnie utworzoną implementację układu z 2 panelami w nowej wersjiAbstractListDetailFragment
. Ten fragment używa elementuSlidingPaneLayout
do zarządzania panelem listy (dostępnym przez Twoją podklasę) i panelem szczegółów, w którym jako implementacja wykorzystujeNavHostFragment
, jak widać w naszej przykładowej implementacji. (Iac4be, b/191276636) NavHost
artefaktunavigation-compose
obsługuje teraz nie tylko miejsca docelowecomposable
, ale teżdialog
. Każde z tych miejsc docelowych w oknach będzie wyświetlać się w komponencieDialog
unoszącym się nad bieżącym miejscem docelowymcomposable
. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Zmiany w interfejsie API
- Nazwa funkcji
add
wNavigatorState
została zmieniona napush
. Wszystkie bieżące wywołania funkcjiadd()
trzeba będzie zmienić na push(). (Ie89fc, b/172112072) - Niestandardowe instancje
Navigator
mogą teraz używać interfejsów APIpushWithTransaction
ipopWithTransition
wNavigatorState
do asynchronicznego wypychania lub pobierania miejsca docelowego. Pamiętaj, że żaden z uwzględnionych nawigatorów nie używa jeszcze tych interfejsów API. (Ic4d7c, b/172112072)
Zmiany w działaniu
NavDeepLinkBuilder
dodaje teraz parametrPendingIntent.FLAG_IMMUTABLE
do wartościPendingIntent
zwracanej przez metodęcreatePendingIntent()
, dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami podczas kierowania na Androida 12. (If8c52)
Poprawki błędów
- Rozwiązaliśmy problem z atrybutem
<include-dynamic>
, który powodował, że argumenty przekazywane do wykresu nie były prawidłowo przekazywane do wykresu uwzględnianego dynamicznie. (I3e115) - Naprawiliśmy
NullPointerException
podczas przechodzenia do miejsca docelowego za pomocą argumentustring[]
o wartości domyślnej@null
. (I1fbe8) - Dodaj reguły ProGuard dla
@Navigator.Name
, rozwiązując problemy w trybie pełnego dostępu do wersji R8 3.1. (I2add9, b/191654433) - Podczas tworzenia aplikacji z wersją
Kotlin
przed1.5.0
nie będą już działać błędy SafeArgs. (Icd1ff, b/190739257)
Wersja 2.4.0-alfa03
16 czerwca 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że przejście do uwzględnionego wykresu dynamicznego wymagało 2 wywołań
navigate()
. (I7785c, b/188859835) - Naprawiliśmy regresję wprowadzonej w Nawigacji
2.4.0-alpha01
, w wyniku której usługasetupActionBarWithNavController()
nie usuwała poprawnie ikony W górę, gdy znajdujesz się w miejscu docelowym najwyższego poziomu. (I5d443, b/189868637) - Poprawiliśmy
IllegalStateException
przy wywoływaniu funkcjipopBackStack()
po wcześniejszym wyświetleniu wykresu głównego kontrolera NavController. (I2a330, b/190265699) - Reguły ProGuard dotyczące
by navArgs()
są teraz prawidłowo stosowane, gdy używany jest elementnavigation-common
i zależne od niego artefakty. (I68800, b/190082521) OnDestinationChangedListener
, który wywołuje metodęnavigate()
przy pierwszym wywołaniu zwrotnym, prawidłowo otrzymuje teraz kolejne wywołanie z miejscem docelowym, do którego przeszedł. (Ie5f9e, b/190228815)- Funkcja Safe Args nie ulega już awarii, gdy jest używana z dynamicznymi modułami funkcji i interfejsem AGP w wersji 7.0 lub nowszej (I69518, b/189966576).
Znany problem
- Podczas korzystania z Gradle
6.7.0
funkcja Safe Args będzie kończyć się błędemUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
z powodu uzależnienia od starszej wersji Kotlin. Możesz obejść ten problem, aktualizując aplikację tak, aby używała Gradle 7.0. (b/190739257)
Wersja 2.4.0-alfa02
2 czerwca 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Trasy są teraz obsługiwane w przypadku miejsc docelowych Aktywność, Fragment i Okno, a także w całym DSL Dynamic Navigation Kotlin. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
tymczasowo dodał(a) eksperymentalne interfejsy API, aby umożliwić rezygnację z zapisywania stanu. Choć zapisywanie stanu zawsze jest prawidłowe, to nadal można korzystać z wycofanych bibliotek (np.zachowanych fragmentów), których nie można obsługiwać przy zapisywaniu stanu. W ten sposób aplikacje mogą powoli przejść z nieobsługiwanych interfejsów API. (Idf93c).Nawigacja udostępnia teraz interfejsy API
findDestination()
igetHierarchy()
, których można używać do implementacji niestandardowego interfejsu NavigationUI.findDestination()
to funkcja rozszerzenia wNavGraph
, która wyszukuje miejsce docelowe na wykresie.getHierarchy()
to funkcja w obiekcieNavDestination
, która może służyć do sprawdzania, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego (I2932f, b/188183365).val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody nawigacji, które korzystały z metody
BottomNavigationView
, zostały zaktualizowane tak, aby przyjmowały klasy nadrzędną wprowadzone w materiale1.4.0
(NavigationBarView
). Dzięki temu można używać tych metod wNavigationRailView
. (Ib0b36, b/182938895)Gdy nadmiarujesz element
<action>
za pomocą kodu XML, atrybuty animacji mogą korzystać z atrybutów pobranych z motywu z użyciem składniapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Zmiany w interfejsie API
- Kreatory DSL Kotlin, które używają identyfikatora, zostały wycofane i powinny zostać zastąpione monterami korzystającymi z tras (I85b42, b/188816479) (I9f58f, b/188816479)
Poprawki błędów
DialogFragmentNavigator
używa teraz interfejsu APINavigatorState.pop()
do informowaniaNavController
o zamknięciu okna przez naciśnięcie systemowego przycisku Wstecz lub kliknięcie poza nim. Dzięki temu stanNavController
jest zawsze zsynchronizowany ze stanem nawigacji. (I2ead9)Nawigacja nie zwraca już wartości
ConcurrentModificationException
podczas manipulowania listą elementówOnDestinationChangedListeners
za pomocą wywołania zwrotnegoonDestinationChanged
. (Ib1707, b/188860458)Safe Args nie ulega już awarii podczas próby wygenerowania właściwości kierunku w Kotlin. (Id2416, b/188564435)
Metoda setId w NavDestination jest teraz prawidłowo opatrzona adnotacjami
@IdRes
, więc akceptuje tylko identyfikatory zasobów. (I69b80)Parametr int obiektu
findNode
to terazresId
, a nieresid
. (I7711d)
Aktualizacja zależności
- Usługa Safe-Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie dotyczące używania
applicationIdTextResource
nie powinno już się pojawiać. (I6d67b, b/172824579)
Wersja 2.4.0-alfa01
18 maja 2021 r.
Aplikacja androidx.navigation:navigation-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Metoda
currentBackStackEntryAsFlow()
wNavController
dostarczaFlow
, który jest emitowany po każdej zmianie bieżącego parametruNavBackStackEntry
. Tego procesu można użyć jako alternatywy dla ręcznego zarządzania elementemOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Wiele wstecznych stosów
Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie do niego miejsc docelowych po navigate()
do nich i usuwanie ich po wywołaniu funkcji popBackStack()
lub wywołaniu przycisku Wstecz w systemie. Istniejąca klasa NavOptions
i integracja z wpisami <action>
w pliku XML wykresu nawigacyjnego zostały rozszerzone, aby umożliwić zapisywanie i przywracanie stosu. (b/80029773)
W związku z tą zmianą metody NavigationUI
w onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan miejsc docelowych z wyprzedzeniem, co zapewnia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami fragmentowymi jest to zalecany sposób integracji z wieloma stosami wstecznymi. (Ie07ca)
Podstawowe interfejsy API do zapisywania i przywracania stanu są dostępne na kilku platformach:
W pliku XML Nawigacji element
<action>
może teraz korzystać z atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
, aby zapisać stan miejsc docelowych otwieranych przezapp:popUpTo
i przywrócić stan powiązany z miejscem docelowym przekazanym jakoapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
W
navOptions
Kotlin DSL możesz dodać właściwość wartości logicznejrestoreState
i właściwość wartości logicznejsaveState
w konstruktorzepopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Podczas ręcznego tworzenia obiektu
NavOptions
za pomocąNavOptions.Builder
możesz użyćsetRestoreState()
i nowego przeciążenia dlasetPopUpTo()
, które wymaga dodatkowego parametrusaveState
.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Automatyczne wywołania funkcji
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.
We wszystkich przypadkach NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym dowolnego miejsca docelowego nawigacji o zakresie ViewModel
. Interfejsy API Navigator
zostały zaktualizowane, aby umożliwić użytkownikom zapisywanie i przywracanie własnego stanu w przypadku każdego komponentu Navigator
.
Interfejs ComposeNavigator
używany w przypadku miejsc docelowych composable
w tworzeniu nawigacji oraz interfejsy FragmentNavigator
i DynamicFragmentNavigator
używane na potrzeby miejsc docelowych <fragment>
w nawigacji z fragmentami zostały zaktualizowane, tak by korzystały z nowych interfejsów API nawigacji i obsługowały zapisywanie i przywracanie stanu.
Trasy nawigacyjne
Trasa to atrybut String
, który jednoznacznie identyfikuje miejsce docelowe. Pojęcie to było używane wcześniej tylko w przypadku tworzenia nawigacji, ale teraz jest jednym z podstawowych interfejsów API nawigacji. Jest to alternatywa dla identyfikatorów w postaci liczb całkowitych do tworzenia wykresu za pomocą interfejsu nawigacyjnego Kotlin DSL. (b/172823546)
Wszystkie interfejsy API, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które pobiera trasę String
. Dotyczy to m.in. navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Miało to wpływ na interfejs API:
- Właściwość kotlin
popUpTo
w strefie DSL Kotlin została wycofana i zastąpiona usługąpopUpToId
. (I59c73, b/172823546) - Interfejs
getStartDestination()
API został wycofany i zastąpiony przezgetStartDestinationId()
. (I0887f, b/172823546)
Dla deweloperów, którzy przechodzą z poprzednich wersji Nawigacji tworzenia wiadomości na Nawigację do tworzenia wiadomości 2.4.0-alpha01
, oznacza to, że poniższe importowanie metod rozszerzeń nie jest już konieczne 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 tabeli NavDestination
, co umożliwia bezpośrednie wywoływanie funkcji navBackStackEntry.destination.route
.
Zmiany w interfejsie API
- Wszystkie artefakty nawigacji zostały przepisane w Kotlin. Poprawia to wartość null klas korzystających z klas ogólnych (takich jak
NavType
podklas). Wszystkie funkcje rozszerzenia Kotlin, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich głównych artefaktów. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. (b/184292145) NavDeepLinkBuilder
obsługuje teraz dodawanie wielu różnych miejsc docelowych do wygenerowanego stosu zwrotnego. (I3ee0d, b/147913689)- Dodaj funkcje fabryczne urządzenia
DynamicNavHostFragment
(Icd515, b/175222619) - Unikalny identyfikator obiektu
NavBackStackEntry
jest teraz widoczny w ramach publicznego interfejsu API. (Ie033a) - Pola
name
iargument
oraz funkcje niszczenia strukturyNamedNavArgument
są teraz dostępne publicznie. (#174, b/181320559) - Wprowadziliśmy nowe rozszerzenie
NavBackStackEntry#provideToCompositionLocals
, które udostępniaNavBackStackEntry
odpowiednim lokalnym kompozycjom. (#175, b/187229439)
Bezpieczne argumenty
Safe Args generuje teraz metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Zaktualizowano Bezpieczne argumenty, aby zależały od elementu
1.8.0
KotlinPoet. (#172, b/183990444)
Zmiany w działaniu
- Nawigacja zależy teraz od cyklu życia
2.3.1
i oznacza terazsetGraph()
,popBackStack()
,navigateUp()
inavigate()
metody, które aktualizują parametrNavBackStackEntry
Lifecycle
jako@MainThread
, dopasowując nawigację do egzekwowania zasad w wątku głównym wprowadzonego w cyklu życia2.3.0
. (b/171125856) - Podczas analizowania argumentów Enum z precyzyjnych linków wielkość liter nie jest teraz rozróżniana, dzięki czemu precyzyjny link taki jak
http://www.example.com/red
może dopasować precyzyjny linkwww.example.com/{color}
, nawet jeśli wyliczenie ma wartośćRED
. (#152, b/135857840)
Zgodność z wiadomością
- Funkcja
androidx.navigation:navigation-compose:2.4.0-alpha01
jest zgodna tylko z funkcją Utwórz w wersji1.0.0-beta07
i nowszych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że obiekty zastępcze argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami, które mają pasujący ściśle sufiks. (#153, b/184072811)
NavHostFragment
obsługuje teraz niestandardowych nawigatorów, którzy korzystają z tych samych wartości@Navigator.Name("dialog")
co domyślny obiektDialogFragmentNavigator
. (Ib1c2c, b/175979140)- Poprawiliśmy działanie funkcji
NavigatorProvider#addNavigator
, by wielokrotne wywoływanie jej z tą samą instancją nie powodowało problemów. (#176, b/187443146)
Treści opublikowane przez użytkowników z zewnątrz
- Dziękujemy, simonschiller za wprowadzenie obsługi Safe Args generującej metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621) - Dziękujemy Bradleycorn za analizę wielkości argumentów Enum w precyzyjnych linkach bez rozróżniania wielkości liter. (#152, b/135857840)
- Dziękujemy za rozwiązanie osipxd za rozwiązanie problemu, w wyniku którego obiekty zastępcze argumentów końcowych miałyby pierwszeństwo przed precyzyjnymi linkami, które mają pasujący sufiks. (#153, b/184072811)
- Dziękujemy, tatocaster za zaktualizowanie funkcji Bezpieczne argumenty w celu dopasowania do niej:
1.8.0
z KotlinPoet. (#172, b/183990444) - Dziękujemy jossiwolf za udostępnienie pól
name
iargument
oraz zniszczenie funkcjiNamedNavArgument
. (#174, b/181320559) - Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia
NavBackStackEntry#provideToCompositionLocals
, które udostępnia elementNavBackStackEntry
odpowiednim lokalnym kompozycjom. (#175, b/187229439) - Dziękujemy, jossiwolf za poprawienie działania usługi
NavigatorProvider#addNavigator
i upewnienie się, że wielokrotne wywoływanie tego samego wystąpienia z tym samym wystąpieniem nie powoduje problemów. (#176, b/187443146)
Nawigacja w tworzeniu wiadomości w wersji 1.0.0
Wersja 1.0.0-alfa10
7 kwietnia 2021 r.
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha10
została zwolniona. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
NavHost
akceptuje teraz elementModifier
, który jest przekazywany do kontenera kompozycyjnego, który opakowuje docelowe elementy kompozycyjne. (I85aca, b/175125483)
Poprawki błędów
NavHost
działa teraz nawet wtedy, gdy nie można znaleźć elementuOnBackPressedDispatcherOwner
, tak jak ma to miejsce podczas wyświetlania podglądu elementuNavHost
. (I7d8b4)- Tworzenie wiadomości związanych z nawigacją zależy teraz od Nawigacji
2.3.5
. Rozwiązaliśmy problem występujący podczas korzystania z funkcjiBackHandler
w miejscu docelowymNavHost
. (I7e63b, b/182284739)
Wersja 1.0.0-alfa09
10 marca 2021 r.
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha09
została zwolniona. Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
LocalViewModelStoreOwner.current
zwraca teraz wartośćViewModelStoreOwner
dopuszczającą wartość null, aby lepiej określić, czy elementViewModelStoreOwner
jest dostępny w bieżącej kompozycji. Interfejsy API, które wymagają żądaniaViewModelStoreOwner
, takie jakviewModel()
iNavHost
, nadal zgłaszają wyjątek, jeśliViewModelStoreOwner
nie jest ustawiony. (Idf39a).
Poprawki błędów
- Tworzenie nawigacji zależy teraz od Nawigacji 2.3.4, która zawiera poprawkę uniemożliwiającą ustawienie tego samego obiektu ViewModelStore po ustawieniu wykresu. (I65c24, b/177825470)
Wersja 1.0.0-alfa08
24 lutego 2021 r.
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha08
została zwolniona. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
NavHost
uzupełnia teraz pole CompositionLocalLocalSavedStateRegistryOwner
oNavBackStackEntry
tego miejsca docelowego, dzięki czemu każdy stan bezpośrednio zapisany w elemencieSavedStateRegistry
zostanie zapisany i przywrócony razem z miejscem docelowym. (I435d7, b/179469431)
Wersja 1.0.0-alfa07
10 lutego 2021 r.
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Aktualizacje zależności
- Tworzenie wiadomości w Nawigacji zależy teraz od tworzenia widoku modelu cyklu życia 1.0.0-alfa01 w celu zapewnienia obsługi języka
viewModel()
w miejscach docelowychcomposable
. (I7a374) NavHost
używa teraz nowego parametruLocalOnBackPressedDispatcherOwner
z metody Activity-Compose 1.3.0-alpha01, aby pobraćOnBackPressedDispatcher
ustawiony w elemencieNavController
. (I65b12)
Wersja 1.0.0-alfa06
28 stycznia 2021 roku
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W elemencie
NavController
dodano metodę rozszerzeniagetBackStackEntry(route: String)
, która zwraca powiązaną z nimi wartośćNavBackStackEntry
. (If8931)
Wersja 1.0.0-alfa05
13 stycznia 2021 r.
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zaktualizowano pod kątem tworzenia wiadomości w wersji 1.0.0-alfa10.
Wersja 1.0.0-alfa04
16 grudnia 2020 roku
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
- Zaktualizowano pod kątem zgodności z opcją
1.0.0-alpha09
tworzenia wiadomości.
Wersja 1.0.0-alfa03
Grudzień 2, 2020
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcje
popBackStack()
inavigateUp()
nie działały po zmianie konfiguracji lub przeprowadzeniu procesu śmierci i przywracania. (Icea47, b/173281473) - Przechodzenie do zagnieżdżonego wykresu w NavHost działa teraz prawidłowo. (I0948d, b/173647694)
Wersja 1.0.0-alfa02
11 listopada 2020 roku
Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Nawigacja do tworzenia wiadomości obsługuje teraz opcje NavOptions w przypadku korzystania z operacji popUpTo i uruchamianiaSingleTop (If96c3, b/171468994).
- Dodaliśmy funkcję nawigacyjną, która wybiera trasę zamiast identyfikatora, który umożliwia tworzenie zagnieżdżonych wykresów w DSL Nawigacji. (I1661d)
- startDestination znajduje się teraz przed trasą na liście parametrów NavHost (Ie620e)
- Teraz możesz utworzyć wykres, używając trasy jako miejsca docelowego poza obiektem kompozycyjnym NavHost. (Iceb75)
Wersja 1.0.0-alfa01
28 października 2020 r.
Aplikacja android.navigation:navigation-compose:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Artefakt navigation-compose
umożliwia integrację komponentu nawigacji z Jetpack Compose. Funkcja ta używa funkcji @Composable
jako miejsc docelowych w aplikacji.
Ta wstępna wersja zapewnia:
- Obiekt kompozycyjny
NavHost
, który umożliwia tworzenie wykresów nawigacyjnych przy użyciu DSL Kotlin. - Zakres cyklu życia,
ViewModel
i zapamiętany stan 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 określone elementy pomocnicze w językach
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić stan podnoszenia i połączyć elementNavController
z elementami kompozycyjnymi poza elementemNavHost
(takim jak dolny pasek nawigacyjny).
Więcej informacji znajdziesz w przewodniku po nawigacji w trakcie tworzenia wiadomości.
Wersja 2.3.5
Wersja 2.3.5
7 kwietnia 2021 r.
Aplikacja androidx.navigation:navigation-*:2.3.5
została zwolniona. Wersja 2.3.5 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas nawigacji za pomocą elementów
NavDeepLinkRequest
lubUri
możesz teraz uzyskać dostęp do typuUri
, działania i MIME w wynikowym miejscu docelowym, uzyskując intencję z argumentów za pomocąKEY_DEEP_LINK_INTENT
, powielając funkcje dostępne w przypadku zewnętrznych precyzyjnych linków. (I975c3, b/181521877)
Poprawki błędów
- Parametr
OnBackPressedCallbacks
został dodany do dyspozytora, którego wartośćNavBackStackEntry
jako właściciela cyklu życia jest teraz prawidłowo przechwycona, gdy cykl życia aktywności wynosiSTOPPED
, a następnieSTARTED
(Iff94f, b/182284739) - W analizie domeny precyzyjnego linku nie jest teraz rozróżniana wielkość liter, dzięki czemu
www.example.com
pasuje zarówno do polawww.example.com
, jak i dowww.Example.com
. Pamiętaj, że w nazwach parametrów zapytań nadal jest rozróżniana wielkość liter. (#144, b/153829033) - Naprawiliśmy błąd
NullPointerException
, który mógł występować, gdy miejsce docelowe ma wiele niedopuszczalnych wartości zerowych, a Ty przejdziesz do tego miejsca docelowego, zastępując tylko podzbiór tych argumentów. (Aosp/1644827)
Aktualizacje zależności
- Wtyczka Nawigacja Safe Args Gradle korzysta teraz z wtyczki Kotlin Gradle w wersji 1.4.31. (Aosp/1661058, b/181156413)
Wkład z zewnątrz
- Dziękujemy za
bentrengrove
za żądanie pull, w którym przy analizie domeny precyzyjnego linku nie jest rozróżniana wielkość liter. (#144, b/153829033)
Wersja 2.3.4
Wersja 2.3.4
10 marca 2021 r.
Aplikacja androidx.navigation:navigation-*:2.3.4
została zwolniona. Wersja 2.3.4 zawiera te zatwierdzenia.
Nowe funkcje
- Argumenty
ReferenceType
można teraz prawidłowo analizować, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. Obsługuje zarówno nieprzetworzoną liczbę całkowitą, jak i wartości szesnastkowe poprzedzone znakiem0x
. (#127, b/179166693) - Funkcja
android:defaultValue
dla argumentu z wartościąapp:argType="float"
obsługuje teraz domyślne wartości całkowite, dzięki czemu możesz używaćandroid:defaultValue="0"
zamiast wymagać korzystania z0.0
. (#117, b/173766247)
Poprawki błędów
- Rozwiązano problem zatrzymujący się procesu instalacji podczas korzystania z funkcji dynamicznych Nawigacji. (Ib27a7, b/169636207)
- Wywołanie
setViewModelStore
lubsetLifecycleOwner
z tym samym obiektem, który został już ustawiony, nie będzie działać (Idf491, b/177825470). - Komponent Safe-Args dodaje teraz funkcję blokowania adnotacji do odpowiednich metod podczas korzystania z języka Java. (I8fbc5, b/179463137)
Treści opublikowane przez użytkowników z zewnątrz
- Dziękujemy
JvmName
za prośbę o przeciąganie. Dzięki temu argumentyReferenceType
mogą być teraz prawidłowo analizowane, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. (#127, b/179166693) - Dziękujemy
tatocaster
za żądanie pull zezwalające na użycie argumentudefaultValue
dla argumentuapp:argType=”float”
obsługujące teraz domyślne wartości całkowite. (#117, b/173766247)
Wersja 2.3.3
Wersja 2.3.3
27 stycznia 2021 r.
Aplikacja androidx.navigation:navigation-*:2.3.3
została zwolniona. Wersja 2.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Nie ma już awarii podczas wywoływania elementu
NavBackStackEntry
, zanim elementLifecycle
zostanie przeniesiony doCREATED
. (Ie3ba3) - Poprawiono regresję wywołaną przez parametr b/171364502, w którym przejście do działania o wartości zasobu animacji
0
spowodowało wystąpienie błęduResourceNotFoundException
. (I7aedb, b/176819931)
Wersja 2.3.2
Wersja 2.3.2
Grudzień 2, 2020
Aplikacja androidx.navigation:navigation-*:2.3.2
została zwolniona. Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy regresję w usłudze
NavigationUI
, która powodowała, że użycie miejsca docelowego<activity>
zonNavDestinationSelected
nie powodowało przejścia do aktywności. (I22e34, b/171364502) - Rozwiązaliśmy problem, który powodował, że
navigation-dynamic-features-fragment
wielokrotnie przenosił do nowo zainstalowanego miejsca docelowego. (Aosp/1486056, b/169636207) - Rozwiązaliśmy problem, który powodował, że podczas korzystania z metody
launchSingleTop
do instancjiOnDestinationChangedListener
nie były wysyłane argumenty domyślne. (I2c5cb) - Naprawiono błąd, który powodował, że przejście do zagnieżdżonego wykresu nawigacyjnego nie powodowało utworzenia nowego wystąpienia wykresu na stosie tylnym. (Ifc831)
- Naprawiono błąd, który powodował, że użycie polecenia
navigate()
z obiektempopUpTo
usuwającym ostatnie miejsce docelowe na wykresie nawigacyjnym nie powodowało od razu zniszczenia i usunięcia wykresu nawigacyjnego z wstecznego stosu. (I910a3) - Nawigacja SafeArgs korzysta teraz z aplikacji KotlinPoet w wersji 1.7.2, która dodaje obsługę jawnego trybu interfejsu API Kotlin. (I918b5)
NavHostFragment.findNavController(Fragment)
Sprawdza teraz również główny widok wystroju okna DialogFragment, poza istniejącymi kontrolami hierarchii Fragmentu i hierarchii widoków Fragment. Umożliwia to testowanie fragmentów okien dialogowych, które używają nawigacji z elementamiFragmentScenario
iNavigation.setViewNavController()
. (I69e0d)
Wersja 2.3.1
Wersja 2.3.1
14 października 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.1
została zwolniona. Wersja 2.3.1 zawiera te zatwierdzenia.
Nowe funkcje
- Do interfejsu nawigacji dodaliśmy domyślne zasoby animatora, które są zalecane zamiast domyślnych zasobów animacji. (b/167430145)
- NavOptions zastępuje teraz kod skrótu i metody równania (b/161586466).
- Nawigacja umieszcza teraz aktualne miejsce docelowe w elemencie IllegalArgumentException o nazwie „Brak miejsca docelowego o identyfikatorze”. Powinno to usprawnić debugowanie programistów. (b/168311416)
Poprawki błędów
- Bezpieczne argumenty nie będą już zawijać wiersza zwrotnego, nawet jeśli wygenerowana nazwa klasy argumentu ma więcej niż 100 znaków. (b/168584987)
Zmiany zależności
navigation-ui
zależy teraz od DrawerLayout 1.1.1, dzięki czemuNavigationUI
może otworzyć panel nawet wtedy, gdy używaszLOCK_MODE_LOCKED_CLOSED
lubLOCK_MODE_LOCKED_OPEN
. (b/162253907)- Bezpieczne argumenty zależą teraz od wersji KotlinPoet 1.6.0 (Aosp/1435911)
- Bezpieczne argumenty zależą teraz od wersji AGP 4.0.1 (aosp/1442337)
Wersja 2.3.0
Wersja 2.3.0
24 czerwca 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.2.0
- Integracja modułu funkcji: artefakty
navigation-dynamic-features-runtime
inavigation-dynamic-features-fragment
umożliwiają przechodzenie do miejsc docelowych zdefiniowanych w modułach funkcji, co pozwala na automatyczną obsługę instalacji modułów funkcji w razie potrzeby. Więcej informacji znajdziesz w artykule Nawigowanie z modułami funkcji. - Testowanie nawigacji: artefakt
navigation-testing
udostępnia elementTestNavHostController
, który umożliwia ustawienie bieżącego miejsca docelowego i weryfikację stosu wstecznego po operacjach nawigacji. Więcej informacji znajdziesz w artykule Testowanie nawigacji. - Zwracanie wyniku: właściwość
NavBackStackEntry
powiązana z każdym miejscem docelowym w stosie wstecznym nawigacji umożliwia teraz dostęp doSavedStateHandle
odpowiedniego do przechowywania niewielkich ilości zapisanych informacji o stanie, które powinny być powiązane z konkretnym wpisem stosu wstecznego. Więcej informacji znajdziesz w sekcji Zwracanie wyniku do poprzedniego miejsca docelowego. - Obsługa protokołu
NavigationUI
wOpenable
: wszystkie przypadki użyciaDrawerLayout
wNavigationUI
zostały zastąpione bardziej ogólnym interfejsemOpenable
dodanym w widoku CustomView1.1.0
i zaimplementowanym przezDrawerLayout
w Układie rysunkowym1.1.0
. - Obsługa działań i typów MIME w precyzyjnych linkach: oprócz dotychczasowych dostępnych
app:uri
precyzyjnych linków możesz teraz korzystać z funkcjiapp:action
iapp:mimeType
.NavController
obsługuje teraz nawigowanie przy użyciu dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. Więcej informacji znajdziesz w artykule Nawigowanie przy użyciu NavDeepLinkRequest.
Znane problemy
- W przypadku scalania plików manifestu nie jest jeszcze dostępna obsługa działań precyzyjnych linków i typów MIME. Dopóki nie wykonasz tych czynności, żadne elementy
<intent-filter>
wygenerowane z elementu<nav-graph>
w pliku manifestu nie będą zawierały typu MIME w elemencie<data>
ani w niestandardowym elemencie<action>
. Musisz ręcznie dodać do pliku manifestu odpowiednią wartość<intent-filter>
.
Wersja 2.3.0-rc01
10 czerwca 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiliśmy
NullPointerException
podczas zastępowania instancji miejsca docelowego bez argumentów inną instancją z argumentamisingleTop
. (b/158006669) - Wszystkie wyjątki
destination is unknown
zgłoszone przezNavController
zawierają teraz dodatkowe informacje na potrzeby debugowania, które pomagają określić stan obiektuNavController
. (b/157764916)
Wersja 2.3.0-beta01
20 maja 2020 r.
androidx.navigation:navigation-*:2.3.0-beta01
zostało zwolnione. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że po śmierci procesu
Lifecycle
wartośćNavBackStackEntry
nie była prawidłowo aktualizowana. (b/155218371) OnDestinationChangedListener
instancje zarejestrowane przed wywołaniemsetGraph()
są teraz prawidłowo wysyłane do przywróconego miejsca docelowego po zakończeniu procesu. (b/155218371)- Gdy używasz funkcji
singleTop
, argumentyNavBackStackEntry
są teraz prawidłowo aktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancjiOnDestinationChangeListener
. (b/156545508)
Aktualizacje zależności
- Artefakt
NavigationUI
zależy teraz od widoku CustomView1.1.0-rc01
i Układu rysowania1.1.0-rc01
. (Aosp/1309696)
Wersja 2.3.0-alfa06
29 kwietnia 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha06
została zwolniona. (Wersja 2.3.0-alpha06 zawiera te zatwierdzenia).
Nowe funkcje
- Precyzyjne linki zostały rozszerzone o obsługę
app:action
iapp:mimeType
, a nie tylkoapp:uri
dostępne wcześniej. NavController obsługuje teraz nawigację przy użyciu dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. (b/136573074, b/135334841)
Zmiany w interfejsie API
- Znacznie rozszerzono obsługę DSL w usłudze Kotlin dla miejsc docelowych w dynamicznej nawigacji. (b/148969800)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że intencje precyzyjnych linków były ignorowane przy korzystaniu z zagnieżdżonego miejsca docelowego na początku. (b/154532067)
Wersja 2.3.0-alfa05
15 kwietnia 2020 roku
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- W przypadku wykresu dynamicznego obejmuje wartości
<include-dynamic>
, nie musisz już określać wartościapp:graphPackage
. Zamiast niej po kropce dodaj przyrostekmoduleName
do elementuapplicationId
. Jeśli chcesz dostosować elementgraphPackage
, możesz teraz użyć obiektu zastępczego${applicationId}
. (b/152696768) - Wykres nawigacyjny Kotlin DSL udostępnia teraz
defaultArguments
Map
dla działań, odzwierciedlając możliwość ustawiania wartości domyślnych elementów<action>
w plikach XML nawigacji. (b/150345605)
Poprawki błędów
- Od Nawigacji 2.2.2: poprawiliśmy
IllegalStateException
w przypadku korzystania z precyzyjnego linku do początkowego miejsca docelowego wykresu, jeśli w aktywności występuje wiele wystąpieńNavHostFragment
. (b/147378752)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.2.4
. (Aosp/1277325) - Dynamiczna nawigacja zależy teraz od systemu Play Core
1.7.2
. (Aosp/1282257)
Wersja 2.3.0-alfa04
18 marca 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę miejsc docelowych aktywności modułu funkcji i fragmentów w DSL nawigacji Kotlin. (b/148969800)
Zmiany w interfejsie API
- Klasa
DynamicExtras
nie korzysta już z wzorca konstruktora i można ją teraz konstruować bezpośrednio. (Aosp/1253671) DynamicActivityNavigator
przyjmuje teraz w konstruktorzeContext
, a nieActivity
. (Aosp/1250252)
Poprawki błędów
NavigationUI
nie ignoruje już pustych etykiet (tj. miejsca docelowego zandroid:label=””
) i teraz prawidłowo ustawia pusty ciąg znaków w tytule. (b/148679860)
Aktualizacje zależności
- Artefakty funkcji dynamicznych nawigacji zależą teraz od systemu Play Core
1.6.5
. (b/149556401)
Wersja 2.3.0-alfa03
4 marca 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zamiast korzystać z konkretnej klasy
DrawerLayout
,AppBarConfiguration
korzysta teraz z interfejsuOpenable
wprowadzonego w CustomView1.1.0-alpha02
(jest on implementowany przezDrawerLayout
od DrawerLayout1.1.0-alpha04
), co umożliwia korzystanie z niestandardowych implementacjiOpenable
wNavigationUI
. (b/129030452)
Poprawki błędów
- Reguły ProGuard
navigation-common-ktx
teraz prawidłowo zachowują tylko używane klasyNavArgs
, a nie wszystkie instancjeNavArgs
. (b/150213558)
Zmiany zależności
- Nawigacja cofnęła zależność od podstawowego
1.2.0
, a teraz zależy od wersji Core1.1.0
, aby uniknąć zmuszenia deweloperów do przejścia na nowszą zależność, gdy nawigacja nie wymaga nowych interfejsów API w podstawowym interfejsie1.2.0
.
Wersja 2.3.0-alfa02
19 lutego 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
NavBackStackEntry
umożliwia teraz dostęp doSavedStateHandle
odpowiedniego do przechowywania niewielkich ilości zapisanego stanu, który powinien być powiązany z konkretnym wpisem stosu wstecznego. Przykładowy przypadek użycia znajdziesz w sekcji Zwracanie wyniku. (b/79672220)
Zmiany w interfejsie API
- Aby ułatwić pobieranie tych wartości (
NavBackStackEntry
) dla bieżących i poprzednich miejsc docelowych, dodaliśmy wygodne metodygetCurrentBackStackEntry()
igetPreviousBackStackEntry()
. (b/79672220)
Poprawki błędów
- Podczas uruchamiania aplikacji we własnym stosie zadań
navigateUp()
przekazuje teraz argumenty bieżącego miejsca docelowego i elementKEY_DEEP_LINK_INTENT
do poprzedniego miejsca docelowego. (b/147456890)
Zmiany zależności
- Nawigacja zależy teraz od podstawowego zestawu
1.2.0
.
Wersja 2.3.0-alfa01
5 lutego 2020 r.
Aplikacja androidx.navigation:navigation-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy artefakt
navigation-testing
udostępnia klasęTestNavHostController
. Ta klasa jest alternatywą dla użycia testowegoNavController
do testowania nawigacji, która umożliwia ustawienie bieżącego miejsca docelowego i weryfikację stosu wstecznego po operacjach nawigacji. (b/140884273) - Nowa
navigation-dynamic-features-fragment
(i jej zależność przechodniowa,navigation-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 Nawigowanie z modułami funkcji. (b/132170186)
Poprawki błędów
- Z nawigacji
2.2.1
: precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do końcowych elementów{argument}
lub nie pasują do precyzyjnego linku. (b/147447512) - Z Nawigacji
2.2.1
: reguły ProGuardnavigation-ui
dla elementuDrawerArrowDrawable
zostały zaktualizowane, aby poleandroid.enableJetifier=true
nie jest wymagane. (b/147610424) - Z obszaru Nawigacja
2.2.1
: modułnavigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu zamiast tej samej nazwy conavigation-runtime-ktx
. (Aosp/1141947)
Aktualizacje zależności
- Od nawigacji
2.2.1
: nawigacja2.2.1
zależy teraz od parametrów ViewModel SavedState2.2.0
i Fragment1.2.1
.
Wersja 2.2.2
Wersja 2.2.2
15 kwietnia 2020 roku
androidx.navigation:navigation-*:2.2.2
zostało zwolnione. Wersja 2.2.2 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiliśmy
IllegalStateException
w przypadku korzystania z precyzyjnych linków do początkowej lokalizacji docelowej wykresu, jeśli w aktywności występuje wiele wystąpieńNavHostFragment
. (b/147378752) NavigationUI
nie ignoruje już pustych etykiet (tj. miejsca docelowego zandroid:label=””
) i teraz prawidłowo ustawia pusty ciąg znaków w tytule. Ta funkcja była już opublikowana w sekcji Nawigacja 2.3.0-alfa04. (b/148679860)- Reguły ProGuard
navigation-common-ktx
teraz prawidłowo zachowują tylko używane klasyNavArgs
, a nie wszystkie instancjeNavArgs
. Ta funkcja była już opublikowana w sekcji Nawigacja 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.
Aplikacja androidx.navigation:navigation-*:2.2.1
została zwolniona. Wersja 2.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do końcowych elementów
{argument}
lub niepasować do precyzyjnego linku. (b/147447512) - Reguły ProGuard
navigation-ui
dla:DrawerArrowDrawable
zostały zaktualizowane, aby ustawienieandroid.enableJetifier=true
nie jest wymagane. (b/147610424) - Moduł
navigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu zamiast tej samej nazwy pakietu conavigation-runtime-ktx
. (Aosp/1141947)
Aktualizacje zależności
- Nawigacja
2.2.1
zależy teraz od zapisanego modelu widoku cyklu życia2.2.0
i fragmentu1.2.1
.
Wersja 2.2.0
Wersja 2.2.0
22 stycznia 2020 r.
Aplikacja androidx.navigation:navigation-*:2.2.0
została zwolniona. 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 nawigacyjnego na stosie wstecznym. Zwracany obiektNavBackStackEntry
oprócz argumentów używanych do uruchomienia miejsca docelowego zawiera też właściwościLifecycleOwner
,ViewModelStoreOwner
(takie same jak zwracane przez metodęNavController.getViewModelStoreOwner()
) orazSavedStateRegistryOwner
. - Integracja z zapisanym stanem widoku modelu cyklu życia: domyślna fabryka używana w przypadku korzystania z
by navGraphViewModels()
lub konstruktoraViewModelProvider
z wartościąViewModelStoreOwner
zwracaną przezNavController.getBackStackEntry()
lubNavController.getViewModelStoreOwner()
.SavedStateViewModelFactory
- Obsługa parametrów zapytania w precyzyjnych linkach: precyzyjne linki z parametrami zapytania obsługują teraz kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub dopuszczają wartości null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków.
- Ulepszona obsługa animacji:
NavHostFragment
używa teraz parametruFragmentContainerView
z Fragmentu 1.2.0, aby rozwiązać problemy z z-orderem animacji i wysyłanie wstawionych okien do fragmentów kodu.
Wersja 2.2.0-rc04
18 grudnia 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-rc04
została zwolniona. Wersja 2.2.0-rc04 zawiera te zatwierdzenia.
Poprawki błędów
- Dostosowano domyślne animacje zanikania używane przez
navigation-ui
, tak aby pasowały do zmienionych animacji zanikania we Fragmentu1.2.0-rc04
. (b/145769814)
Wersja 2.2.0-rc03
4 grudnia 2019
Aplikacja androidx.navigation:navigation-*:2.2.0-rc03
została zwolniona. Wersja 2.2.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z analizowaniem precyzyjnych linków w przypadku używania parametrów zapytania i argumentu jako ostatniej części ścieżki, który uniemożliwiał analizę więcej niż 1 znaku końcowego argumentu ścieżki. (b/144554689)
- Rozwiązaliśmy problem z analizą precyzyjnych linków, w wyniku którego parametry opcjonalne otrzymywały wartość
"@null"
zamiastnull
. (b/141613546) - Funkcja
NavHostFragment
prawidłowo przywraca wykres po zmianie konfiguracji w połączeniu z zasadąFragmentContainerView
. (b/143752103)
Zmiany zależności
- Nawigacja zależy teraz od ustawień cyklu życia
2.2.0-rc03
, modelu widoku cyklu życia SavedState1.0.0-rc03
, aktywności1.1.0-rc03
oraz fragmentu1.2.0-rc03
(w odpowiednich przypadkach).
Wersja 2.2.0-rc02
7 listopada 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-rc02
została zwolniona. Wersja 2.2.0-rc02 zawiera te zatwierdzenia.
Zmiany zależności
- Nawigacja zależy teraz od systemu androidx.lifecycle
2.2.0-rc02
.
Wersja 2.2.0-rc01
23 października 2019 r.
Wersja androidx.navigation:navigation-*:2.2.0-rc01
została udostępniona bez zmian od 2.2.0-beta01
. Wersja 2.2.0-rc01 zawiera te zatwierdzenia.
Wersja 2.2.0-beta01
9 października 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-beta01
została zwolniona. Wersja 2.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
NavDestination
i jego podklasy zastępują teraztoString()
, aby podczas debugowania udostępniać bardziej przydatne informacje. (b/141264986)
Zmiany w działaniu
- Dodatkowe parametry zapytania są teraz ignorowane podczas dopasowywania precyzyjnych linków, a nie powoduje błędy 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 również parametry zapytania. (b/141505755)
- Rozszerzenie
navArgs()
Kotlin w witrynieActivity
ma teraz lepszy komunikat o błędzie, jeśli nie ma dodatkowych elementów. (b/141408999) - Wygenerowane przez bezpieczne argumenty klasy Java
Directions
zawierają teraz wartości domyślne. (b/141099045) - Wygenerowane przez bezpieczne argumenty klasy Java
Args
zawierają teraz wartości domyślne. (b/140123727) - Gdy używasz interfejsu
Toolbar
,NavigationUI
nie animuje już zmiany tekstu podczas przechodzenia między 2 miejscami docelowymi najwyższego poziomu. (b/140848160)
Wersja 2.2.0-alfa03
18 września 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-alpha03
została zwolniona. Wersja 2.2.0-alpha03 zawiera te zatwierdzenia.
Zmiany w działaniu
- Połączenie z numerem
setViewModelStore()
po połączeniu z numeremsetGraph
powoduje terazIllegalStateException
. Powinna ona zawsze być ustawiana przezNavHost
w ramach początkowej konfiguracji, aby mieć pewność, że wszystkie instancjeNavBackStackEntry
będą miały spójne miejsce na dane dlaViewModel
instancji. (Aosp/1111821)
Poprawki błędów
- Naprawiliśmy błąd
ConcurrentModificationException
w przypadku używania instancjiViewModel
połączonych z wieloma różnymi instancjami typuViewModelStore
z wykresem nawigacyjnym. (Aosp/1112257)
Wersja 2.2.0-alfa02
5 września 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Precyzyjne linki z parametrami zapytania obsługują teraz kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub dopuszczają wartości null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków. (b/133273839)
- Możesz teraz wywołać
NavController.getBackStackEntry()
, przesyłając identyfikator miejsca docelowego lub wykresu nawigacyjnego na stosie tylnym. Zwracany obiektNavBackStackEntry
oprócz argumentów używanych do uruchomienia miejsca docelowego zawiera też właściwościLifecycleOwner
,ViewModelStoreOwner
(takie same jak zwracane przez metodęNavController.getViewModelStoreOwner()
) orazSavedStateRegistryOwner
. (Aosp/1101691, aosp/1101710)
Poprawki błędów
- Naprawiono błąd, który powodował, że dodanie elementu
NavHostFragment
do obiektuViewPager2
nie powiodło się z powodu błęduIllegalArgumentException
. (b/133640271) - Operator
NavInflater
unika teraz niepotrzebnych połączeń z numeremgetResourceName()
, co skraca czas inflacji nawet o 40%. (b/139213740)
Wersja 2.2.0-alfa01
7 sierpnia 2019 r.
Aplikacja androidx.navigation:navigation-*:2.2.0-alpha01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną w przypadku użyciaby navGraphViewModels()
lub konstruktoraViewModelProvider
z wartościąViewModelStoreOwner
zwracaną przezNavController.getViewModelStoreOwner()
. (b/135716331)
Zmiany w interfejsie API
- Z Nawigacji
2.1.0-rc01
: wycofany interfejs APIgetViewModelStore()
wNavController
wprowadzony w2.1.0-alpha02
został usunięty. (Aosp/1091021)
Poprawki błędów
NavHostFragment
używa teraz parametruFragmentContainerView
. Rozwiązanie problemów z kolejnością animacji i wstawieniami okien w wysyłaniu fragmentów do fragmentów. (b/137310379)
Wersja 2.1.0
Wersja 2.1.0
5 września 2019 r.
Aplikacja androidx.navigation:navigation-*:2.1.0
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ważne zmiany od wersji 2.0.0
- Ograniczanie zakresu obiektów ViewModel do wykresu nawigacyjnego: możesz teraz tworzyć modele widoków danych ograniczone na poziomie wykresu nawigacyjnego za pomocą delegata właściwości
by navGraphViewModels()
dla użytkowników Kotlin korzystających z bibliotek-ktx
lub za pomocą interfejsu APIgetViewModelStoreOwner()
dodanego doNavController
. Więcej informacji znajdziesz w artykule Udostępnianie między miejscami docelowymi danych związanych z interfejsem użytkownika. - Miejsca docelowe okien: możesz teraz tworzyć miejsca docelowe (
<dialog>
), które będą wyświetlaćDialogFragment
, gdy do nich dołączysznavigate
.NavHostFragment
domyślnie obsługuje miejsca docelowe okien. Więcej informacji znajdziesz w artykule Tworzenie miejsca docelowego z DialogFragment. - Nawigacja według identyfikatora URI: możesz teraz
navigate
korzystać z urządzeniaUri
, które korzysta z<deepLink>
dodanego przez Ciebie do miejsca docelowego, aby nawigować do tego miejsca. Więcej informacji znajdziesz w artykule Nawigowanie przy użyciu identyfikatora URI. - NavHostController: interfejsy API używane do tworzenia niestandardowych elementów
NavHost
zostały przeniesione doNavHostController
, dzięki czemu implementacje mogą połączyćNavController
z hostamiLifecycleOwner
,OnBackPressedDispatcher
iViewModelStore
.
Wersja 2.1.0-rc01
7 sierpnia 2019 r.
Aplikacja androidx.navigation:navigation-*:2.1.0-rc01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Wycofany interfejs
getViewModelStore()
API w systemieNavController
wprowadzony w2.1.0-alpha02
został usunięty. (Aosp/1091021)
Wersja 2.1.0-beta02
19 lipca 2019 r.
Aplikacja androidx.navigation:*:2.1.0-beta02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność w stylu Jacoco, która została wprowadzona w
2.1.0-beta01
. (b/137782950)
Wersja 2.1.0-beta01
17 lipca 2019 r.
Aplikacja androidx.navigation:*:2.1.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
NavigationUI
animuje teraz usunięcie przycisku W górę podczas używaniasetupWithNavController()
zToolbar
lubCollapsingToolbarLayout
. (b/131403621)
Poprawki błędów
- Rozwiązaliśmy problem z czasem w przypadku używania wielu elementów NavHostFragment z tym samym kontenerem z elementem
findNavController()
. (b/136021571)
Wersja 2.1.0-alfa06
2 lipca 2019 r.
Aplikacja androidx.navigation:*:2.1.0-alpha06
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Atrybut
app:navGraph
używany przez NavHostFragment został przeniesiony do artefaktunavigation-runtime
. Niestandardowe elementy nawigacyjne, które można dodać za pomocą kodu XML, powinny używać tego atrybutu w celu integracji z panelem hosta edytora nawigacji. (b/133880955)
Zmiany w interfejsie API
- Interfejs API
getViewModelStore()
w domenieNavController
został wycofany i zastąpiony nową metodągetViewModelStoreOwner()
, która zwraca wartośćViewModelStoreOwner
. (Aosp/987010) - Implementacja miejsc docelowych okien pływających, takich jak miejsca docelowe
<dialog>
, została uogólniona w interfejs znacznika (FloatingWindow
), który obecnie implementują wszystkie miejsca docelowe w<dialog>
. Metody nawigacji w interfejsie do interakcji z górnym paskiem aplikacji ignorują teraz miejsca docelowe w aplikacjiFloatingWindow
. (b/133600763)
Zmiany w działaniu
- Obecnie nawigacja prawidłowo synchronizuje jej stan z informacjami widocznymi na ekranie podczas korzystania z miejsca docelowego w
<dialog>
. W związku z tym Nawigacja automatycznie wyświetla teraz miejsca docelowe w usłudze<dialog>
, gdy jedziesz do miejsca docelowego bez okna lub bez aktywności, np. do miejsca docelowego<fragment>
. (b/134089818)
Poprawki błędów
- Nawigacja wstrzymuje teraz animację, która pojawia się podczas odtwarzania aktywności podczas obsługi precyzyjnego linku lub naprawiania błędu wizualnego. (b/130362979)
- Naprawiono błąd, który powodował, że stos wsteczny nawigacji nie był zsynchronizowany podczas tworzenia fragmentu w trakcie dodawania początkowego fragmentu. (b/133832218)
Wersja 2.1.0-alfa05
5 czerwca 2019 r.
Aplikacja androidx.navigation:*:2.1.0-alpha05
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Interfejsy API związane z hostem w domenie
NavController
zostały zmienione i przeniesione do nowej podklasy:NavController
(NavHostController
). (Aosp/966091) - Metoda
NavController
setHostOnBackPressedDispatcherOwner()
została zastąpiona metodąsetOnBackPressedDispatcher()
NavHostController
i teraz wymaga wywołania metodysetLifecycleOwner()
przed jej wywołaniem. (Aosp/965409) NavHostController
zawiera teraz metodęenableOnBackPressed(boolean)
, która zastępuje klasęNavHostOnBackPressedManager
, która została wcześniej zwrócona przez funkcjęsetHostOnBackPressedDispatcherOwner()
. (Aosp/966091)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że stos wsteczny nie był prawidłowy po nawigowaniu według identyfikatora URI. (b/132509387)
- Precyzyjne linki obsługiwane automatycznie przez kontroler NavController są teraz aktywowane tylko raz. (b/132754763)
Wersja 2.1.0-alfa04
16 maja 2019 r.
Aplikacja androidx.navigation:*:2.1.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
NavHostFragment
prawidłowo respektujeapp:defaultNavHost
podczas przechwytywania systemowych zdarzeń przycisku Wstecz, poprawiając regresję w nawigacji2.1.0-alpha03
. b/132077777DialogFragmentNavigator
teraz prawidłowo obsługuje operacjepopBackStack()
inavigateUp()
. b/132576764- Naprawiono problem
IllegalStateException: unknown destination during restore
związany z wielokrotnym nawigowaniem między zagnieżdżonymi wykresami. b/131733658
Wersja 2.1.0-alfa03
7 maja 2019 r.
Aplikacja androidx.navigation:*:2.1.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Znane problemy
- NavHostFragment nadal przechwytuje systemowy przycisk Wstecz mimo użycia
app:defaultNavHost="false"
b/132077777
Nowe funkcje
- Możesz teraz tworzyć miejsca docelowe
<dialog>
, które będą wyświetlaćDialogFragment
, gdy do nichnavigate
.NavHostFragment
domyślnie obsługuje miejsca docelowe okien. b/80267254 - Oprócz wywoływania funkcji
navigate
z identyfikatorem zasobu lub z wystąpieniemNavDirections
możesz teraz korzystać z nawigacjiUri
, która korzysta z<deepLink>
dodanego do miejsca docelowego, aby przejść do prawidłowego miejsca docelowego. b/110412864
Zmiany w działaniu
- Domyślne animacje dostarczane przez NavigationUI zostały zmniejszone z 400 ms do 220 ms, aby dopasować je do domyślnej szybkości animacji działań i fragmentów. b/130055522
Zmiany w interfejsie API
- Metoda
createFragmentNavigator()
elementuNavHostFragment
została wycofana, a jej funkcje zostały przeniesione do nowej metodyonCreateNavController()
, aby podkreślić, że jest to prawidłowy punkt wejścia w przypadku dodawania niestandardowych nawigatorów podczas tworzenia podklasyNavHostFragment
. b/122802849 - Do metody
NavDestination
dodano metodęhasDeepLink()
, która pozwala sprawdzić, czy dany obiektUri
może być obsługiwany przez to miejsce docelowe lub, w przypadku obiektuNavGraph
, do dowolnego miejsca docelowego na wykresie nawigacyjnym. b/117437718
Poprawki błędów
- Argumenty domyślne są teraz prawidłowo przekazywane do instancji
OnDestinationChangedListener
. b/130630686 NavHostFragment
przechwytuje teraz zdarzenia systemowe przy użyciuOnBackPressedDispatcher
, co naprawia problem podczas wykonywania nawigacji warunkowej w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096- W przypadku bezpiecznych argumentów element
android:defaultValue=”@null”
z nieokreślonym argumentemapp:argType
jest teraz prawidłowo wywnioskowany jako argumentstring
. b/129629192
Wersja 2.1.0-alfa02
3 kwietnia 2019 r.
Aplikacja androidx.navigation:*:2.1.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możesz teraz tworzyć modele ViewModele ograniczone do wykresu nawigacyjnego za pomocą delegata usługi
by navGraphViewModels()
w przypadku użytkowników Kotlin lub za pomocą interfejsu APIgetViewModelStore()
dodanego doNavController
. b/111614463
Zmiany w interfejsie API
- Możesz teraz dodać
app:targetPackage
do miejsca docelowego<activity>
, aby ograniczyć pasującą nazwę pakietu. Obsługuje polecenieapp:targetPackage="${applicationId}"
w celu ograniczenia pakietu do identyfikatora Twojej aplikacji. b/110975456
Poprawki błędów
- Element
android:name
w przypadku<activity>
miejsc docelowych nie jest już analizowany jako klasa w czasie zawyżania jego atmosfery, co uniemożliwia klasyfikację ClassNotFoundExceptions podczas korzystania z funkcji dynamicznych. b/124538597
Wersja 2.1.0-alfa01
19 marca 2019 r.
To jest pierwsza wersja alfa nawigacji 2.1.0
.
Zmiany zależności
- Nawigacja zależy teraz od ustawień
androidx.core:core:1.0.1
iandroidx.fragment:fragment:1.1.0-alpha05
. Ta wersja eliminuje również zależność od:androidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
Zmiany w interfejsie API
- Zamiast tworzenia detektora kliknięć z identyfikatorem zasobu i pakietem dodano nową metodę
Navigation.createNavigateOnClickListener(NavDirections)
. b/127631752 - Interfejs
FragmentNavigator.instantiateFragment
został wycofany. Domyślna implementacja używa teraz do tworzenia instancji fragmentów kodu za pomocąFragmentFactory
. b/119054429
Poprawki błędów
- Nawigacja nie wysyła już wartości null
Bundle
, gdy do miejsca docelowego są dołączone argumenty, co naprawia problem podczas korzystania zandroid:defaultValue="@null"
. b/128531879 - Bezpieczne argumenty zależą teraz od wersji KotlinPoet 1.1.0, przez co naprawiono 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
została opublikowana bez zmian z 2.0.0-rc02
.
Wersja 2.0.0-rc02
6 marca 2019 r.
Nawigacja 2.0.0-rc02 zawiera nowe artefakty z identyfikatorem grupy androidx.navigation
i zmienia jej zależności na ich odpowiedniki w AndroidzieX.
Działanie kodu 2.0.0-rc02 jest takie samo jak w przypadku nawigacji 1.0.0-rc02. Aktualizacja z wersji 1.0.0-rc02 nie wymaga wprowadzania żadnych zmian w kodzie. Nie wystarczy też zaktualizować zależności w celu dopasowania ich do nowych zależności.
Aby można było korzystać z nawigacji w wersji 2.X, Twój projekt musi zostać przeniesiony na AndroidaX. Nawigacja 1.0 stabilna będzie ostatnią wersją korzystającą z zależności Biblioteki pomocy. Wszystkie przyszłe wersje programowania aplikacji po wersji 1.0 będą opierać się na AndroidzieX i dalej na stabilnej wersji 2.0.
Zależności sprzed AndroidaX
W wersjach Nawigacji starszych niż AndroidX dołącz 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 przypadku bezpiecznych argumentów dodaj tę ścieżkę classpath do pliku build.gradle
najwyższego poziomu
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
została opublikowana bez zmian z 1.0.0-rc02
.
Wersja 1.0.0-rc02
26 lutego 2019 r.
To jest druga wersja stabilnej wersji nawigacji 1.0.0. Ta wersja zawiera wiele poprawek błędów.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wartość
popBackStack()
była ignorowana, jeśli wykres główny nie miał identyfikatora b/126251695 navigateUp()
prawidłowo obsługuje teraz powrót do zadania aplikacji w przypadku wywołania po obsłudze precyzyjnego linku bezFLAG_ACTIVITY_NEW_TASK
b/126082008- Naprawiono błąd, który powodował, że funkcja
ActivityNavigator.applyPopAnimationsToPendingTransition
nie stosowała prawidłowej animacji po wyjściu b/126237567 - Kod Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych Kotlin, takich jak
in
ifun
, w nazwie pakietu powiązanego z klasąR
. b/126020455
Wersja 1.0.0-rc01
21 lutego 2019 r.
Jest to kandydat do opublikowania stabilnej wersji Nawigacji 1.0.0. Ta wersja zawiera jedną poprawkę błędu.
Poprawki błędów
- Naprawiono błąd związany z używaniem fragmentów i operacji nawigacji
singleTop
b/124294805
Wersja 1.0.0-beta02
12 lutego 2019 r.
Ta wersja zawiera szereg drobnych ulepszeń i ważnych poprawek błędów.
Nowe funkcje
- Możesz teraz używać
0
jakoandroid:defaultValue
dla argumentówreference
. b/124248602
Zmiany w działaniu
- Ścisłe dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z elementem
.*
lub dopasowaniami argumentu. b/123969518
Poprawki błędów
popBackStack()
inavigateUp
prawidłowo zwracają terazfalse
podczas otwierania ostatniego miejsca docelowego na stosie wstecznym, naprawiając regresję wprowadzoną w1.0.0-beta01
. b/123933201- Teraz nawigacja prawidłowo ustawia
ClassLoader
podczas przywracania zapisanego stanu instancji, co pozwala uniknąć problemów podczas korzystania z klas niestandardowych w zapisanym stanieNavigator
lub w argumentach wysyłanych doNavDestination
. b/123893858 - Klasy NavArgs wygenerowane przez Safe Args nie ulegają już awarii podczas przywracania argumentu
Parcelable[]
z zapisanego stanu instancji. b/123963545 - Safe Args prawidłowo usuwa teraz zbędne wygenerowane klasy Kotlin. b/124120883
Wersja 1.0.0-beta01
4 lutego 2019 r.
To jest pierwsza wersja beta Nawigacji. Od tej pory interfejs Navigation API będzie działać stabilnie do czasu następnej wersji, chyba że wystąpią problemy krytyczne. Ta wersja zawiera poprawki błędów i zmiany działania.
Zmiany w działaniu
- Nawigacja zapewnia teraz, że domyślne wartości argumentów są traktowane identycznie w czasie działania oraz przez bezpieczne argumenty. W efekcie tylko argumenty z właściwością
app:argType="reference"
mogą mieć wartość domyślną wskazującą inny zasób (np.@color/colorPrimary
). Próba użycia wartości domyślnej odwołania z inną wartością parametruapp:argType
spowoduje wyjątek podczas analizowania kodu XML nawigacji. b/123551990 - Bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 3.3.0 aosp/888413
- Bezpieczne Args zależą teraz od Kotlin 1.3.20 aosp/888414
Poprawki błędów
- Bezpiecznych argumentów można teraz używać w modułach bibliotek i funkcji we wszystkich wersjach wtyczki Androida do obsługi Gradle. b/121304903
- Naprawiliśmy regresję, która spowodowała, że pojedyncza operacja
popBackStack()
powodowała usunięcie wszystkich kopii miejsca docelowego z góry stosu, a nie tylko jednego miejsca docelowego naraz. b/123552990 - Rozwiązaliśmy problem, który powodował desynchronizację stanu
FragmentNavigator
ze stanem obiektuNavController
, powodującIllegalStateException
podczas próby przywrócenia stosu wstecznego. b/123803044 - Rozwiązaliśmy problem, który powodował, że obsługiwana strzałka wstecz
NavigationUI
nie pojawiała się podczas korzystania z funkcji ProGuard z zaciemnianiem. b/123449431 - Kod wygenerowany przez Safe Args prawidłowo obsługuje teraz użycie
app:argType
wskazującego statycznej klasy wewnętrznej 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-alfa11
23 stycznia 2019 r.
To jest poprawka do wersji 1.0.0-alpha10
, która rozwiązuje problem z Safe Args.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja Safe Args nie importowała klasy Directions powiązanych z działaniami globalnymi. b/123307342
Wersja 1.0.0-alfa10
23 stycznia 2019 r.
Znane problemy
- Safe Args nie zaimportuje klasy Directions powiązanej z działaniami globalnymi. b/123307342
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.
Nowe funkcje
- Użytkownicy Kotlin mogą teraz używać delegata właściwości
by navArgs()
do leniwego pobierania odwołania do klasyNavArgs
wygenerowanej przez Safe Args wActivity
lubFragment
. b/122603367 - Safe Args umożliwia teraz generowanie kodu Kotlin przez zastosowanie wtyczki
androidx.navigation.safeargs.kotlin
. Kod Kotlin został stworzony specjalnie dla modułów Kotlin z użyciem domyślnych argumentów i klas niezmiennych zamiast wzorca konstruktora, który jest wciąż dostępny w poprzedniej wtyczceandroidx.navigation.safeargs
. b/110263087
Zmiany w działaniu
- Pasujące precyzyjne linki są teraz promowane w odniesieniu do precyzyjnego linku, który ma najlepiej dopasowane argumenty. b/118393029
- Wywołanie
setGraph()
w urządzeniuNavController
spowoduje teraz zresetowanie stosu wstecznego. b/111450672 - Nieznane precyzyjne linki nie powodują już wywołania
IllegalStateException
, ale są ignorowane, co rozwiązuje problemy z zagnieżdżonymi lub wieloma elementamiNavHostFragment
. b/121340440
Niezbędne zmiany
- Metoda
NavOptions.applyPopAnimationsToPendingTransition()
stosowania animacji pop w aktywności został przeniesiony doActivityNavigator
. b/122413117 - Bezpieczne argumenty pozwalają teraz uniknąć powielania identycznych klas działań bez argumentów. Zwracany typ metod bez argumentów w wygenerowanych klasach NavDirections to teraz
NavDirections
. b/123233147 - Klasy wskazówek dojazdu wygenerowane przez Safe Args nie mają już publicznego konstruktora – należy korzystać tylko z wygenerowanych metod statycznych. b/123031660
- Klasyfikowane przez bezpieczne argumenty klasy
NavDirections
nie mają już publicznego konstruktora. Należy je generować tylko za pomocą metod statycznych w wygenerowanych klasach Directions. b/122963206 - Zwrócony
Bundle
z kolumnygetArguments()
NavDirections
jest teraz oznaczony jako@NonNull
, a nie@Nullable
. b/123243957
Poprawki błędów
NavDeepLinkBuilder
teraz prawidłowo obsługuje wiele jednoczesnych operacjiPendingIntent
do tego samego miejsca docelowego, używając argumentów, które przekazujesz, aby określić unikalność. b/120042732NavController
teraz prawidłowo obsługuje operacjepopBackStack()
podczas korzystania z zagnieżdżonychNavHostFragment
i innych podrzędnych fragmentów z wykorzystaniem stosu wstecznego. b/122770335NavigationUI
poprawnie ustawia teraz opis treści przycisku w górę. b/120395362- Wygenerowane przez Safe Args klasy Directions prawidłowo obsługują teraz działania globalne, które mają ten sam identyfikator co działanie w miejscu docelowym. b/122962504
- Wygenerowane przez bezpieczne klasy argumenty
NavDirections
poprawnie mają teraz równehashCode()
wartości, aequals()
zwraca wartość „prawda”. b/123043662 FragmentNavigator
zwraca teraz lepszy komunikat o błędzie, jeśli spróbujesz wykonać niestandardową czynnośćFragmentTransactions
na urządzeniuFragmentManager
NavHostFragment
. Należy zawsze używać językagetChildFragmentManager()
. b/112927148
Wersja 1.0.0-alfa09
18 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.
Postanowiliśmy nie kontynuować opracowywania artefaktu android.arch.navigation:navigation-testing
. Chociaż okazało się to pomocne w wewnętrznych testach funkcji NavController
, zdecydowanie zalecamy korzystanie z alternatywnych strategii testowania, takich jak naśladowanie wystąpienia NavController
, ponieważ pozwoli to sprawdzić, czy wykonywane są prawidłowe wywołania navigate()
. To podejście zostało szczegółowo omówione w prezentacji dotyczącej pojedynczego działania na AndroidDevSummit 2018. Będziemy też pracować nad dodatkową dokumentacją dotyczącą testowania z nawigacją.
Nowe funkcje
- Obiekty
MenuItem
z elementemmenuCategory="secondary"
nie będą już wstawać wstecznego stosu, gdy są używane z metodamiNavigationUI
. b/120104424 AppBarConfiguration
umożliwia teraz ustawienie wystąpienia kreacji zastępczejOnNavigateUpListener
, która będzie wywoływana, gdynavController.navigateUp()
zwrócifalse
. b/79993862 b/120690961
Niezbędne zmiany
- Gdy używasz obiektu
<argument>
z elementemargType="reference"
, nawigacja nie analizuje już odwołania, a zamiast tego udostępnia sam nieprzetworzony identyfikator zasobu. b/111736515 - Domyślnie
onNavDestinationSelected()
wraca do miejsca docelowego początkowego wykresu nawigacyjnego, dzięki czemu jest zgodna z metodamisetup
. DodajmenuCategory="secondary"
do tablicyMenuItem
, aby nie powiększyć stosu. aosp/852869 - Metody
fromBundle()
wygenerowanych klasArgs
przyjmują teraz niepustą wartośćBundle
zamiast wartości nullBundle
aosp/845616
Poprawki błędów
- Argumenty są teraz prawidłowo analizowane z precyzyjnych linków jako prawidłowe
argType
, a nie zawsze jako ciągi znaków b/110273284 - Teraz Nawigacja prawidłowo eksportuje swoje zasoby publiczne b/121059552
- Usługa Safe Args jest teraz zgodna z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 lub nowszej b/119662045
Wersja 1.0.0-alfa08
6 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.
Nowe funkcje
- Etykiety miejsc docelowych używane z metodami
NavigationUI
będą teraz automatycznie zastępować instancje{argName}
w obiekcieandroid:label
prawidłowym argumentem b/80267266. - Nawigacja zależy teraz od biblioteki pomocy 28.0.0 b/120293333
Niezbędne zmiany
- Nazwa usługi
OnNavigatedListener
została zmieniona naOnDestinationChangedListener
b/118670572 OnDestinationChangedListener
przekazuje teraz takżeBundle
argumentów aosp/837142.- Atrybuty
app:clearTask
iapp:launchDocument
oraz powiązane z nimi metody zostały usunięte. Użyj operatoraapp:popUpTo
z pierwiastkiem wykresu, aby usunąć wszystkie miejsca docelowe ze stosu wstecznego. b/119628354 ActivityNavigator.Extras
używa teraz wzorcaBuilder
i dodaje możliwość ustawiania dowolnych flagIntent.FLAG_ACTIVITY_
aosp/828140- Nazwa domeny
NavController.onHandleDeepLink
została zmieniona nahandleDeepLink
aosp/836063 - Wiele klas i metod, które nie są przeznaczone do podklas, np.
NavOptions
,NavInflater
,NavDeepLinkBuilder
iAppBarConfiguration
, zostało utworzonychfinal
aosp/835681. - Wycofana metoda
NavHostFragment.setGraph()
została usunięta aosp/835684 - Wycofana metoda
NavigationUI.navigateUp(DrawerLayout, NavController)
została usunięta. aosp/835684 - Tworzenie fragmentów kodu zostało przeniesione do
FragmentNavigator
, co ułatwia przekazanie procesu tworzenia fragmentów na platformęFragmentFactory
. b/119054429 - Konstruktor
NavGraphNavigator
nie przyjmuje już typuContext
aosp/835340 - NavigatorProvider to teraz klasa, a nie interfejs. Element
NavigatorProvider
zwrócony przezgetNavigatorProvider()
nie zmienił się. aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń pod numernavigate()
pod numerNavigator
. aosp/830663- Znacząca refaktoryzacja parametru
Navigator
eliminuje potrzebę korzystania z elementuOnNavigatorNavigatedListener
. Zamiast tegonavigate
zwraca przekierowywanyNavDestination
. - Instancje (
Navigator
) nie mogą już wysyłać zdarzeń typu pop do interfejsuNavController
. Rozważ użycieOnBackPressedCallback
do przechwycenia naciśnięć przycisku Wstecz i wywołanianavController.popBackStack()
. Aosp/833716
Poprawki błędów
popUpTo
działa teraz konsekwentnie, gdy miejscem docelowym jest element<navigation>
b/116831650- Naprawiliśmy kilka błędów, które powodowały występowanie błędu
IllegalArgumentException
podczas korzystania z zagnieżdżonych wykresów b/118713731 b/113611083 b/113346925 b/113305559 - Atrybut
dataPattern
miejsc docelowych<activity>
będzie teraz wypełniać argumenty z argumentów innych niż ciąg znaków przez wywołanie metodytoString()
b/120161365
Bezpieczne argumenty
- Bezpieczne argumenty obsługują obiekty możliwe do serializacji, w tym wartości Enum. Typy wyliczeń mogą ustawić wartość domyślną za pomocą literału wyliczeniowego bez nazwy klasy (np.
app:defaultValue="READ"
) b/111316353 - Bezpieczne Args obsługują tablice wszystkich obsługiwanych typów b/111487504
- Safe Args ignoruje teraz podfoldery katalogów zasobów b/117893516
- Tam, gdzie to możliwe, Safe Args dodaje adnotacje
@Override
b/117145301
Wersja 1.0.0-alfa07
29 października 2018 r.
Nowe funkcje
- Nowa klasa AppBarConfiguration pozwala określić, które miejsca docelowe są uznawane za miejsca docelowe najwyższego poziomu. Więcej informacji znajdziesz w zaktualizowanej dokumentacji. b/117333663
- Teraz możesz przekazywać argumenty do początkowego miejsca docelowego wykresu b/110300470
- Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, łącznikami i znakami plusa. b/112806402
Niezbędne zmiany
- Moduł
navigation-testing-ktx
został złożony do jednostkinavigation-testing artifact
i nie zostanie opublikowany. - Artefakt
navigation-testing
zależy teraz od biblioteki standardowej Kotlin. Interfejs API został zmieniony, by był bardziej zgodny z konwencjami Kotlin, ale nadal możesz go używać do testów napisanych w Javie. - Wykresy nawigacyjne zarejestrowanych w pliku manifestu metadanych nie są już obsługiwane. b/118355937
- Akcji 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ścia i wyjścia. b/117145284
- Usunięto awarię, która występowała po zmianie konfiguracji podczas korzystania z niestandardowych nawigatorów. b/110763345
Bezpieczne argumenty
- Bezpieczne argumenty są teraz uzależnione 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-alfa06
20 września 2018 r.
Nowe funkcje
- Przejścia elementów udostępnionych w przypadku miejsc docelowych fragmentów i aktywności są teraz obsługiwane b/79665225. Więcej informacji znajdziesz w artykule Wdrażanie nawigacji za pomocą komponentu Architektura nawigacji.
- Wybranie elementu w usłudze
NavigationView
spowoduje teraz zamknięcie każdej zawierającej dolną planszę b/112158843
Zmiany w interfejsie API
- Zmiana wymagająca: metoda Nawigatora
navigate()
przyjmuje teraz parametrNavigator.Extras
. - Metoda
getGraph()
kontrolera NavController to terazNonNull
b/112243286
Poprawki błędów
NavigationUI.setupWithNavController()
nie ujawnia już wyświetleń, jeśli jest używany z widokami z poszczególnych miejsc docelowych b/111961977- Nawigator
onSaveState()
jest teraz wywoływany tylko raz b/112627079
Bezpieczne argumenty
- Klasy wskazówek dojazdu do miejsca docelowego nawigacji rozszerzają teraz klasę Directions swoich elementów nadrzędnych (o ile taka istnieje w klasie b/79871405).
- Klasy kierunków i args mają teraz przydatną implementację
toString()
b/111843389
Wersja 1.0.0-alfa05
10 sierpnia 2018 r.
Poprawki błędów
- Popraw błąd, który powoduje nieprawidłowe działanie cofania. b/111907708
- Popraw błąd w
equals()
klasach wygenerowanych argumentów. b/111450897 - Napraw błąd kompilacji w Safe Args. b/109409713
- Jak naprawić konwersję z identyfikatorów zasobów na nazwy Java b/111602491
- Naprawianie komunikatów o błędach dotyczących wartości null we wtyczce Safe Args.
- Dodaj brakujące adnotacje wartości null.
Wersja 1.0.0-alfa04
19 lipca 2018 r.
Nawigacja 1.0.0-alpha04
i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.
Zmiany w interfejsie API lub zachowaniu
- NavHostFragment zawsze ustawia bieżący fragment jako główny fragment nawigacyjny, upewniając się, że menedżery fragmentów podrzędnych są umieszczane przed wypełnieniem zewnętrznego kontrolera NavController b/111345778.
Bezpieczne argumenty
- Zmiana powodująca niezgodność:
app:type
została zmieniona naapp:argType
, aby uniknąć konfliktów z innymi bibliotekami, takimi jak ConstraintLayout 2.0.0-alpha1 b/111110548 - Komunikaty o błędach z bezpiecznych argumentów można teraz kliknąć b/111534438
- Klasy Args potwierdzają teraz, że atrybuty
NonNull
w rzeczywistości nie mają wartości null b/111451769 - Do klas wygenerowanych na podstawie polecenia NavDirections i Args zostały dodane dodatkowe adnotacje
NonNull
b/111455455 b/111455456.
Poprawki błędów
- Naprawiono problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnego linku do miejsca docelowego fragmentu b/111515685
Wersja 1.0.0-alfa03
12 lipca 2018 r.
Nawigacja 1.0.0-alpha03
i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.
Zmiany w interfejsie API lub zachowaniu
- Dodano metodę NavigationUI.setupWithNavController do paska narzędzi Toolbar b/109868820
- Wprowadzono metodę NavigationUI.setupWithNavController do klasy CollapsingToolbarUkład: b/110887183
- popBackStack() zwraca teraz wartość „false”, 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 FragmentManager, unikając wyjątków „Nie można wykonać tego działania po onSaveInstanceState” b/110987825
Bezpieczne argumenty
- Zmiana zmieniająca: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkością liter wielbłąda w odpowiednich nazwach metod NavDirections.
- Np.
DemoController.index
zmieni się nasetDemoControllerIndex
b/79995048 - Np.
action_show_settings
zmieni się naactionShowSettings
b/79642240
- Np.
- Niezgodna zmiana: domyślnie argumenty nie mają wartości zero. Aby zezwolić na wartości null w ciągu znaków i argumentach typu parcelable, dodaj
app:nullable="true"
b/79642307 - Możesz teraz używać
app:type="long"
z wartością defaultValues w postaci „123L” b/79563966 - Argumenty typu Parcelable są teraz obsługiwane przy użyciu w pełni kwalifikowanej nazwy klasy w funkcji
app:type
. Jedyną obsługiwaną wartością domyślną jest"@null"
b/79563966 - Klasy ARG implementują teraz
equals()
ihashCode()
b/79642246 - Wtyczkę Safe Args możesz teraz stosować w projektach biblioteki b/80036553
- Wtyczka Safe Args można teraz stosować do projektów cech b/110011752
Poprawki błędów
- Rozwiązaliśmy problemy z nawigacją w ramach metod cyklu życia fragmentu b/109916080
- Rozwiązanie problemów z wielokrotnym nawigacją po zagnieżdżonych wykresach b/110178671
- Rozwiązanie problemów z usługą
setPopUpTo
z pierwszym miejscem docelowym na wykresie b/109909461 - Rozwiązanie problemu polegającego na tym, że wszystkie wartości
app:defaultValue
były przekazywane jako ciągi znaków b/110710788 - aapt2 w pakiecie z wtyczką Androida do obsługi Gradle 3.2 Beta 01 dodaje teraz reguły Keep dla każdego atrybutu
android:name
w plikach XML nawigacji b/79874119 - Usunięto wyciek pamięci podczas zastępowania domyślnego obiektu FragmentNavigator b/110900142
Wersja 1.0.0-alfa02
7 czerwca 2018 r.
Zmiany w działaniu
FragmentNavigator
używa teraz kontasetReorderingAllowed(true)
. b/109826220Teraz nawigacja URLDekoduje argumenty URL-e analizowane z adresów URL precyzyjnych linków. b/79982454
Poprawki błędów
Naprawiono błąd
IllegalStateException
podczas wywoływania przechodzenia z metod cyklu życia fragmentu. b/79632233Aby rozwiązać problem migotania podczas używania animacji, nawigacja korzysta teraz z Biblioteki pomocy w wersji 27.1.1. b/80160903
Poprawiono błąd
IllegalArgumentException
w przypadku użycia parametru defaultNavHost="true" jako fragmentu podrzędnego. b/79656847Naprawiono błąd
StackOverflowError
podczas korzystania z NavDeepLinkBuilder. b/109653065Naprawiono błąd
IllegalArgumentException
podczas przechodzenia z powrotem do zagnieżdżonego wykresu. b/80453447Naprawiono problem z nakładającymi się fragmentami przy korzystaniu z funkcji
launchSingleTop
. b/79407969Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla zagnieżdżonych wykresów. b/79734195
Podczas korzystania z zagnieżdżonego wykresu jako elementu
MenuItem
interfejs NavigationUI wyróżnia teraz właściwy element. b/109675998
Zmiany w interfejsie API
Atrybut
clearTask
działań i powiązany interfejs API wNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
działań i powiązany interfejs API wNavOptions
zostały wycofane. b/109806636
Wersja 1.0.0-alfa01
8 maja 2018 r.
Nawigacja stanowi platformę do tworzenia nawigacji w aplikacji. Pierwsza wersja to 1.0.0-alpha01
.