Nawigacja
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
10 lipca 2024 r. | 2.7.7 | - | 2.8.0–beta05 | - |
Deklarowanie zależności
Aby dodać zależność w 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 odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 2.8
Wersja 2.8.0-beta05
10 lipca 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta05
została zwolniona. Wersja 2.8.0-beta05 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw błąd nawigacji (
singleTop
), gdy zagnieżdżoneNavGraphs
korzystają z tej samej trasystartDestination
. (I17b94, b/294408596)
Wersja 2.8.0-beta04
26 czerwca 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta04
została zwolniona. Wersja 2.8.0-beta04 zawiera te zatwierdzenia.
Poprawki błędów
- Nawigacja obsługuje teraz nawigację z pustymi ciągami znaków w argumentach ścieżki. (Ic5dbd, b/339481310)
- Popraw komunikat o błędzie dotyczący niestandardowych serializerów zadeklarowanych bezpośrednio w polach klasy przez
@Serializable(with =...)
, aby wyjaśnić, że obecnie jest to nieobsługiwana funkcja. (I052b0, b/341319151) - Testowy interfejs API
SavedStateHandleFactory
może być teraz używany w testach niedotyczących Androida, ale będzie wymagać Robolectric do obsługi analizy argumentów za pomocą pakietów. (I76cdc, b/340966212) - Rozwiązaliśmy problem powodujący awarię, która występowała podczas przywracania stanu przy wznawianiu aplikacji po śmierci procesu w przypadku korzystania z nawigacji obsługującej pisanie w narzędziu Compose. (Ia8f38, b/341801005)
- Naprawiono błąd w funkcji tworzenia nawigacji, który powodował, że po anulowaniu gestu przewidywania gestu cofania użytkownik
NavBackStackEntry
wracał i nigdy nie wracał doRESUMED
stanu cyklu życia. Dzięki temu powracające miejsce docelowe prawidłowo animuje się z powrotem, a nie wskoczy na miejsce po zwinięciu. (I97a0c, b/346608857) - Gdy korzystasz z funkcji przewidywania wstecz w funkcji tworzenia nawigacji, miejsce docelowe ma teraz odpowiednią animację w kolejności nakładania się na niego, a nad nim jest prawidłowo animowane. (I2077b, b/345993681)
Wersja 2.8.0-beta03
12 czerwca 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta03
została zwolniona. Wersja 2.8.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja
CollectionNavType
ma nową abstrakcyjną metodęemptyCollection()
. Zastąp to ustawienie, aby obsługiwać pustą kolekcję przekazywaną jako argument. (Ie4d84, b/341723133)
Poprawki błędów
- Dodaliśmy dokumentację dotyczącą
NavType.serializeAsValue
iserializeAsValues
, by podkreślić, że ostateczne dane wyjściowe powinny być zakodowane przy użyciu identyfikatora URI. (Ida6bd, b/344943214) - Naprawiono awarię, która występowała podczas wywoływania funkcji
toRoute<T>
z pustym argumentemCollectionNavType
. Podczas poruszania się z wartościąCollectionNavType
o wartości null argumentem wyjściowym będzie wartość domyślna zadeklarowana w klasie Serializable lub wartość zwracanaemptyCollection()
, jeśli nie ma wartości domyślnej. (I84158, Id630f, b/342672856)
Wersja 2.8.0-beta02
29 maja 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta02
została zwolniona. Wersja 2.8.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono
ClassCastException
awarię, która występowała podczas używaniaNavBackStackEntry.toRoute
z niestandardowymNavType
z wartością null. (I1c29b, b/342239473) - Rozwiązaliśmy problemy z odtwarzaniem wstecznego stanu stosu Nawigacji, które występowały podczas próby przywrócenia wpisu stosu, który jest nieosiągalny za pomocą identyfikatora z bieżącego miejsca docelowego. Ponieważ trasy są zależne od identyfikatorów, zmiana dotyczyła również miejsc docelowych utworzonych z wykorzystaniem tras. Rozwiązano też awarię spowodowaną wywołaniem funkcji
clearBackStack()
z tym samym problemem. (I423c3, b/339908057)
Wersja 2.8.0-beta01
14 maja 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta01
została zwolniona. Wersja 2.8.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Funkcja
SavedStateHandle.toRoute()
przyjmuje teraz parametrtypeMap
dla typów argumentów niestandardowych. (IE39fb, b/339026523) - W programie
navigation-testing
dodano testowy interfejs API w celu utworzenia obiektuSavedStateHandle
z obiektu Kotlin z możliwością serializacji. (Id4867, b/339080702)
Poprawki błędów
- Dodaliśmy brakujące dokumenty parametrów funkcji nawigacji Kotlin DSL. (I26a36)
Wersja 2.8.0-alpha08
1 maja 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha08
została zwolniona. Wersja 2.8.0-alfa08 zawiera te zatwierdzenia.
Bezpieczne argumenty w funkcji Navigation Compose
- Zakończyliśmy prace nad zapewnieniem bezpieczeństwa typu czasu kompilowania w usłudze Navigation Compose oraz użytkownikom nawigacji DSL opartej na serializacji Kotlin. Wcześniej eksperymentalne interfejsy API są teraz stabilne. (Iea94d, I0eb0d, I873b7, E8}E5}E5}, I8}, I8}I95, I95, I95
Ta funkcja wykorzystuje serializację Kotlin, aby umożliwić definiowanie miejsc docelowych na wykresie nawigacyjnym za pomocą obiektów i klas danych umożliwiających bezpieczne typy:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Więcej informacji znajdziesz w poście na blogu na temat funkcji Nawigacja i Bezpieczeństwo typów.
Nowe funkcje
- Artefakt
navigation-fragment-compose
udostępnia teraz kompozycjęLocalFragment
lokalną dla metod kompozycyjnych w obiekcieComposableFragment
. (If35e5). NavType
ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i długich. (I4b6dd, Ia914c, b/188693139)
Wersja 2.8.0-alpha07
17 kwietnia 2024 r.
Usługa 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ęComposableNavHostFragment
dlaNavHostFragment
, która umożliwia dodawanie 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 pełna i jednoznaczna nazwa jest używana jako atrybutandroid:name
w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc tworzony jest fragment zawierający treści kompozycyjne. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Zmiany interfejsu API
- Nadal obsługiwane są bezpieczne argumenty w Navigation Compose przy użyciu metody opartej na serializacji Kotlin. Działanie tych interfejsów API nie zostało ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta w kolejnej wersji, gdy cała powierzchnia interfejsu API będzie gotowa. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I24}d15}, I24}I9b73 I24}I9b73
Wersja 2.8.0-alpha06
3 kwietnia 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha06
została zwolniona. Wersja 2.8.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozpoczęła się obsługa bezpiecznych argumentów w Navigation Compose z użyciem metody opartej na serializacji Kotlin. Działanie tych interfejsów API nie zostało ukończone i są oznaczone adnotacją
ExperimentalSafeArgsApi
. Ta adnotacja zostanie usunięta w kolejnej wersji, gdy cała powierzchnia interfejsu API będzie gotowa. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, I24e41, cb15} cb15} cb15}
Poprawki błędów
- W usłudze
NavHost
jako domyślny argument content wyrównanie jest teraz używanyAlignment.TopStart
. Nadaje to wartość domyślną dlaAnimatedContent
i eliminuje niektóre przypadki nieoczekiwanej skali od środka. (I09e72, b/330111602) - Gdy podczas korzystania z funkcji tworzenia nawigacji zamiast szybkiego cofania się przesuwasz niestandardowe przejście,
NavHost
może teraz prawidłowo wykonać przejście niestandardowe. (I99017, b/327292110)
Wersja 2.8.0-alpha05
20 marca 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha05
została zwolniona. Wersja 2.8.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz przekazywać argumenty do funkcji
startDestination
urządzeniaNavGraph
bezpośrednio na trasiestartDestination
, bez użycia funkcjidefaultValue
. Dotyczy to również zagnieżdżonych typówNavGraph
startDestinations
. (I0e0b5, b/109505019, b/188693139)
Zmiany interfejsu API
- Dodano nową abstrakcyjną klasę
CollectionNavType<T>
, podklasę klasyNavType<T>
dla argumentów opartych na zbiorach, takich jak lista, tablice czy mapy. (Ic6d63, b/188693139) - Wszystkie domyślne tablice
NavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
iStringArrayType
) są teraz typuCollectionNavType
(Idcf79, b/188693139) NavType
udostępnia teraz nowy otwarty interfejs APIvalueEquals
, który określa, czy 2 wartości tego samego typu są sobie równe. (I6cb97, b/327229511)
Poprawki błędów
- Parametry zapytania w precyzyjnych linkach dopuszczają teraz wartości w postaci nawiasów klamrowych wokół nazwy argumentu (np.
{argName}
) jako prawidłowe wartości wNavTypes
opartych na ciągach znaków. Rozwiązuje to problem, który powodował, że taka wartość była uznawana za nieprawidłową (lub braku wartości) dla wszystkich typów. (I18302, b/327274038) - Funkcje
NavController
, które obsługują trasy, takie jaknavigate
lubpopBackStack
, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicyNavTypes
. (IEa805, b/327229511)
Wersja 2.8.0-alpha04
6 marca 2024 roku
Usługa 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 narzędziu Navigation Compose, definiując je jako część inicjowania funkcjicomposable
i/lubnavigation
. (I91062, b/296912651)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że funkcja
NavHost
w nawigacji w tworzeniu wiadomości nie wyświetlała prawidłowo przejścia, gdy użytkownik korzystał z Wstecz bez użycia gestu. (Iceeae, b/325998468)
Wersja 2.8.0-alfa03
21 lutego 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha03
została zwolniona. Wersja 2.8.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Element
NavBackStackEntry.savedStateHandle
jest teraz oznaczony jako@MainThread
, ponieważ korzysta z kodu, który i tak musi być w wątku głównym. (Ibb988, b/299523245)
Poprawki błędów
- Naprawiono błąd w Nawigacji, który powodował, że modele widoków
NavGraph
były zbyt wcześnieDESTROYED
wtedy, ponieważ powiązany wpisViewModel
nie był częścią zapisanego stanu. (Ib6bb7, b/317581849)
Aktualizacja zależności
- Tworzenie wiadomości nawigacyjnych zależy teraz od ustawienia Utwórz w wersji 1.7.0-alfa03.
Wersja 2.8.0-alpha02
7 lutego 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha02
została zwolniona. Wersja 2.8.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Navigation Compose obsługuje teraz funkcję przewidywania w aplikacji z powrotem przez nowe interfejsy API
SeekableTransitionState
dostępne w compose-animation. Dzięki temu możesz użyć gestu cofania, aby wyświetlić poprzednie miejsce docelowe w ramach niestandardowego przejścia przed podjęciem decyzji o zrealizowaniu transakcji za pomocą zrealizowanego gestu lub jej anulowaniem. (I8B8E9).
Wersja 2.8.0-alpha01
24 stycznia 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-alpha01
została zwolniona. Wersja 2.8.0-alfa01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy wyciek
BackStackState
, który powodował, że wiele wywołańsaveState
z miejsca docelowego powodowało zapisanie wielu stanów, ale przywrócono tylko pierwsze z nich. (I598b0, b/309559751) - Rozwiązaliśmy problem, który powodował, że argumenty inne niż ciągi tekstowe nie były prawidłowo wyświetlane, gdy do wypełniania tytułu pasków aplikacji były używane pomocnicze
NavigationUI
. (#636, b/316676794)
Aktualizacja zależności
- Funkcja tworzenia nawigacji wymaga teraz opcji Utwórz
1.7.0-alpha01
, która naprawia błąd, który może powodować nieoczekiwaną animację skali. (b/297258205)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem w przypadku argumentów niebędących ciągiem znaków podczas korzystania z pomocników
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.7
Wersja 2.7.7
7 lutego 2024 r.
Usługa androidx.navigation:navigation-*:2.7.7
została zwolniona. Wersja 2.7.7 zawiera te zatwierdzenia.
Poprawki błędów
- Przeniesione z Nawigacji
2.8.0-alpha01
: usunięto wyciek danychBackStackState
, w wyniku którego po kilku wywołaniachsaveState()
na 1 pojedynczymNavBackStackEntry
zapisano wiele stanów, ale przywrócono tylko pierwszy zapisany stan. (I598b0, b/309559751) - Przeniesione z Nawigacji
2.8.0-alpha01
: naprawiono błąd polegający na tym, że argumenty niebędące ciągami znaków nie były prawidłowo wyświetlane, gdy do wypełniania tytułu pasków aplikacji są używane argumentyNavigationUI
. (#636, b/316676794)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem w przypadku argumentów niebędących ciągiem znaków podczas korzystania z pomocników
NavigationUI
do wypełniania tytułu pasków aplikacji.
Wersja 2.7.6
Wersja 2.7.6
13 grudnia 2023 r.
Usługa androidx.navigation:navigation-*:2.7.6
została zwolniona. Wersja 2.7.6 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
equals()
NavGraph
prawidłowo uwzględnia teraz węzły innego grafu, a nie tylko jeden z wywołań. Dzięki temu wykresy, które mają węzły o różnych identyfikatorach, nie będą już uznawane za równe (I401cb, b/311414915).
Wersja 2.7.5
Wersja 2.7.5
1 listopada 2023 roku
Usługa androidx.navigation:navigation-*:2.7.5
została zwolniona. Wersja 2.7.5 zawiera te zatwierdzenia.
Ulepszenia wydajności
- Znacznie poprawiła się wydajność porównywania 2 wykresów (zarówno pod względem czasu, jak i liczby alokacji). Oznacza to, że wywołania typu
setGraph
służące do wewnętrznego porównania nowego wykresu z wykresem istniejącym są znacznie szybsze i skutkują mniejszą liczbą pomijanych klatek. Dziękujemy Michałowi Z za dokładną analizę, która doprowadziła do tego ulepszenia. (I6ad62). NavHost
wyrenderuje teraz miejsce docelowe początkowe w pierwszym przebiegu kompozycji, zamiast czekać na odczyt zaktualizowanego stanu przez drugi przebieg. (I439a7, b/304852206)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w przypadku wywołania funkcji
setGraph
więcej niż raz z tym samym wykresem tylko wtedy, gdy na wykresie znajdowało się miejsce docelowe, które zawierało działanie łączące 2 miejsca docelowe. (EOG7) - Okna, które były otwierane i zamknięte w krótkich odstępach czasu, nie będą już wyciekać na listę
NavController.visibleEntries
. (I67586, b/287969970) - Po wyświetleniu wpisu i zmianie konfiguracji jego
ViewModel
zostanie teraz prawidłowo wyczyszczony, jeślisaveState
ma wartość false (fałsz). (Idf242, b/298164648) - Rozwiązaliśmy problem, 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łaniemsetGraph
tylko wtedy, gdy intencja przychodząca miała ustawioną flagęFLAG_ACTIVITY_NEW_TASK
. (I73c7f)
Aktualizacje zależności
- Nawigacja z fragmentami kodu jest teraz uzależniona od fragmentu 1.6.2. Naprawiamy problem, który powodował, że wystąpienia
ViewModel
zagnieżdżonych fragmentów nie były wyczyszczone podczas wywoływania funkcjiclearBackStack
.
Wersja 2.7.4
Wersja 2.7.4
4 października 2023 roku
Usługa androidx.navigation:navigation-*:2.7.4
została zwolniona. Wersja 2.7.4 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę tras z argumentami w
popUpTo
. Pozwala to wrócić do konkretnego wpisu korzystającego z konkretnych argumentów i spełniać kryteria zgodne z funkcjąpopBackStack
. (I731f4, b/299255572)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że przerwanie nawigacji z użyciem innej nawigacji z użyciem parametru
popUpTo
powoduje awarięFragmentNavigator
. (I3c848, b/301887045) - Rozwiązaliśmy problem polegający na tym, że naciśnięcie klawisza wstecznego powodowało nieprawidłowe aktualizowanie elementu
currentDestination
, aby pasowało do wyświetlanego fragmentu. (Id0d6c, b/289877514) - Cykl życia
DialogFragment
zostanie teraz prawidłowo zmieniony naRESUMED
po zamknięciu okna powyżej. (I88f0d, b/301811387)
Wersja 2.7.3
Wersja 2.7.3
20 września 2023 r.
Usługa 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 z fragmentami 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 pływającego okna (tj.
Dialogs
,Bottomsheets
itp.) nie otrzymywało wywołania zwrotnego cyklu życiaRESUMED
. (I3b866, b/287505132)
Wersja 2.7.2
Wersja 2.7.2
6 września 2023 r.
Usługa androidx.navigation:navigation-*:2.7.2
została zwolniona. Wersja 2.7.2 zawiera te zatwierdzenia.
Poprawki błędów
- Nawigacja jest teraz uzależniona od cyklu życia
2.6.2
. Naprawiono interakcję międzyrememberSaveable
a kontemNavHost
w funkcji nawigacji, która spowodowała prawidłowe przywrócenie stanurememberSaveable
miejsc docelowych i wszystkich instancjiSavedStateHandle
należących doViewModel
po śmierci i odtworzeniu procesu. (b/298059596, b/289436035) - Rozwiązaliśmy problem, który powodował, że w kompozycji nawigacji jednocześnie wyświetlała się wiele okien dialogowych, w których częściowo zasłonięte okna (np. nie znajdujące się na samej górze) miały stan
CREATED
, a nieSTARTED
. (Aosp/2728520, b/289257213) - Rozwiązaliśmy problem, który powodował, że w funkcji tworzenia nawigacji jednocześnie wyświetlało się wiele okien, w których zamknięcie pierwszego z nich powodowało zablokowanie nowego okna najwyższego poziomu w stanie cyklu życia
STARTED
zamiast poprawnego przeniesienia się doRESUMED
. (Aosp/2629401, b/286371387) - Bezpieczne argumenty nawigacji nie tworzą już instancji zadania w sposób, który w rzeczywistości nie jest wykonywany. (I0e385, b/260322841)
Aktualizacja zależności
- Tworzenie nawigacji zależy teraz od funkcji Utwórz 1.5.1.
Wersja 2.7.1
Wersja 2.7.1
23 sierpnia 2023 r.
Usługa androidx.navigation:navigation-*:2.7.1
została zwolniona. Wersja 2.7.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problemy w nawigacji z funkcją tworzenia wiadomości, które powodowały, że podczas korzystania z elementu
Scaffold
mógł wystąpić błąd przy próbie uzyskania dostępu do elementuViewModel
Lifecycle.State.DESTROYED
. (I1dc11, b/268422136)
Wersja 2.7.0
Wersja 2.7.0
9 sierpnia 2023 r.
Usługa androidx.navigation:navigation-*:2.7.0
została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.6.0
Animacje od akompaniatora
Teraz, gdy usługa AnimatedContent
jest stabilna, udało nam się przenieść kod z Accompanist Navigation Animation z powrotem do narzędzia Navigation Compose.
Oznacza to, że cała obsługa ustawiania niestandardowych przejść z usługi AnimatedNavHost
jest bezpośrednio obsługiwana w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji z nawigacją towarzyszącą i wkrótce ją oficjalnie wycofamy, podobnie jak wskazówki dotyczące przejścia z powrotem do Nawigacji. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa usługi Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych dodatkowych zmian. (b/197140101).
Poprawki błędów
- NavHost w narzędziu Navigation Compose teraz prawidłowo przechwytuje połączenia zwrotne systemu, nawet gdy działanie zostało ZATRZYMANE i WZNÓW. (Icb6de, b/279118447)
Aktualizacje zależności
- Nawigacja opiera się teraz na funkcji Utwórz
1.5.0
od1.1.0
.
Wersja 2.7.0-rc01
26 lipca 2023 r.
Usługa androidx.navigation:navigation-*:2.7.0-rc01
została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że lambda
EnterTransition
iExitTransition
utworzone w ramach elementuNavHost
mogły pozostać w pamięci nawet po usunięciu elementuNavHost
z kompozycji. (I893d0)
Znane problemy
- W Nawigacji w wersji 2.6.x występuje problem polegający na tym, że podczas korzystania z funkcji popUpTo można wywołać błąd
IllegalArgumentException
. Można tego uniknąć, zmieniając strukturę wykresu zgodnie z tymi wskazówkami. (b/287133013)
Wersja 2.7.0-beta02
28 czerwca 2023 r.
Usługa androidx.navigation:navigation-*:2.7.0-beta02
została zwolniona. Wersja 2.7.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja Navigation Compose ma teraz odpowiednią kolejność przejść niestandardowych w przypadku niestandardowych przejść z użyciem opcji
popUpTo
(/Ib1c3a, b/285153947).
Wersja 2.7.0-beta01
7 czerwca 2023 r.
Usługa 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 narzędziu Navigation Compose teraz prawidłowo przechwytuje połączenia zwrotne systemowe, nawet jeśliActivity
ma wartośćSTOPPED
iRESUMED
. (Icb6de, b/279118447)
Wersja 2.7.0-alpha01
24 maja 2023 r.
Usługa androidx.navigation:navigation-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alfa01 zawiera te zatwierdzenia.
Animacje od akompaniatora
Teraz, gdy usługa AnimatedContent
jest stabilna, udało nam się przenieść kod z Accompanist Navigation Animation z powrotem do narzędzia Navigation Compose.
Oznacza to, że cała obsługa ustawiania niestandardowych przejść z usługi AnimatedNavHost
jest bezpośrednio obsługiwana w NavHost
.
Nie wprowadzimy żadnych dodatkowych zmian w animacji z nawigacją towarzyszącą i wkrótce ją oficjalnie wycofamy, podobnie jak wskazówki dotyczące przejścia z powrotem do Nawigacji. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa usługi Accompanist (0.31.2-alpha
), nie musisz wprowadzać żadnych dodatkowych zmian. (b/197140101).
Poprawki błędów
- Z sekcji Nawigacja
2.6.0-rc02
: naprawiono problem z nawigacją we fragmentach „Fragmenty”, która polegała na tym, że nawigacja przy użyciupopUpTo
i wyskakiwanie fragmentu z tylnego stosu bez odtworzenia jego widoku powodowało z powrotem przerwanie działania systemu. (Ieb8d4, b/281726455)
Aktualizacje zależności
- Nawigacja opiera się teraz na funkcji Utwórz
1.5.0-beta01
.
Wersja 2.6.0
Wersja 2.6.0
7 czerwca 2023 r.
Usługa 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
- Elementy
arguments
funkcjiNavBackStackEntry
i elementyarguments
przekazywane do funkcjiOnDestinationChangedListener
są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne przy późniejszym dostępie do instancjiarguments
ani do innych instancjiOnDestinationChangedListener
. - Funkcja
NavDeepLink
obsługuje teraz domyślne wartości tablic, co umożliwia obsługę powtórzonych parametrów zapytania, które będą mapowane na typ tablicy argumentu.NavType
zawiera teraz metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości. - Niestandardowe podklasy klasy
NavType
mogą teraz zastąpić klasęserializeAsValue
, aby zserializować wartość w ciągu znaków. Dzięki temu serializacja i deserializacja (za pomocąparseValue
) mogą zostać w całości zamknięte w klasieNavType
. FunkcjaStringType
zastępuje teraz tę metodę wywoływania funkcjiUri.encode
w określonym elemencieString
.
Ważne zmiany w usłudze Navigation Compose od wersji 2.5.0
- Podczas wyświetlania podglądu funkcji kompozycyjnej przy użyciu funkcji
NavHost
domyślnie wyświetla się terazstartDestination
na wykresie nawigacji. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
są teraz dostępne wszystkie trasy obsługi z argumentami częściowo lub całkowicie wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu.- Próba utworzenia pustego pola
NavDeepLink
za pomocą DSLnavDeepLink
Kotlin spowoduje teraz wyświetlenie ostrzeżenia o tym, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME.
Ważne zmiany w nawigacji z fragmentami kodu od wersji 2.5.0
NavHostFragment
nie przechwytuje już systemowego przycisku Wstecz. Dzięki temu bazoweFragmentManager
może obsłużyć system z powrotem. Dzięki temu fragment fragmentu1.7.0-alpha01
i nowszym może wyświetlać animację wsteczną w aplikacji na urządzeniach z Androidem U.- Gdy korzystasz z nawigacji z fragmentami kodu, próba ręcznego wykonania polecenia
FragmentTransaction
, który dodaje fragment do stosu wstecznegoFragmentManager
, spowoduje zgłoszenieIllegalArgumentException
. 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 do nawigacji, obiekt zastępczy zostanie automatycznie wypełniony wartościąpackageName
kontekstu. FragmentNavigator
używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementówNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać na zakończenie efektów specjalnych we fragmencie, w którym następuje przejście lub zakończenie, przed przeniesieniem ostatniego elementuLifecycle.State
.DialogFragmentNavigator
używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementówNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać, ażDialogFragment
Lifecycle
przejdzie doDESTROYED
, zanim przejdzie do samejDESTROYED
.NavHostFragment
umożliwia teraz pobranieNavController
natychmiast po podłączeniu obiektuNavHostFragment
doFragmentManager
, a nie dopiero poonCreate()
.- Obsługa modułów funkcji dynamicznych zależy teraz od szczegółowej biblioteki Play Feature Delivery.
- Bezpieczne argumenty nawigacji wymagają teraz wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że jest ona obecnie zgodna tylko z wersjami 7.3.0 i nowszymi.
Ważne zmiany w NavigationUI od wersji 2.5.0
- Podczas przekazywania identyfikatora wykresu nawigacji do
AppBarConfiguration
(np. za pomocąMenu
)NavigationUI
traktuje teraz tylko początkowe miejsce docelowe tego wykresu nawigacyjnego jako miejsce docelowe najwyższego poziomu, zamiast oznaczać je nieprawidłowo na wykresie. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. - Integracje
setupWithNavController
wNavigationUI
umożliwiające pracę z górnym paskiem aplikacji będą teraz analizować wartościR.string
dla argumentówReferenceType
znalezionych wandroid:label
jako wartości ciągu znaków, zamiast podawać automatycznie wygenerowaną liczbę całkowitą zasobu. NavigationUI
udostępnia teraz logi, gdy nie może przejść przez wybrany obszarMenuItem
.
Wersja 2.6.0-rc02
24 maja 2023 r.
Usługa 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 „Fragmenty”, która polegała na tym, że nawigowanie z użyciem parametru
popUpTo
i wyskakiwanie fragmentu z tylnego stosu bez odtworzenia jego widoku powodowało z powrotem przerwanie działania systemu. (Ieb8d4, b/281726455)
Wersja 2.6.0-rc01
10 maja 2023 r.
Usługa 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 nawigacji z fragmentami, który powodował, że usunięcie fragmentu przez nawigację z użyciem parametru
popUpTo
w wywołaniu zwrotnym cyklu życiaonResume()
skutkowało wyświetleniemIllegalStateException
. (I21884, b/279644470)
Wersja 2.6.0-beta01
19 kwietnia 2023 r.
Usługa 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ętoString
. (Iff00b).
Poprawki błędów
- Gdy korzystasz z nawigacji z fragmentami kodu, próba ręcznego wykonania polecenia
FragmentTransaction
, który dodaje fragment do stosu wstecznegoFragmentManager
, spowoduje zgłoszenieIllegalArgumentException
. Zawsze dodawaj fragmenty za pomocą interfejsu APInavigate()
. (I6d38e) - Jeśli obiekt
navigate
dodaje wpis i zasadępopBackStack
, która usuwa go w tej samej ramce, wynikowy wpis górny na stosie tylnym będzie teraz konsekwentnie wracać doRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Wersja 2.6.0-alpha09
5 kwietnia 2023 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha09
została zwolniona. Wersja 2.6.0-alfa09 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono sprawdzanie nieprawidłowej trasy, na przykład jeśli
NavDestination
zawiera wartośćNavArgument
, która nie ma wartości null, trasa tego miejsca docelowego musi zawierać zmienne dla argumentów o takich samych nazwach jak wartośćNavArgument
, która nie ma wartości null. (Ic62bf, b/274697949) - Nawigacja z użyciem precyzyjnych linków oparta na metodzie
Action/MimeType
będzie teraz kończyć się niepowodzeniem, jeśli w operacji nawigacji brakuje wartościNavArgument
, która nie jest wartością null wymaganej przez obiektNavDestination
, do którego pasujeAction/MimeType
. (Ibfa17, b/271777424) - Gdy
NavController
ustawi wykres z tą samą trasą i miejscami docelowymi co poprzedni wykres, teraz prawidłowo zastąpi bieżące węzły grafu i miejsca docelowe stosu wstecznego nowymi instancjami. Rozwiązano problem powodujący awarię występującą podczas korzystania z funkcjionLaunchSingleTop
bez zapisywania stanu w narzędziu Nawigacja. Rozwiązuje to też błąd polegający na tym, że w celu nawigacji do miejsc docelowych powiązanych z kompilacją na wykresie głównym i nieprawidłowym stosem powrotnym. (I5bc58, b/275258161, b/275407804)
Wersja 2.6.0-alpha08
22 marca 2023 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha08
została zwolniona. Wersja 2.6.0-alfa08 zawiera te zatwierdzenia.
Nowe funkcje
NavHostFragment
umożliwia teraz pobranieNavController
natychmiast po podłączeniu obiektuNavHostFragment
doFragmentManager
, a nie dopiero poonCreate()
. (Ic6382, b/220186282)
Poprawki błędów
- Naprawiono błąd
NullPointerException
podczas wyświetlania zagnieżdżonego wykresu zawierającego argument niedopuszczający wartości pustych. (6b3581, b/249988437) - Podczas korzystania z systemu po przeprowadzeniu nawigacji przy użyciu
popUpTo
stan elementuNavController
zostanie uzupełniony o właściwy wpis. (I3a8ec, b/270447657) FragmentNavigator
będzie teraz prawidłowo rozpoznawać wpisy, gdy tylny stos zostanie pobrany przez system zwrotny systemu lubpopBackStack()
i czy transakcja używa efektów dla danego fragmentu. (I81bdf)- Dodanie fragmentów do pliku
FragmentManager
FragmentNavigator
bez korzystania z 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 korzysta teraz z interfejsu SavedState
1.2.1
. (078e4e) - Nawigacja jest teraz uzależniona od rozszerzenia ProfileInstaller
1.3.0
. (512f0c)
Wersja 2.6.0-alpha07
8 marca 2023 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha07
została zwolniona. Wersja 2.6.0-alfa07 zawiera te zatwierdzenia.
Poprawki błędów
- Warianty interfejsu API
getBackStackEntry
,popBackStack
iclearBackStack
, które przyjmują trasy, przyjmują teraz wzorce tras z argumentami do wartości null i parametrami zapytania dopuszczonymi do wartości null (I22294, b/269302500) - Naprawiono błąd, który powodował, że wywołanie funkcji
clearBackStack()
z poziomuNavController
nie skutkowało usunięciem zapisanego stanu w menedżerze fragmentów powiązanym z usuniętym stosem wstecznym. (Ic1cce, b/271190202) - Naprawiliśmy regresję w wersjach 2.6.0-alfa06, która powodowała podświetlanie niewłaściwego elementu
MenuItem
w elemencieBottomNavigationView
przy korzystaniu z systemu między kartami. (I634f6, b/270447657) - Naprawiliśmy regresję w wersjach 2.6.0-alfa06, w wyniku której elementy
NavBackStackEntry
nie zostały przeniesione do stanu WZNÓW podczas korzystania z elementówAnimation
. (Ib3589, b/269646882)
Wersja 2.6.0-alpha06
22 lutego 2023 roku
Usługa androidx.navigation:navigation-*:2.6.0-alpha06
została zwolniona. Wersja 2.6.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas wyświetlania podglądu funkcji kompozycyjnej przy użyciu funkcji
NavHost
domyślnie wyświetla się terazstartDestination
na wykresie nawigacji. (I2B89f)
Zmiany interfejsu API
- Wszystkie
NavController
przeciążenia typunavigate
są teraz opatrzone adnotacjami@MainThread
, aby były wywoływane w wątku głównym. (I2c0b0, b/263427111)
Poprawki błędów
- Naprawiono błąd występujący podczas próby nawigacji podczas korzystania z dynamicznej nawigacji po fragmentach. (I3ee29, b/268360479)
- Naprawiono błąd polegający na tym, że przejście do innego fragmentu za pomocą przycisku Wstecz w systemie nie powodowało zmiany dolnego paska na prawidłowy wybrany element (If559f, b/269044426)
Znane problemy
- Jeśli używasz nawigacji z fragmentami kodu, cykl życia
NavBackStackEntry
nie dociera doRESUMED
, gdy używasz interfejsów APIAnimation
. (b/269646882) - Jeśli korzystasz z nawigacji z fragmentami z fragmentami z fragmentami z krzyżykiem i używasz funkcji
BottomNavigation
, próba przywrócenia stosu z kilkoma wpisami spowoduje, żeBottomMenuItem
nie zostanie prawidłowo zaktualizowany. (b/270447657) - Podczas korzystania z nawigacji z fragmentami kodu po przywróceniu stanu
NavBackStackEntry
Lifecycle
nie otrzymuje parametruDESTROYED
, gdy jego fragment ma wartośćDESTROYED
. (B/270610768)
Wersja 2.6.0-alpha05
8 lutego 2023 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha05
została zwolniona. Wersja 2.6.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
są teraz dostępne wszystkie trasy obsługi z argumentami częściowo lub całkowicie wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementówNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać na zakończenie efektów specjalnych we fragmencie, w którym następuje przejście lub zakończenie, przed przeniesieniem ostatniego elementuLifecycle.State
. (I3cb19, b/238686802)DialogFragmentNavigator
używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementówNavBackStackEntries
. Oznacza to, żeNavBackStackEntry
Lifecycle
będzie teraz czekać, ażDialogFragment
Lifecycle
przejdzie doDESTROYED
, zanim przejdzie do samejDESTROYED
. (I53ee5, b/261213893)
Zmiany interfejsu API
NavigatorState
udostępnia teraz interfejs APIprepareForTransition
, który umożliwia platformieNavigator
przenoszenie zasobówNavBackStackEntries
do pośrednichLifecycle.State
. (I42c21, b/238686802)- Za pomocą usługi
backstack
możesz teraz uzyskać dostęp do stosu wstecznego powiązanego zNavGraphNavigator
lubComposeNavigator
. KomponentComposeNavigator
udostępnia też wywołanie zwrotneonTransitionComplete()
, aby oznaczyć zdarzenieNavBackStackEntry
, które wykonało nawigację lub operacjępopBackStack
jako zakończoną. (I02062, I718db, b/257519195)
Poprawki błędów
- Podczas korzystania z interfejsów API
push/popWithTransition
stan nawigacji będzie teraz wskazywać brak działania, a wpis jest już obsługiwany. (Iadbfa, b/261213893) - Jeśli używasz interfejsu
launchSingleTop
z zagnieżdżonymNavGraph
, wszystkie miejsca docelowe zaczynające się od pierwotnego miejsca docelowego dostartDestination
zostaną prawidłowo dodane tylko na górze stosu. (Id4bea, b/253256629) - Nawigacja będzie teraz prawidłowo zastępować instancję
DialogFragment
podczas nawigacji do tego samego miejsca docelowego z flagąlaunchSingleTop
ustawioną na „true”. (I45b5a, b/149572817) - Element SafeArgs w nawigacji nie będzie już powodować błędu kompilacji, gdy używasz argumentów o długości dokładnie 19 znaków. (Id60bc, b/257110095)
Wersja 2.6.0-alpha04
9 listopada 2022 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha04
została zwolniona. Wersja 2.6.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Niestandardowe podklasy klasy
NavType
mogą teraz zastąpić klasęserializeAsValue
, aby zserializować wartość w ciągu znaków. Dzięki temu serializacja i deserializacja (za pomocąparseValue
) mogą zostać w całości zamknięte w klasieNavType
. FunkcjaStringType
zastępuje teraz tę metodę wywoływania funkcjiUri.encode
w określonym elemencieString
. (IE5213, b/247637434) NavigationUI
udostępnia teraz logi, gdy nie może przejść przez wybrany obszarMenuItem
. (I2af5a, b/247730357)
Poprawki błędów
- Precyzyjne linki nawigacyjne są teraz analizowane leniwie zamiast na wykresie, co może poprawić wydajność przy uruchomieniu. (IAB0ab)
- Naprawiono awarię powodowaną przez przejście w górę po precyzyjnym linku do miejsca docelowego z domyślnymi argumentami o wartości null. (I51c24, b/243183636)
Aktualizacja zależności
- Obsługa modułów funkcji dynamicznych zależy teraz od szczegółowej biblioteki Play Feature Delivery. (Ib4ddc)
- Bezpieczne argumenty nawigacji wymagają teraz wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że jest ona obecnie zgodna tylko z wersjami 7.3.0 i nowszymi (I47e49).
Wersja 2.6.0-alpha03
24 października 2022 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alfa03 zawiera te zatwierdzenia.
Poprawki błędów
- Z Nawigacji
2.5.3
:NavHost
nie spowoduje już wyświetlenia ciąguNoSuchElementException
, jeśli nie ma miejsca docelowego, które może utworzyćCrossfade
. Teraz pominie tylko kompozycję. (Ieb46e, b/253299416) - Z poziomu Nawigacji
2.5.3
: naprawiliśmy błąd polegający na tym, że zapisany stan tworzenia wiadomości (np. przypadki użyciarememberSaveable
) nie był zapamiętywany i usuwany, gdy miejsce docelowe wyskakiwało z tylnego stosu. (I64949)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.5.4
. (ICD424).
Wersja 2.6.0-alpha02
5 października 2022 r.
Usługa androidx.navigation:navigation-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alfa02 zawiera te zatwierdzenia.
Zmiany w działaniu
- Podczas przekazywania identyfikatora wykresu nawigacji do
AppBarConfiguration
(np. za pomocąMenu
)NavigationUI
traktuje teraz tylko początkowe miejsce docelowe tego wykresu nawigacyjnego jako miejsce docelowe najwyższego poziomu, zamiast oznaczać je nieprawidłowo na wykresie. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcjiisTopLevelDestination
wAppBarConfiguration
. (IE936e, b/238496771)
Poprawki błędów
- Komponent
navigation:navigation-fragment
zależy teraz od fragmentu w wersji1.5.2
. (I00BA4) - Wybrany element menu nie będzie już aktualizowany podczas przechodzenia do miejsca docelowego
FloatingWindow
, takiego jak okno. (I4cde8, b/240308330)
Wersja 2.6.0-alpha01
7 września 2022 roku
Usługa androidx.navigation:navigation-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Integracje
setupWithNavController
wNavigationUI
umożliwiające pracę z górnym paskiem aplikacji będą teraz analizować wartościR.string
dla argumentówReferenceType
znalezionych wandroid:label
jako wartości ciągu znaków, zamiast podawać automatycznie wygenerowaną liczbę całkowitą zasobu. (I5f803, b/167959935) - Funkcja
NavDeepLink
obsługuje teraz domyślne wartości tablic, co umożliwia obsługę powtórzonych parametrów zapytania, które będą mapowane na typ tablicy argumentu.NavType
zawiera teraz metodę domyślną, którą można zastąpić, aby 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 do nawigacji, obiekt zastępczy zostanie automatycznie wypełniony wartościąpackageName
kontekstu. (Iaabde, b/234223561) - Próba utworzenia pustego pola
NavDeepLink
za pomocą DSLnavDeepLink
Kotlin spowoduje teraz wyświetlenie ostrzeżenia o tym, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME. (I08d2f, b/154038883)
Zmiany interfejsu API
- Dodaliśmy nową funkcję rozszerzenia
NavDestination
, która umożliwia przekształcanie etykiet dynamicznych z argumentami w postaciandroid:label="{arg}"
na ciąg znaków. Obsługuje argumentyReferenceType
przez analizowanieR.string
wartości jako ciągu znaków. (I07d89, b/236269380)
Zmiany w działaniu
arguments
NavBackStackEntry iarguments
przekazane doOnDestinationChangedListener
są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne przy późniejszym dostępie do instancjiarguments
ani do innych instancjiOnDestinationChangedListener
. (I676f5)
Poprawki błędów
- Na karcie Nawigacja
2.5.2
: dynamiczna nawigacja teraz prawidłowo próbuje zainstalować miejsca docelowe aktywności z innych modułów, zanim przejdzie do nich. (Ia2c16, b/240292838) - Od Nawigacji
2.5.2
: nawigacja będzie teraz prawidłowo zastępować instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagilaunchSingleTop
na „prawda”. (I5a2f1, b/237374580) - Z Nawigacji
2.5.2
: naprawiono błądIllegalStateException
związany z przejściem do podwójnych zagnieżdżonych wykresów, które korzystają z tego samego wykresu nadrzędnego i nowego miejsca docelowego z wyskakującym punktem początkowym. (I9f7cb, b/243778589)
Wersja 2.5
Wersja 2.5.3
24 października 2022 r.
Usługa androidx.navigation:navigation-*:2.5.3
została zwolniona. Wersja 2.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
NavHost
nie będzie już wywoływaćNoSuchElementException
, gdy nie ma dostępnego miejsca docelowego do utworzenia elementuCrossfade
. Teraz pominie tylko kompozycję. (Ieb46e, b/253299416) - Rozwiązaliśmy problem, który powodował, że zapisany stan tworzenia wiadomości (np. przypadki użycia funkcji
rememberSaveable
) nie był zapomniany i usuwany, gdy miejsce docelowe było wyskakiwane z panelu tylnego. (I64949)
Wersja 2.5.2
7 września 2022 roku
Usługa androidx.navigation:navigation-*:2.5.2
została zwolniona. Wersja 2.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Obecnie dynamiczna nawigacja prawidłowo próbuje zainstalować miejsca docelowe aktywności z innych modułów, zanim przejdzie do nich. (Ia2c16, b/240292838)
- Nawigacja będzie teraz prawidłowo zastępować instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi
launchSingleTop
na „prawda”. (I5a2f1, b/237374580) - Naprawiono
IllegalStateException
spowodowane przejściem do podwójnych zagnieżdżonych wykresów, które mają ten sam element nadrzędny i nowe miejsce docelowe początkowe. (I9f7cb, b/243778589)
Aktualizacja zależności
- Nawigacja
2.5.2
korzysta teraz z fragmentu1.5.2
. (Aosp/2178734)
Wersja 2.5.1
27 lipca 2022 roku
Usługa androidx.navigation:navigation-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
Navigation Safe Args
nie będzie już wyświetlać ostrzeżeń o wycofaniu w wygenerowanych klasach, gdy używasz niestandardowych typów argumentów zapisanych w obiekcieBundle
. (Id86ed, b/237725966)
Aktualizacje zależności
- Biblioteka nawigacji korzysta teraz z cyklu życia
2.5.1
. (IB4451) - Biblioteka nawigacji korzysta teraz z Aktywności
1.5.1
. (I3efe8) - Biblioteka nawigacji korzysta teraz z fragmentu
1.5.1
. (I56177)
Wersja 2.5.0
29 czerwca 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.4.0
- Integracja dodatków do tworzenia – usługa
Navigation
może teraz udostępniać bezstanoweViewModelProvider.Factory
za pomocą funkcjiCreationExtras
w cyklu życia2.5.0
.
Bezpieczne argumenty nawigacji
- W systemie
Navigation Safe Args
zależnośćAndroid Gradle Plugin
została uaktualniona, tak aby korzystała z zasad7.0.4
, a zgodność z wersjami AGP została wycofana przed7.0
. - Dodano obsługę atrybutu build.gradle przestrzeni nazw zamiast atrybutu applicationId.
Inne zmiany
- Interfejs API
visibleEntries
nie jest już eksperymentalny i zapewnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie z tymi zasadami:NavController
.
Wersja 2.5.0-rc02
15 czerwca 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0-rc02
została zwolniona. Wersja 2.5.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd spowodowany szybkim przełączaniem się między dolnymi miejscami docelowymi podczas korzystania z funkcji tworzenia nawigacji
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
nie będzie już ulegać awarii, gdy użyjeszapplicationIdSuffix
i przestrzeni nazw bez atrybutuapplicationId
lub gdy polaapplicationId
i przestrzeń nazw będą się różnić. (I754b1, b/233119646)NavArgument
ma teraz niestandardową funkcjętoString()
do pokazywania wartości wewnętrznych argumentu. (I900a8)
Wersja 2.5.0-rc01
11 maja 2022 roku
Usługa androidx.navigation:navigation-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową regułę lintowania, która ostrzega przed umieszczaniem elementów
<deeplink>
wewnątrz elementów<activity>
w plikunavigation.xml
.(Ic15a5, b/178403185)
Poprawki błędów
- Zakresy kompozycyjne w funkcjach
NavHost
iDialogHost
są teraz rozmieszczone w odpowiedniej kolejności, tj. wewnętrzne kompozycje są usuwane przed zasobami kompozycyjnymi zewnętrznymi. (I157e6) - Nawigacja SafeArgs używa teraz
PathSensitivity.RELATIVE
w:ArgumentsGenerationTask
, aby umożliwić ponowne zlokalizowanie pamięci podręcznej. Oznacza to, że wpisu pamięci podręcznej można teraz ponownie użyć z kompilacji CI w kompilacji lokalnej. (I5f67c, b/173420454) - Reguła lintowania
UnrememberedGetBackStackEntryDetector
została zaktualizowana tak, aby wywołanieremember
otaczające wywołanie funkcjigetBackStackEntry()
również było przekazywane w obiekcieNavBackStackEntry
jako klucz.(Ib7081, b/227382831)
Wersja 2.5.0-beta01
20 kwietnia 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
DialogNavigator
używa terazpopWithTransition
podczas wykonywania wywołaniadismiss()
. Naprawia to warunek wyścigu, gdy używany jestViewModel
w miejscu docelowymdialog
, który powoduje wyświetlenie komunikatuIllegalStateException
przy zamykaniu okna przez powrót systemu lub kliknięcie poza oknem, aby je zamknąć. (Id7376, b/226552301)
Aktualizacje zależności
- Nawigacja zależy teraz od cyklu życia
2.5.0-beta01
, czyli naprawiania elementuIllegalStateException
w przypadku zagnieżdżenia elementuNavHost
w innym elemencieNavHost
na oddzielnej dolnej karcie nawigacyjnej, gdy jest używany kilka stosów tylnych.
Wersja 2.5.0-alpha04
6 kwietnia 2022 roku
Usługa androidx.navigation:navigation-*:2.5.0-alpha04
została zwolniona. Wersja 2.5.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Aplikacja
visibleEntries
nie jest już eksperymentalna. (I4829f, b/225394514)
Poprawki błędów
- Aby określić, które wpisy utworzyć, NavHost zależy teraz od parametru
visibleEntries
z obiektuNavController
. Oznacza to, że podczas korzystania z zagnieżdżonego hosta NavHost wewnętrzny elementNavHost
powinien teraz prawidłowo animować się na zewnątrz. (I4ba2b, b/225394514) - Pole
visibleEntries
StateFlow
dostarczane przezNavController
jest teraz oparte na maksymalnym stanie cyklu życia wpisu, a nie na bieżącym stanie cyklu życia. Oznacza to, że nawet jeśli cykl życia hostanavController
spadnie poniżej wartości STARTED, lista widocznych całości pozostanie bez zmian. (I9e2a8, b/225394514) SavedStateViewFactory
obsługuje teraz korzystanie zCreationExtras
nawet wtedy, gdy zostało zainicjowane za pomocąSavedStateRegistryOwner
. Jeśli podano dodatki, zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)NavDeepLink
może teraz analizować identyfikatory URI za pomocą jednego parametru zapytania bez wartości. (I0efe8, b/148905489)- Pusty ciąg jest teraz uważany za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
- Interfejs
Navigation Safe Args
nie będzie już ulegał awarii podczas korzystania z przestrzeni nazw, gdy nie będzie parametruAndroidManifest.xml
. (I17ccf, b/227229815)
Wersja 2.5.0-alpha03
23 lutego 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Możesz teraz przekazać funkcję
CreationExtras
doby navGraphViewModels
, aby utworzyćViewModel
. (I29217, b/217618359)
Poprawki błędów
NavDeepLinks
teraz prawidłowo obsługuje zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras/precyzyjnych linków. (I513d1, b/217815060)- Funkcja
CreationExtras
będzie teraz działać prawidłowo, gdy będzie używana zNavBackStackEntries
do tworzenia modeli widoków danych. (I69161, b/217617710) - Bezpieczne argumenty nawigacji obsługują teraz używanie przestrzeni nazw zdefiniowanej w elemencie
build.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)
Wersja 2.5.0-alpha02
9 lutego 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alfa02 zawiera te zatwierdzenia.
Poprawki błędów
- Z Nawigacji
2.4.1
:NavHostFragment
będzie teraz prawidłowo ustawiać wartośćOnBackPressedDispatcher
podczas korzystania z powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959) - Z Nawigacji
2.4.1
: gdy precyzyjne linki prowadzą przez wiele zagnieżdżonych elementówNavGraph
, stos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe rozpoczęcia. (I504c0, b/214383060)
Wersja 2.5.0-alpha01
26 stycznia 2022 r.
Usługa androidx.navigation:navigation-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Interfejs
NavBackStackEntry
integruje się teraz z dodatkami do tworzenia modeli widoku danych, wprowadzonych w ramach cyklu życia2.5.0-alpha01
. (Ib9fe2, b/207012490)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że nie można było uzyskać dostępu do pliku
ViewModel
utworzonego za pomocąby navGraphViewModels()
z fragmentu koduonCreate()
fragmentu przy użyciuIllegalStateException
. (I8a14d). - Parametr
NavDeepLink
nie będzie już dwukrotnie dekodować argumentów, co oznacza, że odpowiednie argumenty będą teraz przekazywane do miejsca docelowego. (I31b0a, b/210711399)
Bezpieczne argumenty
- Bezpieczne argumenty wymagają teraz wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że bezpieczne argumenty nawigacji nie będą już zgodne z Android Studio w wersji starszej 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.2
Wersja 2.4.2
6 kwietnia 2022 roku
Usługa androidx.navigation:navigation-*:2.4.2
została zwolniona. Wersja 2.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Dane przeniesione z Nawigacji
2.5.0-alpha03
:NavDeepLinks
poprawnie obsługuje teraz zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras i precyzyjnych linków. (I513d1, b/217815060) - Dane po przeniesieniu z Nawigacja
2.5.0-alpha03
: Navigation SafeArgs obsługuje teraz używanie przestrzeni nazw zdefiniowanej w elemenciebuild.gradle
zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933) - Po przeniesieniu z nawigacji
2.5.0-alpha04
: aplikacjaNavigation Safe Args
nie będzie już ulegać awarii podczas korzystania z przestrzeni nazw, aAndroidManifest.xml
nie będzie dostępny. (I17ccf, b/227229815) - Po przeniesieniu 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.
Usługa 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ć wartośćOnBackPressedDispatcher
podczas korzystania z powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)- Gdy używasz precyzyjnych linków przez wiele zagnieżdżonych komponentów
NavGraph
, stos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe rozpoczęcia. (I504c0, b/214383060) - Przeniesione z Nawigacji
2.5.0-alpha01
: naprawiliśmy błąd polegający na tym, że dostęp do modelu widoku utworzonego za pomocąby navGraphViewModels()
zonCreate()
fragmentu kodu nie dawał się pomyślnieIllegalStateException
. (I8a14d). - Przeniesione z Nawigacji
2.5.0-alpha01
: argumentyNavDeepLink
nie są już 2 razy dekodowane, co oznacza, że prawidłowo zdekodowane argumenty są przekazywane do miejsca docelowego. (I31b0a, b/210711399) - Przeniesione 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 bezpieczne argumenty nawigacyjne nie będą już zgodne z Android Studio w wersji starszej niż 7.0, ale są teraz 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.
Usługa androidx.navigation:navigation-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.3.0
- Wszystkie artefakty nawigacji zostały przepisane w języku Kotlin. Dzięki temu zwiększyło się możliwość wartości null klas korzystających z klas ogólnych (takich jak podklasy
NavType
). Wszystkie funkcje rozszerzeń Kotlin, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. - Artefakt
navigation-fragment
zawiera teraz gotową implementację układu z dwoma panelami za pomocą nowego interfejsuAbstractListDetailFragment
. Ten fragment korzysta z elementuSlidingPaneLayout
do zarządzania panelem listy (udostępnianym przez Twoją klasę podrzędną) i panelem szczegółów, w którym implementacją jestNavHostFragment
, tak jak w naszej przykładowej implementacji. - Metoda
currentBackStackEntryAsFlow()
w systemieNavController
udostępniaFlow
, który jest emitowany zawsze, gdy zmienia się bieżąca wartośćNavBackStackEntry
. Możesz użyć tego procesu zamiast ręcznego zarządzania elementemOnDestinationChangedListener
. - NavController umożliwia teraz pobranie listy wszystkich widocznych instancji
NavBackStackEntry
w postaci elementuStateFlow
za pomocą eksperymentalnej właściwościvisibleEntries
. - Teraz można rozszerzyć klasę
NavType
, aby tworzyć niestandardowe obiekty NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia grafów nawigacyjnych, na przykład za pomocą Navigation Graph Kotlin DSL. Nawigacja udostępnia teraz interfejsy API
findStartDestination()
igetHierarchy()
, które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.findStartDestination()
to funkcja rozszerzenia w usłudzeNavGraph
, która wskazuje miejsce docelowe początkowego, które wyświetli się po przejściu do wykresu, nawet jeślistartDestination
jest zagnieżdżonym elementemNavGraph
.getHierarchy()
to funkcja w funkcjiNavDestination
, której można użyć do sprawdzenia, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody usługi
NavigationUI
, które korzystały z klasyBottomNavigationView
, zostały zaktualizowane, tak aby zajmowały nadrzędną klasę wprowadzone w interfejsie Material1.4.0
w języku:NavigationBarView
. Zezwala na używanie tych metod wNavigationRailView
.Podczas rozszerzania elementu
<action>
za pomocą kodu XML atrybuty animacji mogą korzystać z atrybutów pobranych z motywu ze składniąapp:enterAnim="?attr/transitionEnter"
.Bezpieczne argumenty generują 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 i DSL Kotlin
Poprzednie wersje Nawigacji polegały na tym, że każde miejsce docelowe miało stały identyfikator całkowity, który jednoznacznie identyfikowałby je na podstawie obu miejsc docelowych i umożliwiał navigate()
dojście do tego miejsca docelowego bezpośrednio lub przez działanie. Chociaż taki wykres nadal jest przydatny i przydatny, zwłaszcza w przypadkach, gdy definiujesz graf nawigacji w formacie XML i możesz używać automatycznie generowanych stałych R.id
lub Bezpiecznego argumentów (które wykorzystują te stałe do generowania kodu podczas kompilacji), ten system unikalnych liczb całkowitych nie umożliwiał rozpoznawania semantycznego znaczenia i wyrazu potrzebnego do obsługi w pełni dynamicznych wykresów tworzonych na podstawie oprogramowania Navigation Kotlin DSL.
W tej wersji wprowadziliśmy nową opcję, która pozwala jednoznacznie zidentyfikować miejsce docelowe na wykresie nawigacyjnym według jego trasy. Trasa to element typu String
, który określa unikalną ścieżkę do miejsca docelowego. Wszystkie metody DSL Kotlin, które korzystały z identyfikatora miejsca docelowego, zostały wycofane i zastąpione odpowiednikiem API, który korzysta z trasy.
Każda trasa powinna być traktowana jako część atrybutu Uri
, która określa dany cel podróży, np. home
, profile/{userId}
, profile/{userId}/friends
itp. Jeśli tożsamość miejsca docelowego jest powiązana z konkretnym fragmentem treści, te dynamiczne argumenty powinny być częścią trasy zgodnie z tymi samymi regułami co pośrednie precyzyjne linki.
Wszystkie interfejsy API usługi NavController
, które dotychczas przyjmowały tylko identyfikator, mają teraz przeciążenie, które obejmuje trasę String
. Są to między innymi navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Ma to wpływ na interfejs API:
- Właściwość
popUpTo
Kotlin w DSL Kotlin została wycofana i zastąpiona przezpopUpToId
. - Interfejs API
getStartDestination()
został wycofany i zastąpiony przezgetStartDestinationId()
.
W przeciwieństwie do nawigacji według identyfikatora nawigacja według trasy podlega tym samym zasadom co pośrednie precyzyjne linki, ponieważ można bezpośrednio nawigować do dowolnego miejsca docelowego na dowolnym wykresie zagnieżdżonym. Dzięki temu możesz korzystać z tych tras w projektach wielomodułowych bez konieczności dodawania widocznego zewnętrznie precyzyjnego linku do każdego miejsca docelowego.
Tworzenie nawigacji
Artefakt navigation-compose
zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa on funkcji @Composable
.
W tej wersji:
- Funkcja kompozycyjna
NavHost
, która umożliwia tworzenie grafu nawigacji przez DSL Kotlin i korzysta z miejsc docelowychcomposable
idialog
. Dodatkowo obsługuje opcjonalne nawigatory, np. te z materiałów nawigacyjnych akompaniistów. - Obowiązkowa obsługa przechodzenia między miejscami docelowymi. Accompanist Navigation Animation może być używana do sterowania przejściami wejścia i wyjścia za pomocą eksperymentalnych interfejsów API tworzenia wiadomości.
- Określanie zakresu wartości
Lifecycle
do każdego miejsca docelowego kompozycyjnego. Każde miejsce docelowe osiąga stanRESUMED
tylko po zakończeniu dowolnego wejścia przejść i natychmiast spada doSTARTED
po rozpoczęciu dowolnego przejścia. Pozwala to uniknąć wszystkich problemówIllegalStateException
i wielodotyku przez wywoływanie wywołanianavigate
tylko wtedy, gdyLifecycle
ma wartośćRESUMED
. - Określanie zakresu wartości
ViewModel
(za pomocą interfejsuviewModel()
API Lifecycle ViewModel Compose2.4.0
lubhiltViewModel()
funkcji Hilt Navigation Compose1.0.0
na poziomie miejsca docelowego, które zapewnia zakres, który przetrwa zmiany konfiguracji i pozostanie na stosie wstecznym (gdy treść kompozycyjna jest w innym przypadku usunięta) oraz sygnał w modeluonCleared()
widoku danych wskazujący na trwałe usunięcie i oczyszczenie stanu powiązanego z tym elementemNavBackStackEntry
. - Określenie zakresu stanu
rememberSaveable
na poziomie miejsca docelowego, dzięki czemu cały stan kompozycji jest automatycznie zapisany i przywracany po powrocie do miejsca docelowego. - Pełna obsługa zapisywania i przywracania
NavController
oraz stanu miejsca docelowego po śmierci i przywróceniu stanu procesu. - Automatyczna integracja z systemowym przyciskiem Wstecz.
Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych oraz zwracania wyniku do poprzednich miejsc docelowych.
Utwórz konkretne elementy pomocnicze w
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić stan podnoszenia i łączenie elementuNavController
z kompozytami spoza obszaruNavHost
(np. dolnym paskiem nawigacyjnym).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Więcej informacji znajdziesz w Przewodniku po tworzeniu wiadomości.
Wiele wstecznych stosów
Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie miejsc docelowych do stosu tylnego, gdy navigate()
do nich i usuwanie ich po wywołaniu popBackStack()
lub uruchomieniu systemowego przycisku Wstecz. Istniejąca klasa NavOptions
i integracja z elementami <action>
w kodzie XML wykresu nawigacyjnego zostały rozszerzone, aby obsługiwać zapisywanie i przywracanie stosu wstecznego.
W ramach tej zmiany metody NavigationUI
w onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan pobranych miejsc docelowych. Zapewnia to obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami kodu jest to zalecany sposób integracji z wieloma stosami wstecznymi.
Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na wielu platformach:
W pliku XML nawigacji element
<action>
może teraz używać atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
do zapisywania stanu wszystkich miejsc docelowych pobranych przezapp:popUpTo
i przywracania stanu powiązanego 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 narzędziu DSL
navOptions
Kotlin możesz dodać właściwość wartości logicznejrestoreState
i wartość logicznąsaveState
w kreatorzepopUpTo
:// 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ą interfejsuNavOptions.Builder
możesz użyćsetRestoreState()
i nowego przeciążenia wsetPopUpTo()
, które wymagają 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
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.Za pomocą metody
clearBackStack()
możesz wyczyścić wszystkie stany zapisane za pomocą metodypopBackStack()
lubpopUpToSaveState
.
We wszystkich przypadkach NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym instancje miejsca docelowego nawigacji o zakresie ViewModel
. Interfejsy API Navigator
zostały zaktualizowane, dzięki czemu każdy element Navigator
obsługuje zapisywanie i przywracanie własnego stanu.
Zmiany w działaniu
NavDeepLinkBuilder
dodaje terazPendingIntent.FLAG_IMMUTABLE
doPendingIntent
zwróconej przezcreatePendingIntent()
, dzięki czemu ten interfejs API będzie działać zgodnie z oczekiwaniami w przypadku kierowania na Androida 12.- Nawigacja opiera się teraz na cyklu życia
2.3.1
i oznaczasetGraph()
,popBackStack()
,navigateUp()
inavigate()
, czyli metody, które aktualizująNavBackStackEntry
Lifecycle
jako@MainThread
, dostosowując Nawigację do egzekwowania zasad dotyczących wątku głównego wprowadzonych w cyklu życia2.3.0
. - Precyzyjne linki sprawdzają teraz, czy
Uri
zawiera wszystkie wymagane argumenty (te bez wartości domyślnych). - Przeanalizowane argumenty funkcji
NavDeepLink
uwzględniają teraz znaki funta w taki sam sposób, jak znaki zapytania jako separator między segmentami ścieżki, co zapobiega rozpięciu argumentu na znak funta. - Podczas generowania działań kod Kotlin wygenerowany za pomocą Safe Args umieszcza teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi jako parametry.
- Podczas generowania argumentów Bezpieczne argumenty umieszczają teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi.
- Safe-Args wymaga teraz wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie o używaniu aplikacji
applicationIdTextResource
nie powinno już być wyświetlane.
Znane problemy
- Naprawiono w Nawigacji
2.5.0-alpha01
: dostęp do elementuViewModel
utworzonego przy użyciuby navGraphViewModels()
z fragmentuonCreate()
fragmentu kończy się niepowodzeniem z wartościąIllegalStateException
. (b/213504272) - Poprawiono w sekcji Nawigacja
2.5.0-alpha01
: Bezpieczne argumenty w wersji 2.4.0 są niezgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 i nowszych. (b/213086135) - Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacyjnymi nie tworzą poprawnie pełnego stosu. (B/214383060)
Wersja 2.4.0-rc01
15 grudnia 2021 roku
Usługa androidx.navigation:navigation-*:2.4.0-rc01
została zwolniona. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w działaniu
- Przeanalizowane argumenty funkcji
NavDeepLink
są teraz traktowane jako znaki funta w taki sam sposób, jak znaki zapytania jako separator między argumentami. (I21309, b/180042703)
Poprawki błędów
- Precyzyjne linki nie będą już ignorować argumentów z wartościami takimi jak nazwa obiektu zastępczego. (If8017, b/207389470)
NavController
nie będzie już ulegać awarii podczas wyświetlania zagnieżdżonego miejsca docelowego przy użyciu przejścia po przywróceniu elementuNavController
. (I0f7c9, b/205021623)- Komunikat o błędzie podczas korzystania z nieprawidłowej wartości atrybutu
startDestination
będzie teraz domyślnie korzystać z trasy początkowej, jeśli jest ona dostępna. (I86b9d, b/208041894)
Poprawki błędów w tworzeniu nawigacji
- Naprawiliśmy potencjalną awarię powodowaną przez szybkie przełączanie się między miejscem początkowym a innym miejscem docelowym za pomocą dolnych elementów menu nawigacyjnego. (IC8976, b/208887901)
- Miejsce docelowe okna jest teraz prawidłowo przywracane u góry ekranu po zmianie konfiguracji lub śmierci procesu. (I4c0dc, b/207386169)
- Rozwiązaliśmy problem, który powodował, że próba pobrania elementu
ViewModel
z oknaNavBackStackEntry
kończyła się niepowodzeniem po zamknięciu okna. (I6b96d, b/206465487) - Rozwiązaliśmy problem, który powodował, że podczas korzystania z celów podróży w
activity
z elementemNavHost
w narzędziu Nawigacja w interfejsie można było nieskończone zmienianie kompozycji. (I8f64C) - Naprawiono wyciek w funkcji Kompozycje nawigacji, w wyniku którego po zmianie konfiguracji lub śmierci procesu pozostał on w odniesieniu do starej aktywności. (I4efcb, b/204905432)
Poprawki błędów Safe Args
SafeArgs
nie ulega już awarii podczas próby przywrócenia niestandardowych tablic z możliwością parcelowania po zakończeniu procesu. (I618e8, b/207315994)- Naprawiliśmy błąd w bezpiecznych argumentach, który uniemożliwiał tablicom z wartościami logicznymi stosowanie wartości
null
. (I8c396, b/174787525)
Wersja 2.4.0-beta02
3 listopada 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-beta02
została zwolniona. Wersja 2.4.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Obsługa jawnych i niejawnych precyzyjnych linków teraz automatycznie dodaje flagę
saveState
podczas przechodzenia do innego wykresu, dzięki czemu kod taki jakNavigationUI.setupWithNavController
i kod wykorzystujący kilka stosów wstecznych działa zgodnie z oczekiwaniami. (IC8807)
Zmiany w działaniu
- Wzorce precyzyjnych linków są teraz kompilowane leniwie w NavDeepLink, a nie podczas inflacji. Powinno to skrócić czas inflacji na wykresach nawigacyjnych zawierających precyzyjne linki. (b8d257, b/184149935)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że po przeniesieniu do
Lifecycle.State.STARTED
element NavBackStackEntries był przenoszony w dół do klasyLifecycle.State.CREATED
, gdy obiektNavHost
był dodawany bezpośrednio dosetContent()
aktywności. (Ia5ac1, b/203536683) - Naprawiono warunek wyścigu, w którym wydzielenie miejsca docelowego
DialogFragment
z backendu przed wyświetleniem okna nie powodowało zamknięcia okna, co powodowało awarię po ręcznym zamknięciu okna błędu. (I687e5) - Rozwiązaliśmy problem, który powodował, że interfejs API
onNavDestinationSelected
w witrynieNavigationUI
zwracał wartośćtrue
nawet wtedy, gdy do tego wykresu nawigacyjnego nie było parametrunavigate()
. Używa teraz tej samej logiki używanej wewnętrznie przez usługęsetupWithNavController
do wybierania tylko tych usług (MenuItem
) powiązanych z bieżącym miejscem docelowym za pomocą jego właściwościhierarchy
. (I2b053)
Wersja 2.4.0-beta01
27 października 2021 roku
Usługa 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ć atrybutu
by navGraphViewModel
z trasą jako alternatywy dla identyfikatora, aby lepiej obsługiwać korzystanie z nawigacji (DSLL) Kotlin z fragmentami. (I901e3, b/201446416)
Zmiany interfejsu API
- Interfejs API
visibleEntries
jest teraz w wersji eksperymentalnej. (I93f6f)
Poprawki błędów
- ViewModele nie będą już niszczone, gdy przejścia są przerywane przez poruszanie się między tymi samymi ekranami (Id52d8, b/200817333)
- Podczas dodawania precyzyjnych linków do linków
NavDestination
nie trzeba już podawać wartości domyślnej w argumencieNavDeepLink
. (I5aad4, b/201320030) - NavBackStackEntries z różnymi cyklami życia nie są już uważane za równe. Oznacza to, że NavHost prawidłowo ponownie skomponuje wszystkie miejsca docelowe podczas nawigacji z użyciem funkcji singleTop oraz po ponownym wybraniu dolnych pozycji menu. (I1b351, b/196997433)
- Rozwiązaliśmy problem z elementem
AbstractListDetailFragment
, który powodował, że atrybutylayout_width
ilayout_weight
w panelu listy zwracane przez funkcjęonCreateListPaneView()
były nieprawidłowo obsługiwane lub ignorowane. (f5fbf3) - Wizualny stan miejsc docelowych w oknach jest teraz prawidłowo zsynchronizowany ze stanem
DialogFragmentNavigator
. Oznacza to, że ręczne wywołanie asynchronicznego interfejsu APIdismiss()
dlaDialogFragment
teraz prawidłowo czyści wszystkie miejsca docelowe okna nad zamkniętym teraz oknem. Nie ma to wpływu na przypadki, gdy używaszpopUpTo
lubpopBackStack()
do zamknięcia okna. (I77ba2) - Usługa
AbstractAppBarOnDestinationChangedListener
wyświetla teraz bardziej przejrzyste komunikaty o błędach w przypadku usługionDestinationChanged()
. (IE742D)
Wersja 2.4.0-alfa10
29 września 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha10
została zwolniona. Wersja 2.4.0-alfa10 zawiera te zatwierdzenia.
Nowe funkcje
- NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji
NavBackStackEntry
przezvisibleEntries
StateFlow (Ia964e) rememberNavController()
wykorzystuje teraz opcjonalny zestawNavigator
instancji, które zostaną dodane do zwróconegoNavController
, aby lepiej obsługiwać opcjonalne elementy nawigacyjne, takie jak Accompanist Navigation Material. (I4619e)
Poprawki błędów
- Dynamiczna nawigacja nie będzie już ulegać awarii po odtworzeniu aktywności. (Ifa6a3, b/197942869)
- Rozwiązaliśmy problem z systemowym przyciskiem Wstecz, który występował tylko po powrocie do miejsca docelowego kompozycyjnego zawierającego
NavHost
. (3ed148, b/195668143) - Teraz SafeArgs generuje argumenty
fromBundle()
ifromSavedStateHandle()
we właściwej kolejności. (I824a8, b/200059831)
Wersja 2.4.0-alpha09
15 września 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha09
została zwolniona. Wersja 2.4.0-alfa09 zawiera te zatwierdzenia.
Nowe funkcje
- Za pomocą metody
clearBackStack()
możesz teraz wyczyścić wszystkie stany zapisane za pomocą metodypopBackStack()
lubpopUpToSaveState
. (I80a0F) - Teraz możesz przekazać listę argumentów lub precyzyjne linki do kreatora zagnieżdżonego wykresu nawigacyjnego, a zostaną one automatycznie dodane do wynikowego wykresu. (I8a470, b/182545357)
Zmiany interfejsu API
- Funkcja DSL
navArgument
Kotlin jest teraz częściąnavigation-common
, a nienavigation-compose
. Aby nadal korzystać z tej funkcji, konieczne będzie zaktualizowanie importów. (I1D095).
Zmiany w działaniu
- Podczas generowania argumentów Bezpieczne argumenty umieszczają teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi. (I89709, b/198493585)
Poprawki błędów
- Gdy używa się funkcji tworzenia nawigacji, wykresy nawigacyjne mają wartość
DESTROYED
dopiero wtedy, gdy wszystkie dzieci dzieci sąDESTROYED
. (I86552, b/198741720) - Argumenty
NavDeepLink
do wartości null nie wymagają już wartości domyślnej. (Ia14ef, b/198689811) - Wywołanie funkcji
setGraph()
z nowym wykresem spowoduje też usunięcie wszystkich zapisanych stosów zwrotnych. (I97f96) - Rozwiązaliśmy problem, który powodował, że instancje
OnDestinationChangedListener
icurrentBackStackEntryFlow
nie były powiadamiane, gdy użytolaunchSingleTop
. (Iaaebc).
Aktualizacje zależności
- Tworzenie nawigacji zależy teraz od wersji Activity Compose 1.3.1. (I05829)
- Narzędzie Navigation Compose zależy teraz od Cyklu życia modelu ViewModel Compose
2.4.0-beta01
. (IB86a3)
Wersja 2.4.0-alpha08
1 września 2021 roku
Usługa androidx.navigation:navigation-*:2.4.0-alpha08
została zwolniona. Wersja 2.4.0-alfa08 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz można rozszerzyć klasę
NavType
, aby tworzyć niestandardowe obiekty NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia grafów nawigacyjnych, na przykład za pomocą Navigation Graph Kotlin DSL. (I78440, b/196871885)
Zmiany w działaniu
- Podczas generowania działań kod Kotlin wygenerowany za pomocą Safe Args umieszcza teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi jako parametry. (Idb697, b/188855904)
- Precyzyjne linki sprawdzają teraz, czy
Uri
zawiera wszystkie wymagane argumenty (te bez wartości domyślnych). (nr 204, b/185527157)
Poprawki błędów
- Użycie właściwości
getBackStackEntry
ipreviousBackStackEntry
w komponencie composable() w połączeniu z zasadąremember()
nie będzie już powodować wyjątku w sytuacji, gdy w stosie wstecznym nie będzie żadnego miejsca docelowego. (I75138, b/194313238) - Narzędzie Navigation Compose teraz prawidłowo komponuje się ponownie, gdy zmieniasz argumenty stosu wstecznego i używasz funkcji
launchSingleTop=true
. (Iebd69, b/186392337) - Podczas wywoływania
setGraph
z wykresem zawierającym 13 lub 29 miejsc docelowych nie będzie jużArrayIndexOutOfBoundsException
. (I1a9f1, b/195171984) - Generator JavaScript SafeArgs nie powinien już powodować ostrzeżeń lint podczas generowania klas Args. (I1a666, b/185843837)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy za pomocą ospixd za sprawdzenie, czy precyzyjne linki sprawdzają, czy
Uri
zawiera wszystkie wymagane argumenty (te bez wartości domyślnych). (nr 204, b/185527157)
Wersja 2.4.0-alpha07
18 sierpnia 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha07
została zwolniona. Wersja 2.4.0-alfa07 zawiera te zatwierdzenia.
Poprawki błędów
- Teraz funkcja Navigation Compose poprawnie zapisuje stan po zmianie konfiguracji i na wykresach przy użyciu funkcji wielu stosów wstecznych. (If5a3d, b/195141957)
- Ponowne wybranie tej samej karty w przypadku używania nawigacji tworzenia wiadomości z kilkoma tylnymi stosami nie spowoduje już wyświetlania pustego ekranu. (I860dc, b/194925622)
- Funkcja
NavHost
obserwuje teraz zmiany wLifecycle.State
zNavBackStackEntry
s, co oznacza, że użycie elementuNavHost
we fragmencie zostanie teraz prawidłowo skomponowane wraz ze zmianami cyklu życia, zamiast wyświetlać pusty ekran. (I4eb85, b/195864489) - Rozwiązaliśmy problem, który powodował, że zamknięcie obiektu
DialogFragment
nie powodowało prawidłowej aktualizacji stanuNavController
po ponownym utworzeniu aktywności (tj. po zmianie konfiguracji). (ICD72B) - Rozwiązaliśmy problem, który powodował, że wyświetlenie miejsca docelowego w oknie nie wiązało się z aktualizacją obsługi przycisków Wstecz w kontrolerze NavController. Mogło to spowodować przechwycenie przycisku Wstecz przez NavController, mimo że nie miało on żadnego stosu. (If3b34).
- Bezpieczne argumenty automatycznie generują teraz metodę
toSavedStateHandle
dla argumentów, których można użyć do testowania koduViewModel
. (If1e2d, b/193353880)
Wersja 2.4.0-alpha06
4 sierpnia 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha06
została zwolniona. Wersja 2.4.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwy metod
requireSlidingPaneLayout()
irequireDetailPaneNavHostFragment()
w systemieAbstractListDetailFragment
zostały zmienione na odpowiedniogetSlidingPaneLayout()
igetDetailPaneNavHostFragment()
. (I34a08)
Zmiany w działaniu
- Podczas korzystania z animacji (np.
Crossfade
) wartośćLifecycle
nowego miejsca docelowego osiągnie wartośćRESUMED
dopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889) - Funkcja
NavHost
w narzędziu Navigation Compose ustawia teraz wykres jako część pierwszej kompozycji. (Ieb7be)
Poprawki błędów
- Przebicie ostatniego miejsca docelowego wykresu nawigacyjnego nie powoduje już wyświetlenia
ClassCastException
. (If0543, b/172112072, b/194301889) - Naprawiono błąd
NullPointerException
, który występował podczas dodawania precyzyjnego linku bezUri
oraz nawigowania za pomocą trasy lub precyzyjnego linku. (938a0c, b/193805425) - Naprawiono błąd w funkcji tworzenia nawigacji, który powodował, że precyzyjny link
NavBackStackEntry
nie docierał do stanuRESUMED
. (I192C5) - Naprawiono błąd, który powodował, że wyświetlenie miejsca docelowego okna dialogowego nie aktualizowało obsługi systemowego przycisku Wstecz w kontrolerze NavController. Mogło to powodować przechwytywanie przycisku Wstecz przez kontroler NavController, mimo że nie miał on wyskakującego stosu tylnego. (Aosp/1782668).
Wersja 2.4.0-alpha05
21 lipca 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha05
została zwolniona. Wersja 2.4.0-alfa05 zawiera te zatwierdzenia.
Zmiany w działaniu
- Funkcja
NavHost
w narzędziuNavHost
do nawigacji po miejscach docelowych zawsze używa teraz przenikania. (I07049, b/172112072) - Możesz teraz wprowadzać zmiany na wykresie NavHost. Wykresy z tym samym miejscem początkowym i miejscami docelowymi w wykresie będą uznawane za równe i nie wyczyściją stosu wstecznego
NavController
. (I0b8db, b/175392262)
Poprawki błędów
- Naprawiono błąd
NoSuchElementException
wywoływanypopBackStack()
z poziomuLifecycleObserver
dołączonego doNavBackStackEntry
powodowanego przez powtarzające się aktualizacje stanu kontrolera NavController. (I64621) AbstractListDetailFragment
umożliwia teraz całkowite usunięcie elementuSlidingPaneLayout
z pakietu APK, gdyAbstractListDetailFragment
nie jest używany. (I611ad).NavGraph
iNavDestination
zastępują teraz metodę równości, więc 2 obiekty z tymi samymi wartościami będą uznawane za równe. (I166eb, b/175392262)
Wersja 2.4.0-alpha04
1 lipca 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha04
została zwolniona. Wersja 2.4.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Artefakt
navigation-fragment
zawiera teraz gotową implementację układu z dwoma panelami za pomocą nowego interfejsuAbstractListDetailFragment
. Ten fragment korzysta z elementuSlidingPaneLayout
do zarządzania panelem listy (udostępnianym przez Twoją klasę podrzędną) i panelem szczegółów, w którym implementacją jestNavHostFragment
, tak jak w naszej przykładowej implementacji. (Iac4be, b/191276636) NavHost
artefaktunavigation-compose
obsługuje teraz miejsca docelowedialog
, a nie tylkocomposable
. Te miejsca docelowe okien będą wyświetlane 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 interfejsu API
- Nazwa funkcji
add
wNavigatorState
została zmieniona napush
. Wszystkie bieżące wywołania funkcjiadd()
trzeba zmienić na push(). (Ie89fc, b/172112072). - Niestandardowe instancje
Navigator
mogą teraz używać interfejsów APIpushWithTransaction
ipopWithTransition
w systemieNavigatorState
do asynchronicznego przekazywania lub wypychania miejsca docelowego. Pamiętaj, że te interfejsy API nie są jeszcze używane przez żaden z uwzględnionych nawigatorów. (Ic4d7c, b/172112072)
Zmiany w działaniu
NavDeepLinkBuilder
dodaje terazPendingIntent.FLAG_IMMUTABLE
doPendingIntent
zwróconej przezcreatePendingIntent()
, dzięki czemu ten interfejs API będzie działać zgodnie z oczekiwaniami w przypadku kierowania na Androida 12. (If8c52).
Poprawki błędów
- Rozwiązaliśmy problem z funkcją
<include-dynamic>
, który powodował, że argumenty przekazywane do wykresu nie były prawidłowo przekazywane do wykresu dołączanego dynamicznie. (I3E115). - Naprawiono błąd
NullPointerException
występujący podczas przechodzenia do miejsca docelowego przy użyciu argumentustring[]
z wartością domyślną@null
. (I1fbe8) - Dodaj reguły ProGuard dla
@Navigator.Name
, aby rozwiązać problemy w przypadku korzystania z trybu pełnego w wersji R8 3.1. (I2add9, b/191654433) - Element SafeArgs nie będzie już kończyć się niepowodzeniem podczas tworzenia aplikacji z użyciem wersji
Kotlin
przed1.5.0
. (Icd1ff, b/190739257)
Wersja 2.4.0-alpha03
16 czerwca 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alfa03 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) - Naprawiono regresję wprowadzoną w Nawigacji
2.4.0-alpha01
, w której funkcjasetupActionBarWithNavController()
nie usuwała prawidłowo ikony w górę, gdy jesteś w miejscu docelowym najwyższego poziomu. (I5d443, b/189868637) - Naprawiono błąd
IllegalStateException
występujący podczas wywoływaniapopBackStack()
po wcześniejszym wyświetleniu wykresu głównego w NavController. (I2a330, b/190265699) - Reguły ProGuard dla
by navArgs()
są teraz prawidłowo stosowane, gdy używasznavigation-common
lub innych zależnych od niego artefaktów. (I68800, b/190082521) OnDestinationChangedListener
, który wywołujenavigate()
po raz pierwszy przy pierwszym wywołaniu zwrotnym, otrzymuje teraz drugie wywołanie zwrotne z miejscem docelowym, do którego przeszedł. (Ie5f9e, b/190228815)- Bezpieczny argument nie ulega już awarii, gdy jest używany z dynamicznymi modułami funkcji i formatem AGP w wersji 7.0 lub nowszej. (I69518, b/189966576)
Znany problem
- Podczas korzystania z narzędzia Gradle
6.7.0
bezpieczne argumenty będą kończyć się błędemUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
z powodu zależności od starszej wersji Kotlin. Aby obejść ten problem, zaktualizuj narzędzie, aby używało Gradle w wersji 7.0. (b/190739257)
Wersja 2.4.0-alpha02
2 czerwca 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Trasy są teraz obsługiwane w przypadku miejsc docelowych typu Activity, Fragment i Dialog, a także w całej DSL dynamicznej nawigacji Kotlin. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
tymczasowo dodała eksperymentalne interfejsy API, aby umożliwić rezygnację z zapisywania stanu. Choć zawsze zapisywanie stanu jest prawidłowe, w dalszym ciągu są używane wycofane biblioteki (np.zachowane fragmenty), których nie można obsługiwać podczas zapisywania stanu. Umożliwia to aplikacjom powolną konwersję z nieobsługiwanych interfejsów API. (Idf93c).Nawigacja udostępnia teraz interfejsy API
findDestination()
igetHierarchy()
, które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI.findDestination()
to funkcja rozszerzeniaNavGraph
, która znajduje miejsce docelowe na wykresie.getHierarchy()
to funkcja w obiekcieNavDestination
, której można użyć do sprawdzenia, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metody interfejsu NavigationUI, które korzystały z interfejsu
BottomNavigationView
, zostały zaktualizowane, aby zajmowały nadrzędną klasę wprowadzone w Material1.4.0
(NavigationBarView
). Zezwala na używanie tych metod wNavigationRailView
. (Ib0b36, b/182938895)Podczas rozszerzania elementu
<action>
za pomocą kodu XML atrybuty animacji mogą używać atrybutów pobranych z motywu ze składniąapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Zmiany interfejsu API
- Kreatory DSL Kotlin, które używają identyfikatora, zostały wycofane i należy je zastąpić kreatorami, które korzystają z tras (I85b42, b/188816479) (I9f58f, b/188816479)
Poprawki błędów
DialogFragmentNavigator
używa teraz interfejsu APINavigatorState.pop()
, aby informowaćNavController
o zamknięciu okna przez naciśnięcie przycisku z powrotem w systemie lub kliknięcie poza nim. Dzięki temu stanNavController
jest zawsze zsynchronizowany ze stanem nawigatora. (I2ead9)Nawigacja nie wyświetla już identyfikatora
ConcurrentModificationException
podczas manipulowania listą wartościOnDestinationChangedListeners
z wywołaniem zwrotnymonDestinationChanged
. (Ib1707, b/188860458)Bezpieczne argumenty nie ulegają już awarii podczas próby wygenerowania właściwości kierunków w Kotlin. (Id2416, b/188564435)
Metoda setId w NavDestination jest teraz prawidłowo oznaczona adnotacjami za pomocą właściwości
@IdRes
, więc akceptuje tylko identyfikatory zasobów. (I69b80)Parametr int klasy
findNode
ma teraz wartośćresId
zamiastresid
. (I7711D)
Aktualizacja zależności
- Safe-Args wymaga teraz wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie o używaniu aplikacji
applicationIdTextResource
nie powinno już być wyświetlane. (I6d67b, b/172824579)
Wersja 2.4.0-alpha01
18 maja 2021 r.
Usługa androidx.navigation:navigation-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Metoda
currentBackStackEntryAsFlow()
w systemieNavController
udostępniaFlow
, który jest emitowany zawsze, gdy zmienia się bieżąca wartośćNavBackStackEntry
. Możesz użyć tego procesu zamiast ręcznego zarządzania elementemOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Wiele wstecznych stosów
Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie miejsc docelowych do stosu tylnego, gdy navigate()
do nich i usuwanie ich po wywołaniu popBackStack()
lub uruchomieniu systemowego przycisku Wstecz. Istniejąca klasa NavOptions
i integracja z wpisami <action>
w kodzie XML wykresu nawigacji zostały rozszerzone, aby obsługiwać zapisywanie i przywracanie stosu wstecznego. (B/80029773)
W ramach tej zmiany metody NavigationUI
w onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
i NavigationView.setupWithNavController()
automatycznie zapisują i przywracają stan pobranych miejsc docelowych. Zapewnia to obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami kodu jest to zalecany sposób integracji z wieloma stosami wstecznymi. (IE07CA)
Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na wielu platformach:
W pliku XML nawigacji element
<action>
może teraz używać atrybutów logicznychapp:popUpToSaveState
iapp:restoreState
do zapisywania stanu wszystkich miejsc docelowych pobranych przezapp:popUpTo
i przywracania stanu powiązanego 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 narzędziu DSL
navOptions
Kotlin możesz dodać właściwość wartości logicznejrestoreState
i wartość logicznąsaveState
w kreatorzepopUpTo
:// 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ą interfejsuNavOptions.Builder
możesz użyćsetRestoreState()
i nowego przeciążenia wsetPopUpTo()
, które wymagają 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
popBackStack()
mogą teraz zawierać dodatkowy parametrsaveState
.
We wszystkich przypadkach NavController
zapisze i przywróci stan każdego elementu NavBackStackEntry
, w tym instancje miejsca docelowego nawigacji o zakresie ViewModel
. Interfejsy API Navigator
zostały zaktualizowane, dzięki czemu każdy element Navigator
obsługuje zapisywanie i przywracanie własnego stanu.
ComposeNavigator
używane w przypadku miejsc docelowych composable
w narzędziu Nawigacja oraz FragmentNavigator
i DynamicFragmentNavigator
używane na potrzeby miejsc docelowych <fragment>
w Nawigacji z fragmentami z fragmentami z krzyżykiem zostały zaktualizowane, aby korzystały z nowych interfejsów Navigator API oraz obsługują zapisywanie i przywracanie stanu.
Trasy nawigacji
Trasa to identyfikator String
, który jednoznacznie identyfikuje miejsce docelowe. Chociaż wcześniej ta koncepcja była używana tylko w narzędziu Navigation Compose, teraz jest już częścią podstawowych interfejsów API nawigacji. Jest to metoda alternatywna do korzystania z identyfikatorów całkowitych podczas tworzenia grafu za pomocą funkcji DSL nawigacji Kotlin. (b/172823546)
Wszystkie interfejsy API, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które odbiera trasę String
. Są to między innymi navigate()
, popBackStack()
, popUpTo()
i getBackStackEntry()
.
Ma to wpływ na interfejs API:
- Właściwość kotlin
popUpTo
na platformie DSL Kotlin została wycofana i zastąpionapopUpToId
. (I59c73, b/172823546) - Interfejs API
getStartDestination()
został wycofany i zastąpiony przezgetStartDestinationId()
. (I0887f, b/172823546)
Jeśli deweloperzy przechodzą z poprzednich wersji Navigation Compose do funkcji Navigation Compose 2.4.0-alpha01
, oznacza to, że nie jest już potrzebny importowanie następujących metod rozszerzeń 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 funkcji NavDestination
, dzięki czemu możesz bezpośrednio wywołać funkcję navBackStackEntry.destination.route
.
Zmiany interfejsu API
- Wszystkie artefakty nawigacji zostały przepisane w języku Kotlin. Dzięki temu zwiększyło się możliwość wartości null klas korzystających z klas ogólnych (takich jak podklasy
NavType
). Wszystkie funkcje rozszerzeń Kotlin, które były częścią artefaktów-ktx
, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty-ktx
będą nadal publikowane, ale będą całkowicie puste. (b/184292145) NavDeepLinkBuilder
umożliwia teraz dodawanie wielu różnych miejsc docelowych do wygenerowanego stosu zwrotnego. (I3ee0d, b/147913689)- Dodaj funkcje fabryczne do urządzenia
DynamicNavHostFragment
(IcD515, b/175222619) - Unikalny identyfikator instancji
NavBackStackEntry
jest teraz widoczny jako część jego publicznego interfejsu API. (IE033a) - Pola
name
iargument
oraz funkcje niszczeniaNamedNavArgument
są teraz publiczne. (nr 174, b/181320559) - Wprowadziliśmy nowe rozszerzenie
NavBackStackEntry#provideToCompositionLocals
, które udostępniaNavBackStackEntry
odpowiednim użytkownikom lokalnym kompozycji. (nr 175, b/187229439)
Bezpieczne argumenty
Bezpieczne argumenty generują 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 bazowały na KotlinPoet
1.8.0
. (nr 172, b/183990444)
Zmiany w działaniu
- Nawigacja opiera się teraz na cyklu życia
2.3.1
i oznaczasetGraph()
,popBackStack()
,navigateUp()
inavigate()
, czyli metody, które aktualizująNavBackStackEntry
Lifecycle
jako@MainThread
, dostosowując Nawigację do egzekwowania zasad dotyczących wątku głównego wprowadzonych w cyklu życia2.3.0
. (b/171125856) - Wielkość liter w argumentach typu enum z precyzyjnych linków nie jest teraz rozróżniana, dzięki czemu precyzyjny link, taki jak
http://www.example.com/red
, może pasować do precyzyjnego linkuwww.example.com/{color}
, nawet jeśli wyliczenie ma wartośćRED
. (nr 152, b/135857840)
Zgodność podczas tworzenia wiadomości
- Usługa
androidx.navigation:navigation-compose:2.4.0-alpha01
jest zgodna tylko z funkcją tworzenia wiadomości w wersji1.0.0-beta07
i nowszych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że zmienne argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami o pasującym sufiksie dokładnego. (nr 153, b/184072811)
NavHostFragment
obsługuje teraz niestandardowe nawigatory, które używają tych samych elementów@Navigator.Name("dialog")
co domyślna wartośćDialogFragmentNavigator
. (Ib1c2c, b/175979140)- Poprawiliśmy działanie interfejsu
NavigatorProvider#addNavigator
, aby uniknąć problemów przy jego wielokrotnym wywoływaniu z tą samą instancją. (#176, b/187443146)
Treści tłumaczone z zewnątrz
- Dziękujemy, simonschiller za utworzenie obsługi bezpiecznych argumentów, która generuje metodę
fromSavedStateHandle()
dla każdej klasyNavArgs
. (#122, b/136967621) - Dziękujemy Bradleycorn za to, że w argumencie enum nie jest rozróżniana wielkość liter w precyzyjnych linkach. (nr 152, b/135857840)
- Dziękujemy za rozwiązanie problemu osipxd, który powodował, że obiekty zastępcze argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami z pasującym sufiksem dokładnego. (nr 153, b/184072811)
- Dziękujemy tatocaster za zaktualizowanie bezpiecznych argumentów tak, aby zależało od KotlinPoet
1.8.0
. (nr 172, b/183990444) - Dziękujemy jossiwolf za publiczne udostępnienie pól
name
iargument
oraz niszczenie funkcjiNamedNavArgument
. (nr 174, b/181320559) - Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia
NavBackStackEntry#provideToCompositionLocals
, które udostępniaNavBackStackEntry
odpowiednim użytkownikom lokalnym kompozycji. (nr 175, b/187229439) - Dziękujemy jossiwolf za poprawienie działania pakietu
NavigatorProvider#addNavigator
. Dzięki temu powtórne wywoływanie go z tym samym wystąpieniem nie będzie powodować problemów. (#176, b/187443146)
Navigation Compose w wersji 1.0.0
Wersja 1.0.0-alpha10
7 kwietnia 2021 r.
Usługa androidx.navigation:navigation-compose:1.0.0-alpha10
została zwolniona. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.
Zmiany interfejsu API
NavHost
akceptuje teraz obiektModifier
, 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źć obiektuOnBackPressedDispatcherOwner
, tak jak w przypadku wyświetlania podglądu obiektuNavHost
. (I7d8b4)- Funkcja tworzenia wiadomości nawigacji korzysta teraz z Nawigacji
2.3.5
. Rozwiązaliśmy problem, gdy używasz elementuBackHandler
w miejscu docelowymNavHost
. (I7e63b, b/182284739)
Wersja 1.0.0-alpha09
10 marca 2021 r.
Usługa androidx.navigation:navigation-compose:1.0.0-alpha09
została zwolniona. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.
Zmiany interfejsu API
LocalViewModelStoreOwner.current
zwraca terazViewModelStoreOwner
do wartości null, co pozwala lepiej określić, czy w bieżącej kompozycji jest dostępna właściwośćViewModelStoreOwner
. Interfejsy API, które wymagająViewModelStoreOwner
, takie jakviewModel()
iNavHost
, nadal zgłaszają wyjątek, jeśliViewModelStoreOwner
nie jest ustawiony. (Idf39a)
Poprawki błędów
- Funkcja tworzenia nawigacji wymaga teraz nawigacji w wersji 2.3.4, która zawiera poprawkę polegającą na próbie ustawienia tego samego obiektu ViewModelStore po ustawieniu wykresu. (I65c24, b/177825470)
Wersja 1.0.0-alpha08
24 lutego 2021 r.
Usługa androidx.navigation:navigation-compose:1.0.0-alpha08
została zwolniona. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.
Nowe funkcje
NavHost
wypełnia teraz kolumnęLocalSavedStateRegistryOwner
CompositionLocal wartościąNavBackStackEntry
tego miejsca docelowego, dzięki czemu wszystkie stany zapisane bezpośrednio w folderzeSavedStateRegistry
zostaną zapisane i przywrócone wraz z miejscem docelowym. (I435d7, b/179469431)
Wersja 1.0.0-alpha07
10 lutego 2021 r.
Usługa androidx.navigation:navigation-compose:1.0.0-alpha07
została zwolniona. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.
Aktualizacje zależności
- Funkcja Navigation Compose wymaga teraz Lifecycle ViewModel Compose 1.0.0-alpha01 w celu zapewnienia obsługi
viewModel()
w miejscach docelowychcomposable
. (I7a374) NavHost
używa teraz nowej funkcjiLocalOnBackPressedDispatcherOwner
z Activity-Compose w wersji 1.3.0-alfa01, aby pobraćOnBackPressedDispatcher
ustawiony naNavController
. (I65b12)
Wersja 1.0.0-alpha06
28 stycznia 2021 roku
Usługa androidx.navigation:navigation-compose:1.0.0-alpha06
została zwolniona. Wersja 1.0.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- W systemie
NavController
dodano metodę rozszerzeniagetBackStackEntry(route: String)
, która zwraca powiązane daneNavBackStackEntry
. (If8931).
Wersja 1.0.0-alpha05
13 stycznia 2021 r.
Usługa androidx.navigation:navigation-compose:1.0.0-alpha05
została zwolniona. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Aktualizacja jest zgodna z wersją 1.0.0-alfa10.
Wersja 1.0.0-alpha04
16 grudnia 2020 roku
Usługa androidx.navigation:navigation-compose:1.0.0-alpha04
została zwolniona. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.
- Zaktualizowano, aby zapewnić zgodność z funkcją tworzenia
1.0.0-alpha09
.
Wersja 1.0.0-alpha03
Grudzień 2, 2020
Usługa androidx.navigation:navigation-compose:1.0.0-alpha03
została zwolniona. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługi
popBackStack()
inavigateUp()
nie działały po zmianie konfiguracji ani procesie przetwarzania śmierci i odtwarzania. (Icea47, b/173281473) - Przechodzenie do wykresu zagnieżdżonego w NavHost działa teraz prawidłowo. (I0948d, b/173647694)
Wersja 1.0.0-alpha02
11 listopada 2020 roku
Usługa androidx.navigation:navigation-compose:1.0.0-alpha02
została zwolniona. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Tworzenie nawigacji obsługuje teraz NavOptions w celu korzystania z operacji popUpTo i launchSingleTop (If96c3, b/171468994)
- Dodaliśmy funkcję nawigacyjną, która pobiera trasę zamiast identyfikatora. Pozwala ona tworzyć zagnieżdżone wykresy w funkcji DSL nawigacji. (I1661D)
- Parametr startDestination jest teraz wyświetlany przed trasą na liście parametrów NavHost (Ie620e).
- Możesz teraz utworzyć wykres, używając trasy jako miejsca docelowego poza kompozycją NavHost. (Iceb75).
Wersja 1.0.0-alpha01
28 października 2020 r.
Usługa android.navigation:navigation-compose:1.0.0-alpha01
została zwolniona. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
Artefakt navigation-compose
zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa on funkcji @Composable
.
Zalety tej początkowej wersji:
- Funkcja kompozycyjna
NavHost
, która umożliwia tworzenie grafów nawigacyjnych za pomocą DSL Kotlin. - Określanie zakresu 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 oraz zwracania wyniku do poprzednich miejsc docelowych.
- Utwórz konkretne elementy pomocnicze w
rememberNavController()
icurrentBackStackEntryAsState()
, aby umożliwić stan podnoszenia i łączenie elementuNavController
z kompozytami spoza obszaruNavHost
(np. dolnym paskiem nawigacyjnym).
Więcej informacji znajdziesz w Przewodniku po tworzeniu wiadomości.
Wersja 2.3.5
Wersja 2.3.5
7 kwietnia 2021 r.
Usługa androidx.navigation:navigation-*:2.3.5
została zwolniona. Wersja 2.3.5 zawiera te zatwierdzenia.
Nowe funkcje
- Podczas poruszania się za pomocą
NavDeepLinkRequest
lubUri
masz teraz dostęp doUri
, działania i typu MIME w wynikowym miejscu docelowym. Wystarczy, że pobierzesz intencję z argumentów za pomocąKEY_DEEP_LINK_INTENT
. Będzie to powielać funkcje dostępne w przypadku zewnętrznych precyzyjnych linków. (I975c3, b/181521877)
Poprawki błędów
- Pole
OnBackPressedCallbacks
zostało dodane do dyspozytora zNavBackStackEntry
jako właścicielem cyklu życia. Teraz prawidłowo przechwytuje on z powrotem, gdy cykl życia aktywności ma wartośćSTOPPED
, a następnieSTARTED
(Iff94f, b/182284739) - Wielkość liter podczas analizy domeny precyzyjnych linków nie jest teraz rozróżniana, dzięki czemu parametr
www.example.com
pasuje zarówno dowww.example.com
, jak i dowww.Example.com
. Pamiętaj, że w nazwach parametrów zapytania nadal jest rozróżniana wielkość liter. (nr 144, b/153829033) - Naprawiliśmy błąd
NullPointerException
, który mógł wystąpić, gdy miejsce docelowe ma wiele niepustych argumentów domyślnych i przechodzisz do tego miejsca docelowego, zastępując tylko podzbiór tych argumentów. (Aosp/1644827)
Aktualizacje zależności
- Wtyczka Navigation Safe Args Gradle wymaga teraz wtyczki Kotlin Gradle w wersji 1.4.31. (Aosp/1661058, b/181156413)
Treści tłumaczone przez użytkowników zewnętrznych
- Dziękujemy
bentrengrove
za żądanie pull, dzięki czemu wielkość liter w analizie domeny precyzyjnego linku nie jest rozróżniana. (nr 144, b/153829033)
Wersja 2.3.4
Wersja 2.3.4
10 marca 2021 r.
Usługa androidx.navigation:navigation-*:2.3.4
została zwolniona. Wersja 2.3.4 zawiera te zatwierdzenia.
Nowe funkcje
- Argumenty funkcji
ReferenceType
można teraz prawidłowo analizować, gdy są wysyłane w ramach 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 funkcjąapp:argType="float"
obsługuje teraz domyślne wartości całkowite, dzięki czemu możesz używać parametruandroid:defaultValue="0"
, zamiast wymagać użycia funkcji0.0
. (nr 117, b/173766247)
Poprawki błędów
- Rozwiązywanie problemów z zatrzymaniem instalowania podczas korzystania z obsługi funkcji dynamicznych w Nawigacji. (Ib27a7, b/169636207)
- Wywołanie
setViewModelStore
lubsetLifecycleOwner
z użyciem tego samego obiektu, które został już ustawione, zostanie uznane za niemożliwe do wykonania (Idf491, b/177825470). - Podczas używania języka Java Safe-Args dodaje teraz adnotacje do ukrywania adnotacji w odpowiednich metodach. (I8fbc5, b/179463137)
Treści tłumaczone z zewnątrz
- Dziękujemy
JvmName
za żądanie pull. Dzięki temu argumentyReferenceType
mogą być teraz prawidłowo analizowane, gdy są wysyłane w ramach identyfikatora URI precyzyjnego linku. (#127, b/179166693) - Dziękujemy
tatocaster
za żądanie pull umożliwiającedefaultValue
dla argumentu z wartościąapp:argType=”float”
, które obsługuje teraz domyślne wartości całkowite. (nr 117, b/173766247)
Wersja 2.3.3
Wersja 2.3.3
27 stycznia 2021 r.
Usługa androidx.navigation:navigation-*:2.3.3
została zwolniona. Wersja 2.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Już nie ma awarii przy wyskakującym elemencie
NavBackStackEntry
, zanim jego elementLifecycle
zostanie przeniesiony doCREATED
. (IE3ba3) - Usunięto problem z regresją spowodowaną przez błąd b/171364502, gdzie przejście do działania z wartością zasobu animacji
0
powodowało wyświetlenie błęduResourceNotFoundException
. (I7aedb, b/176819931)
Wersja 2.3.2
Wersja 2.3.2
Grudzień 2, 2020
Usługa androidx.navigation:navigation-*:2.3.2
została zwolniona. Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono regresję w
NavigationUI
, w której użycie miejsca docelowego<activity>
z parametremonNavDestinationSelected
powodowało przechodzenie do aktywności. (I22e34, b/171364502) - Rozwiązaliśmy problem, który powodował, że funkcja
navigation-dynamic-features-fragment
powodowała wielokrotne przechodzenie 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 domyślne argumenty. (I2c5cb) - Rozwiązaliśmy problem, który powodował, że przejście do zagnieżdżonego wykresu nawigacyjnego nie skutkowało utworzeniem nowej instancji grafu w stosie tylnym. (Ifc831).
- Naprawiono błąd polegający na tym, że użycie funkcji
navigate()
z wartościąpopUpTo
w celu usunięcia ostatniego miejsca docelowego z wykresu nawigacyjnego nie powodowało natychmiastowego zniszczenia i usunięcia wykresu nawigacji z tylnego stosu. (I910a3) - Nawigacja SafeArgs korzysta teraz z KotlinPoet w wersji 1.7.2, która obsługuje jawny tryb interfejsu API Kotlin. (I918B5)
NavHostFragment.findNavController(Fragment)
sprawdza teraz także widok głównego wystroju fragmentu DialogFragment oprócz istniejących kontroli hierarchii i hierarchii widoków Fragmentu. Pozwoli Ci to przetestować fragmenty okien, które korzystają z nawigacji, z funkcjamiFragmentScenario
iNavigation.setViewNavController()
. (I69e0D)
Wersja 2.3.1
Wersja 2.3.1
14 października 2020 r.
Usługa androidx.navigation:navigation-*:2.3.1
została zwolniona. Wersja 2.3.1 zawiera te zatwierdzenia.
Nowe funkcje
- Domyślne zasoby animacji zostały dodane do interfejsu nawigacji i są zalecane zamiast domyślnych zasobów animacji. (B/167430145)
- NavOptions zastępuje teraz kod skrótu i metody „równa się” (b/161586466).
- Nawigacja obejmuje teraz bieżące miejsce docelowe w wyjątku IllegalArgumentException „Brak miejsca docelowego o identyfikatorze”, co powinno usprawnić debugowanie. (b/168311416)
Poprawki błędów
- Bezpieczne argumenty nie będą już owijać wiersza powrotnego, nawet jeśli nazwa wygenerowanej klasy argumentu ma więcej niż 100 znaków. (b/168584987)
Zmiany zależności
navigation-ui
korzysta teraz z DrawerLayout 1.1.1, dzięki czemuNavigationUI
może otwierać panel, nawet gdy używaszLOCK_MODE_LOCKED_CLOSED
lubLOCK_MODE_LOCKED_OPEN
. (B/162253907)- Bezpieczne argumenty korzystają teraz z KotlinPoet 1.6.0 (aosp/1435911)
- Bezpieczne argumenty zależą teraz od AGP 4.0.1 (aosp/1442337)
Wersja 2.3.0
Wersja 2.3.0
24 czerwca 2020 r.
Usługa 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 i w razie potrzeby automatycznie obsługują ich instalację. Więcej informacji znajdziesz w sekcji Nawigacja z modułami funkcji. - Testowanie nawigacji: artefakt
navigation-testing
udostępniaTestNavHostController
, który pozwala ustawić bieżące miejsce docelowe i zweryfikować stos tylny po operacjach nawigacji. Więcej informacji znajdziesz w sekcji Nawigacja testowa. - Zwracanie wyniku: element
NavBackStackEntry
powiązany z każdym miejscem docelowym w stosie nawigacji pozwala teraz uzyskać dostęp do obszaruSavedStateHandle
odpowiedniego do przechowywania niewielkich ilości zapisanych informacji o stanie, które powinny być powiązane z konkretnym wpisem stosu. Więcej informacji znajdziesz w sekcji Zwracanie wyniku do poprzedniego miejsca docelowego. - Obsługa interfejsu
Openable
na platformieNavigationUI
: wszystkie zastosowania funkcjiDrawerLayout
w tabeliNavigationUI
zostały zastąpione bardziej ogólnym interfejsemOpenable
, który został dodany w widoku niestandardowym1.1.0
i zaimplementowany przezDrawerLayout
w DrawerLayout1.1.0
. - Obsługa działań i typów MIME w precyzyjnych linkach: precyzyjne linki obsługują obecnie
app:action
iapp:mimeType
, a nie tylkoapp:uri
, które były wcześniej dostępne.NavController
umożliwia teraz nawigowanie według dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. Więcej informacji znajdziesz w sekcji Nawigacja przy użyciu NavDeepLinkRequest.
Znane problemy
- Obsługa działań precyzyjnych linków i typów MIME nie jest jeszcze dostępna w przypadku łączenia plików manifestu. Dopóki te czynności nie zostaną ukończone, elementy
<intent-filter>
wygenerowane z elementu<nav-graph>
w pliku manifestu nie będą zawierać typu MIME w elemencie<data>
ani niestandardowym<action>
. Musisz ręcznie dodać do pliku manifestu odpowiedni plik<intent-filter>
.
Wersja 2.3.0-rc01
10 czerwca 2020 r.
Usługa androidx.navigation:navigation-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd
NullPointerException
podczas zastępowania wystąpienia miejsca docelowego bez argumentów innym wystąpieniem z argumentamisingleTop
. (B/158006669) - Wszystkie wyjątki typu
destination is unknown
zgłoszone przez zasadęNavController
zawierają teraz dodatkowe informacje na potrzeby debugowania, które ułatwiają określenie stanu elementuNavController
. (b/157764916)
Wersja 2.3.0-beta01
20 maja 2020 r.
Zwolniono androidx.navigation:navigation-*:2.3.0-beta01
. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że element
Lifecycle
obiektuNavBackStackEntry
nie był prawidłowo aktualizowany po śmierci procesu. (b/155218371) OnDestinationChangedListener
instancje zarejestrowane przed wywołaniem usługisetGraph()
są teraz prawidłowo wysyłane do przywróconego miejsca docelowego po śmierci procesu. (b/155218371)- Gdy używasz funkcji
singleTop
, argumenty funkcjiNavBackStackEntry
zostały prawidłowo zaktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancjiOnDestinationChangeListener
. (B/156545508)
Aktualizacje zależności
- Artefakt
NavigationUI
korzysta teraz z widoku CustomView1.1.0-rc01
i DrawerLayout1.1.0-rc01
. (Aosp/1309696).
Wersja 2.3.0-alfa06
29 kwietnia 2020 roku
Usługa androidx.navigation:navigation-*:2.3.0-alpha06
została zwolniona. (Wersja 2.3.0-alfa06 zawiera te zatwierdzenia).
Nowe funkcje
- Precyzyjne linki zostały rozszerzone o
app:action
iapp:mimeType
, a nie tylko do tych, które były wcześniej dostępne (app:uri
). NavController umożliwia teraz nawigowanie według dowolnej kombinacji tych pól za pomocą nowej klasyNavDeepLinkRequest
. (b/136573074, b/135334841)
Zmiany interfejsu API
- Znacznie rozszerzyliśmy obsługę DSL Kotlin w miejscach docelowych dynamicznej nawigacji. (B/148969800)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że intencje precyzyjnych linków były ignorowane w przypadku korzystania z zagnieżdżonego miejsca docelowego na początku. (B/154532067)
Wersja 2.3.0-alpha05
15 kwietnia 2020 roku
Usługa androidx.navigation:navigation-*:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- W przypadku wykresu dynamicznego zawierającego z użyciem
<include-dynamic>
nie musisz już określaćapp:graphPackage
. Zostanie użyty domyślny, dodając doapplicationId
po kropce sufiksmoduleName
. Jeśli chcesz dostosowaćgraphPackage
, możesz teraz użyć obiektu zastępczego${applicationId}
. (b/152696768) - Wykres nawigacyjny Kotlin DSL udostępnia teraz pole
defaultArguments
Map
dla działań, odzwierciedlając możliwość ustawiania wartości domyślnych w elementach<action>
w plikach XML nawigacji. (B/150345605)
Poprawki błędów
- Z Nawigacji w wersji 2.2.2: naprawiono błąd
IllegalStateException
powodujący wyświetlanie precyzyjnych linków do początkowego miejsca docelowego wykresu, gdy w aktywności masz wiele wystąpieńNavHostFragment
. (b/147378752)
Aktualizacje zależności
- Nawigacja zależy teraz od fragmentu
1.2.4
. (Aosp/1277325) - Dynamiczna nawigacja korzysta teraz z Play Core
1.7.2
. (Aosp/1282257).
Wersja 2.3.0-alfa04
18 marca 2020 r.
Usługa androidx.navigation:navigation-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę aktywności modułu funkcji i miejsc docelowych fragmentów w DSL nawigacji Kotlin. (B/148969800)
Zmiany interfejsu API
- Klasa
DynamicExtras
nie używa już wzorca konstruktora i można ją utworzyć bezpośrednio. (Aosp/1253671). DynamicActivityNavigator
używa teraz w konstruktorze funkcjiContext
zamiastActivity
. (Aosp/1250252).
Poprawki błędów
NavigationUI
nie ignoruje już pustych etykiet (np. miejsca docelowego z atrybutemandroid:label=””
), a teraz prawidłowo ustawia pusty ciąg znaków w tytule. (B/148679860)
Aktualizacje zależności
- Artefakty funkcji dynamicznych nawigacji zależą teraz od podstawowej wersji Google Play
1.6.5
. (b/149556401)
Wersja 2.3.0-alfa03
Marzec 4, 2020
Usługa androidx.navigation:navigation-*:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zamiast korzystać z konkretnej klasy
DrawerLayout
,AppBarConfiguration
używa teraz interfejsuOpenable
wprowadzonego w widoku niestandardowym1.1.0-alpha02
(który implementujeDrawerLayout
od DrawerLayout1.1.0-alpha04
), co pozwala na korzystanie z niestandardowych implementacji bibliotekiOpenable
z parametremNavigationUI
. (b/129030452)
Poprawki błędów
- Teraz reguły ProGuard
navigation-common-ktx
poprawnie zachowują tylko używane klasyNavArgs
, a nie wszystkie instancjeNavArgs
. (b/150213558)
Zmiany zależności
- Nawigacja nie jest już zależna od Core
1.2.0
i jest teraz oparta na Core1.1.0
, aby nie zmuszać deweloperów do przejścia na nowszą zależność, gdy Nawigacja nie wymaga żadnych nowych interfejsów API w Core1.2.0
.
Wersja 2.3.0-alfa02
19 lutego 2020 r.
Usługa androidx.navigation:navigation-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
NavBackStackEntry
umożliwia teraz dostęp do obiektuSavedStateHandle
odpowiedniego do przechowywania niewielkich ilości zapisanych stanów, które powinny być powiązane z konkretnym wpisem stosu wstecznego. Przykład zastosowania znajdziesz w sekcji Zwracanie wyniku. (b/79672220)
Zmiany interfejsu API
- Dodaliśmy metody wygodnych usług
getCurrentBackStackEntry()
igetPreviousBackStackEntry()
, aby ułatwić pobieranieNavBackStackEntry
w przypadku bieżących i poprzednich miejsc docelowych. (b/79672220)
Poprawki błędów
- Podczas uruchamiania aplikacji w własnym stosie zadań funkcja
navigateUp()
przekazuje teraz argumenty bieżącego miejsca docelowego orazKEY_DEEP_LINK_INTENT
do poprzedniego miejsca docelowego. (B/147456890)
Zmiany zależności
- Nawigacja korzysta teraz z rdzenia
1.2.0
.
Wersja 2.3.0-alfa01
5 lutego 2020 r.
Usługa androidx.navigation:navigation-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowy artefakt
navigation-testing
udostępnia klasęTestNavHostController
. Ta klasa stanowi alternatywę dla użycia przykładuNavController
podczas testowania Nawigacji. Pozwala ona ustawić bieżące miejsce docelowe i zweryfikować stos wsteczny po operacjach nawigacji. (B/140884273) - Nowa funkcja
navigation-dynamic-features-fragment
(i jej zależność przejściowanavigation-dynamic-features-runtime
) umożliwia dodanie miejsc docelowych lub całych wykresów nawigacyjnych (za pomocą<include-dynamic>
) z modułów funkcji, co zapewnia bezproblemową instalację modułów funkcji na żądanie podczas korzystania z tych miejsc docelowych. Więcej informacji znajdziesz w sekcji Nawigacja 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 niepasujących do precyzyjnego linku. (b/147447512) - Z nawigacji
2.2.1
: reguły ProGuardnavigation-ui
dlaDrawerArrowDrawable
zostały zaktualizowane, aby zasadaandroid.enableJetifier=true
nie była wymagana. (B/147610424) - Z Nawigacji
2.2.1
: modułnavigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu, a nie jest taka sama jak nazwanavigation-runtime-ktx
. (Aosp/1141947)
Aktualizacje zależności
- Z sekcji Nawigacja
2.2.1
: Nawigacja2.2.1
korzysta teraz z danych Cykl życia modelu SavedState2.2.0
i Fragmentu1.2.1
.
Wersja 2.2.2
Wersja 2.2.2
15 kwietnia 2020 roku
Zwolniono androidx.navigation:navigation-*:2.2.2
. Wersja 2.2.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono
IllegalStateException
występujące w przypadku precyzyjnych linków do początkowego miejsca docelowego wykresu, gdy w aktywności masz wiele wystąpieńNavHostFragment
. (b/147378752) NavigationUI
nie ignoruje już pustych etykiet (np. miejsca docelowego z atrybutemandroid:label=””
), a teraz prawidłowo ustawia pusty ciąg znaków w tytule. Ta funkcja była już dostępna w Nawigacji w wersji 2.3.0-alfa04. (B/148679860)- Teraz reguły ProGuard
navigation-common-ktx
poprawnie zachowują tylko używane klasyNavArgs
, a nie wszystkie instancjeNavArgs
. Wcześniej ta funkcja była dostępna w Nawigacji w wersjach 2.3.0-alfa03. (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.
Usługa 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 niepasujące do precyzyjnego linku. (b/147447512) - Reguły ProGuard
navigation-ui
dlaDrawerArrowDrawable
zostały zaktualizowane, aby dopilnować, że zasadaandroid.enableJetifier=true
nie jest wymagana. (B/147610424) - Moduł
navigation-common-ktx
ma teraz unikalną nazwę pakietu manifestu i nie ma tej samej nazwy co pakietnavigation-runtime-ktx
. (Aosp/1141947)
Aktualizacje zależności
- Nawigacja
2.2.1
korzysta teraz z zapisanego modelu widoku cyklu życia2.2.0
i fragmentu1.2.1
.
Wersja 2.2.0
Wersja 2.2.0
Styczeń 22, 2020
Usługa androidx.navigation:navigation-*:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.1.0
- NavBackStackEntry: możesz teraz wywołać funkcję
NavController.getBackStackEntry()
, podając identyfikator miejsca docelowego lub wykresu nawigacji na stosie tylnym. Zwrócony obiektNavBackStackEntry
udostępnia parametryLifecycleOwner
,ViewModelStoreOwner
(to samo zwrócone przezNavController.getViewModelStoreOwner()
) iSavedStateRegistryOwner
, a także argumenty używane do rozpoczęcia podróży. - Integracja z zapisanym modelem widoku cyklu życia:
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną podczas używania konstruktoraby navGraphViewModels()
lub konstruktoraViewModelProvider
z wartościąViewModelStoreOwner
zwracaną przezNavController.getBackStackEntry()
lubNavController.getViewModelStoreOwner()
. - Obsługa parametrów zapytania w przypadku precyzyjnych linków: precyzyjne linki z parametrami zapytania obsługują teraz parametry zapytania ze zmienioną kolejnością. Argumenty, które mają wartość domyślną lub mogą być puste, są teraz opcjonalne przy dopasowaniu precyzyjnych linków.
- Ulepszona obsługa animacji:
NavHostFragment
korzysta teraz zFragmentContainerView
z fragmentu 1.2.0, naprawia problemy z kolejnością nakładania elementów w animacji i wysyła wstawienia okien do fragmentów.
Wersja 2.2.0-rc04
18 grudnia 2019 r.
Usługa 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 funkcję
navigation-ui
, aby pasowały do dostosowanych animacji zanikania we Fragmentie1.2.0-rc04
. (b/145769814)
Wersja 2.2.0-rc03
4 grudnia 2019
Usługa androidx.navigation:navigation-*:2.2.0-rc03
została zwolniona. Wersja 2.2.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów.
- Rozwiązaliśmy problem z analizą precyzyjnego linku, gdy używasz parametrów zapytania i argumentu jako ostatniej części ścieżki, co uniemożliwiało analizę więcej niż 1 znaku końcowego argumentu ścieżki. (b/144554689)
- Rozwiązaliśmy problem z analizowaniem precyzyjnych linków, który powodował, że opcjonalne parametry otrzymywały
"@null"
zamiastnull
. (b/141613546) NavHostFragment
teraz prawidłowo przywraca wykres po zmianie konfiguracji w przypadku użycia zFragmentContainerView
. (B/143752103)
Zmiany zależności
- Nawigacja zależy teraz od Cykl życia
2.2.0-rc03
, SavedState modelu cyklu życia1.0.0-rc03
, aktywności1.1.0-rc03
i fragmentu1.2.0-rc03
(w stosownych przypadkach).
Wersja 2.2.0-rc02
7 listopada 2019 r.
Usługa androidx.navigation:navigation-*:2.2.0-rc02
została zwolniona. Wersja 2.2.0-rc02 zawiera te zatwierdzenia.
Zmiany zależności
- Nawigacja korzysta teraz z elementu androidx.lifecycle
2.2.0-rc02
.
Wersja 2.2.0-rc01
23 października 2019 r.
Usługa 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.
Usługa androidx.navigation:navigation-*:2.2.0-beta01
została zwolniona. Wersja 2.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
NavDestination
i jej podklasy zastępują teraztoString()
, aby dostarczać bardziej przydatnych informacji podczas debugowania. (b/141264986)
Zmiany w działaniu
- Podczas dopasowywania precyzyjnych linków dodatkowe parametry zapytania są teraz ignorowane. Nie powoduje to niepowodzenia dopasowania. (b/141482822)
Poprawki błędów.
- Naprawiono błąd polegający na tym, że argumenty na ścieżce precyzyjnego linku były ignorowane, jeśli określono też parametry zapytania. (B/141505755)
- Rozszerzenie Kotlin
navArgs()
w systemieActivity
ma teraz lepszy komunikat o błędzie, gdy nie ma żadnych dodatków. (b/141408999) - Klasy Java wygenerowane przez bezpieczne argumenty (
Directions
) zawierają teraz wartości domyślne. (B/141099045) - Klasy Java wygenerowane przez bezpieczne argumenty (
Args
) zawierają teraz wartości domyślne. (B/140123727) - Gdy używasz interfejsu
Toolbar
,NavigationUI
nie animuje już zmiany tekstu podczas przechodzenia między dwoma miejscami docelowymi najwyższego poziomu. (B/140848160)
Wersja 2.2.0-alfa03
18 września 2019 r.
Usługa androidx.navigation:navigation-*:2.2.0-alpha03
została zwolniona. Wersja 2.2.0-alfa03 zawiera te zatwierdzenia.
Zmiany w działaniu
- Połączenie z użytkownikiem
setViewModelStore()
po połączeniu się z numeremsetGraph
skutkuje terazIllegalStateException
. To ustawienie należy zawsze ustawić przezNavHost
w ramach wstępnej konfiguracji, aby zapewnić spójność miejsca na dane we wszystkich instancjachNavBackStackEntry
w przypadkuViewModel
instancji. (Aosp/1111821)
Poprawki błędów.
- Naprawiono błąd
ConcurrentModificationException
w przypadku użycia instancjiViewModel
dołączonych do wielu różnych grafów nawigacyjnych o zakresieViewModelStore
. (Aosp/1112257)
Wersja 2.2.0-alfa02
5 września 2019 r.
Usługa 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 parametry zapytania ze zmienioną kolejnością. Argumenty, które mają wartość domyślną lub mogą mieć wartość null, są teraz opcjonalne przy dopasowaniu precyzyjnych linków. (b/133273839)
- Możesz teraz wywołać funkcję
NavController.getBackStackEntry()
i przekazać identyfikator miejsca docelowego lub wykresu nawigacyjnego na tylnym stosie. Zwrócony obiektNavBackStackEntry
udostępnia parametryLifecycleOwner
,ViewModelStoreOwner
(to samo zwrócone przezNavController.getViewModelStoreOwner()
) iSavedStateRegistryOwner
, a także argumenty używane do rozpoczęcia podróży. (aosp/1101691, aosp/1101710)
Poprawki błędów.
- Rozwiązaliśmy problem, który powodował, że nie można było dodać elementu
NavHostFragment
do plikuViewPager2
w przypadku użycia przyciskuIllegalArgumentException
. (B/133640271) - Funkcja
NavInflater
pozwala teraz uniknąć niepotrzebnego wywoływania funkcjigetResourceName()
, co skraca czas inflacji nawet o 40%. (b/139213740)
Wersja 2.2.0-alpha01
7 sierpnia 2019 r.
Usługa 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ą podczas używaniaby navGraphViewModels()
lub konstruktoraViewModelProvider
z funkcjąViewModelStoreOwner
zwróconym przezNavController.getViewModelStoreOwner()
. (b/135716331)
Zmiany interfejsu API
- Na stronie Nawigacja
2.1.0-rc01
: wycofanygetViewModelStore()
interfejs APINavController
wprowadzony w2.1.0-alpha02
został usunięty. (Aosp/1091021).
Poprawki błędów.
NavHostFragment
używa terazFragmentContainerView
, naprawiając problemy z kolejnością nakładania elementów w animacji i wysyłające okna do fragmentów. (b/137310379)
Wersja 2.1.0
Wersja 2.1.0
5 września 2019 r.
Usługa androidx.navigation:navigation-*:2.1.0
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ważne zmiany wprowadzone od wersji 2.0.0
- Ograniczanie modeli widoków do wykresu nawigacyjnego: możesz teraz tworzyć modele widoków danych ograniczone do poziomu wykresu nawigacji za pomocą przedstawicieli właściwości
by navGraphViewModels()
w przypadku użytkowników Kotlin, korzystając z bibliotek-ktx
lub interfejsu APIgetViewModelStoreOwner()
dodanego doNavController
. Więcej informacji znajdziesz w artykule Udostępnianie danych związanych z interfejsem między miejscami docelowymi. - Konta docelowe w oknach docelowych: możesz teraz tworzyć miejsca docelowe (
<dialog>
), które będą wyświetlać komunikatDialogFragment
, gdy przejdziesz do nichnavigate
.NavHostFragment
obsługuje domyślnie miejsca docelowe okien. Więcej informacji znajdziesz w artykule Tworzenie miejsca docelowego z fragmentu DialogFragment. - Nawigacja według Uri: możesz teraz
navigate
skorzystać z urządzeniaUri
, które korzysta z<deepLink>
dodanych przez Ciebie do miejsca docelowego, aby do niego nawigować. Więcej informacji znajdziesz w sekcji Nawigacja za pomocą identyfikatora URI. - NavHostController: interfejsy API używane specjalnie do tworzenia niestandardowych zasobów typu
NavHost
zostały przeniesione doNavHostController
. Dzięki temu implementacje mogą połączyć swojeNavController
z hostingamiLifecycleOwner
,OnBackPressedDispatcher
iViewModelStore
.
Wersja 2.1.0-rc01
7 sierpnia 2019 r.
Usługa androidx.navigation:navigation-*:2.1.0-rc01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Wycofany interfejs API
getViewModelStore()
w domenieNavController
został usunięty w wersji2.1.0-alpha02
. (Aosp/1091021).
Wersja 2.1.0-beta02
19 lipca 2019 r.
Usługa 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ść jacoco w
2.1.0-beta01
. (b/137782950)
Wersja 2.1.0-beta01
17 lipca 2019 r.
Usługa androidx.navigation:*:2.1.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
NavigationUI
animuje usuwanie przycisku w górę, gdy używasz elementusetupWithNavController()
z parametremToolbar
lubCollapsingToolbarLayout
. (b/131403621)
Poprawki błędów.
- Rozwiązaliśmy problem z czasem, który występował, gdy w polu
findNavController()
używano wielu fragmentów NavHostFragmentów z tym samym kontenerem. (B/136021571)
Wersja 2.1.0-alpha06
2 lipca 2019 r.
Usługa androidx.navigation:*:2.1.0-alpha06
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Atrybut
app:navGraph
używany przez fragment NavHostFragment został przeniesiony do artefaktunavigation-runtime
. Niestandardowych nawigatorów, które można dodawać za pomocą kodu XML, należy używać tego atrybutu w celu integracji z panelem hosta edytora nawigacji. (B/133880955)
Zmiany interfejsu API
- Interfejs API
getViewModelStore()
w systemieNavController
został wycofany i zastąpiony nową metodągetViewModelStoreOwner()
, która zwracaViewModelStoreOwner
. (AOSP/987010) - Implementację miejsc docelowych okien pływających, takich jak miejsca docelowe typu
<dialog>
, została uogólniona w interfejsie znacznikówFloatingWindow
, który jest teraz zaimplementowany we wszystkich miejscach docelowych<dialog>
. Metody interfejsu użytkownika służące do interakcji z górnym paskiem aplikacji teraz ignorują miejsca doceloweFloatingWindow
. (B/133600763)
Zmiany w działaniu
- Gdy używasz miejsca docelowego
<dialog>
, Nawigacja prawidłowo synchronizuje swój stan z tym, co widzisz na ekranie. Dlatego Nawigacja automatycznie wyświetla teraz<dialog>
miejsca docelowe, gdy dojdziesz do miejsca docelowego bez okna dialogowego lub bez aktywności, na przykład do celu<fragment>
. (b/134089818)
Poprawki błędów.
- Nawigacja wstrzymuje teraz animację, która pojawia się podczas odtwarzania działania podczas obsługi precyzyjnego linku, naprawiającego Flasha. (b/130362979)
- Naprawiono błąd polegający na tym, że po dodaniu fragmentu początkowego stos nawigacji był niezsynchronizowany. (b/133832218)
Wersja 2.1.0-alpha05
5 czerwca 2019 r.
Usługa androidx.navigation:*:2.1.0-alpha05
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany interfejsu API
- Interfejsy API związane z hostem w systemie
NavController
zostały zmienione i przeniesione do nowej podklasy, czyliNavController
,NavHostController
. (Aosp/966091) - Metoda
NavController
setHostOnBackPressedDispatcherOwner()
została zastąpiona metodąsetOnBackPressedDispatcher()
usługiNavHostController
. Teraz należy wywołać metodęsetLifecycleOwner()
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 po nawigowaniu według identyfikatora URI stos wsteczny był nieprawidłowy. (b/132509387)
- Precyzyjne linki obsługiwane przez NavController automatycznie uruchamiają się teraz tylko raz. (b/132754763)
Wersja 2.1.0-alfa04
16 maja 2019 r.
Usługa androidx.navigation:*:2.1.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Funkcja
NavHostFragment
prawidłowo respektuje zasadęapp:defaultNavHost
podczas przechwytywania systemowych zdarzeń przycisku Wstecz, eliminując regresję w Nawigacji2.1.0-alpha03
. b/132077777 DialogFragmentNavigator
prawidłowo obsługuje teraz operacjepopBackStack()
inavigateUp()
. b/132576764- Naprawiono błąd
IllegalStateException: unknown destination during restore
występujący podczas wielokrotnego poruszania się między zagnieżdżonymi wykresami. b/131733658
Wersja 2.1.0-alfa03
7 maja 2019 r.
Usługa androidx.navigation:*:2.1.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Znane problemy
- NavHostFragment nadal przechwytuje systemowy przycisk Wstecz pomimo użycia
app:defaultNavHost="false"
b/132077777
Nowe funkcje
- Możesz teraz tworzyć miejsca docelowe (
<dialog>
), które będą wyświetlać usługęDialogFragment
, gdy dołączysz do:navigate
.NavHostFragment
domyślnie obsługuje miejsca docelowe okien. b/80267254 - Oprócz wywoływania funkcji
navigate
z identyfikatorem zasobu lub instancjąNavDirections
możesz teraz nawigować za pomocą instancjiUri
, która wykorzystuje dodany przez Ciebie do miejsca docelowego element<deepLink>
, aby przejść do właściwego miejsca docelowego. b/110412864
Zmiany w działaniu
- Domyślne animacje dostarczane przez interfejs NavigationUI zostały przyspieszone z 400 do 220 ms, aby dopasować je do domyślnej szybkości animacji aktywności i fragmentów. b/130055522
Zmiany interfejsu API
- Metoda
createFragmentNavigator()
metodyNavHostFragment
została wycofana, a jej funkcje zostały przeniesione do nowej metodyonCreateNavController()
, aby podkreślić, że jest to prawidłowy punkt wejścia dodawania niestandardowych nawigatorów podczas podklasyfikacjiNavHostFragment
. b/122802849 - Do
NavDestination
dodaliśmy metodęhasDeepLink()
, która pozwala sprawdzić, czy dane miejsce docelowe (Uri
) może być obsługiwane przez to miejsce docelowe lub, w przypadkuNavGraph
, dowolne miejsce docelowe na wykresie nawigacji. b/117437718
Poprawki błędów.
- Argumenty domyślne są teraz prawidłowo przekazywane do instancji
OnDestinationChangedListener
. b/130630686 NavHostFragment
przechwytuje teraz systemowe zdarzenia Backend za pomocąOnBackPressedDispatcher
. Naprawiamy problem z nawigacją warunkową w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096- W przypadku bezpiecznych argumentów argument
android:defaultValue=”@null”
z nieokreślonymapp:argType
jest teraz prawidłowo wnioskowany jako argumentstring
. b/129629192
Wersja 2.1.0-alfa02
3 kwietnia 2019 r.
Usługa androidx.navigation:*:2.1.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możesz teraz tworzyć modele widoków danych o zakresie ograniczonym do poziomu wykresu nawigacji za pomocą przedstawicieli usługi
by navGraphViewModels()
w przypadku użytkowników Kotlin lub za pomocą interfejsu APIgetViewModelStore()
dodanego doNavController
. b/111614463
Zmiany interfejsu API
- Możesz teraz dodać
app:targetPackage
do miejsca docelowego<activity>
, aby ograniczyć pasującą nazwę pakietu. Obsługujeapp:targetPackage="${applicationId}"
na potrzeby ograniczenia pakietu do własnego identyfikatora aplikacji. b/110975456
Poprawki błędów.
- Wartość
android:name
dla miejsc docelowych<activity>
nie jest już przekształcana w klasę podczas inflacji, co uniemożliwia użycie obiektów ClassNotFoundExceptions podczas korzystania z funkcji dynamicznych. b/124538597
Wersja 2.1.0-alpha01
19 marca 2019 r.
To jest pierwsza wersja alfa Nawigacji 2.1.0
.
Zmiany zależności
- Nawigacja zależy teraz od tych funkcji:
androidx.core:core:1.0.1
iandroidx.fragment:fragment:1.1.0-alpha05
. W tej wersji wyeliminowaliśmy też zależność odandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
Zmiany interfejsu API
- Dodaliśmy nową metodę
Navigation.createNavigateOnClickListener(NavDirections)
jako alternatywę dla tworzenia odbiornika kliknięć z identyfikatorem zasobu i pakietem. b/127631752 - Interfejs
FragmentNavigator.instantiateFragment
został wycofany. Domyślna implementacja używa terazFragmentFactory
do tworzenia fragmentów kodu. b/119054429
Poprawki błędów
- Nawigacja nie wysyła już wartości null
Bundle
, gdy do miejsca docelowego dołączono argumenty. Występuje problem, gdy używaszandroid:defaultValue="@null"
. b/128531879 - Bezpieczne argumenty są teraz oparte na KotlinPoet 1.1.0. Usunęliśmy 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 zwolniona bez zmian od 2.0.0-rc02
.
Wersja 2.0.0-rc02
6 marca 2019 r.
Nawigacja 2.0.0-rc02 udostępnia nowe artefakty z identyfikatorem grupy androidx.navigation
i zmienia zależności na ich odpowiedniki na AndroidzieX.
Działanie wersji 2.0.0-rc02 jest takie samo jak w przypadku Nawigacji w wersji 1.0.0-rc02. Nie musisz wprowadzać żadnych zmian w kodzie z wersji 1.0.0-rc02 poza zaktualizowaniem zależności w celu dostosowania ich do nowych zależności.
Aby móc korzystać z Nawigacji w wersji 2.X, musisz przeprowadzić migrację do AndroidaX. Stabilna wersja Nawigacji 1.0 będzie ostatnią wersją wykorzystującą zależności bibliotek pomocy.Wszystkie przyszłe rozwiązania programistyczne w kolejnych wersjach będą oparte na AndroidzieX i będą bazujące na stabilnej wersji 2.0.
Zależności sprzed AndroidaX
W przypadku wersji Nawigacji starszych niż Android X uwzględnij te zależności:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
W przypadku bezpiecznych argumentów dodaj tę ścieżka klasy 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 zwolniona bez zmian od 1.0.0-rc02
.
Wersja 1.0.0-rc02
26 lutego 2019 r.
Jest to druga wersja kandydująca do stabilnej wersji Nawigacji 1.0.0. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że parametr
popBackStack()
był ignorowany, jeśli wykres główny nie miał identyfikatora b/126251695 navigateUp()
prawidłowo obsługuje teraz powrót do zadania aplikacji po wywołaniu po skorzystaniu z precyzyjnego linku bezFLAG_ACTIVITY_NEW_TASK
b/126082008- Rozwiązanie problemu polegającego na tym, że
ActivityNavigator.applyPopAnimationsToPendingTransition
nie stosował prawidłowej animacji wyjścia pop-up b/126237567 - Kod Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych Kotlin, takich jak
in
ifun
, w nazwie pakietu powiązanej z klasąR
. b/126020455
Wersja 1.0.0-rc01
21 lutego 2019 r.
Jest to wersja kandydująca do stabilnej wersji Nawigacji 1.0.0. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Rozwiązaliśmy problem z korzystaniem z operacji nawigacji na podstawie fragmentów i
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
jako właściwościandroid:defaultValue
w przypadku argumentówreference
. b/124248602
Zmiany w działaniu
- Dokładne dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z dopasowaniami
.*
lub argumentu. b/123969518
Poprawki błędów
- Metody
popBackStack()
inavigateUp
zwracają teraz prawidłowofalse
po wysunięciu ostatniego miejsca docelowego w stosie wstecznym, naprawiając regresję wprowadzoną w1.0.0-beta01
. b/123933201 - Teraz nawigacja prawidłowo ustawia
ClassLoader
podczas przywracania stanu zapisanej instancji. Pozwala to uniknąć problemów w przypadku używania niestandardowych klas w stanie zapisanymNavigator
lub w argumentach wysłanych doNavDestination
. b/123893858 - Klasy NavArgs wygenerowane przez Safe Args nie ulegają już awarii podczas przywracania argumentu
Parcelable[]
ze stanu zapisanej instancji. b/123963545 - Bezpieczne Args są teraz prawidłowo czyszczone z niepotrzebnych wygenerowanych klas Kotlin. b/124120883
Wersja 1.0.0-beta01
4 lutego 2019 r.
Jest to pierwsza wersja beta Nawigacji. Od tej pory interfejs Navigation API będzie działać stabilnie do następnej wersji, chyba że wystąpi problem krytyczny. Ta wersja zawiera poprawki błędów i zmiany w działaniu.
Zmiany w działaniu
- Nawigacja daje teraz pewność, że domyślne wartości argumentów są traktowane identycznie w czasie działania i za pomocą bezpiecznych argumentów. W efekcie tylko argumenty z funkcją
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 innym parametremapp:argType
spowoduje wystąpienie wyjątku przy analizowaniu kodu XML nawigacji. b/123551990 - Bezpieczne argumenty korzystają teraz z wtyczki Androida do obsługi Gradle w wersji 3.3.0 aosp/888413
- Bezpieczne argumenty są teraz oparte na 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 Androida do obsługi Gradle. b/121304903
- Naprawiliśmy regresję, która powodowała, że pojedyncza operacja
popBackStack()
przenosiła wszystkie kopie miejsca docelowego z góry stosu wstecznego, a nie do pojedynczego miejsca docelowego naraz. b/123552990 - Rozwiązaliśmy problem, który powodował desynchronizację stanu
FragmentNavigator
ze stanemNavController
, co powodowało błądIllegalStateException
podczas próby przywrócenia stosu wstecznego. b/123803044 - Rozwiązaliśmy problem, który powodował, że przy korzystaniu z ProGuard z zaciemnianiem kodu strzałka wsteczna obsługiwana przez
NavigationUI
nie pojawiała się. b/123449431 - Kod wygenerowany przez Bezpieczne argumenty teraz prawidłowo obsługuje użycie obiektu
app:argType
wskazującego statyczną klasę wewnętrzną w formacie.OuterClass$InnerClass
. b/123736741 - Kod w Javie 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.
Jest to poprawka do wersji 1.0.0-alpha10
, która rozwiązuje problem z bezpiecznymi argumentami.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługa Safe Args nie importowała klasy Directions powiązanej z działaniami globalnymi. b/123307342
Wersja 1.0.0-alpha10
23 stycznia 2019 r.
Znane problemy
- Bezpieczne Args nie zaimportują klasy Directions powiązanej z działaniami globalnymi. b/123307342
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Użytkownicy Kotlin mogą teraz używać przedstawiciela właściwości
by navArgs()
, aby leniwie uzyskiwać odwołanie do klasyNavArgs
wygenerowanej przy użyciu bezpiecznych argumentów w elemencieActivity
lubFragment
. b/122603367 - Safe Args umożliwia teraz generowanie kodu Kotlin za pomocą wtyczki
androidx.navigation.safeargs.kotlin
. Kod Kotlin został stworzony specjalnie dla modułów Kotlin i z wykorzystaniem domyślnych argumentów i klas stałych na wzorzec konstruktora, który nadal jest dostępny przez poprzednią wtyczkęandroidx.navigation.safeargs
. b/110263087
Zmiany w działaniu
- Dopasowujące precyzyjne linki są teraz kierowane na precyzyjne linki, które mają najwięcej pasujących argumentów. b/118393029
- Wywołanie
setGraph()
na urządzeniuNavController
spowoduje teraz zresetowanie stosu tylnego. b/111450672 - Nieznane precyzyjne linki nie zgłaszają już parametru
IllegalStateException
, ale są ignorowane, co rozwiązuje problemy z zagnieżdżonymi lub wieloma elementamiNavHostFragment
. b/121340440
Zmiany najważniejsze
- Metoda
NavOptions.applyPopAnimationsToPendingTransition()
stosowania animacji pop do aktywności została przeniesiona doActivityNavigator
. b/122413117 - Bezpieczne argumenty unikają obecnie duplikowania identycznych klas w przypadku działań bez argumentów. Typ zwracany w przypadku metod braku argumentów w wygenerowanych klasach NavDirections to teraz
NavDirections
. b/123233147 - Klasy wskazówek dojazdu wygenerowane przez Safe Args nie mają już publicznego konstruktora – możesz korzystać tylko z wygenerowanych metod statycznych. b/123031660
- Klasy
NavDirections
wygenerowane przez Safe Args nie mają już konstruktora publicznego – powinny być generowane tylko za pomocą metod statycznych w wygenerowanych klasach Directions. b/122963206 - Zwrócony
Bundle
zNavDirections
'getArguments()
jest teraz oznaczony jako@NonNull
, a nie@Nullable
. b/123243957
Poprawki błędów
NavDeepLinkBuilder
teraz poprawnie obsługuje wiele elementówPendingIntent
jednocześnie w tym samym miejscu docelowym, używając przekazanych argumentów do określenia unikatowości. b/120042732NavController
prawidłowo obsługuje teraz operacjepopBackStack()
podczas korzystania z zagnieżdżonych fragmentówNavHostFragment
lub innych podrzędnych fragmentów ze stosem wstecznym. b/122770335NavigationUI
prawidłowo ustawia teraz opis treści przycisku w górę. b/120395362- Klasy wskazówek dojazdu wygenerowane przez Safe Args prawidłowo obsługują teraz działania globalne, które mają taki sam identyfikator jak działanie dla miejsca docelowego. b/122962504
- Klasy wygenerowane przez bezpieczne argumenty
NavDirections
mają teraz równe wartościhashCode()
, gdyequals()
zwraca wartość prawda. b/123043662 FragmentNavigator
wyświetli teraz lepszy komunikat o błędzie, jeśli spróbujesz utworzyć niestandardową wartośćFragmentTransactions
na:NavHostFragment
FragmentManager
. Zawsze należy używać parametrugetChildFragmentManager()
. b/112927148
Wersja 1.0.0-alpha09
18 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Postanowiliśmy nie kontynuować rozwijania artefaktu android.arch.navigation:navigation-testing
. Chociaż okazało się to pomocne w przypadku testów wewnętrznych NavController
, zdecydowanie zalecamy alternatywne strategie testowania, takie jak ośmieszanie instancji NavController
, aby sprawdzić, czy wykonywane są prawidłowe wywołania navigate()
. To podejście zostało szczegółowo omówione w rozmowie o pojedynczej aktywności podczas AndroidDevSummit 2018. Będziemy też pracować nad dodatkową dokumentacją dotyczącą testowania nawigacji.
Nowe funkcje
- Elementy
MenuItem
zmenuCategory="secondary"
nie będą już wyskakiwać wstecz, gdy są używane z metodamiNavigationUI
. b/120104424 AppBarConfiguration
pozwala teraz ustawić instancję zastępcząOnNavigateUpListener
, która zostanie wywołana, gdynavController.navigateUp()
zwrócifalse
. b/79993862 b/120690961
Zmiany najważniejsze
- Gdy używasz
<argument>
zargType="reference"
, Nawigacja nie analizuje już odwołania, tylko podaje nieprzetworzony identyfikator zasobu. b/111736515 - Funkcja
onNavDestinationSelected()
domyślnie wraca teraz do początkowego miejsca docelowego wykresu nawigacyjnego, co zapewnia spójność z metodamisetup
. DodajmenuCategory="secondary"
do:MenuItem
, aby uniknąć wypięcia tylnego stosu. aosp/852869 - Metody
fromBundle()
wygenerowanych klasArgs
przyjmują teraz niepusteBundle
zamiast dopuszczalnych wartościBundle
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. - Nawigacja prawidłowo eksportuje teraz 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-alpha08
6 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Więcej informacji znajdziesz w sekcji Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Etykiety miejsc docelowych używane z metodami
NavigationUI
będą teraz automatycznie zastępować instancje{argName}
w obiekcieandroid:label
prawidłowym argumentem b/80267266 - Nawigacja korzysta teraz z Biblioteki pomocy w wersji 28.0.0 b/120293333
Zmiany najważniejsze
- Nazwa
OnNavigatedListener
została zmieniona naOnDestinationChangedListener
b/118670572 - Funkcja
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 elementuapp:popUpTo
jako podstawy 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
NavController.onHandleDeepLink
została zmieniona nahandleDeepLink
aosp/836063 - Wiele klas i metod, które nie są przeznaczone do podklas, takich jak
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 tworzenia fragmentów doFragmentFactory
. b/119054429 - Konstruktor dla
NavGraphNavigator
nie potrzebuje jużContext
aosp/835340 - NavigatorProvider to teraz klasa, a nie interfejs. Działanie
NavigatorProvider
zwrócone przezgetNavigatorProvider()
nie zmieniło się. aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń donavigate()
pod numerNavigator
. aosp/830663- Znacząca refaktoryzacja elementu
Navigator
eliminująca potrzebę użycia funkcjiOnNavigatorNavigatedListener
oraz zamiast tego, że funkcjanavigate
zwróciła otwierany do niej elementNavDestination
. - Instancje
Navigator
nie mogą już wysyłać zdarzeń pop doNavController
. Rozważ użycieOnBackPressedCallback
do przechwytywania naciśnięć przycisku wstecz i wywołanianavController.popBackStack()
. Aosp/833716
Poprawki błędów
popUpTo
działa teraz konsekwentnie, gdy miejsce docelowe jest elementem<navigation>
b/116831650- Naprawiliśmy kilka błędów, które powodowały wyświetlanie się błędu
IllegalArgumentException
podczas korzystania z wykresów zagnieżdżonych b/118713731 b/113611083 b/113346925 b/113305559 - Atrybut
dataPattern
miejsc docelowych<activity>
będzie teraz wypełniać argumenty z argumentów niebędących ciągami znaków przez wywołanietoString()
b/120161365
Bezpieczne argumenty
- Bezpieczne argumenty obsługują obiekty możliwe do szeregowania, w tym wartości typu Enum. Typy typów wyliczeniowych mogą ustawiać wartość domyślną przy użyciu literału wyliczeniowego bez nazwy klasy (np.
app:defaultValue="READ"
) b/111316353 - Bezpieczne argumenty obsługują tablice wszystkich obsługiwanych typów: b/111487504
- Bezpieczne argumenty ignoruje teraz podfoldery katalogów zasobów b/117893516
- Bezpieczne argumenty dodaje w odpowiednich przypadkach adnotacje
@Override
b/117145301
Wersja 1.0.0-alpha07
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
- Możesz teraz przekazywać argumenty do początkowego miejsca docelowego grafu b/110300470
- Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, łącznikami i znakami plusa. b/112806402
Zmiany najważniejsze
- Moduł
navigation-testing-ktx
został złożony donavigation-testing artifact
i nie będzie już opublikowany. - Artefakt
navigation-testing
jest teraz zależny od standardowej biblioteki Kotlin. Interfejs API został zmieniony, aby był bardziej spójny z konwencjami Kotlina, ale nadal możesz go używać w testach napisanych w języku Java. - Wykresy nawigacyjne zarejestrowane 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 teraz prawidłowo analizują parametry zapytania. b/110057514
- Miejsca docelowe aktywności działają teraz poprawnie ze wszystkimi animacjami rozpoczęcia i zakończenia wyświetlania. 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 stale zależne od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
- Wskazówki dojazdu można teraz generować dla klas wewnętrznych. b/117407555
- Rozwiązaliśmy problem z generowaniem wskazówek dojazdu na wykresie <include>. b/116542123
Wersja 1.0.0-alpha06
20 września 2018 r.
Nowe funkcje
- Przejścia udostępnionych elementów dla fragmentów i miejsc docelowych aktywności są teraz obsługiwane b/79665225. Więcej informacji znajdziesz w artykule Implementowanie nawigacji za pomocą komponentu architektury nawigacji.
- Wybranie elementu w widoku
NavigationView
spowoduje teraz zamknięcie planszy dolnej b/112158843
Zmiany interfejsu API
- Zmiana powodująca niezgodność: metoda Nawigator
navigate()
przyjmuje teraz parametrNavigator.Extras
. - Metoda
getGraph()
NavControllera to terazNonNull
b/112243286
Poprawki błędów
NavigationUI.setupWithNavController()
nie ujawnia już wyświetleń, jeśli jest używany wraz z wyświetleniami 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 klasyczną klasę wskazówek dojazdu z ich nadrzędnej klasy Directions (jeśli istnieje) b/79871405.
- Klasy wskazówek i argumentów mają teraz przydatną implementację funkcji
toString()
b/111843389
Wersja 1.0.0-alpha05
10 sierpnia 2018 r.
Poprawki błędów
- Napraw błąd, który powodował nieprawidłowe działanie stosu. b/111907708
- Napraw błąd w
equals()
wygenerowanych klas. b/111450897 - Napraw błąd kompilacji w bezpiecznych argumentach. b/109409713
- Popraw konwersję z identyfikatorów zasobów na nazwy Java b/111602491
- Naprawa komunikatów o błędach dotyczących dopuszczalności wartości null we wtyczce Safe Args.
- Dodaj brakujące adnotacje dotyczące wartości null.
Wersja 1.0.0-alpha04
19 lipca 2018 r.
Nawigacja 1.0.0-alpha04
i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.
Zmiany interfejsu API / działania
- NavHostFragment będzie zawsze ustawiać bieżący fragment jako główny fragment do nawigacji, dzięki czemu menedżery fragmentów podrzędnych zostaną wyskakujące przed wystrzeleniem 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 klikać b/111534438
- Klasy Args potwierdzają teraz, że atrybuty
NonNull
w rzeczywistości nie są puste b/111451769 - Adnotacje
NonNull
zostały dodane do klas NavDirections i generowanych argumentów b/111455455 b/111455456.
Poprawki błędów
- Rozwiązaliśmy problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnych linków do miejsca docelowego fragmentu b/111515685
Wersja 1.0.0-alpha03
12 lipca 2018 r.
Nawigacja 1.0.0-alpha03
i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.
Zmiany interfejsu API / działania
- Dodano metodę NavigationUI.setupWithNavController w przypadku paska narzędzi Toolbar b/109868820.
- Dodano metodę NavigationUI.setupWithNavController w przypadku elementu CollapsingToolbarLayout b/110887183
- popBackStack() zwraca teraz wartość false, gdy stos wsteczny jest pusty lub gdy podanego identyfikatora miejsca docelowego nie ma w stosie tylnym b/110893637
- FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu przez FragmentManager, aby uniknąć wyjątków „Nie można wykonać tego działania po onSaveInstanceState” w wyjątku b/110987825
Bezpieczne argumenty
- Zmiana znaczenia: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkimi literami w nazwach odpowiednich metod NavDirections.
- Na przykład
DemoController.index
zmieni nazwę nasetDemoControllerIndex
b/79995048 - Na przykład
action_show_settings
zmieni nazwę naactionShowSettings
b/79642240
- Na przykład
- Zmiana powodująca niezgodność: argumenty są teraz domyślnie uznawane za niepuste. Aby zezwolić na null w przypadku ciągu znaków i argumentów parcelable, dodaj
app:nullable="true"
b/79642307 - Możesz teraz używać parametru
app:type="long"
z wartościami domyślnymi w formacie „123L” b/79563966 - Obsługiwane są teraz argumenty Parcelable z pełną i jednoznaczną nazwą klasy dla funkcji
app:type
. Jedyna obsługiwana wartość domyślna to"@null"
b/79563966 - Klasy Args implementują teraz funkcje
equals()
ihashCode()
b/79642246 - Wtyczki Safe Args można teraz stosować do projektów bibliotek b/80036553
- Wtyczki Safe Args można teraz stosować do projektów funkcji b/110011752
Poprawki błędów
- Rozwiązaliśmy problemy z nawigacją podczas korzystania z metod cyklu życia fragmentów kodu b/109916080
- Rozwiązaliśmy problemy z wielokrotnym nawigacją po zagnieżdżonych wykresach b/110178671
- Rozwiązaliśmy problemy z używaniem funkcji
setPopUpTo
z pierwszym miejscem docelowym na wykresie b/109909461 - Rozwiązaliśmy problem, który powodował, że wszystkie wartości
app:defaultValue
były przekazywane jako ciągi znaków b/110710788 - Narzędzie aapt2 w pakiecie z wtyczką Androida do obsługi Gradle 3.2 w wersji beta 01 dodaje teraz reguły zachowania reguł dla każdego atrybutu
android:name
w plikach XML nawigacji b/79874119 - Usunięto wyciek pamięci podczas zastępowania domyślnego fragmentu Navigator b/110900142
Wersja 1.0.0-alpha02
7 czerwca 2018 r.
Zmiany w działaniu
FragmentNavigator
używa terazsetReorderingAllowed(true)
. b/109826220Obecnie Nawigacja to URLDecodes argumentów przeanalizowanych z adresów URL precyzyjnych linków. b/79982454
Poprawki błędów
Poprawiliśmy
IllegalStateException
podczas wywoływania nawigacji z metod cyklu życia fragmentu. b/79632233W przypadku korzystania z animacji nawigacja wymaga teraz Biblioteki pomocy 27.1.1. b/80160903
Naprawiono błąd
IllegalArgumentException
, gdy był używany fragment defaultNavHost="true" jako fragment podrzędny. b/79656847Naprawiono błąd
StackOverflowError
występujący podczas używania NavDeepLinkBuilder. b/109653065Naprawiono błąd
IllegalArgumentException
podczas przechodzenia z powrotem do wykresu zagnieżdżonego. b/80453447Naprawiono problem z pokrywającymi się fragmentami podczas korzystania z funkcji
launchSingleTop
. b/79407969Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla wykresów zagnieżdżonych. b/79734195
Interfejs NavigationUI wyróżni właściwy element, gdy zagnieżdżony wykres jest używany jako
MenuItem
. b/109675998
Zmiany interfejsu API
Atrybut
clearTask
działań i powiązany interfejs API w narzędziuNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
działań i powiązany interfejs API w narzędziuNavOptions
zostały wycofane. b/109806636
Wersja 1.0.0-alpha01
8 maja 2018 r.
Nawigacja to platforma do tworzenia nawigacji w aplikacji. Ta początkowa wersja to 1.0.0-alpha01
.