Nawigacja
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
4 września 2024 r. | 2.8.0 | - | - | - |
Deklarowanie zależności
Aby dodać zależność w Nawigacji, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .
Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle
aplikacji lub modułu:
Odlotowe
dependencies { def nav_version = "2.8.0" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" }
Kotlin
dependencies { val nav_version = "2.8.0" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") }
Safe Args
Aby dodać bezpieczne argumenty,
w swoim projekcie umieść w pliku build.gradle
najwyższego poziomu ten element: classpath
:
Odlotowe
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Musisz też zastosować jedną z dwóch dostępnych wtyczek.
Aby wygenerować kod w języku Java odpowiedni dla modułów Java lub mieszanych Javy i Kotlin, dodaj
ten wiersz do pliku build.gradle
aplikacji lub modułu:
Odlotowe
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Aby wygenerować kod Kotlin odpowiedni dla modułów wyłącznie Kotlin, dodaj:
Odlotowe
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Musisz mieć android.useAndroidX=true
w
gradle.properties
plik zgodnie z
Migracja na 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 problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.
Zobacz dokumentację narzędzia Issue Tracker. .
Wersja 2.8
Wersja 2.8.0
4 września 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0
została zwolniona. Wersja 2.8.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.7.0
Nawigacja Kotlin DSL Type-Safety
- Nawigacja zapewnia teraz poziom bezpieczeństwa typu dla DSL Kotlin (używanego przez Navigation Compose) przy użyciu serializacji Kotlin, co umożliwia definiowanie miejsc docelowych na wykresie nawigacji przy użyciu obiektów i klas danych bezpiecznych dla typu:
// 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.
Przewidywanie wstecz w przypadku tworzenia wiadomości w nawigacji
- 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.
Kompozytowalny fragment nawigacji
- Dodaliśmy nowy artefakt
navigation-fragment-compose
zawierający alternatywęComposableNavHostFragment
dlaNavHostFragment
, która umożliwia dodawanie kompozycyjnych miejsc docelowych 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.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Inne zmiany
- Funkcja Navigation Compose teraz jest oparta na nowej wersji 1.7.0.
- Nawigacja udostępnia teraz nową klasę
CollectionNavType<T>
, podklasęNavType<T>
dla argumentów opartych na zbiorach, takich jak lista, tablice czy mapy. Wszystkie domyślne tabliceNavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
iStringArrayType
) dziedziczą teraz z tej nowej klasy. NavType
ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i długich.
Wersja 2.8.0-rc01
21 sierpnia 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-rc01
została zwolniona. Wersja 2.8.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawa awarii nawigacji podczas przekazywania klas Enum najwyższego poziomu jako argumentów bezpiecznych typów. (I0ba76, b/358137294)
- Nawigacja 2.8 działa teraz prawidłowo z pakietem SDK 34 i nie zostanie zastąpiona pakietem SDK 35 do czasu wersji 2.9 oraz pozostałych bibliotek AndroidaX. (b/358798728)
Wersja 2.8.0-beta07
7 sierpnia 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta07
została zwolniona. Wersja 2.8.0-beta07 zawiera te zatwierdzenia.
Znane problemy
- Ze względu na stan b/358137294 domyślnie obsługiwane są tylko enum zagnieżdżone w innych klasach. Wyliczenia najwyższego poziomu będą obsługiwane w następnej wersji.
Poprawki błędów
- Podczas nawigacji do zduplikowanych lub udostępnionych miejsc docelowych nawigacja traktuje priorytetowo dotarcie do miejsca docelowego najbliżej pasującego miejsca docelowego od bieżącej lokalizacji widocznej na wykresie. (IC89a4, b/352006850)
- Do nawigacji w bezpiecznych argumentach dodano nowy element:
NavType.EnumType
. Oznacza to, że typyEnum
nie wymagają już niestandardowych komponentów typuNavType
. Pamiętaj, że poleSerialName
elementuEnum
musi być domyślną pełną i jednoznaczną nazwą. (I66d22, b/346475493) - Do nawigacji w bezpiecznych argumentach dodano wbudowaną obsługę typów argumentów do wartości null,takich jak
Int?
,Long?
,Float?
,Boolean?
iEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Funkcja
startDestination
funkcjiNavGraph
będzie teraz używać domyślnych wartości argumentów, jeśli trasastartDestination
przekazywana do interfejsuNavGraph
będzie dokładnie równastartDestination.route
. (I13762, b/354046047)
Wersja 2.8.0-beta06
24 lipca 2024 r.
Usługa androidx.navigation:navigation-*:2.8.0-beta06
została zwolniona. Wersja 2.8.0-beta06 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że sprawdzanie lint (
WrongStartDestinationType
) nie sprawdzało obiektów towarzyszących w przekazanym typie klasy. W rezultacie lint nie wykrywał błędu. (I92b09)
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.
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, I360f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I524}d I524db2}d
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. I43a51, I836a1. Ic5eec. I39407. I39407. I244041. I24.
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
NavGraph
equals()
prawidłowo uwzględnia teraz węzły innego wykresu, 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ą. Wkrótce zostanie ona oficjalnie wycofana. Dotyczy to też wskazówek na temat przejścia z powrotem do Edytora 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 zmian w interfejsie API. (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ą. Wkrótce zostanie ona oficjalnie wycofana. Dotyczy to też wskazówek na temat przejścia z powrotem do Edytora 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 zmian w interfejsie API. (b/197140101)
Poprawki błędów
- Z sekcji Nawigacja
2.6.0-rc02
: naprawiono błąd związany z nawigacją we fragmentach „Fragmenty”, który powodował, że nawigacja z użyciempopUpTo
i wyskakiwanie fragmentu z tylnego stosu bez odtworzenia jego widoku powodowała 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 i nie oznacza w nieprawidłowy sposób każdego miejsca docelowego 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)- Dodaję fragmenty do adresu
FragmentNavigator
FragmentManager
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, cykl życia
NavBackStackEntry
nie dociera doRESUMED
przy korzystaniu z 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 ustawiony w trybie No-op, 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 było wyskakiwane 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 i nie oznacza w nieprawidłowy sposób każdego miejsca docelowego 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 –
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 zakresie
NavHost
iDialogHost
są teraz rozmieszczone w odpowiedniej kolejności, tj. wewnętrzne kompozycje są usuwane przed zakresem zewnętrznym elementów kompozycyjnych. (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 opiera się teraz na cyklu życia
2.5.0-beta01
, a naprawianie elementuIllegalStateException
podczas umieszczania 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 w przypadku korzystania z zagnieżdżonych NavHost wewnętrzny obiektNavHost
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ć
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)- Aplikacja
CreationExtras
będzie teraz działać prawidłowo, gdy jest używana z:NavBackStackEntries
, aby utworzyć modele widoków. (I69161, b/217617710) - Bezpieczne argumenty nawigacji obsługują teraz używanie zdefiniowanej przestrzeni nazw
w polu
build.gradle
zamiast pakietu z 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
- Na karcie Nawigacja
2.4.1
:NavHostFragment
będzie teraz prawidłowo ustawiać wartośćOnBackPressedDispatcher
w przypadku powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959) - Z sekcji Nawigacja
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 z dostępem do tworzonego elementu
ViewModel
przezby navGraphViewModels()
z:onCreate()
fragmentu z fragmentem nie powiedzie się z wartościąIllegalStateException
. (I8a14d). - Dzięki funkcji
NavDeepLink
nie będą już dwukrotnie dekodować argumentów, co oznacza, że do ostatecznego miejsca docelowego przekazywane są odpowiednie argumenty. (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 nawigacyjne nie będą już zgodne z Android Studio w wersji starszej niż 7.0, ale jest teraz zgodny z Wtyczka 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) - Przeniesiono z Nawigacja
2.5.0-alpha03
: Navigation SafeArgs obsługuje teraz zdefiniowaną przestrzeń nazw w polubuild.gradle
zamiast pakietu z pliku AndroidManifest. (I659ef, b/217414933) - Po przeniesieniu z Nawigacji
2.5.0-alpha04
: aplikacjaNavigation Safe Args
nie będzie już ulegać awarii podczas korzystania przestrzeni nazw, w przypadku których brak elementuAndroidManifest.xml
. (I17ccf, b/227229815) - Przeniesione z Nawigacji
2.5.0-alpha04
: pusty ciąg znaków jest teraz uważany za prawidłowe argumenty w sekcji głębokiej . (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
: naprawiono błąd polegający na tym, że podczas tworzenia modelu widoku danych przezby navGraphViewModels()
z albumuonCreate()
fragmentu nie powiódłby się zIllegalStateException
. (I8a14d). - Przeniesione z Nawigacji
2.5.0-alpha01
:NavDeepLink
nie już 2 razy niepotrzebnie dekodują argumentów, co oznacza, że prawidłowo zdekodowane argumenty są przekazywane do ostatecznego 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
. - Można teraz rozszerzyć klasę
NavType
, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas tworzenia automatycznie, np. za pomocą funkcji Wykres nawigacji 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 odpowiednim interfejsem 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ąpionapopUpToId
- Interfejs API
getStartDestination()
został wycofany i zastąpiony zgetStartDestinationId()
.
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 konieczności 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
do:PendingIntent
zwrócone przezcreatePendingIntent()
, co zapewnia, że ten interfejs API działa zgodnie z oczekiwaniami, gdy jest kierowany na Androida 12.- Nawigacja zależy teraz od
Cykl życia
2.3.1
i teraz oznaczasetGraph()
,popBackStack()
,navigateUp()
inavigate()
, metody aktualizacjiNavBackStackEntry
Lifecycle
, jako@MainThread
, dostosowując Nawigację do wątku głównego wprowadzone 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 na podstawie Safe Args umieszcza teraz argumenty bez domyślne przed tymi, które jako parametry mają wartości domyślne.
- Podczas generowania argumentów Bezpieczne argumenty dodają 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
utworzony przezby navGraphViewModels()
zonCreate()
fragmentu z fragmentem nie powiedzie się z wartościąIllegalStateException
. (b/213504272) - Poprawiono w sekcji Nawigacja
2.5.0-alpha01
: Bezpieczne argumenty 2.4.0 są niezgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (b/213086135) - Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacyjnymi nie tworzą poprawnie pełnego stos wsteczny. (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 zarówno jawnych, jak i ukrytych
precyzyjne linki są teraz automatycznie dodawane do flagi
saveState
podczas przechodzenia do innego wykresu. Upewnij się, że kod na przykładNavigationUI.setupWithNavController
i który korzysta z kilku stosów wstecznych. (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 element NavBackStackEntries był przenoszony w dół
Lifecycle.State.CREATED
po przeniesieniu doLifecycle.State.STARTED
, gdy elementNavHost
jest dodawany bezpośrednio do sekcjisetContent()
aktywności. (Ia5ac1, b/203536683) - Naprawiono wyścig, w którym
wyskakuję
DialogFragment
z miejsca docelowego stos wsteczny przed wyświetleniem okna nie spowoduje zamknięcia okna, co skutkuje awarię, która wystąpiła podczas ręcznego otwierania okna błędu odrzucone przez użytkownika. (I687e5) - Naprawiono błąd, który powodował, że
Interfejs
onNavDestinationSelected
API w systemieNavigationUI
zwróci wartośćtrue
, nawet jeśli nie wyświetlono elementunavigate()
ten wykres nawigacyjny. Teraz ten sam mechanizm logiczny używane wewnętrznie przezsetupWithNavController
tylko do wybierz elementy (MenuItem
) powiązane z bieżącym miejsce docelowe za pomocą parametruhierarchy
miejsca docelowego. (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
- Modele ViewModel nie będą już niszczone, gdy przejścia są przerywane przełączanie się między tymi samymi ekranami (Id52d8, b/200817333);
- Argumenty
NavDeepLink
do wartości null nie są już dostępne wymagaj wartości domyślnej przy dodawaniu precyzyjnych linków doNavDestination
. (I5aad4, b/201320030) - NavBackStackEntries z różnymi cyklami życia nie uważane za równe. Oznacza to, że NavHost prawidłowo przekomponuje wszystko miejsca docelowe w przypadku nawigacji z użyciem funkcji singleTop i ponownego wyboru pozycje menu u dołu. (I1b351, b/196997433)
- Usunięto problem z aplikacją
AbstractListDetailFragment
. który spowodował wyświetlenie atrybutówlayout_width
ilayout_weight
w panelu listy zwróconym przezonCreateListPaneView()
mogą być nieprawidłowo obsługiwane lub ignorowane. (f5fbf3) - Wizualny stan miejsc docelowych okien dialogowych
jest zsynchronizowany z kontem
DialogFragmentNavigator
stanu. Oznacza to, że ręczne wywołanie asynchronicznego Interfejs APIdismiss()
w domenieDialogFragment
prawidłowo usuwa teraz wszystkie miejsca docelowe okien nad zamkniętym oknem. Ten nie ma wpływu na przypadki, w których używaszpopUpTo
lubpopBackStack()
, aby zamknąć okno. (I77ba2) - Teraz
AbstractAppBarOnDestinationChangedListener
ma bardziej zrozumiały komunikat o błędzie dla:onDestinationChanged()
. (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 pobranie listy wszystkich widocznych
NavBackStackEntry
instancji przezvisibleEntries
StateFlow (Ia964e) rememberNavController()
przyjmuje teraz opcjonalne zestawNavigator
instancji, które zostaną dodane do zwróconoNavController
, aby usprawnić (opcjonalnie) wsparcie Nawigatorzy, np. z Materiał nawigacyjny dla akompanitów. (I4619e)
Poprawki błędów
- Dynamiczna nawigacja nie będzie się już zawieszać, jeśli aktywność będzie na nowo. (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) - SafeArgs generuje teraz argumenty dla funkcji
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
- Możesz teraz używać metody
clearBackStack()
aby wyczyścić wszystkie stany zapisane w narzędziupopBackStack()
lubpopUpToSaveState
. (I80a0F) - Możesz teraz przekazać listę argumentów lub precyzyjne linki do swojego kreatora zagnieżdżonego wykresu nawigacyjnego, który zostanie automatycznie dodany do utworzonego wykresu. (I8a470, b/182545357)
Zmiany interfejsu API
- Funkcja DSL
navArgument
Kotlin jest teraz częściąnavigation-common
zamiastnavigation-compose
. To będzie wymagać zaktualizowanie importów, aby nadal korzystać z tej funkcji. (I1D095).
Zmiany w działaniu
- Podczas generowania argumentów Bezpieczne argumenty dodają teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi. (I89709, b/198493585)
Poprawki błędów
- Podczas korzystania z funkcji tworzenia nawigacji wykresy nawigacyjne
DESTROYED
, gdy wszystkie dzieci będą miałyDESTROYED
lat. (I86552, b/198741720) - Argumenty
NavDeepLink
do wartości null nie są już dostępne wymagają wartości domyślnej. (Ia14ef, b/198689811) - Wywołuję funkcję
setGraph()
z nowym wykresem usuwa też wszystkie zapisane stosy wsteczne, do poprzedniego sposobu, w którym wysunął się tylny stos. (I97f96) - Naprawiono błąd, który powodował, że
OnDestinationChangedListener
instancji icurrentBackStackEntryFlow
nie otrzymał(a) powiadomienia, gdy za pomocą funkcjilaunchSingleTop
. (Iaaebc).
Aktualizacje zależności
- Funkcja tworzenia nawigacji wymaga teraz Activity Compose 1.3.1 (I05829)
- Funkcja tworzenia nawigacji wymaga teraz
Tworzenie modelu widoku cyklu życia
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
- Można teraz rozszerzyć klasę
NavType
, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas tworzenia automatycznie, np. za pomocą funkcji Wykres nawigacji Kotlin DSL. (I78440, b/196871885)
Zmiany w działaniu
- Podczas generowania działań kod Kotlin wygenerowany na podstawie Safe Args umieszcza teraz argumenty bez domyślne przed tymi, które jako parametry mają wartości domyślne. (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żywam w środku
getBackStackEntry
ipreviousBackStackEntry
composable() w połączeniu zremember()
nie będzie już wywoływać funkcji jeśli nie ma miejsca docelowego na stosie wstecznym. (I75138, b/194313238) - Narzędzie Nawigacja w przypadku tworzenia wiadomości jest teraz prawidłowo ponownie komponowane po powrocie do poprzedniej wersji
argumentów stosu i za pomocą
launchSingleTop=true
. (Iebd69, b/186392337) ArrayIndexOutOfBoundsException
już nie będzie gdy dzwonisz do:setGraph
i masz wykres obejmujący 13 lub 29 miejsc docelowych. (I1a9f1, b/195171984)- Generator SafeArgs w języku Java nie powinien już powodować lintowania podczas generowania klas argumentów. (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
- Funkcja Navigation Compose teraz prawidłowo zapisuje stan po zmiany konfiguracji i wykresy przy korzystaniu dzięki funkcji wstecznego stosu. (If5a3d, b/195141957)
- Ponowne wybieranie tej samej karty podczas korzystania z nawigacji Utwórz w nie spowoduje to już wyświetlania pustego ekranu. (I860dc, b/194925622)
NavHost
obserwuje obecnie zmiany wLifecycle.State
:NavBackStackEntry
, co oznacza, że użycie teraz elementuNavHost
we fragmencie spowoduje i można je ponownie skomponować wraz ze zmianą cyklu życia, zamiast wyświetlać pusty ekran. (I4eb85, b/195864489)- Rozwiązaliśmy problem, który powodował, że odrzucanie
DialogFragment
nie zaktualizował(a) poprawnie StanNavController
po odtworzeniu aktywności (np. po zmianie konfiguracji). (ICD72B) - Naprawiono błąd polegający na wyskakaniu ikony nie spowoduje zaktualizowania parametru NavController obsługę przycisku Wstecz, co może powodować przechwytuje przycisk Wstecz mimo że nie ma żadnego stosu wstecznego do przebicia. (If3b34).
- Bezpieczne argumenty automatycznie generują
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 Nawigacyjnym umożliwia teraz ustawienie wartości który jest częścią 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 polegał na tym,
precyzyjny link
NavBackStackEntry
nie dotarłby doRESUMED
stan. (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
NavHost
w narzędziuNavHost
w nawigacji podczas nawigacji zawsze używa przenikania przez miejsca docelowe. (I07049, b/172112072)- Możesz teraz wprowadzać zmiany na wykresie NavHost. Wykresy
z tym samym miejscem docelowym i miejscami docelowymi na wykresie, zostaną
jest uznawany za równy i nie usunie stosu wstecznego
NavController
. (I0b8db, b/175392262)
Poprawki błędów
- Naprawiono błąd
NoSuchElementException
, gdy: możesz zadzwonić pod numerpopBackStack()
z aplikacjiLifecycleObserver
podłączone do urządzeniaNavBackStackEntry
spowodowane przez ponowne aktualizacje stanu kontrolera NavControllera. (I64621) AbstractListDetailFragment
zezwala terazSlidingPaneLayout
ma zostać całkowicie usunięty z APK, gdy nie używaszAbstractListDetailFragment
. (I611ad).- Metody
NavGraph
iNavDestination
zastępują teraz metodę równości, więc 2 obiekty o tych samych wartościach będą uznawane za równe. (I166eb, b/175392262)
Wersja 2.4.0-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
do:PendingIntent
zwrócone przezcreatePendingIntent()
, co zapewnia, że ten interfejs API działa zgodnie z oczekiwaniami, gdy jest kierowany na Androida 12. (If8c52).
Poprawki błędów
- Rozwiązaliśmy problem z aplikacją
<include-dynamic>
, w którym argumenty przekazywane do grafu nie byłyby prawidłowo przekazywane na dynamicznie dołączanym wykresie. (I3E115). - Naprawiono
NullPointerException
podczas nawigacji do miejsca docelowego. za pomocą argumentustring[]
o domyślnej wartości@null
. (I1fbe8) - Dodaj reguły ProGuard dla
@Navigator.Name
, naprawiam problemy w trybie pełnego dostępu R8 3.1. (I2add9, b/191654433) - Podczas tworzenia aplikacji za pomocą parametru SafeArgs nie będzie już błędów
Kotlin
wersji 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) - Usunięto regresję wprowadzoną w
Nawigacja
2.4.0-alpha01
, gdzie:setupActionBarWithNavController()
nie usunąć ikonę w górę na miejsce docelowe najwyższego poziomu. (I5d443, b/189868637) - Naprawiono błąd
IllegalStateException
, gdy: Wywołuję:popBackStack()
po wyskakiwaniu na wykresie głównym kontrolera NavController. (I2a330, b/190265699) - Reguły ProGuard dla
by navArgs()
są teraz prawidłowe ma zastosowanie, gdy używasznavigation-common
lub dowolnych artefaktów od tego zależą. (I68800, b/190082521) - Urządzenie
OnDestinationChangedListener
, które dzwoninavigate()
po pierwszym oddzwonieniu. poprawnie uzyskać drugie wywołanie zwrotne z miejscem docelowym, przeszedł na stronę. (Ie5f9e, b/190228815) - Bezpieczne argumenty nie ulegają już awarii, gdy są używane z funkcjami dynamicznymi i AGP 7.0+. (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żyj atrybutów pobranych z motywu za pomocą Składniaapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Zmiany interfejsu API
- Kreatory DSL Kotlin korzystające z identyfikatora zostały wycofane należy zastąpić kreatorami, którzy korzystają z tras (I85b42, b/188816479) (I9f58f, b/188816479)
Poprawki błędów
DialogFragmentNavigator
używa teraz Interfejs APINavigatorState.pop()
przekazujeNavController
gdy okno dialogowe zostaje zamknięte przez powrót do systemu. lub kliknięcie poza nim, upewniając się, że stanNavController
jest zawsze zsynchronizowany z Stan nawigacji. (I2ead9)Nawigacja nie wyświetla już
ConcurrentModificationException
, gdy: manipulowanie listą pozycjiOnDestinationChangedListeners
z wywołaniem zwrotnymonDestinationChanged
. (Ib1707, b/188860458)Bezpieczne argumenty nie ulegają już awarii podczas próby wygenerowania właściwości kierunku w Kotlin. (Id2416, b/188564435)
Metoda setId w NavDestination jest teraz prawidłowo opatrzona adnotacjami z
@IdRes
, więc akceptuje tylko identyfikatory zasobów. (I69b80)Parametr int parametru
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 konieczności 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. Zastąpiono ją usługąpopUpToId
(I59c73, b/172823546) - Interfejs API
getStartDestination()
został wycofany i zastąpiony zgetStartDestinationId()
. (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
obsługuje teraz dodawanie wielu różnych miejsc docelowych stos wsteczny. (I3ee0d, b/147913689)- Dodaj funkcje fabryczne do urządzenia
DynamicNavHostFragment
(IcD515, b/175222619) - Unikalny identyfikator elementu
NavBackStackEntry
jest teraz udostępniana jako część swojego 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 zależy teraz od
Cykl życia
2.3.1
i teraz oznaczasetGraph()
,popBackStack()
,navigateUp()
inavigate()
, metody aktualizacjiNavBackStackEntry
Lifecycle
, jako@MainThread
, dostosowując Nawigację do wątku głównego wprowadzone 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 korzystające z tej samej wartości:@Navigator.Name("dialog")
jako 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 poleModifier
, które jest przekazywane do w kontenerze kompozycyjnym, który opakowuje docelowe elementy kompozycyjne. (I85aca, b/175125483)
Poprawki błędów
- Funkcja
NavHost
już działa nawet jeśliOnBackPressedDispatcherOwner
nie zostanie znaleziony, tak jest w przypadku podglądu elementuNavHost
. (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 teraz błądViewModelStoreOwner
z dopuszczaniem wartości null, aby lepiej określić czyViewModelStoreOwner
jest dostępny w bieżącym kompozycji. Interfejsy API, które wymagająViewModelStoreOwner
, takiej jak jakoviewModel()
iNavHost
, nadal zgłaszaj wyjątek jeśliViewModelStoreOwner
nie jest ustawiony. (Idf39a)
Poprawki błędów
- Tworzenie nawigacji wymaga teraz Nawigacji 2.3.4 który zawiera poprawkę związaną z próbą ustawienia tego samego obiektu ViewModelStore po ustawieniu grafu. (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 nowejLocalOnBackPressedDispatcherOwner
z Activity-Compose 1.3.0-alfa01, aby otrzymaćOnBackPressedDispatcher
, która jest ustawiona 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 wiadomości nawigacyjnych obsługuje teraz NavOptions w celu korzystania z wyskakującego okienka i uruchom operacje SingleTop (If96c3, b/171468994)
- Dodaliśmy funkcję nawigacyjną, która pobiera trasę zamiast Identyfikator, który umożliwia tworzenie zagnieżdżonych wykresów w Navigation Compose DSL. (I1661D)
- Parametr startDestination jest teraz wyświetlany przed trasą na liście parametry dla NavHost (Ie620e),
- Możesz teraz utworzyć wykres, używając trasy jako punktu wyjścia miejsce docelowe 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 nawigacji używające
NavDeepLinkRequest
lubUri
możesz teraz: uzyskać dostęp do typuUri
, działania i MIME w wynikowym miejscu docelowym przez pobieranie intencji z argumentów za pomocąKEY_DEEP_LINK_INTENT
, co odzwierciedla funkcje dostępne już na potrzeby zewnętrznych precyzyjnych linków. (I975c3, b/181521877)
Poprawki błędów
- Dodano numer
OnBackPressedCallbacks
do dyspozytora zNavBackStackEntry
jako właściciela cyklu życia prawidłowo przechwytuje teraz po cyklu życia aktywności toSTOPPED
, 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)
- Dzwonię pod
setViewModelStore
lubsetLifecycleOwner
w taki sam sposób Ustawiony już obiekt jest w stanie braku działań (Idf491, b/177825470) - Safe-Args dodaje teraz pomijanie adnotacji dotyczących odpowiednich metod w przypadku środowiska Java. (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 podczas wyskakiwania
NavBackStackEntry
przed przeniesieniem tych danych:Lifecycle
doCREATED
. (IE3ba3) - Usunięto problem z regresją spowodowaną przez błąd b/171364502 polegający na przejściu do
aktywność z wartością zasobu animacji
0
spowodowała wystąpienieResourceNotFoundException
(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
zależy teraz od: DrawerLayout 1.1.1 upewnienie się, żeNavigationUI
może otworzyć panel nawet w przypadku użycia funkcjiLOCK_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 przypadki użycia funkcjiDrawerLayout
w tabeliNavigationUI
zostały zastąpione bardziej ogólnym interfejsemOpenable
, który został dodany w widoku CustomView1.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 początkowego miejsca docelowego. (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 wykresów dynamicznych, w których używany jest
<include-dynamic>
, nie musisz już określać wartościapp:graphPackage
. Zostanie użyty model 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
korzysta teraz z interfejsuOpenable
wprowadzonego w widoku niestandardowym1.1.0-alpha02
(któryDrawerLayout
implementuje jako DrawerLayout1.1.0-alpha04
), co pozwala na korzystanie z niestandardowych implementacji interfejsuOpenable
w narzędziuNavigationUI
. (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 korzysta teraz z Core1.1.0
, aby nie zmuszać programistó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 niedopasowanych 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 zapytań o zmienionej kolejności. argumenty, które mają wartość domyślną lub mogą mieć wartość null, 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 zapytań o zmienionej 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 nawigacji na stosie z tyłu. 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- Rozwiązaliśmy problem (
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
obsługuje domyślnie miejsca docelowe okien. b/80267254, - Oprócz wywoływania funkcji
navigate
przy użyciu identyfikatora zasobu lub instancjiNavDirections
możesz teraz nawigować za pomocą instancjiUri
, która wykorzystuje dodane przez Ciebie do miejsca docelowego informacje<deepLink>
, aby przejść do właściwego miejsca docelowego. b/110412864
Zmiany w działaniu
- Domyślne animacje dostarczane przez interfejs NavigationUI zostały skrócone z 400 do 220 ms, aby dopasować się 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 dane 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 wstecz za pomocąOnBackPressedDispatcher
. Naprawiamy problem z nawigacją warunkową w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096- W przypadku bezpiecznych argumentów wartość
android:defaultValue=”@null”
z nieokreślonymapp:argType
jest teraz prawidłowo wnioskowana 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ż analizowana jako klasa 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
orazandroidx.fragment:fragment:1.1.0-alpha05
W tej wersji usunięto również zależność odandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
Zmiany interfejsu API
- Nowa metoda
Navigation.createNavigateOnClickListener(NavDirections)
została dodana jako alternatywa dla tworzenia detektora kliknięć z identyfikatora zasobu i pakietu. b/127631752 - Interfejs
FragmentNavigator.instantiateFragment
został wycofany. Domyślny Implementacja używa terazFragmentFactory
do tworzenia instancji fragmentów. b/119054429
Poprawki błędów
- Nawigacja nie wysyła już pustej wartości
Bundle
, gdy dołączono argumenty do miejsca docelowego. Rozwiązaliśmy problem z użyciemandroid:defaultValue="@null"
. b/128531879 - Bezpieczne argumenty są teraz oparte na KotlinPoet 1.1.0. ekstremalnie długie nazwy 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 w interfejsie androidx.navigation
identyfikator grupy i zmienia jego zależności na odpowiedniki AndroidaX.
Działanie wersji 2.0.0-rc02 jest takie samo jak w Nawigacji 1.0.0-rc02 i nie są wymagane żadne zmiany w kodzie przy aktualizacji z wersji 1.0.0-rc02 oprócz aktualizacji zależności, nowych zależności.
Twój projekt musi mieć przeszedł na AndroidaX, aby korzystać z wersji 2.X Nawigacja. Stabilną wersją Nawigacji będzie wersja 1.0, która będzie korzystać z pomocy Zależności bibliotek; wszystkie przyszłe prace nad wersją 1.0 będą oparte na AndroidX i rozwijanie platformy w oparciu o stabilną wersję 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 parametr
podążanie za ścieżkami klasy w 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 ma identyfikatora b/126251695 navigateUp()
prawidłowo obsługuje teraz powrót do zadania w aplikacji w przypadku wywołania po użyciu precyzyjnego linku bezFLAG_ACTIVITY_NEW_TASK
b/126082008- Usunięto problem z aplikacją
ActivityNavigator.applyPopAnimationsToPendingTransition
. nie zastosowano prawidłowej animacji wyjścia pop-up b/126237567 - Kod Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych Kotlin
na przykład
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. Ten zawiera 1 poprawkę błędu.
Poprawki błędów
- Naprawiono problem związany 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ć atrybutu
0
jako funkcjiandroid:defaultValue
w przypadkureference
argumentów. b/124248602
Zmiany w działaniu
- Dokładne dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z atrybutami
.*
lub pasuje do argumentu. b/123969518
Poprawki błędów
popBackStack()
inavigateUp
zwracają teraz prawidłowo wartośćfalse
podczas otwierania ostatnie miejsce docelowe w stosie wstecznym, naprawiając regresję, w aplikacji1.0.0-beta01
. b/123933201- Nawigacja teraz prawidłowo ustawia
ClassLoader
podczas przywracania zapisanej instancji, co pozwala uniknąć problemów w przypadku użycia klas niestandardowych wNavigator
ma zapisany stan lub w argumentach wysłanych do:NavDestination
. b/123893858 - Klasy NavArgs wygenerowane przez Safe Args nie ulegają już awarii podczas przywracania
Parcelable[]
argument z zapisanego stanu 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. będzie można korzystać z nawigacji Interfejs API powinien pozostawać stabilny do następnej wersji, chyba że o krytycznym problemie. Ta wersja zawiera poprawki błędów i zmiany w działaniu.
Zmiany w działaniu
- Nawigacja zapewnia teraz jednakowe traktowanie wartości domyślnych argumentów
w czasie działania
i za pomocą Safe Args. W związku z tym tylko argumenty z
app:argType="reference"
może mieć wartość domyślną wskazującą inny zasób (na przykład@color/colorPrimary
). Próba użycia domyślnej wartości referencyjnej z inną wartościąapp:argType
spowoduje wystąpienie wyjątku, gdy podczas analizowania 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 opierają się teraz na Kotlin 1.3.20 Aosp/888414
Poprawki błędów
- Bezpiecznych argumentów można teraz używać w bibliotece i modułach funkcji we wszystkich wersjach wtyczki Androida do obsługi Gradle. b/121304903
- Naprawiliśmy regresję, która powodowała, że jedna operacja
popBackStack()
wyrzucać wszystkie kopie miejsca docelowego z góry na tylny stos, zamiast tylko do jednego miejsca docelowego naraz. b/123552990 - Rozwiązaliśmy problem, który powodował desynchronizację stanu
FragmentNavigator
ze stanemNavController
, powodującIllegalStateException
, gdy i próbujesz przywrócić poprzedni stos. b/123803044 - Rozwiązaliśmy problem, który powodował, że strzałka wstecz w obszarze
NavigationUI
nie działała są wyświetlane przy korzystaniu z ProGuard z zaciemnianiem kodu. b/123449431 - Kod wygenerowany przez Safe Args działa teraz prawidłowo przy użyciu interfejsu
app:argType
wskazującą statyczną klasę wewnętrzną w formacie.OuterClass$InnerClass
. b/123736741 - Kod Java wygenerowany przez Safe Args prawidłowo obsługuje teraz działania globalne i głębokie 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 mogła zaimportować klasy wskazówek dojazdu. powiązane z działaniami globalnymi. b/123307342
Wersja 1.0.0-alpha10
23 stycznia 2019 r.
Znane problemy
- Bezpieczne argumenty nie zaimportują klasy Directions powiązanej z działaniami globalnymi. b/123307342
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Użytkownicy Kotlin mogą teraz korzystać z przekazywania dostępu do właściwości
by navArgs()
leniwie uzyskaj odwołanie do klasyNavArgs
wygenerowanej przy użyciu Safe Args w:Activity
lubFragment
. b/122603367 - Bezpieczny argument umożliwia teraz generowanie kodu Kotlin przez zastosowanie
Wtyczka
androidx.navigation.safeargs.kotlin
. Kod Kotlin został utworzony, tylko dla modułów Kotlin, przy użyciu argumentów domyślnych stałych klas nad wzorcem konstruktora, który jest nadal dostępny w poprzedniej wtyczkiandroidx.navigation.safeargs
. b/110263087,
Zmiany w działaniu
- Dopasowujące precyzyjne linki są teraz skierowane w stronę precyzyjnego linku, który ma z najbardziej pasujących argumentów. b/118393029
- Wywołanie
setGraph()
na urządzeniuNavController
spowoduje teraz zresetowanie stosu wstecznego. b/111450672 - Nieznane precyzyjne linki już nie generują parametru
IllegalStateException
, ale są zignorowano, naprawiono problemy z zagnieżdżonymi lub wieloma elementamiNavHostFragment
. b/121340440
Zmiany najważniejsze
- Metoda
NavOptions.applyPopAnimationsToPendingTransition()
do argumentu możliwość stosowania animacji pop do aktywności została przeniesiona do:ActivityNavigator
. b/122413117 - Bezpieczne argumenty unikają obecnie duplikowania identycznych klas w przypadku działań bez
. Typ zwracany dla metod bez argumentów w wygenerowanych kierunkach NavDirections
zajęcia są teraz:
NavDirections
. b/123233147 - Klasy wskazówek dojazdu wygenerowane przez Safe Args nie mają już publicznego konstruktora – korzystaj tylko z wygenerowanych metod statycznych. b/123031660
- Klasy
NavDirections
wygenerowane przez Safe Args nie mają już publicznych konstruktora – powinny być generowane wyłącznie za pomocą metod statycznych w w wygenerowanych klasach wskazówek dojazdu. b/122963206 - Zwrócone
Bundle
z urządzeniaNavDirections
Oznaczono:getArguments()
jako@NonNull
, a nie@Nullable
. b/123243957
Poprawki błędów
- Funkcja
NavDeepLinkBuilder
prawidłowo obsługuje teraz wiele elementów jednocześniePendingIntent
w to samo miejsce docelowe przy użyciu przekazanych argumentów aby określić unikalność. b/120042732 NavController
prawidłowo obsługuje teraz operacjepopBackStack()
, gdy: za pomocą zagnieżdżonych fragmentówNavHostFragment
lub innych podrzędnych fragmentów ze stosem wstecznym. b/122770335NavigationUI
teraz prawidłowo ustawia opis treści przycisku w górę. b/120395362- Klasy wskazówek dojazdu wygenerowane przez bezpieczne argumenty obsługują teraz działania globalne o tym samym identyfikatorze co działanie w miejscu docelowym. b/122962504
NavDirections
klasy wygenerowane przez bezpieczne argumenty mają teraz równe WartościhashCode()
, gdyequals()
zwróci wartość prawda. b/123043662FragmentNavigator
wyświetli teraz lepszy komunikat o błędzie, jeśli spróbujesz zrób własneFragmentTransactions
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 powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.
Postanowiliśmy nie kontynuować rozwoju
android.arch.navigation:navigation-testing
artefakt. Co potwierdzono,
przydatne do wewnętrznych testów aplikacji NavController
, zdecydowanie zalecamy
alternatywne strategie testowania, takie jak naśmiewanie się z instancji NavController
.
aby sprawdzić, czy wykonywane są prawidłowe wywołania navigate()
. Ten
jest szczegółowo omówione
Prezentacja na temat pojedynczej aktywności na AndroidDevSummit 2018
będziemy opracowywać dodatkową dokumentację dotyczącą testowania
dzięki Nawigacji.
Nowe funkcje
- Elementy
MenuItem
z:menuCategory="secondary"
nie będą już cofnięte. stos w przypadku użycia z metodamiNavigationUI
. b/120104424 AppBarConfiguration
umożliwia teraz ustawienie kreacji zastępczejOnNavigateUpListener
. instancja, która zostanie wywołana po zwróceniunavController.navigateUp()
false
. b/79993862 b/120690961
Zmiany najważniejsze
- Gdy używasz:
<argument>
i elementuargType="reference"
, Nawigacja nie jest już dostępna analizuje odwołanie, zamiast podawać sam identyfikator surowego zasobu. b/111736515 onNavDestinationSelected()
domyślnie powraca do miejsca docelowego wykresu nawigacji. co jest spójne z metodamisetup
. DodajmenuCategory="secondary"
do Twojego urządzeniaMenuItem
, aby uniknąć problemów z tylnym stosem. Aosp/852869- Metody
fromBundle()
wygenerowanych klasArgs
mają teraz wartość inną niż nullBundle
zamiastBundle
do wartości null Aosp/845616
Poprawki błędów
- Argumenty są teraz prawidłowo interpretowane z precyzyjnych linków jako prawidłowe
argType
. zamiast zawsze jako ciągi b/110273284 - Nawigacja prawidłowo eksportuje teraz swoje zasoby publiczne b/121059552
- Bezpieczne argumenty są teraz zgodne 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 powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.
Nowe funkcje
- Etykiety miejsc docelowych używane z metodami
NavigationUI
będą od teraz automatycznie zastąp{argName}
instancji w kolumnieandroid:label
prawidłowym argumentem b/80267266 - Nawigacja korzysta teraz z Biblioteki pomocy w wersji 28.0.0 b/120293333
Zmiany najważniejsze
- Zmiana nazwy użytkownika z
OnNavigatedListener
naOnDestinationChangedListener
b/118670572 - Funkcja
OnDestinationChangedListener
przekazuje teraz równieżBundle
argumentów Aosp/837142 - Atrybuty
app:clearTask
iapp:launchDocument
oraz powiązane z nimi atrybuty Liczba usuniętych metod: . Użyj funkcjiapp:popUpTo
jako pierwiastka wykresu, aby: usuń wszystkie miejsca docelowe ze stosu wstecznego. b/119628354 ActivityNavigator.Extras
używa teraz wzorcaBuilder
i dodaje możliwość ustaw dowolne flagi:Intent.FLAG_ACTIVITY_
Aosp/828140- Zmiana nazwy użytkownika z
NavController.onHandleDeepLink
nahandleDeepLink
Aosp/836063 - Wiele klas i metod, które nie są przeznaczone do podklasyfikacji, na przykład
NavOptions
,NavInflater
,NavDeepLinkBuilder
iAppBarConfiguration
, zostałyfinal
Aosp/835681 - Wycofana metoda
NavHostFragment.setGraph()
została usunięta Aosp/835684 - Wycofana metoda
NavigationUI.navigateUp(DrawerLayout, NavController)
został usunięty. Aosp/835684 - Tworzenie fragmentów zostało przeniesione do
FragmentNavigator
, co ułatwia tworzenie przekazać tworzenie fragmentu doFragmentFactory
. b/119054429 - Konstruktor dla
NavGraphNavigator
nie wymaga jużContext
Aosp/835340 - NavigatorProvider to teraz
za pomocą klasy, a nie interfejsu. Wartość
NavigatorProvider
zwrócona przezgetNavigatorProvider()
. nie zmieniła swojego działania. Aosp/830660 NavDestination.navigate()
został(a) usunięty(a). Zadzwoń do firmynavigate()
naNavigator
. Aosp/830663- Znaczna refaktoryzacja tekstu
Navigator
eliminująca potrzebę użyciaOnNavigatorNavigatedListener
i zamiast tego funkcjanavigate
zwróciła przekierowany do niej elementNavDestination
. - Instancje
Navigator
nie mogą już wysyłać zdarzeń pop doNavController
. Rozważ za pomocąOnBackPressedCallback
do przechwytywać naciśnięcia przycisku wstecz i wywołaćnavController.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ę komunikatu o błędzie
IllegalArgumentException
. w przypadku korzystania z wykresów zagnieżdżonych b/118713731 b/113611083 b/113346925 b/113305559 - Uzupełniony zostanie atrybut
dataPattern
<activity>
miejsc docelowych argumentów z argumentów niebędących ciągiem znaków, wywołując funkcjętoString()
b/120161365
Bezpieczne argumenty
- Bezpieczne argumenty obsługują obiekty możliwe do szeregowania, w tym wartości typu Enum. Typy typów wyliczeniowych
może ustawić 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 dodają adnotacje
@Override
tam, gdzie jest to potrzebne b/117145301
Wersja 1.0.0-alpha07
29 października 2018 r.
Nowe funkcje
- Nowa konfiguracja AppBarConfiguration pozwala określić, które miejsca docelowe są uważane za najwyższego poziomu miejsca docelowe. Zobacz zaktualizowaną dokumentację . 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 zostanie już opublikowana. - Artefakt
navigation-testing
jest teraz zależny od standardu Kotlin bibliotece. Interfejs API został zmieniony, aby był bardziej spójny z Kotlin konw., ale nadal możesz go używać do testów napisanych w Javie. - Wykresy nawigacyjne zarejestrowane w pliku manifestu metadanych nie są już obsługiwane. b/118355937
- Akcji nie można już dołączać do elementu <activity> miejsca docelowe. Aosp/785539
Poprawki błędów
- Precyzyjne linki teraz prawidłowo analizują parametry zapytania. b/110057514
- Teraz w miejscach docelowych aktywności wszystkie animacje rozpoczynania i zamykania są stosowane w przypadku wszystkich animacji. b/117145284
- Usunięto awarię, która występowała po zmianie konfiguracji przy korzystaniu z niestandardowych ustawień Nawigatory. 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
- Można teraz generować wskazówki dla zajęć wewnętrznych. b/117407555
- Naprawiono problem z generowaniem wskazówek dojazdu do tagu <include>. wykres. 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 wydzieleniem 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ść fałsz, 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
będziesetDemoControllerIndex
b/79995048 - Na przykład:
action_show_settings
będzieactionShowSettings
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 cech 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ązanie problemu polegającego na tym, ż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/109826220Argumenty Nawigacji URLDecodes analizowane 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 migotania podczas korzystania z animacji nawigacja wymaga teraz Biblioteki pomocy 27.1.1. B/80160903
Naprawiono błąd
IllegalArgumentException
w przypadku użycia domyślnego NavHost="true". jako fragment podrzędny. b/79656847Naprawiono błąd
StackOverflowError
, który występował podczas korzystania z NavDeepLinkBuilder. b/109653065Naprawiono błąd
IllegalArgumentException
występujący podczas przechodzenia z powrotem do wykresu zagnieżdżonego. b/80453447Naprawiono problem z pokrywającymi się fragmentami podczas korzystania z pola
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 z nim interfejs API w tabeliNavOptions
zostały wycofane. b/80338878Atrybut
launchDocument
działań i powiązany z nim interfejs API w tabeliNavOptions
zostały wycofane. b/109806636
Wersja 1.0.0-alpha01
8 maja 2018 r.
Nawigacja zapewnia platformę do tworzenia w aplikacji
nawigacji. Ta początkowa wersja to 1.0.0-alpha01
.