Nawigacja

Nawigacja to platforma do poruszania się między „miejscami docelowymi” w aplikacji na Androida, która zapewnia spójny interfejs API niezależnie od tego, czy miejsca docelowe są zaimplementowane jako fragmenty, działania, czy inne komponenty.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
17 kwietnia 2024 r. 2.7.7 - - 2.8.0-alfa07

Deklarowanie zależności

Aby dodać zależność od nawigacji, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

Safe Args

Aby dodać bezpieczne argumenty do projektu, umieść w pliku build.gradle najwyższego poziomu ten parametr classpath:

Odlotowy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.7.7"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.7.7"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

Musisz też zastosować jedną z dwóch dostępnych wtyczek.

Aby wygenerować kod języka Java odpowiedniego dla Javy lub mieszanych modułów Java i Kotlin, dodaj ten wiersz do pliku build.gradle aplikacji lub modułu:

Odlotowy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

Aby wygenerować kod Kotlin odpowiedni dla modułów tylko w Kotlin, dodaj:

Odlotowy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

Musisz mieć android.useAndroidX=true w pliku gradle.properties zgodnie z instrukcjami migracji do AndroidaX.

Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 2.8

Wersja 2.8.0-alfa07

17 kwietnia 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha07 została zwolniona. Wersja 2.8.0-alfa07 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaje nowy artefakt navigation-fragment-compose zawierający alternatywę typu ComposableNavHostFragment do NavHostFragment, który umożliwia dodanie miejsc docelowych composable do plików XML nawigacji. Każde miejsce docelowe composable musi być wyrażone jako metoda najwyższego poziomu bez argumentów @Composable, której w pełni kwalifikowana nazwa jest używana jako atrybut android:name w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc docelowych tworzony jest fragment zawierający treść kompozycyjną. (I0ef2e, b/265480755)

    // In HomeScreen.kt
    @Composable
    fun HomeScreen() {
      // Your Composable content here
    }
    
    // In your navigation.xml
    <composable
      android:id="@+id/home_screen"
      android:name="com.example.HomeScreenKt\$HomeScreen" />
    

Zmiany w interfejsie API

  • Obsługa bezpiecznego argumentu w tworzeniu wiadomości w Nawigacji przy użyciu metody opartej na ciągłej serializacji Kotlina. Te interfejsy API nie zostały ukończone i są oznaczone adnotacją ExperimentalSafeArgsApi. Ta adnotacja zostanie usunięta po utworzeniu całej platformy interfejsu API w przyszłej wersji. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73, I8b73

Wersja 2.8.0-alfa06

3 kwietnia 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha06 została zwolniona. Wersja 2.8.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozpoczęła się obsługa bezpiecznych argumentów w tworzeniu wiadomości w Nawigacji przy użyciu metody opartej na serializacji Kotlin. Te interfejsy API nie zostały ukończone i są oznaczone adnotacją ExperimentalSafeArgsApi. Ta adnotacja zostanie usunięta po utworzeniu całej platformy interfejsu API w przyszłej wersji. (I644e7, I98896, I3a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, I24e41, If9e

Poprawki błędów

  • W funkcji NavHost domyślnym argumentem jest teraz Alignment.TopStart. Pozwala to zachować zgodność z wartością domyślną funkcji AnimatedContent i eliminuje niektóre przypadki nieoczekiwanej skali od punktu środkowego. (I09e72, b/330111602)
  • Gdy przesuniesz gest przewidywania wstecz podczas korzystania z nawigacji tworzenia wiadomości, NavHost poprawnie uzupełni niestandardowe przejście, a nie od razu. (I99017, b/327292110)

Wersja 2.8.0-alfa05

20 marca 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha05 została zwolniona. Wersja 2.8.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz przekazywać argumenty do obiektu startDestination obiektu NavGraph bezpośrednio na trasie startDestination bez korzystania z defaultValue. Dotyczy to też zagnieżdżonych obiektów NavGraph typu startDestinations. (I0e0b5, b/109505019, b/188693139)

Zmiany w interfejsie API

  • Dodano nową abstrakcyjną klasę CollectionNavType<T>, która jest podklasą klasy NavType<T> dla argumentów opartych na zbiorze, takich jak lista, tablice czy mapy. (Ic6d63, b/188693139)
  • Wszystkie domyślne macierze NavType (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType i StringArrayType) mają teraz typ CollectionNavType (Idcf79, b/188693139)
  • NavType udostępnia teraz nowy otwarty interfejs API valueEquals, który określa, czy 2 wartości tego samego typu są sobie równe. (I6cb97, b/327229511)

Poprawki błędów

  • Parametry zapytania w precyzyjnych linkach dopuszczają teraz wartości w postaci nawiasów klamrowych wokół nazwy argumentu (tj. {argName}) jako prawidłowe wartości w przypadku metody NavTypes opartej na ciągach znaków. Rozwiązano problem, w wyniku którego taka wartość była uznawana za nieprawidłową (lub jej brak) dla wszystkich typów. (I18302, b/327274038)
  • Funkcje NavController, które obsługują trasy takie jak navigate i popBackStack, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicy NavTypes. (Iea805, b/327229511)

Wersja 2.8.0-alfa04

6 marca 2024 roku

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha04 została zwolniona. Wersja 2.8.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz określić SizeTranform dla przejść w nawigacji tworzenia wiadomości, definiując je w ramach inicjowania funkcji composable lub navigation. (I91062, b/296912651)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja NavHost w Nawigacji tworzenia wiadomości nie wyświetlała prawidłowo przejścia podczas korzystania z systemu Wstecz bez gestu. (Iceeae, b/325998468)

Wersja 2.8.0-alfa03

21 lutego 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha03 została zwolniona. Wersja 2.8.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Czat NavBackStackEntry.savedStateHandle jest teraz oznaczony jako @MainThread, ponieważ używa kodu, który i tak musi znajdować się w wątku głównym. (Ibb988, b/299523245)

Poprawki błędów

  • Naprawiono błąd w Nawigacji, który powodował, że widoki modeli NavGraph były zbyt szybko ustawione na DESTROYED, ponieważ powiązany wpis ViewModel nie był częścią zapisanego stanu. (Ib6bb7, b/317581849)

Aktualizacja zależności

Wersja 2.8.0-alfa02

7 lutego 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha02 została zwolniona. Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Nawigacja w tworzeniu wiadomości zapewnia teraz obsługę funkcji przewidywania w aplikacji przez nowe interfejsy API SeekableTransitionState firmy compose-animation. Dzięki temu możesz używać gestu cofania, aby zobaczyć poprzednie miejsce docelowe z niestandardowym przejściem, zanim zdecydujesz, czy chcesz sfinalizować transakcję, wykonując gest czy anulować, czy też anulować. (I8b8e9)

Wersja 2.8.0-alfa01

24 stycznia 2024 r.

Aplikacja androidx.navigation:navigation-*:2.8.0-alpha01 została zwolniona. Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono wyciek błędu BackStackState, w wyniku którego wiele wywołań saveState w miejscu docelowym powodowało zapisanie wielu stanów, ale udało się przywrócić tylko pierwsze z nich. (I598b0, b/309559751)
  • Naprawiono błąd, który powodował, że argumenty inne niż ciąg znaków nie były prawidłowo wyświetlane podczas wypełniania tytułów pasków aplikacji za pomocą pomocników NavigationUI. (#636, b/316676794)

Aktualizacja zależności

  • Tworzenie wiadomości w nawigacji zależy teraz od tego, czy funkcja Utwórz 1.7.0-alpha01 rozwiązuje problem, który mógł spowodować nieoczekiwaną animację skali. (b/297258205)

Wkład z zewnątrz

  • Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciąg znaków podczas używania pomocników NavigationUI do wypełniania tytułu pasków aplikacji.

Wersja 2.7.7

Wersja 2.7.7

7 lutego 2024 r.

Aplikacja androidx.navigation:navigation-*:2.7.7 została zwolniona. Wersja 2.7.7 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto z Nawigacji 2.8.0-alpha01: naprawiono wyciek BackStackState, w którym wiele wywołań saveState() w jednym elemencie NavBackStackEntry powodowało zapisanie kilku stanów, ale przywrócono tylko pierwszy zapisany stan. (I598b0, b/309559751)
  • Usunięto z Nawigacji 2.8.0-alpha01: rozwiązaliśmy problem, który powodował, że argumenty inne niż ciąg znaków nie były prawidłowo wyświetlane podczas wypełniania tytułów pasków aplikacji za pomocą elementów pomocniczych NavigationUI. (#636, b/316676794)

Wkład z zewnątrz

  • Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem argumentów innych niż ciąg znaków podczas używania pomocników NavigationUI do wypełniania tytułu pasków aplikacji.

Wersja 2.7.6

Wersja 2.7.6

13 grudnia 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.6 została zwolniona. Wersja 2.7.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Funkcja NavGraph equals() prawidłowo uwzględnia teraz węzły innego wykresu, a nie tylko ten wywołujący. Dzięki temu wykresy zawierające węzły o różnych identyfikatorach nie będą już uznawane za takie same (I401cb, b/311414915).

Wersja 2.7.5

Wersja 2.7.5

1 listopada 2023 roku

Aplikacja androidx.navigation:navigation-*:2.7.5 została zwolniona. Wersja 2.7.5 zawiera te zatwierdzenia.

Ulepszenia wydajności

  • Znacznie poprawiła wydajność porównania dwóch wykresów (zarówno pod względem czasu, jak i liczby przydziałów). Oznacza to, że wywołania takie jak setGraph, które wewnętrznie porównują nowy wykres z istniejącym, są znacznie szybsze i zmniejszają liczbę pomijanych klatek. Dziękujemy Michałowi Z za szczegółową analizę, która pozwoliła na to ulepszenie. (I6ad62)
  • NavHost będzie teraz renderować miejsce docelowe początkowego w ramach pierwszej karnetu kompozycji, zamiast czekać na zakończenie odczytu przez drugi bilet. (I439a7, b/304852206)

Poprawki błędów

  • Naprawiono błąd polegający na tym, że po wywołaniu funkcji setGraph więcej niż raz z dokładnie tym samym wykresem pojawiało się wyskakujące okienko, tylko w przypadku, gdy miejsce docelowe na wykresie zawierało działanie łączące dwa miejsca docelowe. (Ieaed7)
  • Okna, do których przekierowano i zamknięto w krótkiej kolejności, nie będą już trafiać na listę elementu NavController.visibleEntries. (I67586, b/287969970)
  • Gdy wpis zostanie wypełniony, a następnie zmieni się konfiguracja, ViewModel wpisu zostanie teraz prawidłowo wyczyszczony, jeśli wartość saveState ma wartość false (fałsz). (Idf242, b/298164648)
  • Naprawiono błąd, który powodował, że funkcja NavController obsługiwała ten sam precyzyjny link więcej niż raz, jeśli stos wsteczny był całkowicie pusty przed zmianą konfiguracji lub wywoływał metodę setGraph tylko wtedy, gdy intencja przychodzący miał ustawioną flagę FLAG_ACTIVITY_NEW_TASK. (I73c7f)

Aktualizacje zależności

  • Nawigacja z użyciem fragmentów kodu zależy teraz od fragmentu 1.6.2, przez co naprawiono problem, który powodował, że wystąpienia zagnieżdżonych fragmentów ViewModel nie były czyszczone podczas wywoływania clearBackStack.

Wersja 2.7.4

Wersja 2.7.4

4 października 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.4 została zwolniona. Wersja 2.7.4 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę trasy popUpTo z argumentami umożliwiającymi powrót do określonego wpisu, który używa tych konkretnych argumentów, co pasuje do obsługi popBackStack. (I731f4, b/299255572)

Poprawki błędów

  • Rozwiąż problem, który powodował, że przerwanie innej nawigacji w aplikacji popUpTo powodowało awarię aplikacji FragmentNavigator. (I3c848, b/301887045)
  • Rozwiązaliśmy problem polegający na tym, że naciśnięcie systemu wstecznego powodowało, że currentDestination nie był prawidłowo aktualizowany tak, aby pasował do wyświetlanego fragmentu. (Id0d6c, b/289877514)
  • Cykl życia elementu DialogFragment zostanie teraz prawidłowo przeniesiony do stanu RESUMED po zamknięciu okna nad nim. (I88f0d, b/301811387)

Wersja 2.7.3

Wersja 2.7.3

20 września 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.3 została zwolniona. Wersja 2.7.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd w Nawigacji dotyczący fragmentów kodu, który powodował, że lista visibleEntries zawierała nieprawidłowe wpisy. (I5caa9, b/288520638)
  • Rozwiązaliśmy problem, który powodował, że miejsce docelowe w pływającej oknie (np.Dialogs, Bottomsheets itp.) nie otrzymuje wywołania zwrotnego cyklu życia produktu RESUMED. (I3b866, b/287505132)

Wersja 2.7.2

Wersja 2.7.2

6 września 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.2 została zwolniona. Wersja 2.7.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Nawigacja zależy teraz od Cykl życia 2.6.2, przez co naprawiono interakcję między rememberSaveable a elementem NavHost funkcji nawigacyjnej tworzenia wiadomości, która spowodowałaby poprawne przywrócenie stanu rememberSaveable miejsc docelowych i instancji SavedStateHandle należących do ViewModel po śmierci i przywróceniu procesu. (b/298059596, b/289436035)
  • Naprawiono błąd polegający na tym, że w jednoczesnym widoku wielu okien dialogowych w nawigacji tworzenia wiadomości (np. niewidoczne na samej górze) znajdowały się okna w stanie CREATED, a nie STARTED. (Aosp/2728520, b/289257213)
  • Naprawiono błąd związany z jednoczesnym wyświetlaniem wielu okien dialogowych w ramach tworzenia Nawigacji. Zamknięcie najwyższego poziomu okna powodowało, że nowe okno najwyższego poziomu zatrzymywało się w stanie cyklu życia STARTED zamiast poprawnego przenoszenia do RESUMED. (Aosp/2629401, b/286371387)
  • Args bezpiecznego nawigacji nie tworzy już instancji zadania z zainteresowaniem, jeśli nie jest ono rzeczywiście wykonywane. (I0e385, b/260322841)

Aktualizacja zależności

  • Nawigacja i tworzenie wiadomości zależy teraz od funkcji Utwórz w wersji 1.5.1.

Wersja 2.7.1

Wersja 2.7.1

23 sierpnia 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.1 została zwolniona. Wersja 2.7.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z nawigacją przy tworzeniu wiadomości, który powodował, że podczas korzystania z interfejsu Scaffold podczas próby uzyskania dostępu do elementu ViewModel w Lifecycle.State.DESTROYED mógł pojawiać się błąd. (I1dc11, b/268422136)

Wersja 2.7.0

Wersja 2.7.0

9 sierpnia 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.0 została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.6.0

Animacje od Accompanist

AnimatedContent jest już stabilny, więc mogliśmy przenieść kod z animacji nawigacji Accompanist z powrotem do samego tworzenia nawigacji.

Oznacza to, że wszystkie funkcje przenoszenia niestandardowych, które wcześniej były dostępne w AnimatedNavHost, są bezpośrednio obsługiwane w NavHost.

Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist i wkrótce ją wycofamy wraz ze wskazówkami dotyczącymi powrotu do interfejsu Nawigacja. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa aplikacji Accompanist (0.31.2-alpha), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)

Poprawki błędów

  • NavHost w interfejsie Navigation Compose prawidłowo przechwytuje teraz połączenia zwrotne systemu, nawet jeśli działanie zostało ZATRZYMANE i WZNÓWNE. (Icb6de, b/279118447)

Aktualizacje zależności

  • Nawigacja zależy teraz od funkcji Utwórz 1.5.0 w okresie od 1.1.0.

Wersja 2.7.0-rc01

26 lipca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.0-rc01 została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że lambda EnterTransition i ExitTransition utworzone w ramach funkcji NavHost mogły potencjalnie pozostawać w pamięci nawet po usunięciu elementu NavHost z kompozycji. (I893d0)

Znane problemy

  • W Nawigacji 2.6.x występuje problem, który polega na tym, że podczas nawigowania z wykorzystaniem popUpTo może spowodować wyświetlenie interfejsu IllegalArgumentException. Tego wyjątku można uniknąć, zmieniając strukturę wykresu zgodnie ze wskazówkami podanymi tutaj. (b/287133013)

Wersja 2.7.0-beta02

28 czerwca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.0-beta02 została zwolniona. Wersja 2.7.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Funkcja tworzenia wiadomości w Nawigacji ma teraz właściwą kolejność w kolejności niestandardowych przejść, z których korzysta się przy użyciu opcji popUpTo (/Ib1c3a, b/285153947).

Wersja 2.7.0-beta01

7 czerwca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.0-beta01 została zwolniona. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Funkcja NavHost w funkcji tworzenia wiadomości w nawigacji prawidłowo przechwytuje teraz połączenia zwrotne systemowe, nawet jeśli Activity ma wartość STOPPED i RESUMED. (Icb6de, b/279118447)

Wersja 2.7.0-alfa01

24 maja 2023 r.

Aplikacja androidx.navigation:navigation-*:2.7.0-alpha01 została zwolniona. Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.

Animacje od Accompanist

AnimatedContent jest już stabilny, więc mogliśmy przenieść kod z animacji nawigacji Accompanist z powrotem do samego tworzenia nawigacji.

Oznacza to, że wszystkie funkcje przenoszenia niestandardowych, które wcześniej były dostępne w AnimatedNavHost, są bezpośrednio obsługiwane w NavHost.

Nie wprowadzimy żadnych dodatkowych zmian w animacji nawigacji Accompanist i wkrótce ją wycofamy wraz ze wskazówkami dotyczącymi powrotu do interfejsu Nawigacja. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa aplikacji Accompanist (0.31.2-alpha), nie musisz wprowadzać żadnych innych zmian w interfejsie API. (b/197140101)

Poprawki błędów

  • Z obszaru Nawigacja 2.6.0-rc02: usunięto problem z nawigacją we fragmentach, który powodował, że nawigowanie za pomocą opcji popUpTo i wyrwanie fragmentu z wstecznego stosu bez odtworzenia widoku powodowało powrót systemu do działania. (Ieb8d4, b/281726455)

Aktualizacje zależności

  • Nawigacja zależy teraz od opcji Utwórz 1.5.0-beta01.

Wersja 2.6.0

Wersja 2.6.0

7 czerwca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0 została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.

Ważne zmiany w nawigacji wprowadzone od wersji 2.5.0

  • Metody arguments używane w NavBackStackEntry i arguments przekazywane do OnDestinationChangedListener są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przejścia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne w kolejnych wystąpieniach usługi arguments lub OnDestinationChangedListener.
  • NavDeepLink obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które zostaną zmapowane na typ tablicy argumentu. NavType zawiera też teraz metodę domyślną, którą można zastąpić, by połączyć 2 przeanalizowane wartości.
  • Niestandardowe podklasy NavType mogą teraz zastąpić typ serializeAsValue, aby zserializować wartość w ciągu znaków. Dzięki temu zarówno serializacja, jak i deserializacja (za pomocą parseValue) mogą być całkowicie zawarte w klasie NavType. Metoda StringType zastępuje teraz tę metodę, aby wywoływać metodę Uri.encode na określonym obiekcie String.

Ważne zmiany w tworzeniu wiadomości w nawigacji wprowadzone od wersji 2.5.0

  • Podczas wyświetlania podglądu elementu kompozycyjnego z NavHost domyślnie pokazuje się startDestination wykresu nawigacyjnego.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) obsługują teraz trasy z argumentami wypełnionymi częściowo lub w pełni. Pamiętaj, że argumenty muszą być dokładnie dopasowane do argumentów wpisu.
  • Próba utworzenia pustego elementu NavDeepLink przy użyciu DSL navDeepLink Kotlin spowoduje teraz wyświetlenie ostrzeżenia o lintowaniu wskazującego, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME.

Ważne zmiany w nawigacji z fragmentami kodu wprowadzone od wersji 2.5.0

  • NavHostFragment nie przechwytuje już samego systemowego przycisku Wstecz. Dzięki temu bazowy FragmentManager może obsługiwać system z powrotem. Dzięki temu Fragment 1.7.0-alpha01 i wyższe wersje mogą generować animację przewidywanego przejścia wstecz w aplikacji na urządzeniach z Androidem U.
  • Próba ręcznego wykonania funkcji FragmentTransaction, która dodaje fragment do stosu wstecznego obiektu FragmentManager, podczas korzystania z nawigacji z fragmentami powoduje teraz wystąpienie błędu IllegalArgumentException. Zawsze dodawaj fragmenty za pomocą interfejsu API navigate().
  • Jeśli używasz dokładnego ciągu ${applicationId} jako symbolu zastępczego w atrybutach app:data i app:dataPattern w elemencie aktywności pliku XML nawigacyjnych, po inflacji zmienna zostanie automatycznie wypełniona wartością packageName kontekstu.
  • Podczas poruszania się i wyświetlania NavBackStackEntries interfejs FragmentNavigator używa teraz interfejsów API przenoszenia. Oznacza to, że NavBackStackEntry Lifecycle będzie czekać na zakończenie efektów specjalnych wejścia i wyjścia, zanim przeniesiesz końcowy element Lifecycle.State.
  • Podczas poruszania się i wyświetlania NavBackStackEntries interfejs DialogFragmentNavigator używa teraz interfejsów API przenoszenia. Oznacza to, że Lifecycle NavBackStackEntry będzie czekać, aż DialogFragment Lifecycle przejdzie do DESTROYED, zanim przejdzie do samej DESTROYED.
  • NavHostFragment umożliwia teraz pobranie NavController, gdy tylko NavHostFragment zostanie dołączony do FragmentManager, a nie dopiero po onCreate().
  • Obsługa modułów funkcji dynamicznych w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery.
  • Bezpieczne argumenty nawigacji zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że są one obecnie zgodne tylko z wersjami 7.3.0 i nowszymi.

Ważne zmiany w interfejsie NavigationUI wprowadzone od wersji 2.5.0

  • Podczas przekazywania identyfikatora wykresu nawigacyjnego do funkcji AppBarConfiguration (np. za pomocą Menu) NavigationUI traktuje teraz tylko początkowe miejsce docelowe na wykresie nawigacyjnym jako miejsce docelowe najwyższego poziomu i nie oznacza nieprawidłowo każdego miejsca docelowego na wykresie jako miejsca docelowego najwyższego poziomu. Sposób przekazywania identyfikatora konkretnego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcji isTopLevelDestination w AppBarConfiguration.
  • Integracje setupWithNavController w usłudze NavigationUI na potrzeby pracy z górnym paskiem aplikacji będą teraz analizować wartości R.string dla argumentów ReferenceType znalezionych w android:label jako wartości ciągów zamiast wyświetlać automatycznie wygenerowaną liczbę całkowitą zasobu.
  • NavigationUI udostępnia teraz dzienniki, gdy nie uda się przejść przez wybrany adres MenuItem.

Wersja 2.6.0-rc02

24 maja 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-rc02 została zwolniona. Wersja 2.6.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z nawigacją we fragmentach, który powodował, że nawigowanie za pomocą funkcji popUpTo i wysuwanie fragmentu z tylnego stosu bez odtworzenia widoku powodowało powrót do działania systemu. (Ieb8d4, b/281726455)

Wersja 2.6.0-rc01

10 maja 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-rc01 została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd w Nawigacji zawierający fragmenty, które powodowały, że usunięcie fragmentu w trakcie nawigowania z użyciem funkcji popUpTo w wywołaniu zwrotnym cyklu życia onResume() powodowało wyświetlenie błędu IllegalStateException. (I21884, b/279644470)

Wersja 2.6.0-beta01

19 kwietnia 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-beta01 została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • NavBackStackEntry udostępnia teraz niestandardową implementację interfejsu toString. (Iff00b)

Poprawki błędów

  • Próba ręcznego wykonania funkcji FragmentTransaction, która dodaje fragment do stosu wstecznego obiektu FragmentManager, podczas korzystania z nawigacji z fragmentami powoduje teraz wystąpienie błędu IllegalArgumentException. Zawsze dodawaj fragmenty za pomocą interfejsu API navigate(). (I6d38e)
  • Jeśli element navigate dodaje wpis i element popBackStack, który usuwa go w tej samej ramce, wynikowa pozycja na górze stosu wstecznego będzie konsekwentnie ponownie umieszczać ją w kolumnie Lifecycle.State RESUMED. (Id8067, b/276495952)

Wersja 2.6.0-alfa09

5 kwietnia 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha09 została zwolniona. Wersja 2.6.0-alpha09 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono nieprawidłowe sprawdzanie trasy. Jeśli NavDestination zawiera niedopuszczalne wartości NavArgument, trasa tego miejsca docelowego musi zawierać obiekty zastępcze argumentów o takiej samej nazwie jak niedopuszczalna wartość NavArgument. (Ic62bf, b/274697949)
  • Nawigacje po precyzyjnych linkach oparte na Action/MimeType będą teraz kończyć się niepowodzeniem, jeśli w operacji nawigacji brakuje nie wartościowego elementu NavArgument wymaganego przez parametr NavDestination, do którego pasuje element Action/MimeType. (Ibfa17, b/271777424)
  • Gdy NavController ustawia wykres z tą samą trasą i miejscami docelowymi co poprzedni wykres, teraz prawidłowo zastępuje bieżące węzły wykresu i miejsca docelowe stosu wstecznego nowymi instancjami. Rozwiązuje to awarię, która występowała podczas korzystania z onLaunchSingleTop bez zapisywania stanu w sekcji tworzenia wiadomości w nawigacji. Naprawia to również błąd związany z przechodzeniem do miejsc docelowych powiązanych z kompilacją wykresu głównego i nieprawidłowym stosem wstecznym. (I5bc58, b/275258161, b/275407804)

Wersja 2.6.0-alfa08

22 marca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha08 została zwolniona. Wersja 2.6.0-alpha08 zawiera te zatwierdzenia.

Nowe funkcje

  • NavHostFragment umożliwia teraz pobranie NavController, gdy tylko NavHostFragment zostanie dołączony do FragmentManager, a nie dopiero po onCreate(). (Ic6382, b/220186282)

Poprawki błędów

  • Naprawiono błąd NullPointerException podczas wywoływania zagnieżdżonego wykresu zawierającego argument niedopuszczający wartości null. (6b3581, b/249988437)
  • Gdy powrócisz do systemu po wykonaniu nawigacji za pomocą przycisku popUpTo, stan elementu NavController wyświetli się w prawidłowym miejscu. (I3a8ec, b/270447657)
  • FragmentNavigator będzie teraz poprawnie wyświetlać wpisy, gdy stos wsteczny zostanie przesunięty przez system wstecz lub popBackStack(), a także, czy transakcja korzysta z efektów dla danego fragmentu. (I81bdf)
  • Dodanie fragmentów do komponentu FragmentManager obiektu FragmentNavigator bez użycia nawigacji nie będzie już powodować awarii. (b17204, b/274167493)

Aktualizacje zależności

Wersja 2.6.0-alfa07

8 marca 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha07 została zwolniona. Wersja 2.6.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Warianty interfejsów API getBackStackEntry, popBackStack i clearBackStack, które przyjmują trasy, przyjmują teraz wzorce tras z argumentami z wartościami null i parametrami zapytania z wartością null (I22294, b/269302500).
  • Rozwiązaliśmy problem, który powodował, że wywołanie metody clearBackStack() z metody NavController nie wyczyściło zapisanego stanu w menedżerze fragmentów powiązanym z wyczyszczonym stosem wstecznym. (Ic1cce, b/271190202)
  • Naprawiliśmy regresję w wersjach 2.6.0–alfa06, która powodowała podświetlenie nieprawidłowego elementu MenuItem w BottomNavigationView podczas używania systemu z powrotem między kartami. (I634f6, b/270447657)
  • Poprawiono regresję w wersji 2.6.0–alfa06, która powodowała, że podczas korzystania z komponentów Animation komponenty NavBackStackEntry nie były przenoszone do stanu WZNÓW. (Ib3589, b/269646882)

Wersja 2.6.0-alfa06

22 lutego 2023 roku

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha06 została zwolniona. Wersja 2.6.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Podczas wyświetlania podglądu elementu kompozycyjnego z NavHost domyślnie pokazuje się startDestination wykresu nawigacyjnego. (I2b89f)

Zmiany w interfejsie API

  • Wszystkie przeciążenia typu navigate (NavController) są teraz oznaczone adnotacją @MainThread, aby upewnić się, że są wywoływane w wątku głównym. (I2c0b0, b/263427111)

Poprawki błędów

  • Usunięto awarię, która występowała podczas próby nawigacji podczas korzystania z nawigacji po fragmentach dynamicznych. (I3ee29, b/268360479)
  • Naprawiono błąd polegający na tym, że przejście do innego fragmentu za pomocą systemowego przycisku Wstecz nie powoduje zaktualizowania dolnego paska na właściwym wybranym elemencie (If559f, b/269044426)

Znane problemy

  • Gdy używasz nawigacji z fragmentami, cykl życia obiektu NavBackStackEntry nie osiąga progu RESUMED przy korzystaniu z interfejsów API Animation. (b/269646882)
  • Jeśli podczas korzystania z nawigacji z użyciem fragmentów i nawigacji za pomocą funkcji BottomNavigation spróbujesz przywrócić stos wsteczny z wieloma wpisami, wartość BottomMenuItem nie zostanie poprawnie zaktualizowana. (b/270447657)
  • W przypadku korzystania z nawigacji z fragmentami kodu po przywróceniu stanu NavBackStackEntry Lifecycle nie pobiera DESTROYED, gdy jego fragment ma wartość DESTROYED . (b/270610768)

Wersja 2.6.0-alfa05

8 lutego 2023 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha05 została zwolniona. Wersja 2.6.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) obsługują teraz trasy z argumentami wypełnionymi częściowo lub w pełni. Pamiętaj, że argumenty muszą być dokładnie dopasowane do argumentów wpisu. (Iebd28, Ic678c, I3b37b, b/257514373)
  • Podczas poruszania się i wyświetlania NavBackStackEntries interfejs FragmentNavigator używa teraz interfejsów API przenoszenia. Oznacza to, że NavBackStackEntry Lifecycle będzie czekać na zakończenie efektów specjalnych wejścia i wyjścia, zanim przeniesiesz końcowy element Lifecycle.State. (I3cb19, b/238686802)
  • Podczas poruszania się i wyświetlania NavBackStackEntries interfejs DialogFragmentNavigator używa teraz interfejsów API przenoszenia. Oznacza to, że Lifecycle NavBackStackEntry będzie czekać, aż DialogFragment Lifecycle przejdzie do DESTROYED, zanim przejdzie do samej DESTROYED. (I53ee5, b/261213893)

Zmiany w interfejsie API

  • NavigatorState udostępnia teraz interfejs API prepareForTransition, który umożliwia Navigator przenoszenie NavBackStackEntries do pośrednich komponentów Lifecycle.State. (I42c21, b/238686802)
  • Za pomocą usługi backstack możesz teraz uzyskać dostęp do stosu wstecznego powiązanego z elementem NavGraphNavigator lub ComposeNavigator. ComposeNavigator udostępnia teraz także wywołanie zwrotne onTransitionComplete(), aby oznaczyć jako zakończoną operację NavBackStackEntry, która wykonała nawigację lub operację popBackStack. (I02062, I718db, b/257519195)

Poprawki błędów

  • Podczas używania interfejsów API push/popWithTransition, a wpis jest już obsługiwany, stan nawigacji będzie teraz niedostępny. (Iadbfa, b/261213893)
  • Gdy używasz funkcji launchSingleTop z zagnieżdżonym NavGraph, wszystkie miejsca docelowe od pierwotnego miejsca docelowego do startDestination zostaną prawidłowo dodane tylko na początku stosu. (Id4bea, b/253256629)
  • Nawigacja będzie teraz prawidłowo zastąpić instancję DialogFragment podczas nawigacji do tego samego miejsca docelowego z flagą launchSingleTop ustawioną na „prawda”. (I45b5a, b/149572817)
  • Nawigacja SafeArgs nie będzie już powodować błędu kompilacji w przypadku używania argumentów mających dokładnie 19 znaków. (Id60bc, b/257110095)

Wersja 2.6.0-alfa04

9 listopada 2022 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha04 została zwolniona. Wersja 2.6.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Niestandardowe podklasy NavType mogą teraz zastąpić typ serializeAsValue, aby zserializować wartość w ciągu znaków. Dzięki temu zarówno serializacja, jak i deserializacja (za pomocą parseValue) mogą być całkowicie zawarte w klasie NavType. Metoda StringType zastępuje teraz tę metodę, aby wywoływać metodę Uri.encode na określonym obiekcie String. (Ie5213, b/247637434)
  • NavigationUI udostępnia teraz dzienniki, gdy nie uda się przejść przez wybrany adres MenuItem. (I2af5a, b/247730357)

Poprawki błędów

  • Precyzyjne linki nawigacyjne są teraz analizowane leniwie, a nie inicjowane na wykresie, co może poprawić wydajność aplikacji podczas uruchamiania. (Iab0ab)
  • Naprawiono awarię powodowaną przez nawigację po precyzyjnym linku do miejsca docelowego z pustymi domyślnymi argumentami. (I51c24, b/243183636)

Aktualizacja zależności

  • Obsługa modułów funkcji dynamicznych w nawigacji zależy teraz od szczegółowej biblioteki Play Feature Delivery. (Ib4ddc)
  • Bezpieczne argumenty nawigacji zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że są one obecnie zgodne tylko z wersjami 7.3.0 i nowszymi (I47e49).

Wersja 2.6.0-alfa03

24 października 2022 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha03 została zwolniona. Wersja 2.6.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Z nawigacji 2.5.3: NavHost nie będzie już powodować pojawienia się NoSuchElementException, gdy nie ma miejsca docelowego do utworzenia elementu Crossfade. Pomija teraz kompozycję. (Ieb46e, b/253299416)
  • Z poziomu nawigacji 2.5.3: usunięto problem, który polegał na tym, że zapisany stan tworzenia (np. zastosowania rememberSaveable) nie był zapomniany i był usuwany po usunięciu miejsca docelowego poza stos wstecz. (I64949)

Aktualizacje zależności

Wersja 2.6.0-alfa02

5 października 2022 r.

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha02 została zwolniona. Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.

Zmiany w działaniu

  • Podczas przekazywania identyfikatora wykresu nawigacyjnego do funkcji AppBarConfiguration (np. za pomocą Menu) NavigationUI traktuje teraz tylko początkowe miejsce docelowe na wykresie nawigacyjnym jako miejsce docelowe najwyższego poziomu i nie oznacza nieprawidłowo każdego miejsca docelowego na wykresie jako miejsca docelowego najwyższego poziomu. Sposób przekazywania identyfikatora konkretnego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcji isTopLevelDestination w AppBarConfiguration. (Ie936e, b/238496771)

Poprawki błędów

  • Komponent navigation:navigation-fragment zależy teraz od fragmentu w wersji 1.5.2. (I00ba4)
  • Wybrana pozycja menu nie będzie już aktualizowana podczas przechodzenia do miejsca docelowego w usłudze FloatingWindow, np. okna dialogowego. (I4cde8, b/240308330)

Wersja 2.6.0-alfa01

7 września 2022 roku

Aplikacja androidx.navigation:navigation-*:2.6.0-alpha01 została zwolniona. Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Integracje setupWithNavController w usłudze NavigationUI na potrzeby pracy z górnym paskiem aplikacji będą teraz analizować wartości R.string dla argumentów ReferenceType znalezionych w android:label jako wartości ciągów zamiast wyświetlać automatycznie wygenerowaną liczbę całkowitą zasobu. (I5f803, b/167959935)
  • NavDeepLink obsługuje teraz wartości domyślne tablic, co umożliwia obsługę powtarzających się parametrów zapytania, które zostaną zmapowane na typ tablicy argumentu. NavType zawiera też teraz metodę domyślną, którą można zastąpić, by połączyć 2 przeanalizowane wartości. (Id68c3, b/209977108)
  • Jeśli używasz dokładnego ciągu ${applicationId} jako symbolu zastępczego w atrybutach app:data i app:dataPattern w elemencie aktywności pliku XML nawigacyjnych, po inflacji zmienna zostanie automatycznie wypełniona wartością packageName kontekstu. (Iaabde, b/234223561)
  • Próba utworzenia pustego elementu NavDeepLink przy użyciu DSL navDeepLink Kotlin spowoduje teraz wyświetlenie ostrzeżenia o lintowaniu wskazującego, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME. (I08d2f, b/154038883)

Zmiany w interfejsie API

  • Dodaliśmy nową funkcję rozszerzenia NavDestination, która umożliwia analizowanie etykiet dynamicznych z argumentami w postaci android:label="{arg}" w ciągu znaków. Obsługuje argumenty ReferenceType przez analizowanie wartości R.string w ich wartości ciągów. (I07d89, b/236269380)

Zmiany w działaniu

  • Wartości arguments NavBackStackEntry i arguments przekazywane do OnDestinationChangedListener są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przejścia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne w kolejnych wystąpieniach usługi arguments lub OnDestinationChangedListener. (I676f5)

Poprawki błędów

  • Z poziomu Nawigacji 2.5.2: dynamiczna nawigacja przed przejściem do nich teraz próbuje zainstalować miejsca docelowe aktywności z innych modułów. (Ia2c16, b/240292838)
  • Z poziomu Nawigacja 2.5.2: nawigacja prawidłowo zastępuje wystąpienie Fragment podczas nawigowania do tego samego miejsca docelowego i ustawiania flagi launchSingleTop na wartość true. (I5a2f1, b/237374580)
  • Z poziomu Nawigacji 2.5.2: usunięto błąd IllegalStateException spowodowany przejściem do podwójnie zagnieżdżonego wykresu, który współużytkuje element nadrzędny z nowym miejscem docelowym w wyskakującym okienku. (I9f7cb, b/243778589)

Wersja 2.5

Wersja 2.5.3

24 października 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.3 została zwolniona. Wersja 2.5.3 zawiera te zatwierdzenia.

Poprawki błędów

  • NavHost nie będzie już powodować działania NoSuchElementException, gdy nie ma dostępnego miejsca docelowego do utworzenia Crossfade. Pomija teraz kompozycję. (Ieb46e, b/253299416)
  • Rozwiązaliśmy problem, który powodował, że zapisane informacje o stanie tworzenia (np. przypadki użycia rememberSaveable) nie były zapomniane i były usuwane po usunięciu miejsca docelowego poza stos. (I64949)

Wersja 2.5.2

7 września 2022 roku

Aplikacja androidx.navigation:navigation-*:2.5.2 została zwolniona. Wersja 2.5.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Dynamiczna nawigacja próbuje teraz prawidłowo zainstalować miejsca docelowe aktywności z innych modułów, zanim je otworzy. (Ia2c16, b/240292838)
  • Teraz nawigacja prawidłowo zastąpi instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi launchSingleTop na wartość true. (I5a2f1, b/237374580)
  • Naprawiono błąd IllegalStateException powodowany przez przejście do podwójnie zagnieżdżonego wykresu, który ma element nadrzędny z nowym miejscem docelowym w wyskakującym okienku. (I9f7cb, b/243778589)

Aktualizacja zależności

Wersja 2.5.1

27 lipca 2022 roku

Aplikacja androidx.navigation:navigation-*:2.5.1 została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Gdy używasz niestandardowych typów argumentów zapisanych w funkcji Bundle, Navigation Safe Args nie będzie już powodować ostrzeżeń o wycofaniu w wygenerowanych klasach. (Id86ed, b/237725966)

Aktualizacje zależności

Wersja 2.5.0

29 czerwca 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0 została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.4.0

  • Integracja dodatku do tworzeniaNavigation ma teraz możliwość dostarczania bezstanowego elementu ViewModelProvider.Factory za pomocą funkcji CreationExtras w cyklu życia 2.5.0.

Nawigacja (SafeArgs)

  • Navigation Safe Args uaktualnił(a) zależność Android Gradle Plugin w zależności od interfejsu 7.0.4, zmniejszając zgodność wersji AGP przed 7.0.
  • Dodaliśmy obsługę atrybutu build.gradle w przestrzeni nazw, który ma być używany zamiast atrybutu applicationId.

Inne zmiany

  • Interfejs API visibleEntries nie jest już eksperymentalny i udostępnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie z zasadą NavController.

Wersja 2.5.0-rc02

15 czerwca 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0-rc02 została zwolniona. Wersja 2.5.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem powodujący awarię powodowaną przez szybkie przełączanie między dolnymi miejscami docelowymi podczas korzystania z funkcji tworzenia wiadomości w nawigacji (NavHost). (I3979a, b/234054916)
  • Navigation SafeArgs nie będzie już ulegał awarii, gdy użyjesz applicationIdSuffix i przestrzeni nazw bez applicationId lub gdy applicationId i przestrzeń nazw będą się różnić. (I754b1, b/233119646)
  • NavArgument ma teraz niestandardową funkcję toString(), która wyświetla wewnętrzne wartości argumentu. (I900a8)

Wersja 2.5.0-rc01

11 maja 2022 roku

Aplikacja androidx.navigation:navigation-*:2.5.0-rc01 została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano nową regułę lintowania ostrzegającą przed umieszczeniem elementów <deeplink> wewnątrz elementów <activity> w pliku navigation.xml.(Ic15a5, b/178403185)

Poprawki błędów

  • Zakresy kompozycyjne w NavHost i DialogHost są teraz rozmieszczone w oczekiwanej kolejności, np. wewnętrzne zakresy kompozycyjne są usuwane przed zewnętrznymi elementami kompozycyjnymi. (I157e6)
  • Nawigacja SafeArgs korzysta teraz z elementu PathSensitivity.RELATIVE w elemencie ArgumentsGenerationTask, aby umożliwić ponowne wykorzystanie pamięci podręcznej. Oznacza to, że wpis w pamięci podręcznej można teraz ponownie wykorzystać z kompilacji CI do kompilacji lokalnej. (I5f67c, b/173420454)
  • Reguła lintowania UnrememberedGetBackStackEntryDetector została zaktualizowana, aby mieć pewność, że wywołanie remember otaczające wywołanie getBackStackEntry() przekazuje również obiekt NavBackStackEntry jako klucz.(Ib7081, b/227382831)

Wersja 2.5.0-beta01

20 kwietnia 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0-beta01 została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Podczas wykonywania wywołania dismiss() DialogNavigator teraz używa metody popWithTransition. Naprawia to warunek wyścigu, gdy używany jest obiekt ViewModel w miejscu docelowym dialog, który spowodowałby wyświetlenie okna IllegalStateException przy zamykaniu okna przez kliknięcie przycisku wstecz lub kliknięcie poza oknem, aby zamknąć okno. (Id7376, b/226552301)

Aktualizacje zależności

  • Nawigacja zależy teraz od cyklu życia 2.5.0-beta01, gdy naprawiasz element IllegalStateException podczas zagnieżdżania elementu NavHost w innym obiekcie NavHost w dolnej karcie nawigacyjnej innej niż podstawowa, gdy używasz kilku stosów wstecz.

Wersja 2.5.0-alfa04

6 kwietnia 2022 roku

Aplikacja androidx.navigation:navigation-*:2.5.0-alpha04 została zwolniona. Wersja 2.5.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Poprawki błędów

  • NavHost określa, które wpisy do utworzenia, korzystać z visibleEntries z tabeli NavController. Oznacza to, że jeśli używasz zagnieżdżonego hosta NavHost, wewnętrzny obiekt NavHost powinien teraz być odpowiednio animowany. (I4ba2b, b/225394514)
  • Wartość visibleEntries StateFlow podana przez NavController jest teraz oparta na maksymalnym stanie cyklu życia wpisu, a nie na obecnym stanie cyklu życia. Oznacza to, że nawet jeśli cykl życia hosta navController spadnie poniżej zakresu STARTED, lista widocznych całości pozostanie taka sama. (I9e2a8, b/225394514)
  • SavedStateViewFactory obsługuje teraz użycie CreationExtras, nawet jeśli zainicjowano go za pomocą SavedStateRegistryOwner. W przypadku podania dodatków zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
  • NavDeepLink może teraz analizować identyfikatory URI z jednym parametrem zapytania bez wartości. (I0efe8, b/148905489)
  • Pusty ciąg jest teraz uznawany za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
  • Podczas korzystania z przestrzeni nazw Navigation Safe Args nie będzie już ulegać awarii, a AndroidManifest.xml nie będzie dostępny. (I17ccf, b/227229815)

Wersja 2.5.0-alfa03

23 lutego 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0-alpha03 została zwolniona. Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Możesz teraz przekazać pakiet CreationExtras do by navGraphViewModels, aby utworzyć ViewModel. (I29217, b/217618359)

Poprawki błędów

  • NavDeepLinks prawidłowo obsługuje teraz zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras lub precyzyjnych linków. (I513d1, b/217815060)
  • CreationExtras będzie teraz działać prawidłowo, gdy będzie używany z NavBackStackEntries do tworzenia modeli. (I69161, b/217617710)
  • Bezpieczne argumenty nawigacji obsługują teraz przestrzeń nazw zdefiniowaną w pliku build.gradle zamiast pakietu w pliku AndroidManifest. (I659ef, b/217414933)

Wersja 2.5.0-alfa02

9 lutego 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0-alpha02 została zwolniona. Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • Z nawigacji 2.4.1: NavHostFragment będzie teraz prawidłowo ustawiać obiekt OnBackPressedDispatcher podczas korzystania z powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)
  • Z nawigacji 2.4.1: w przypadku precyzyjnych linków przez wiele zagnieżdżonych tagów NavGraph, stos wsteczny będzie teraz prawidłowo uwzględniać pośrednie miejsca docelowe początkowe. (I504c0, b/214383060)

Wersja 2.5.0-alfa01

26 stycznia 2022 r.

Aplikacja androidx.navigation:navigation-*:2.5.0-alpha01 została zwolniona. Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że dostęp do obiektu ViewModel utworzonego za pomocą by navGraphViewModels() z onCreate() fragmentu kończył się niepowodzeniem z użyciem IllegalStateException. (I8a14d)
  • NavDeepLink nie będzie już niepotrzebnie dekodować argumentów dwukrotnie, co oznacza, że właściwe argumenty będą teraz przekazywane do miejsca docelowego. (I31b0a, b/210711399)

Bezpieczne argumenty

  • Bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że argumenty bezpieczeństwa nawigacji nie będą już zgodne z Androidem Studio w wersjach starszych niż 7.0, ale teraz są zgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 i nowszych. (I41c88, b/213086135, b/207670704)

Wersja 2.4.2

Wersja 2.4.2

6 kwietnia 2022 roku

Aplikacja androidx.navigation:navigation-*:2.4.2 została zwolniona. Wersja 2.4.2 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 2.4.1

Wersja 2.4.1

9 lutego 2022 r.

Aplikacja androidx.navigation:navigation-*:2.4.1 została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • NavHostFragment będzie teraz prawidłowo ustawiać atrybut OnBackPressedDispatcher w przypadku korzystania z powiązania z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)
  • W przypadku precyzyjnych linków poprzez wiele zagnieżdżonych tagów NavGraph stos wsteczny będzie teraz prawidłowo uwzględniać pośrednie miejsca docelowe początkowego. (I504c0, b/214383060)
  • Usunięto z Nawigacji 2.5.0-alpha01: usunęliśmy problem, który powodował, że dostęp do modelu widoku utworzonego za pomocą by navGraphViewModels() za pomocą elementu onCreate() fragmentu kończył się niepowodzeniem z wartością IllegalStateException. (I8a14d)
  • Przywrócone z nawigacji 2.5.0-alpha01: argumenty NavDeepLink nie dekodują już niepotrzebnie argumentów dwa razy, co oznacza, że poprawnie zdekodowane argumenty są teraz przekazywane do miejsca docelowego. (I31b0a, b/210711399)
  • Zaktualizowane z nawigacji 2.5.0-alpha01: bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że argumenty bezpieczeństwa nawigacji nie będą już zgodne z Androidem Studio w wersjach starszych niż 7.0, ale teraz są zgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (I41c88, b/213086135, b/207670704)

Wersja 2.4.0

Wersja 2.4.0

26 stycznia 2022 r.

Aplikacja androidx.navigation:navigation-*:2.4.0 została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.3.0

  • Wszystkie artefakty nawigacji zostały przepisane w Kotlin. Poprawia to wartość null klas korzystających z klas ogólnych (takich jak NavType podklas). Wszystkie funkcje rozszerzenia Kotlin, które były częścią artefaktów -ktx, zostały przeniesione do odpowiednich głównych artefaktów. Artefakty -ktx będą nadal publikowane, ale będą całkowicie puste.
  • Artefakt navigation-fragment zawiera teraz wstępnie utworzoną implementację układu z 2 panelami w nowej wersji AbstractListDetailFragment. Ten fragment używa elementu SlidingPaneLayout do zarządzania panelem listy (dostępnym przez Twoją podklasę) i panelem szczegółów, w którym jako implementacja wykorzystuje NavHostFragment, jak widać w naszej przykładowej implementacji.
  • Metoda currentBackStackEntryAsFlow() w NavController dostarcza Flow, który jest emitowany po każdej zmianie bieżącego parametru NavBackStackEntry. Tego procesu można użyć jako alternatywy dla ręcznego zarządzania elementem OnDestinationChangedListener.
  • NavController umożliwia teraz pobranie listy wszystkich widocznych instancji NavBackStackEntry w postaci StateFlow za pomocą eksperymentalnej właściwości visibleEntries.
  • Można teraz rozszerzyć klasę NavType, aby tworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia wykresu nawigacyjnego, np. Grafu nawigacyjnego Kotlin DSL.
  • Nawigacja udostępnia teraz interfejsy API findStartDestination() i getHierarchy(), których można używać do implementacji niestandardowego interfejsu NavigationUI. findStartDestination() to funkcja rozszerzenia w NavGraph, która lokalizuje rzeczywistą lokalizację początkową, która będzie wyświetlana po przejściu na wykres, nawet jeśli startDestination jest zagnieżdżoną funkcją NavGraph. getHierarchy() to funkcja w obiekcie NavDestination, która może służyć do sprawdzania, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metody NavigationUI, które korzystały z metody BottomNavigationView, zostały zaktualizowane tak, aby przyjmowały klasy nadrzędną wprowadzone w materiale 1.4.0 (NavigationBarView). Dzięki temu można używać tych metod w NavigationRailView.

  • Gdy uzupełniasz element <action> za pomocą kodu XML, atrybuty animacji mogą korzystać z atrybutów pobranych z motywu przy użyciu składni app:enterAnim="?attr/transitionEnter".

  • Safe Args generuje teraz metodę fromSavedStateHandle() dla każdej klasy NavArgs. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    

Trasy nawigacyjne a DSL Kotlin

Poprzednie wersje Nawigacji polegały na tym, że każde miejsce docelowe miało stały identyfikator w postaci liczby całkowitej, który jednoznacznie identyfikował miejsce na liście bliźniaczych miejsc docelowych i umożliwiał navigate() dojazd do niego bezpośrednio lub poprzez określone działanie. Ta zasada jest przydatna i przydatna zwłaszcza w przypadkach, gdy definiujesz wykres nawigacyjny w formacie XML i możesz używać automatycznie generowanych stałych R.id lub Safe Args (które korzystają z tych stałych do generowania kodu w czasie kompilacji), ale ten system unikalnych liczb całkowitych nie oddaje znaczenia i ekspresji semantycznej grafów tworzonych automatycznie w czasie działania przez Nawigacja Kotlin DSL.

W tej wersji wprowadziliśmy nową opcję jednoznacznego identyfikowania miejsca docelowego na wykresie nawigacyjnym według jego trasy. Trasa to atrybut String, który określa niepowtarzalną ścieżkę do miejsca docelowego. Wszystkie metody Kotlin DSL, które przyjmowały identyfikator miejsca docelowego, zostały wycofane i zastąpione odpowiednikiem interfejsu API, który pobiera trasę.

Każda trasa powinna być traktowana jako część elementu Uri określająca miejsce docelowe, np. home, profile/{userId}, profile/{userId}/friends itp. Gdy tożsamość miejsca docelowego jest powiązana z konkretnym fragmentem treści, te argumenty dynamiczne powinny należeć do trasy, zgodnie z tymi samymi regułami co precyzyjne linki.

Wszystkie interfejsy API NavController, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które przejmuje trasę String. Dotyczy to m.in. navigate(), popBackStack(), popUpTo() i getBackStackEntry().

Miało to wpływ na interfejs API:

  • Właściwość popUpTo Kotlin w strefie DSL Kotlin została wycofana i zastąpiona usługą popUpToId.
  • Interfejs getStartDestination() API został wycofany i zastąpiony przez getStartDestinationId().

W odróżnieniu od nawigowania według identyfikatora nawigacja według trasy podlega tym samym regułom co w przypadku niejawnych precyzyjnych linków. Oznacza to, że możesz bezpośrednio przechodzić do dowolnego miejsca docelowego na dowolnym zagnieżdżonym wykresie. Trasy te są przydatne w projektach z wieloma modułami bez konieczności dodawania widocznego na zewnątrz precyzyjnego linku do każdego miejsca docelowego.

Tworzenie wiadomości w ramach Nawigacji

Artefakt navigation-compose umożliwia integrację komponentu nawigacji z Jetpack Compose. Funkcja ta używa funkcji @Composable jako miejsc docelowych w aplikacji.

Ta wersja zapewnia:

  • Obiekt kompozycyjny NavHost, który umożliwia tworzenie wykresu nawigacyjnego przy użyciu DSL Kotlin przy użyciu miejsc docelowych composable i dialog oraz obsługa opcjonalnych nawigatorów, takich jak Accompanist Navigation Materiały.
  • Obowiązkowa obsługa przechodzenia między miejscami docelowymi. Accompanist Navigation Animation może służyć do sterowania przejściami między wejściami i wyjściami za pomocą eksperymentalnych interfejsów API Compose.
  • Zakres elementu Lifecycle do każdego miejsca docelowego kompozycyjnego. Każde miejsce docelowe osiąga stan RESUMED tylko po zakończeniu wprowadzania przejść i natychmiast maleje do STARTED, gdy zaczynają się przejścia wyjścia. Pozwala to uniknąć wszystkich problemów z IllegalStateException i korzystaniem z wielu interakcji, ponieważ wywołuje wywołanie navigate tylko wtedy, gdy Lifecycle ma wartość RESUMED.
  • Zakres obiektu ViewModel (za pomocą interfejsu API viewModel() w narzędziu Lifecycle ViewModel Compose 2.4.0 lub hiltViewModel() w komponowaniu nawigacji po Hilt1.0.0 na poziomie miejsca docelowego, zapewniający zakres, który jest zdolny przetrwać zmiany konfiguracji i znajduje się w tylnym stosie (gdy treść kompozycyjna jest w inny sposób zutylizowana) oraz sygnał w onCleared() modelu widoku danych, który wskazuje trwałe usunięcie i czyszczenie stanu powiązanego z tym elementem NavBackStackEntry.
  • Określanie zakresu stanu rememberSaveable na poziomie miejsca docelowego, dzięki czemu wszystkie stany kompozycyjne są zapisywane i przywracane automatycznie po powrocie do miejsca docelowego.
  • Pełna obsługa zapisywania i przywracania stanu urządzenia NavController oraz stanu miejsca docelowego po śmierci i przywracaniu.
  • Automatyczna integracja z systemowym przyciskiem Wstecz.
  • Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych i zwracania wyniku do poprzednich miejsc docelowych.

  • Utwórz określone elementy pomocnicze w językach rememberNavController() i currentBackStackEntryAsState(), aby umożliwić stan podnoszenia i połączyć element NavController z elementami kompozycyjnymi poza elementem NavHost (takim jak dolny pasek nawigacyjny).

val navController = rememberNavController()
Scaffold { innerPadding ->
    NavHost(navController, "home", Modifier.padding(innerPadding)) {
        composable("home") {
            // This content fills the area provided to the NavHost
            HomeScreen()
        }
        dialog("detail_dialog") {
            // This content will be automatically added to a Dialog() composable
            // and appear above the HomeScreen or other composable destinations
            DetailDialogContent()
        }
    }
}

Więcej informacji znajdziesz w przewodniku po nawigacji w trakcie tworzenia wiadomości.

Wiele wstecznych stosów

Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie do niego miejsc docelowych po navigate() do nich i usuwanie ich po wywołaniu funkcji popBackStack() lub wywołaniu przycisku Wstecz w systemie. Istniejąca klasa NavOptions i integracja z elementami <action> w kodzie XML wykresu nawigacyjnego zostały rozszerzone, aby umożliwić zapisywanie i przywracanie stosu wstecznego.

W związku z tą zmianą metody NavigationUI w onNavDestinationSelected(), BottomNavigationView.setupWithNavController() i NavigationView.setupWithNavController() automatycznie zapisują i przywracają stan miejsc docelowych z wyprzedzeniem, co zapewnia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami fragmentowymi jest to zalecany sposób integracji z wieloma stosami wstecznymi.

Podstawowe interfejsy API do zapisywania i przywracania stanu są dostępne na kilku platformach:

  • W pliku XML Nawigacji element <action> może teraz korzystać z atrybutów logicznych app:popUpToSaveState i app:restoreState, aby zapisać stan miejsc docelowych otwieranych przez app:popUpTo i przywrócić stan powiązany z miejscem docelowym przekazanym jako app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • W navOptions Kotlin DSL możesz dodać właściwość wartości logicznej restoreState i właściwość wartości logicznej saveState w konstruktorze popUpTo:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • Podczas ręcznego tworzenia obiektu NavOptions za pomocą NavOptions.Builder możesz użyć setRestoreState() i nowego przeciążenia dla setPopUpTo(), które wymaga dodatkowego parametru saveState.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • Automatyczne wywołania funkcji popBackStack() mogą teraz zawierać dodatkowy parametr saveState.

  • Aby usunąć każdy stan, który został zapisany za pomocą popBackStack() lub popUpToSaveState, można użyć metody clearBackStack().

We wszystkich przypadkach NavController zapisze i przywróci stan każdego elementu NavBackStackEntry, w tym dowolnego miejsca docelowego nawigacji o zakresie ViewModel. Interfejsy API Navigator zostały zaktualizowane, aby umożliwić użytkownikom zapisywanie i przywracanie własnego stanu w przypadku każdego komponentu Navigator.

Zmiany w działaniu

  • NavDeepLinkBuilder dodaje teraz parametr PendingIntent.FLAG_IMMUTABLE do wartości PendingIntent zwracanej przez metodę createPendingIntent(), dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami podczas kierowania na Androida 12.
  • Nawigacja zależy teraz od cyklu życia 2.3.1 i oznacza teraz setGraph(), popBackStack(), navigateUp() i navigate() metody, które aktualizują parametr NavBackStackEntry Lifecycle jako @MainThread, dopasowując nawigację do egzekwowania zasad w wątku głównym wprowadzonego w cyklu życia 2.3.0.
  • Precyzyjne linki sprawdzają teraz, czy w polu Uri znajdują się wszystkie wymagane argumenty (czyli bez wartości domyślnych).
  • Argumenty analizowane w funkcji NavDeepLink traktowane są teraz tak samo jak znaki zapytania jako separator między segmentami ścieżki. Pozwala to uniknąć rozciągnięcia argumentu po znaku funta.
  • Podczas generowania działań kod Kotlin wygenerowany z Safe Args ustawia teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi.
  • Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi.
  • Usługa Safe-Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie dotyczące używania applicationIdTextResource nie powinno już się pojawiać.

Znane problemy

  • Poprawiono w Nawigacji 2.5.0-alpha01: uzyskanie dostępu do elementu ViewModel utworzonego za pomocą by navGraphViewModels() z obiektu onCreate() fragmentu kończy się niepowodzeniem z wartością IllegalStateException. (b/213504272)
  • Poprawiono w Nawigacji 2.5.0-alpha01: interfejs Safe Args 2.4.0 jest niezgodny z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (b/213086135)
  • Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacyjnymi nie umożliwiają poprawnego utworzenia pełnego stosu. (b/214383060)

Wersja 2.4.0-rc01

15 grudnia 2021 roku

Aplikacja androidx.navigation:navigation-*:2.4.0-rc01 została zwolniona. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.

Zmiany w działaniu

  • Argumenty analizowane przez funkcję NavDeepLink są teraz traktowane tak samo jak znaki zapytania jako separator między argumentami. (I21309, b/180042703)

Poprawki błędów

  • Precyzyjne linki nie będą już ignorować argumentów o wartościach, które są takie same jak nazwa obiektu zastępczego. (If8017, b/207389470)
  • NavController nie będzie już ulegać awariom podczas otwierania zagnieżdżonego miejsca docelowego za pomocą przejść po przywróceniu interfejsu NavController. (I0f7c9, b/205021623)
  • Komunikat o błędzie wyświetlany podczas korzystania z nieprawidłowego parametru startDestination będzie teraz domyślnie kierował na trasę miejsca docelowego (o ile jest ona dostępna). (I86b9d, b/208041894)

Poprawki błędów związanych z nawigacją przy tworzeniu wiadomości

  • Naprawiono potencjalną awarię powodowaną przez szybkie przełączanie między miejscem początkowym a innym miejscem docelowym za pomocą elementów menu nawigacyjnego u dołu. (Ic8976, b/208887901)
  • Miejsce docelowe okna jest teraz prawidłowo przywracane u góry ekranu po zmianie konfiguracji lub zakończeniu procesu. (I4c0dc, b/207386169)
  • Naprawiono błąd, który powodował, że próba pobrania polecenia ViewModel z elementu NavBackStackEntry okna kończyła się niepowodzeniem po zamknięciu okna. (I6b96d, b/206465487)
  • Rozwiązaliśmy problem, który powodował, że podczas korzystania z miejsc docelowych w activity z elementem NavHost funkcji nawigacji w przypadku tworzenia wiadomości można było zmieniać kompozycje w nieskończoność. (I8f64c)
  • Naprawiono wyciek w funkcji tworzenia wiadomości w nawigacji, w którym utrzymywano odniesienie do starej aktywności po zmianie konfiguracji lub śmierci procesu. (I4efcb, b/204905432)

Poprawki błędów związanych z bezpiecznymi argumentami

  • SafeArgs nie ulega już awarii podczas próby przywrócenia niestandardowych tablic parcelowa po zakończeniu procesu. (I618e8, b/207315994)
  • Naprawiliśmy błąd w bezpiecznych argumentach, który uniemożliwiał tablicom logicznym stosowanie wartości null. (I8c396, b/174787525)

Wersja 2.4.0-beta02

3 listopada 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-beta02 została zwolniona. Wersja 2.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • W przypadku obsługi zarówno jawnych, jak i niejawnych precyzyjnych linków podczas przechodzenia do innego wykresu jest teraz automatycznie dodawana flaga saveState. Dzięki temu kod (np. NavigationUI.setupWithNavController) i kod korzystający z wielu wstecznych stosów działają zgodnie z oczekiwaniami. (Ic8807)

Zmiany w działaniu

  • Wzorce precyzyjnych linków są teraz leniwie kompilowane w NavDeepLink, a nie podczas inflacji. Powinno to skrócić czas inflacji wykresów nawigacyjnych zawierających precyzyjne linki. (b8d257, b/184149935)

Poprawki błędów

  • Naprawiono błąd, który powodował, że element NavBackStackEntries był przesuwany w dół do Lifecycle.State.CREATED po przeniesieniu do Lifecycle.State.STARTED, gdy NavHost był dodawany bezpośrednio do setContent() aktywności. (Ia5ac1, b/203536683)
  • Naprawiono warunek wyścigu, w którym wyświetlenie miejsca docelowego DialogFragment poza stos, zanim okno rzeczywiście zostało wyświetlone, nie zamykało okna. Powodowało to awarię, gdy użytkownik ręcznie zamknął okno błędu. (I687e5)
  • Rozwiązaliśmy problem, który powodował, że interfejs API onNavDestinationSelected w NavigationUI zwracał wartość true nawet wtedy, gdy nie była wyświetlana wartość navigate() dla tego wykresu nawigacyjnego. Teraz wykorzystuje tę samą logikę, która jest używana wewnętrznie przez setupWithNavController, do wyboru tylko MenuItem powiązanego z bieżącym miejscem docelowym za pomocą hierarchy miejsca docelowego. (I2b053).

Wersja 2.4.0-beta01

27 października 2021 roku

Aplikacja androidx.navigation:navigation-*:2.4.0-beta01 została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz używać by navGraphViewModel z trasą jako alternatywy dla używania identyfikatora, aby lepiej obsługiwać używanie DSL nawigacji Kotlin z fragmentami. (I901e3, b/201446416)

Zmiany w interfejsie API

  • Interfejs API visibleEntries ma teraz charakter eksperymentalny. (I93f6f)

Poprawki błędów

  • Modele ViewModel nie będą już niszczone po przerwaniu przejść między tymi samymi ekranami (Id52d8, b/200817333).
  • Argumenty zerowe NavDeepLink nie wymagają już wartości domyślnej przy dodawaniu precyzyjnych linków do elementów NavDestination. (I5aad4, b/201320030)
  • Zdarzenia NavBackStack Entries z różnymi cyklami życia nie są już uznawane za równe. Oznacza to, że NavHost prawidłowo utworzy wszystkie miejsca docelowe podczas nawigacji z elementami singleTop oraz podczas ponownego wybierania dolnych elementów menu. (I1b351, b/196997433)
  • Rozwiązaliśmy problem z atrybutem AbstractListDetailFragment, który powodował, że atrybuty layout_width i layout_weight w panelu listy zwracane przez onCreateListPaneView() były nieprawidłowo obsługiwane lub ignorowane. (f5fbf3)
  • Wizualny stan miejsc docelowych okien dialogowych jest teraz prawidłowo zsynchronizowany ze stanem obiektu DialogFragmentNavigator. Oznacza to, że ręczne wywołanie asynchronicznego interfejsu dismiss() API dla interfejsu DialogFragment prawidłowo wyczyści teraz wszystkie miejsca docelowe w oknie, które znajduje się nad teraz zamkniętym oknem. Nie ma to wpływu na sytuacje, w których zamykasz okno za pomocą popUpTo lub popBackStack(). (I77ba2)
  • AbstractAppBarOnDestinationChangedListenerTeraz zawiera czytelniejsze komunikaty o błędach dla onDestinationChanged(). (Ie742d)

Wersja 2.4.0-alfa10

29 września 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha10 została zwolniona. Wersja 2.4.0-alpha10 zawiera te zatwierdzenia.

Nowe funkcje

  • NavController umożliwia teraz pobieranie listy wszystkich widocznych instancji NavBackStackEntry za pomocą metody visibleEntries StateFlow (Ia964e)
  • rememberNavController() przyjmuje teraz opcjonalny zestaw instancji Navigator, które zostaną dodane do zwróconego obiektu NavController, aby lepiej obsługiwać opcjonalne nawigatory, takie jak Accompanist Navigation Material. (I4619e)

Poprawki błędów

  • Dynamiczna nawigacja nie będzie już ulegać awariom po utworzeniu aktywności. (Ifa6a3, b/197942869)
  • Naprawiono problem z systemowym przyciskiem Wstecz, który pojawia się dopiero po powrocie do miejsca docelowego kompozycyjnego zawierającego element NavHost. (3ed148, b/195668143)
  • SafeArgs generuje teraz argumenty dla fromBundle() i fromSavedStateHandle() we właściwej kolejności parametrów. (I824a8, b/200059831)

Wersja 2.4.0-alfa09

15 września 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha09 została zwolniona. Wersja 2.4.0-alpha09 zawiera te zatwierdzenia.

Nowe funkcje

  • Za pomocą metody clearBackStack() możesz teraz wyczyścić każdy stan, który został zapisany za pomocą popBackStack() lub popUpToSaveState. (I80a0f)
  • Możesz teraz przekazać listę argumentów lub precyzyjnych linków do kreatora zagnieżdżonego wykresu nawigacyjnego, a zostaną one automatycznie dodane do wynikowego wykresu. (I8a470, b/182545357)

Zmiany w interfejsie API

  • Funkcja DSL navArgument Kotlin jest teraz częścią navigation-common, a nie navigation-compose. Aby nadal korzystać z tej funkcji, będzie to wymagało zaktualizowania importów. (I1d095)

Zmiany w działaniu

  • Podczas generowania argumentów Safe Args umieszcza teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi. (I89709, b/198493585)

Poprawki błędów

  • W przypadku korzystania z nawigacji tworzenia wiadomości funkcja Nav Graphs będzie miała wartość DESTROYED tylko wtedy, gdy wszystkie ich elementy podrzędne będą DESTROYED. (I86552, b/198741720)
  • Argumenty nubelne NavDeepLink nie wymagają już wartości domyślnej. (Ia14ef, b/198689811)
  • Wywołanie metody setGraph() za pomocą nowego wykresu spowoduje też usunięcie wszystkich zapisanych wstecznych stosów poza wcześniejszym wyświetlaniem stosu wstecznego. (I97f96)
  • Rozwiązaliśmy problem, który powodował, że instancje OnDestinationChangedListener oraz currentBackStackEntryFlow nie były powiadamiane podczas korzystania z launchSingleTop. (Iaaebc)

Aktualizacje zależności

Wersja 2.4.0-alfa08

1 września 2021 roku

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha08 została zwolniona. Wersja 2.4.0-alpha08 zawiera te zatwierdzenia.

Nowe funkcje

  • Można teraz rozszerzyć klasę NavType, aby tworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko w przypadku automatycznego tworzenia wykresu nawigacyjnego, np. Grafu nawigacyjnego Kotlin DSL. (I78440, b/196871885)

Zmiany w działaniu

  • Podczas generowania działań kod Kotlin wygenerowany z Safe Args ustawia teraz argumenty bez wartości domyślnych przed tymi z wartościami domyślnymi. (Idb697, b/188855904)
  • Precyzyjne linki sprawdzają teraz, czy w polu Uri znajdują się wszystkie wymagane argumenty (czyli bez wartości domyślnych). (#204, b/185527157)

Poprawki błędów

  • Użycie funkcji getBackStackEntry i previousBackStackEntry w ramach funkcji composable() w połączeniu z komponentem remember() nie będzie już sprawiać, że miejsce docelowe nie będzie znajdować się w stosie wstecznym. (I75138, b/194313238)
  • Tworzenie wiadomości w nawigacji przebiega teraz prawidłowo podczas zmieniania wstecznych argumentów stosu i używania funkcji launchSingleTop=true. (Iebd69, b/186392337)
  • Przy wywołaniu metody setGraph nie będzie już wyświetlany ArrayIndexOutOfBoundsException z wykresem zawierającym 13 lub 29 miejsc docelowych. (I1a9f1, b/195171984)
  • Generator Java SafeArgs nie powinien już powodować ostrzeżeń dotyczących lint podczas generowania klas Args. (I1a666, b/185843837)

Wkład z zewnątrz

  • Dziękujemy ospixd za sprawdzenie, czy precyzyjne linki sprawdzają, czy w atrybucie Uri znajdują się wszystkie wymagane argumenty (te bez wartości domyślnych). (#204, b/185527157)

Wersja 2.4.0-alfa07

18 sierpnia 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha07 została zwolniona. Wersja 2.4.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Tworzenie wiadomości w ramach nawigacji prawidłowo zapisuje stan po zmianie konfiguracji i wykresach podczas korzystania z funkcji stosu wstecznej. (If5a3d, b/195141957)
  • Ponowne wybranie tej samej karty podczas korzystania z nawigacji tworzenia wiadomości z wieloma stosami wstecznymi nie spowoduje już wyświetlenia pustego ekranu. (I860dc, b/194925622)
  • NavHost obserwuje teraz zmiany w elemencie Lifecycle.State elementu NavBackStackEntry, co oznacza, że użycie elementu NavHost we fragmencie zostanie teraz prawidłowo skompilowane ze względu na zmiany w cyklu życia, a nie spowoduje to wyświetlenie pustego ekranu. (I4eb85, b/195864489)
  • Rozwiązaliśmy problem, który powodował, że zamknięcie DialogFragment nie powodowało prawidłowej aktualizacji stanu NavController po odtworzeniu działania (np. po zmianie konfiguracji). (Icd72b)
  • Naprawiliśmy błąd polegający na tym, że wyświetlenie miejsca docelowego okna nie aktualizowało obsługi przycisku Wstecz w systemie NavController. Może to powodować przechwycenie przycisku Wstecz, mimo że nie ma on stosu wstecznego do wyświetlenia. (If3b34)
  • Funkcja Safe-args automatycznie generuje teraz metodę toSavedStateHandle dla argumentów, których można używać do testowania kodu ViewModel. (If1e2d, b/193353880)

Wersja 2.4.0-alfa06

4 sierpnia 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha06 została zwolniona. Wersja 2.4.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Nazwy metod requireSlidingPaneLayout() i requireDetailPaneNavHostFragment() w AbstractListDetailFragment zostały zmienione na getSlidingPaneLayout() i getDetailPaneNavHostFragment(). (I34a08)

Zmiany w działaniu

  • Podczas nawigacji przy użyciu animacji (np. Crossfade) element Lifecycle w nowym miejscu docelowym osiągnie teraz wartość RESUMED dopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889)
  • Opcja NavHost w nawigacji tworzenia wiadomości ustawia teraz wykres jako część pierwszej kompozycji. (Ieb7be)

Poprawki błędów

  • Otwarcie ostatniego miejsca docelowego na wykresie nawigacyjnym nie powoduje już wywołania zdarzenia ClassCastException. (If0543, b/172112072, b/194301889)
  • Naprawiliśmy błąd NullPointerException występujący w przypadku dodawania precyzyjnego linku bez elementu Uri oraz nawigowania po trasie lub precyzyjnym linku. (938a0c, b/193805425)
  • Rozwiązaliśmy problem z nawigacją tworzenia wiadomości, który powodował, że precyzyjny link NavBackStackEntry nie osiągał stanu RESUMED. (I192c5)
  • Naprawiono błąd polegający na tym, że wyświetlenie miejsca docelowego w oknie dialogowym nie aktualizowało obsługi systemowego przycisku Wstecz w kontrolerze NavController, co potencjalnie powodowało przechwycenie przycisku Wstecz, mimo że nie ma on stosu wstecznego do wyświetlenia. (Aosp/1782668)

Wersja 2.4.0-alfa05

21 lipca 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha05 została zwolniona. Wersja 2.4.0-alpha05 zawiera te zatwierdzenia.

Zmiany w działaniu

  • Funkcja NavHost w funkcji tworzenia wiadomości w Nawigacji będzie teraz zawsze używała przenikania podczas nawigowania między miejscami docelowymi. (I07049, b/172112072)
  • Możesz teraz wprowadzić zmiany na wykresie NavHost. Wykresy z tym samym punktem początkowym i tymi samymi miejscami docelowymi na wykresie zostaną uznane za równe i nie spowodują usunięcia stosu wstecznego NavController. (I0b8db, b/175392262)

Poprawki błędów

  • Poprawiliśmy NoSuchElementException podczas wywoływania funkcji popBackStack() z poziomu interfejsu LifecycleObserver powiązanego z elementem NavBackStackEntry spowodowanym przez aktualizacje stanu kontrolera NavController. (I64621)
  • AbstractListDetailFragment umożliwia teraz całkowite usunięcie elementu SlidingPaneLayout z pliku APK, gdy nie jest używany AbstractListDetailFragment. (I611ad)
  • NavGraph i NavDestination zastępują teraz metodę równości, więc 2 obiekty o tych samych wartościach będą uznawane za równe. (I166eb, b/175392262)

Wersja 2.4.0-alfa04

1 lipca 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha04 została zwolniona. Wersja 2.4.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Artefakt navigation-fragment zawiera teraz wstępnie utworzoną implementację układu z 2 panelami w nowej wersji AbstractListDetailFragment. Ten fragment używa elementu SlidingPaneLayout do zarządzania panelem listy (dostępnym przez Twoją podklasę) i panelem szczegółów, w którym jako implementacja wykorzystuje NavHostFragment, jak widać w naszej przykładowej implementacji. (Iac4be, b/191276636)
  • NavHost artefaktu navigation-compose obsługuje teraz nie tylko miejsca docelowe composable, ale też dialog. Każde z tych miejsc docelowych w oknach będzie wyświetlać się w komponencie Dialog unoszącym się nad bieżącym miejscem docelowym composable. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

Zmiany w interfejsie API

  • Nazwa funkcji add w NavigatorState została zmieniona na push. Wszystkie bieżące wywołania funkcji add() trzeba będzie zmienić na push(). (Ie89fc, b/172112072)
  • Niestandardowe instancje Navigator mogą teraz używać interfejsów API pushWithTransaction i popWithTransition w NavigatorState do asynchronicznego wypychania lub pobierania miejsca docelowego. Pamiętaj, że żaden z uwzględnionych nawigatorów nie używa jeszcze tych interfejsów API. (Ic4d7c, b/172112072)

Zmiany w działaniu

  • NavDeepLinkBuilder dodaje teraz parametr PendingIntent.FLAG_IMMUTABLE do wartości PendingIntent zwracanej przez metodę createPendingIntent(), dzięki czemu ten interfejs API działa zgodnie z oczekiwaniami podczas kierowania na Androida 12. (If8c52)

Poprawki błędów

  • Rozwiązaliśmy problem z atrybutem <include-dynamic>, który powodował, że argumenty przekazywane do wykresu nie były prawidłowo przekazywane do wykresu uwzględnianego dynamicznie. (I3e115)
  • Naprawiliśmy NullPointerException podczas przechodzenia do miejsca docelowego za pomocą argumentu string[] o wartości domyślnej @null. (I1fbe8)
  • Dodaj reguły ProGuard dla @Navigator.Name, rozwiązując problemy w trybie pełnego dostępu do wersji R8 3.1. (I2add9, b/191654433)
  • Podczas tworzenia aplikacji z wersją Kotlin przed 1.5.0 nie będą już działać błędy SafeArgs. (Icd1ff, b/190739257)

Wersja 2.4.0-alfa03

16 czerwca 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha03 została zwolniona. Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że przejście do uwzględnionego wykresu dynamicznego wymagało 2 wywołań navigate(). (I7785c, b/188859835)
  • Naprawiliśmy regresję wprowadzonej w Nawigacji 2.4.0-alpha01, w wyniku której usługa setupActionBarWithNavController() nie usuwała poprawnie ikony W górę, gdy znajdujesz się w miejscu docelowym najwyższego poziomu. (I5d443, b/189868637)
  • Poprawiliśmy IllegalStateException przy wywoływaniu funkcji popBackStack() po wcześniejszym wyświetleniu wykresu głównego kontrolera NavController. (I2a330, b/190265699)
  • Reguły ProGuard dotyczące by navArgs() są teraz prawidłowo stosowane, gdy używany jest element navigation-common i zależne od niego artefakty. (I68800, b/190082521)
  • OnDestinationChangedListener, który wywołuje metodę navigate() przy pierwszym wywołaniu zwrotnym, prawidłowo otrzymuje teraz kolejne wywołanie z miejscem docelowym, do którego przeszedł. (Ie5f9e, b/190228815)
  • Funkcja Safe Args nie ulega już awarii, gdy jest używana z dynamicznymi modułami funkcji i interfejsem AGP w wersji 7.0 lub nowszej (I69518, b/189966576).

Znany problem

  • Podczas korzystania z Gradle 6.7.0 funkcja Safe Args będzie kończyć się błędem Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ z powodu uzależnienia od starszej wersji Kotlin. Możesz obejść ten problem, aktualizując aplikację tak, aby używała Gradle 7.0. (b/190739257)

Wersja 2.4.0-alfa02

2 czerwca 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha02 została zwolniona. Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Trasy są teraz obsługiwane w przypadku miejsc docelowych Aktywność, Fragment i Okno, a także w całym DSL Dynamic Navigation Kotlin. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI tymczasowo dodał(a) eksperymentalne interfejsy API, aby umożliwić rezygnację z zapisywania stanu. Choć zapisywanie stanu zawsze jest prawidłowe, to nadal można korzystać z wycofanych bibliotek (np.zachowanych fragmentów), których nie można obsługiwać przy zapisywaniu stanu. W ten sposób aplikacje mogą powoli przejść z nieobsługiwanych interfejsów API. (Idf93c).
  • Nawigacja udostępnia teraz interfejsy API findDestination() i getHierarchy(), których można używać do implementacji niestandardowego interfejsu NavigationUI. findDestination() to funkcja rozszerzenia w NavGraph, która wyszukuje miejsce docelowe na wykresie. getHierarchy() to funkcja w obiekcie NavDestination, która może służyć do sprawdzania, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego (I2932f, b/188183365).

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metody nawigacji, które korzystały z metody BottomNavigationView, zostały zaktualizowane tak, aby przyjmowały klasy nadrzędną wprowadzone w materiale 1.4.0 (NavigationBarView). Dzięki temu można używać tych metod w NavigationRailView. (Ib0b36, b/182938895)

  • Gdy nadmiarujesz element <action> za pomocą kodu XML, atrybuty animacji mogą korzystać z atrybutów pobranych z motywu z użyciem składni app:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)

Zmiany w interfejsie API

  • Kreatory DSL Kotlin, które używają identyfikatora, zostały wycofane i powinny zostać zastąpione monterami korzystającymi z tras (I85b42, b/188816479) (I9f58f, b/188816479)

Poprawki błędów

  • DialogFragmentNavigator używa teraz interfejsu API NavigatorState.pop() do informowania NavController o zamknięciu okna przez naciśnięcie systemowego przycisku Wstecz lub kliknięcie poza nim. Dzięki temu stan NavController jest zawsze zsynchronizowany ze stanem nawigacji. (I2ead9)
  • Nawigacja nie zwraca już wartości ConcurrentModificationException podczas manipulowania listą elementów OnDestinationChangedListeners za pomocą wywołania zwrotnego onDestinationChanged. (Ib1707, b/188860458)

  • Safe Args nie ulega już awarii podczas próby wygenerowania właściwości kierunku w Kotlin. (Id2416, b/188564435)

  • Metoda setId w NavDestination jest teraz prawidłowo opatrzona adnotacjami @IdRes, więc akceptuje tylko identyfikatory zasobów. (I69b80)

  • Parametr int obiektu findNode to teraz resId, a nie resid. (I7711d)

Aktualizacja zależności

  • Usługa Safe-Args zależy teraz od wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie dotyczące używania applicationIdTextResource nie powinno już się pojawiać. (I6d67b, b/172824579)

Wersja 2.4.0-alfa01

18 maja 2021 r.

Aplikacja androidx.navigation:navigation-*:2.4.0-alpha01 została zwolniona. Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Metoda currentBackStackEntryAsFlow() w NavController dostarcza Flow, który jest emitowany po każdej zmianie bieżącego parametru NavBackStackEntry. Tego procesu można użyć jako alternatywy dla ręcznego zarządzania elementem OnDestinationChangedListener. (I19c4a, #89, b/163947280)

Wiele wstecznych stosów

Kontroler NavController odpowiada za zarządzanie wstecznym stosem miejsc docelowych, dodawanie do niego miejsc docelowych po navigate() do nich i usuwanie ich po wywołaniu funkcji popBackStack() lub wywołaniu przycisku Wstecz w systemie. Istniejąca klasa NavOptions i integracja z wpisami <action> w pliku XML wykresu nawigacyjnego zostały rozszerzone, aby umożliwić zapisywanie i przywracanie stosu. (b/80029773)

W związku z tą zmianą metody NavigationUI w onNavDestinationSelected(), BottomNavigationView.setupWithNavController() i NavigationView.setupWithNavController() automatycznie zapisują i przywracają stan miejsc docelowych z wyprzedzeniem, co zapewnia obsługę wielu stosów wstecznych bez wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami fragmentowymi jest to zalecany sposób integracji z wieloma stosami wstecznymi. (Ie07ca)

Podstawowe interfejsy API do zapisywania i przywracania stanu są dostępne na kilku platformach:

  • W pliku XML Nawigacji element <action> może teraz korzystać z atrybutów logicznych app:popUpToSaveState i app:restoreState, aby zapisać stan miejsc docelowych otwieranych przez app:popUpTo i przywrócić stan powiązany z miejscem docelowym przekazanym jako app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • W navOptions Kotlin DSL możesz dodać właściwość wartości logicznej restoreState i właściwość wartości logicznej saveState w konstruktorze popUpTo:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • Podczas ręcznego tworzenia obiektu NavOptions za pomocą NavOptions.Builder możesz użyć setRestoreState() i nowego przeciążenia dla setPopUpTo(), które wymaga dodatkowego parametru saveState.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • Automatyczne wywołania funkcji popBackStack() mogą teraz zawierać dodatkowy parametr saveState.

We wszystkich przypadkach NavController zapisze i przywróci stan każdego elementu NavBackStackEntry, w tym dowolnego miejsca docelowego nawigacji o zakresie ViewModel. Interfejsy API Navigator zostały zaktualizowane, aby umożliwić użytkownikom zapisywanie i przywracanie własnego stanu w przypadku każdego komponentu Navigator.

Interfejs ComposeNavigator używany w przypadku miejsc docelowych composable w tworzeniu nawigacji oraz interfejsy FragmentNavigator i DynamicFragmentNavigator używane na potrzeby miejsc docelowych <fragment> w nawigacji z fragmentami zostały zaktualizowane, tak by korzystały z nowych interfejsów API nawigacji i obsługowały zapisywanie i przywracanie stanu.

Trasy nawigacyjne

Trasa to atrybut String, który jednoznacznie identyfikuje miejsce docelowe. Pojęcie to było używane wcześniej tylko w przypadku tworzenia nawigacji, ale teraz jest jednym z podstawowych interfejsów API nawigacji. Jest to alternatywa dla identyfikatorów w postaci liczb całkowitych do tworzenia wykresu za pomocą interfejsu nawigacyjnego Kotlin DSL. (b/172823546)

Wszystkie interfejsy API, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które pobiera trasę String. Dotyczy to m.in. navigate(), popBackStack(), popUpTo() i getBackStackEntry().

Miało to wpływ na interfejs API:

  • Właściwość kotlin popUpTo w strefie DSL Kotlin została wycofana i zastąpiona usługą popUpToId. (I59c73, b/172823546)
  • Interfejs getStartDestination() API został wycofany i zastąpiony przez getStartDestinationId(). (I0887f, b/172823546)

Dla deweloperów, którzy przechodzą z poprzednich wersji Nawigacji tworzenia wiadomości na Nawigację do tworzenia wiadomości 2.4.0-alpha01, oznacza to, że poniższe importowanie metod rozszerzeń nie jest już konieczne i należy je usunąć:

import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo

Argument KEY_ROUTE został zastąpiony właściwością route w tabeli NavDestination, co umożliwia bezpośrednie wywoływanie funkcji navBackStackEntry.destination.route.

Zmiany w interfejsie API

  • Wszystkie artefakty nawigacji zostały przepisane w Kotlin. Poprawia to wartość null klas korzystających z klas ogólnych (takich jak NavType podklas). Wszystkie funkcje rozszerzenia Kotlin, które były częścią artefaktów -ktx, zostały przeniesione do odpowiednich głównych artefaktów. Artefakty -ktx będą nadal publikowane, ale będą całkowicie puste. (b/184292145)
  • NavDeepLinkBuilder obsługuje teraz dodawanie wielu różnych miejsc docelowych do wygenerowanego stosu zwrotnego. (I3ee0d, b/147913689)
  • Dodaj funkcje fabryczne urządzenia DynamicNavHostFragment (Icd515, b/175222619)
  • Unikalny identyfikator obiektu NavBackStackEntry jest teraz widoczny w ramach publicznego interfejsu API. (Ie033a)
  • Pola name i argument oraz funkcje niszczenia struktury NamedNavArgument są teraz dostępne publicznie. (#174, b/181320559)
  • Wprowadziliśmy nowe rozszerzenie NavBackStackEntry#provideToCompositionLocals, które udostępnia NavBackStackEntry odpowiednim lokalnym kompozycjom. (#175, b/187229439)

Bezpieczne argumenty

  • Safe Args generuje teraz metodę fromSavedStateHandle() dla każdej klasy NavArgs. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Zaktualizowano Bezpieczne argumenty, aby zależały od elementu 1.8.0 KotlinPoet. (#172, b/183990444)

Zmiany w działaniu

  • Nawigacja zależy teraz od cyklu życia 2.3.1 i oznacza teraz setGraph(), popBackStack(), navigateUp() i navigate() metody, które aktualizują parametr NavBackStackEntry Lifecycle jako @MainThread, dopasowując nawigację do egzekwowania zasad w wątku głównym wprowadzonego w cyklu życia 2.3.0. (b/171125856)
  • Podczas analizowania argumentów Enum z precyzyjnych linków wielkość liter nie jest teraz rozróżniana, dzięki czemu precyzyjny link taki jak http://www.example.com/red może dopasować precyzyjny link www.example.com/{color}, nawet jeśli wyliczenie ma wartość RED. (#152, b/135857840)

Zgodność z wiadomością

  • Funkcja androidx.navigation:navigation-compose:2.4.0-alpha01 jest zgodna tylko z funkcją Utwórz w wersji 1.0.0-beta07 i nowszych.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że obiekty zastępcze argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami, które mają pasujący ściśle sufiks. (#153, b/184072811)
  • NavHostFragment obsługuje teraz niestandardowych nawigatorów, którzy korzystają z tych samych wartości @Navigator.Name("dialog") co domyślny obiekt DialogFragmentNavigator. (Ib1c2c, b/175979140)
  • Poprawiliśmy działanie funkcji NavigatorProvider#addNavigator, by wielokrotne wywoływanie jej z tą samą instancją nie powodowało problemów. (#176, b/187443146)

Treści opublikowane przez użytkowników z zewnątrz

  • Dziękujemy, simonschiller za wprowadzenie obsługi Safe Args generującej metodę fromSavedStateHandle() dla każdej klasy NavArgs. (#122, b/136967621)
  • Dziękujemy Bradleycorn za analizę wielkości argumentów Enum w precyzyjnych linkach bez rozróżniania wielkości liter. (#152, b/135857840)
  • Dziękujemy za rozwiązanie osipxd za rozwiązanie problemu, w wyniku którego obiekty zastępcze argumentów końcowych miałyby pierwszeństwo przed precyzyjnymi linkami, które mają pasujący sufiks. (#153, b/184072811)
  • Dziękujemy, tatocaster za zaktualizowanie funkcji Bezpieczne argumenty w celu dopasowania do niej: 1.8.0 z KotlinPoet. (#172, b/183990444)
  • Dziękujemy jossiwolf za udostępnienie pól name i argument oraz zniszczenie funkcji NamedNavArgument. (#174, b/181320559)
  • Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia NavBackStackEntry#provideToCompositionLocals, które udostępnia element NavBackStackEntry odpowiednim lokalnym kompozycjom. (#175, b/187229439)
  • Dziękujemy, jossiwolf za poprawienie działania usługi NavigatorProvider#addNavigator i upewnienie się, że wielokrotne wywoływanie tego samego wystąpienia z tym samym wystąpieniem nie powoduje problemów. (#176, b/187443146)

Wersja 1.0.0-alfa10

7 kwietnia 2021 r.

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha10 została zwolniona. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • NavHost akceptuje teraz element Modifier, który jest przekazywany do kontenera kompozycyjnego, który opakowuje docelowe elementy kompozycyjne. (I85aca, b/175125483)

Poprawki błędów

  • NavHost działa teraz nawet wtedy, gdy nie można znaleźć elementu OnBackPressedDispatcherOwner, tak jak ma to miejsce podczas wyświetlania podglądu elementu NavHost. (I7d8b4)
  • Tworzenie wiadomości związanych z nawigacją zależy teraz od Nawigacji 2.3.5. Rozwiązaliśmy problem występujący podczas korzystania z funkcji BackHandler w miejscu docelowym NavHost. (I7e63b, b/182284739)

Wersja 1.0.0-alfa09

10 marca 2021 r.

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha09 została zwolniona. Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • LocalViewModelStoreOwner.current zwraca teraz wartość ViewModelStoreOwner dopuszczającą wartość null, aby lepiej określić, czy element ViewModelStoreOwner jest dostępny w bieżącej kompozycji. Interfejsy API, które wymagają żądania ViewModelStoreOwner, takie jak viewModel() i NavHost, nadal zgłaszają wyjątek, jeśli ViewModelStoreOwner nie jest ustawiony. (Idf39a).

Poprawki błędów

  • Tworzenie nawigacji zależy teraz od Nawigacji 2.3.4, która zawiera poprawkę uniemożliwiającą ustawienie tego samego obiektu ViewModelStore po ustawieniu wykresu. (I65c24, b/177825470)

Wersja 1.0.0-alfa08

24 lutego 2021 r.

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha08 została zwolniona. Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Nowe funkcje

  • NavHost uzupełnia teraz pole CompositionLocal LocalSavedStateRegistryOwner o NavBackStackEntry tego miejsca docelowego, dzięki czemu każdy stan bezpośrednio zapisany w elemencie SavedStateRegistry zostanie zapisany i przywrócony razem z miejscem docelowym. (I435d7, b/179469431)

Wersja 1.0.0-alfa07

10 lutego 2021 r.

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha07 została zwolniona. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.

Aktualizacje zależności

Wersja 1.0.0-alfa06

28 stycznia 2021 roku

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha06 została zwolniona. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • W elemencie NavController dodano metodę rozszerzenia getBackStackEntry(route: String), która zwraca powiązaną z nimi wartość NavBackStackEntry. (If8931)

Wersja 1.0.0-alfa05

13 stycznia 2021 r.

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha05 została zwolniona. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.

Zaktualizowano pod kątem tworzenia wiadomości w wersji 1.0.0-alfa10.

Wersja 1.0.0-alfa04

16 grudnia 2020 roku

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha04 została zwolniona. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.

  • Zaktualizowano pod kątem zgodności z opcją 1.0.0-alpha09 tworzenia wiadomości.

Wersja 1.0.0-alfa03

Grudzień 2, 2020

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha03 została zwolniona. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcje popBackStack() i navigateUp() nie działały po zmianie konfiguracji lub przeprowadzeniu procesu śmierci i przywracania. (Icea47, b/173281473)
  • Przechodzenie do zagnieżdżonego wykresu w NavHost działa teraz prawidłowo. (I0948d, b/173647694)

Wersja 1.0.0-alfa02

11 listopada 2020 roku

Aplikacja androidx.navigation:navigation-compose:1.0.0-alpha02 została zwolniona. Wersja 1.0.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Nawigacja do tworzenia wiadomości obsługuje teraz opcje NavOptions w przypadku korzystania z operacji popUpTo i uruchamianiaSingleTop (If96c3, b/171468994).
  • Dodaliśmy funkcję nawigacyjną, która wybiera trasę zamiast identyfikatora, który umożliwia tworzenie zagnieżdżonych wykresów w DSL Nawigacji. (I1661d)
  • startDestination znajduje się teraz przed trasą na liście parametrów NavHost (Ie620e)
  • Teraz możesz utworzyć wykres, używając trasy jako miejsca docelowego poza obiektem kompozycyjnym NavHost. (Iceb75)

Wersja 1.0.0-alfa01

28 października 2020 r.

Aplikacja android.navigation:navigation-compose:1.0.0-alpha01 została zwolniona. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

Artefakt navigation-compose umożliwia integrację komponentu nawigacji z Jetpack Compose. Funkcja ta używa funkcji @Composable jako miejsc docelowych w aplikacji.

Ta wstępna wersja zapewnia:

  • Obiekt kompozycyjny NavHost, który umożliwia tworzenie wykresów nawigacyjnych przy użyciu DSL Kotlin.
  • Zakres cyklu życia, ViewModel i zapamiętany stan na poziomie miejsca docelowego.
  • Automatyczna integracja z systemowym przyciskiem Wstecz.
  • Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych i zwracania wyniku do poprzednich miejsc docelowych.
  • Utwórz określone elementy pomocnicze w językach rememberNavController() i currentBackStackEntryAsState(), aby umożliwić stan podnoszenia i połączyć element NavController z elementami kompozycyjnymi poza elementem NavHost (takim jak dolny pasek nawigacyjny).

Więcej informacji znajdziesz w przewodniku po nawigacji w trakcie tworzenia wiadomości.

Wersja 2.3.5

Wersja 2.3.5

7 kwietnia 2021 r.

Aplikacja androidx.navigation:navigation-*:2.3.5 została zwolniona. Wersja 2.3.5 zawiera te zatwierdzenia.

Nowe funkcje

  • Podczas nawigacji za pomocą elementów NavDeepLinkRequest lub Uri możesz teraz uzyskać dostęp do typu Uri, działania i MIME w wynikowym miejscu docelowym, uzyskując intencję z argumentów za pomocą KEY_DEEP_LINK_INTENT, powielając funkcje dostępne w przypadku zewnętrznych precyzyjnych linków. (I975c3, b/181521877)

Poprawki błędów

  • Parametr OnBackPressedCallbacks został dodany do dyspozytora, którego wartość NavBackStackEntry jako właściciela cyklu życia jest teraz prawidłowo przechwycona, gdy cykl życia aktywności wynosi STOPPED, a następnie STARTED (Iff94f, b/182284739)
  • W analizie domeny precyzyjnego linku nie jest teraz rozróżniana wielkość liter, dzięki czemu www.example.com pasuje zarówno do pola www.example.com, jak i do www.Example.com. Pamiętaj, że w nazwach parametrów zapytań nadal jest rozróżniana wielkość liter. (#144, b/153829033)
  • Naprawiliśmy błąd NullPointerException, który mógł występować, gdy miejsce docelowe ma wiele niedopuszczalnych wartości zerowych, a Ty przejdziesz do tego miejsca docelowego, zastępując tylko podzbiór tych argumentów. (Aosp/1644827)

Aktualizacje zależności

  • Wtyczka Nawigacja Safe Args Gradle korzysta teraz z wtyczki Kotlin Gradle w wersji 1.4.31. (Aosp/1661058, b/181156413)

Wkład z zewnątrz

  • Dziękujemy za bentrengrove za żądanie pull, w którym przy analizie domeny precyzyjnego linku nie jest rozróżniana wielkość liter. (#144, b/153829033)

Wersja 2.3.4

Wersja 2.3.4

10 marca 2021 r.

Aplikacja androidx.navigation:navigation-*:2.3.4 została zwolniona. Wersja 2.3.4 zawiera te zatwierdzenia.

Nowe funkcje

  • Argumenty ReferenceType można teraz prawidłowo analizować, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. Obsługuje zarówno nieprzetworzoną liczbę całkowitą, jak i wartości szesnastkowe poprzedzone znakiem 0x. (#127, b/179166693)
  • Funkcja android:defaultValue dla argumentu z wartością app:argType="float" obsługuje teraz domyślne wartości całkowite, dzięki czemu możesz używać android:defaultValue="0" zamiast wymagać korzystania z 0.0. (#117, b/173766247)

Poprawki błędów

  • Rozwiązano problem zatrzymujący się procesu instalacji podczas korzystania z funkcji dynamicznych Nawigacji. (Ib27a7, b/169636207)
  • Wywołanie setViewModelStore lub setLifecycleOwner z tym samym obiektem, który został już ustawiony, nie będzie działać (Idf491, b/177825470).
  • Komponent Safe-Args dodaje teraz funkcję blokowania adnotacji do odpowiednich metod podczas korzystania z języka Java. (I8fbc5, b/179463137)

Treści opublikowane przez użytkowników z zewnątrz

  • Dziękujemy JvmName za prośbę o przeciąganie. Dzięki temu argumenty ReferenceType mogą być teraz prawidłowo analizowane, gdy są wysyłane jako część identyfikatora URI precyzyjnego linku. (#127, b/179166693)
  • Dziękujemy tatocaster za żądanie pull zezwalające na użycie argumentu defaultValue dla argumentu app:argType=”float” obsługujące teraz domyślne wartości całkowite. (#117, b/173766247)

Wersja 2.3.3

Wersja 2.3.3

27 stycznia 2021 r.

Aplikacja androidx.navigation:navigation-*:2.3.3 została zwolniona. Wersja 2.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Nie ma już awarii podczas wywoływania elementu NavBackStackEntry, zanim element Lifecycle zostanie przeniesiony do CREATED. (Ie3ba3)
  • Poprawiono regresję wywołaną przez parametr b/171364502, w którym przejście do działania o wartości zasobu animacji 0 spowodowało wystąpienie błędu ResourceNotFoundException. (I7aedb, b/176819931)

Wersja 2.3.2

Wersja 2.3.2

Grudzień 2, 2020

Aplikacja androidx.navigation:navigation-*:2.3.2 została zwolniona. Wersja 2.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy regresję w usłudze NavigationUI, która powodowała, że użycie miejsca docelowego <activity> z onNavDestinationSelected nie powodowało przejścia do aktywności. (I22e34, b/171364502)
  • Rozwiązaliśmy problem, który powodował, że navigation-dynamic-features-fragment wielokrotnie przenosił do nowo zainstalowanego miejsca docelowego. (Aosp/1486056, b/169636207)
  • Rozwiązaliśmy problem, który powodował, że podczas korzystania z metody launchSingleTop do instancji OnDestinationChangedListener nie były wysyłane argumenty domyślne. (I2c5cb)
  • Naprawiono błąd, który powodował, że przejście do zagnieżdżonego wykresu nawigacyjnego nie powodowało utworzenia nowego wystąpienia wykresu na stosie tylnym. (Ifc831)
  • Naprawiono błąd, który powodował, że użycie polecenia navigate() z obiektem popUpTo usuwającym ostatnie miejsce docelowe na wykresie nawigacyjnym nie powodowało od razu zniszczenia i usunięcia wykresu nawigacyjnego z wstecznego stosu. (I910a3)
  • Nawigacja SafeArgs korzysta teraz z aplikacji KotlinPoet w wersji 1.7.2, która dodaje obsługę jawnego trybu interfejsu API Kotlin. (I918b5)
  • NavHostFragment.findNavController(Fragment) Sprawdza teraz również główny widok wystroju okna DialogFragment, poza istniejącymi kontrolami hierarchii Fragmentu i hierarchii widoków Fragment. Umożliwia to testowanie fragmentów okien dialogowych, które używają nawigacji z elementami FragmentScenario i Navigation.setViewNavController(). (I69e0d)

Wersja 2.3.1

Wersja 2.3.1

14 października 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.1 została zwolniona. Wersja 2.3.1 zawiera te zatwierdzenia.

Nowe funkcje

  • Do interfejsu nawigacji dodaliśmy domyślne zasoby animatora, które są zalecane zamiast domyślnych zasobów animacji. (b/167430145)
  • NavOptions zastępuje teraz kod skrótu i metody równania (b/161586466).
  • Nawigacja umieszcza teraz aktualne miejsce docelowe w elemencie IllegalArgumentException o nazwie „Brak miejsca docelowego o identyfikatorze”. Powinno to usprawnić debugowanie programistów. (b/168311416)

Poprawki błędów

  • Bezpieczne argumenty nie będą już zawijać wiersza zwrotnego, nawet jeśli wygenerowana nazwa klasy argumentu ma więcej niż 100 znaków. (b/168584987)

Zmiany zależności

  • navigation-ui zależy teraz od DrawerLayout 1.1.1, dzięki czemu NavigationUI może otworzyć panel nawet wtedy, gdy używasz LOCK_MODE_LOCKED_CLOSED lub LOCK_MODE_LOCKED_OPEN. (b/162253907)
  • Bezpieczne argumenty zależą teraz od wersji KotlinPoet 1.6.0 (Aosp/1435911)
  • Bezpieczne argumenty zależą teraz od wersji AGP 4.0.1 (aosp/1442337)

Wersja 2.3.0

Wersja 2.3.0

24 czerwca 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0 została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.2.0

  • Integracja modułu funkcji: artefakty navigation-dynamic-features-runtime i navigation-dynamic-features-fragment umożliwiają przechodzenie do miejsc docelowych zdefiniowanych w modułach funkcji, co pozwala na automatyczną obsługę instalacji modułów funkcji w razie potrzeby. Więcej informacji znajdziesz w artykule Nawigowanie z modułami funkcji.
  • Testowanie nawigacji: artefakt navigation-testing udostępnia element TestNavHostController, który umożliwia ustawienie bieżącego miejsca docelowego i weryfikację stosu wstecznego po operacjach nawigacji. Więcej informacji znajdziesz w artykule Testowanie nawigacji.
  • Zwracanie wyniku: właściwość NavBackStackEntry powiązana z każdym miejscem docelowym w stosie wstecznym nawigacji umożliwia teraz dostęp do SavedStateHandle odpowiedniego do przechowywania niewielkich ilości zapisanych informacji o stanie, które powinny być powiązane z konkretnym wpisem stosu wstecznego. Więcej informacji znajdziesz w sekcji Zwracanie wyniku do poprzedniego miejsca docelowego.
  • Obsługa protokołu NavigationUI w Openable: wszystkie przypadki użycia DrawerLayout w NavigationUI zostały zastąpione bardziej ogólnym interfejsem Openable dodanym w widoku CustomView 1.1.0 i zaimplementowanym przez DrawerLayout w Układie rysunkowym 1.1.0.
  • Obsługa działań i typów MIME w precyzyjnych linkach: oprócz dotychczasowych dostępnych app:uri precyzyjnych linków możesz teraz korzystać z funkcji app:action i app:mimeType. NavController obsługuje teraz nawigowanie przy użyciu dowolnej kombinacji tych pól za pomocą nowej klasy NavDeepLinkRequest. Więcej informacji znajdziesz w artykule Nawigowanie przy użyciu NavDeepLinkRequest.

Znane problemy

  • W przypadku scalania plików manifestu nie jest jeszcze dostępna obsługa działań precyzyjnych linków i typów MIME. Dopóki nie wykonasz tych czynności, żadne elementy <intent-filter> wygenerowane z elementu <nav-graph> w pliku manifestu nie będą zawierały typu MIME w elemencie <data> ani w niestandardowym elemencie <action>. Musisz ręcznie dodać do pliku manifestu odpowiednią wartość <intent-filter>.

Wersja 2.3.0-rc01

10 czerwca 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-rc01 została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy NullPointerException podczas zastępowania instancji miejsca docelowego bez argumentów inną instancją z argumentami singleTop. (b/158006669)
  • Wszystkie wyjątki destination is unknown zgłoszone przez NavController zawierają teraz dodatkowe informacje na potrzeby debugowania, które pomagają określić stan obiektu NavController. (b/157764916)

Wersja 2.3.0-beta01

20 maja 2020 r.

androidx.navigation:navigation-*:2.3.0-beta01 zostało zwolnione. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że po śmierci procesu Lifecycle wartość NavBackStackEntry nie była prawidłowo aktualizowana. (b/155218371)
  • OnDestinationChangedListener instancje zarejestrowane przed wywołaniem setGraph() są teraz prawidłowo wysyłane do przywróconego miejsca docelowego po zakończeniu procesu. (b/155218371)
  • Gdy używasz funkcji singleTop, argumenty NavBackStackEntry są teraz prawidłowo aktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancji OnDestinationChangeListener. (b/156545508)

Aktualizacje zależności

Wersja 2.3.0-alfa06

29 kwietnia 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha06 została zwolniona. (Wersja 2.3.0-alpha06 zawiera te zatwierdzenia).

Nowe funkcje

  • Precyzyjne linki zostały rozszerzone o obsługę app:action i app:mimeType, a nie tylko app:uri dostępne wcześniej. NavController obsługuje teraz nawigację przy użyciu dowolnej kombinacji tych pól za pomocą nowej klasy NavDeepLinkRequest. (b/136573074, b/135334841)

Zmiany w interfejsie API

  • Znacznie rozszerzono obsługę DSL w usłudze Kotlin dla miejsc docelowych w dynamicznej nawigacji. (b/148969800)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że intencje precyzyjnych linków były ignorowane przy korzystaniu z zagnieżdżonego miejsca docelowego na początku. (b/154532067)

Wersja 2.3.0-alfa05

15 kwietnia 2020 roku

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha05 została zwolniona. Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • W przypadku wykresu dynamicznego obejmuje wartości <include-dynamic>, nie musisz już określać wartości app:graphPackage. Zamiast niej po kropce dodaj przyrostek moduleName do elementu applicationId. Jeśli chcesz dostosować element graphPackage, możesz teraz użyć obiektu zastępczego ${applicationId}. (b/152696768)
  • Wykres nawigacyjny Kotlin DSL udostępnia teraz defaultArguments Map dla działań, odzwierciedlając możliwość ustawiania wartości domyślnych elementów <action> w plikach XML nawigacji. (b/150345605)

Poprawki błędów

  • Od Nawigacji 2.2.2: poprawiliśmy IllegalStateException w przypadku korzystania z precyzyjnego linku do początkowego miejsca docelowego wykresu, jeśli w aktywności występuje wiele wystąpień NavHostFragment. (b/147378752)

Aktualizacje zależności

Wersja 2.3.0-alfa04

18 marca 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha04 została zwolniona. Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę miejsc docelowych aktywności modułu funkcji i fragmentów w DSL nawigacji Kotlin. (b/148969800)

Zmiany w interfejsie API

  • Klasa DynamicExtras nie korzysta już z wzorca konstruktora i można ją teraz konstruować bezpośrednio. (Aosp/1253671)
  • DynamicActivityNavigator przyjmuje teraz w konstruktorze Context, a nie Activity. (Aosp/1250252)

Poprawki błędów

  • NavigationUI nie ignoruje już pustych etykiet (tj. miejsca docelowego z android:label=””) i teraz prawidłowo ustawia pusty ciąg znaków w tytule. (b/148679860)

Aktualizacje zależności

  • Artefakty funkcji dynamicznych nawigacji zależą teraz od systemu Play Core 1.6.5. (b/149556401)

Wersja 2.3.0-alfa03

4 marca 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha03 została zwolniona. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zamiast korzystać z konkretnej klasy DrawerLayout, AppBarConfiguration korzysta teraz z interfejsu Openable wprowadzonego w CustomView 1.1.0-alpha02 (jest on implementowany przez DrawerLayout od DrawerLayout 1.1.0-alpha04), co umożliwia korzystanie z niestandardowych implementacji Openable w NavigationUI. (b/129030452)

Poprawki błędów

  • Reguły ProGuard navigation-common-ktx teraz prawidłowo zachowują tylko używane klasy NavArgs, a nie wszystkie instancje NavArgs. (b/150213558)

Zmiany zależności

  • Nawigacja cofnęła zależność od podstawowego 1.2.0, a teraz zależy od wersji Core 1.1.0, aby uniknąć zmuszenia deweloperów do przejścia na nowszą zależność, gdy nawigacja nie wymaga nowych interfejsów API w podstawowym interfejsie 1.2.0.

Wersja 2.3.0-alfa02

19 lutego 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha02 została zwolniona. Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • NavBackStackEntry umożliwia teraz dostęp do SavedStateHandle odpowiedniego do przechowywania niewielkich ilości zapisanego stanu, który powinien być powiązany z konkretnym wpisem stosu wstecznego. Przykładowy przypadek użycia znajdziesz w sekcji Zwracanie wyniku. (b/79672220)

Zmiany w interfejsie API

  • Aby ułatwić pobieranie tych wartości (NavBackStackEntry) dla bieżących i poprzednich miejsc docelowych, dodaliśmy wygodne metody getCurrentBackStackEntry() i getPreviousBackStackEntry(). (b/79672220)

Poprawki błędów

  • Podczas uruchamiania aplikacji we własnym stosie zadań navigateUp() przekazuje teraz argumenty bieżącego miejsca docelowego i element KEY_DEEP_LINK_INTENT do poprzedniego miejsca docelowego. (b/147456890)

Zmiany zależności

Wersja 2.3.0-alfa01

5 lutego 2020 r.

Aplikacja androidx.navigation:navigation-*:2.3.0-alpha01 została zwolniona. Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Nowy artefakt navigation-testing udostępnia klasę TestNavHostController. Ta klasa jest alternatywą dla użycia testowego NavController do testowania nawigacji, która umożliwia ustawienie bieżącego miejsca docelowego i weryfikację stosu wstecznego po operacjach nawigacji. (b/140884273)
  • Nowa navigation-dynamic-features-fragment (i jej zależność przechodniowa, navigation-dynamic-features-runtime) umożliwia uwzględnianie miejsc docelowych lub całych wykresów nawigacji (za pomocą <include-dynamic>) z modułów funkcji, co zapewnia bezproblemową instalację modułów funkcji na żądanie podczas przechodzenia do tych miejsc docelowych. Więcej informacji znajdziesz w artykule Nawigowanie z modułami funkcji. (b/132170186)

Poprawki błędów

  • Z nawigacji 2.2.1: precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do końcowych elementów {argument} lub nie pasują do precyzyjnego linku. (b/147447512)
  • Z Nawigacji 2.2.1: reguły ProGuard navigation-ui dla elementu DrawerArrowDrawable zostały zaktualizowane, aby pole android.enableJetifier=true nie jest wymagane. (b/147610424)
  • Z obszaru Nawigacja 2.2.1: moduł navigation-common-ktx ma teraz unikalną nazwę pakietu manifestu zamiast tej samej nazwy co navigation-runtime-ktx. (Aosp/1141947)

Aktualizacje zależności

Wersja 2.2.2

Wersja 2.2.2

15 kwietnia 2020 roku

androidx.navigation:navigation-*:2.2.2 zostało zwolnione. Wersja 2.2.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy IllegalStateException w przypadku korzystania z precyzyjnych linków do początkowej lokalizacji docelowej wykresu, jeśli w aktywności występuje wiele wystąpień NavHostFragment. (b/147378752)
  • NavigationUI nie ignoruje już pustych etykiet (tj. miejsca docelowego z android:label=””) i teraz prawidłowo ustawia pusty ciąg znaków w tytule. Ta funkcja była już opublikowana w sekcji Nawigacja 2.3.0-alfa04. (b/148679860)
  • Reguły ProGuard navigation-common-ktx teraz prawidłowo zachowują tylko używane klasy NavArgs, a nie wszystkie instancje NavArgs. Ta funkcja była już opublikowana w sekcji Nawigacja 2.3.0-alpha03. (b/150213558)

Aktualizacje zależności

Wersja 2.2.1

Wersja 2.2.1

5 lutego 2020 r.

Aplikacja androidx.navigation:navigation-*:2.2.1 została zwolniona. Wersja 2.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do końcowych elementów {argument} lub niepasować do precyzyjnego linku. (b/147447512)
  • Reguły ProGuard navigation-ui dla: DrawerArrowDrawable zostały zaktualizowane, aby ustawienie android.enableJetifier=true nie jest wymagane. (b/147610424)
  • Moduł navigation-common-ktx ma teraz unikalną nazwę pakietu manifestu zamiast tej samej nazwy pakietu co navigation-runtime-ktx. (Aosp/1141947)

Aktualizacje zależności

Wersja 2.2.0

Wersja 2.2.0

22 stycznia 2020 r.

Aplikacja androidx.navigation:navigation-*:2.2.0 została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.1.0

  • NavBackStackEntry: możesz teraz wywołać NavController.getBackStackEntry(), przekazując identyfikator miejsca docelowego lub wykresu nawigacyjnego na stosie wstecznym. Zwracany obiekt NavBackStackEntry oprócz argumentów używanych do uruchomienia miejsca docelowego zawiera też właściwości LifecycleOwner, ViewModelStoreOwner (takie same jak zwracane przez metodę NavController.getViewModelStoreOwner()) oraz SavedStateRegistryOwner.
  • Integracja z zapisanym stanem widoku modelu cyklu życia: domyślna fabryka używana w przypadku korzystania z by navGraphViewModels() lub konstruktora ViewModelProvider z wartością ViewModelStoreOwner zwracaną przez NavController.getBackStackEntry() lub NavController.getViewModelStoreOwner().SavedStateViewModelFactory
  • Obsługa parametrów zapytania w precyzyjnych linkach: precyzyjne linki z parametrami zapytania obsługują teraz kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub dopuszczają wartości null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków.
  • Ulepszona obsługa animacji: NavHostFragment używa teraz parametru FragmentContainerView z Fragmentu 1.2.0, aby rozwiązać problemy z z-orderem animacji i wysyłanie wstawionych okien do fragmentów kodu.

Wersja 2.2.0-rc04

18 grudnia 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-rc04 została zwolniona. Wersja 2.2.0-rc04 zawiera te zatwierdzenia.

Poprawki błędów

  • Dostosowano domyślne animacje zanikania używane przez navigation-ui, tak aby pasowały do zmienionych animacji zanikania we Fragmentu 1.2.0-rc04. (b/145769814)

Wersja 2.2.0-rc03

4 grudnia 2019

Aplikacja androidx.navigation:navigation-*:2.2.0-rc03 została zwolniona. Wersja 2.2.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z analizowaniem precyzyjnych linków w przypadku używania parametrów zapytania i argumentu jako ostatniej części ścieżki, który uniemożliwiał analizę więcej niż 1 znaku końcowego argumentu ścieżki. (b/144554689)
  • Rozwiązaliśmy problem z analizą precyzyjnych linków, w wyniku którego parametry opcjonalne otrzymywały wartość "@null" zamiast null. (b/141613546)
  • Funkcja NavHostFragment prawidłowo przywraca wykres po zmianie konfiguracji w połączeniu z zasadą FragmentContainerView. (b/143752103)

Zmiany zależności

  • Nawigacja zależy teraz od ustawień cyklu życia 2.2.0-rc03, modelu widoku cyklu życia SavedState 1.0.0-rc03, aktywności 1.1.0-rc03 oraz fragmentu 1.2.0-rc03 (w odpowiednich przypadkach).

Wersja 2.2.0-rc02

7 listopada 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-rc02 została zwolniona. Wersja 2.2.0-rc02 zawiera te zatwierdzenia.

Zmiany zależności

  • Nawigacja zależy teraz od systemu androidx.lifecycle 2.2.0-rc02.

Wersja 2.2.0-rc01

23 października 2019 r.

Wersja androidx.navigation:navigation-*:2.2.0-rc01 została udostępniona bez zmian od 2.2.0-beta01. Wersja 2.2.0-rc01 zawiera te zatwierdzenia.

Wersja 2.2.0-beta01

9 października 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-beta01 została zwolniona. Wersja 2.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • NavDestination i jego podklasy zastępują teraz toString(), aby podczas debugowania udostępniać bardziej przydatne informacje. (b/141264986)

Zmiany w działaniu

  • Dodatkowe parametry zapytania są teraz ignorowane podczas dopasowywania precyzyjnych linków, a nie powoduje błędy dopasowania. (b/141482822)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że argumenty w ścieżce precyzyjnego linku były ignorowane, jeśli określono również parametry zapytania. (b/141505755)
  • Rozszerzenie navArgs() Kotlin w witrynie Activity ma teraz lepszy komunikat o błędzie, jeśli nie ma dodatkowych elementów. (b/141408999)
  • Wygenerowane przez bezpieczne argumenty klasy Java Directions zawierają teraz wartości domyślne. (b/141099045)
  • Wygenerowane przez bezpieczne argumenty klasy Java Args zawierają teraz wartości domyślne. (b/140123727)
  • Gdy używasz interfejsu Toolbar, NavigationUI nie animuje już zmiany tekstu podczas przechodzenia między 2 miejscami docelowymi najwyższego poziomu. (b/140848160)

Wersja 2.2.0-alfa03

18 września 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-alpha03 została zwolniona. Wersja 2.2.0-alpha03 zawiera te zatwierdzenia.

Zmiany w działaniu

  • Połączenie z numerem setViewModelStore() po połączeniu z numerem setGraph powoduje teraz IllegalStateException. Powinna ona zawsze być ustawiana przez NavHost w ramach początkowej konfiguracji, aby mieć pewność, że wszystkie instancje NavBackStackEntry będą miały spójne miejsce na dane dla ViewModel instancji. (Aosp/1111821)

Poprawki błędów

  • Naprawiliśmy błąd ConcurrentModificationException w przypadku używania instancji ViewModel połączonych z wieloma różnymi instancjami typu ViewModelStore z wykresem nawigacyjnym. (Aosp/1112257)

Wersja 2.2.0-alfa02

5 września 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-alpha02 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Precyzyjne linki z parametrami zapytania obsługują teraz kolejność parametrów zapytania. Argumenty, które mają wartość domyślną lub dopuszczają wartości null, są teraz opcjonalne podczas dopasowywania precyzyjnych linków. (b/133273839)
  • Możesz teraz wywołać NavController.getBackStackEntry(), przesyłając identyfikator miejsca docelowego lub wykresu nawigacyjnego na stosie tylnym. Zwracany obiekt NavBackStackEntry oprócz argumentów używanych do uruchomienia miejsca docelowego zawiera też właściwości LifecycleOwner, ViewModelStoreOwner (takie same jak zwracane przez metodę NavController.getViewModelStoreOwner()) oraz SavedStateRegistryOwner. (Aosp/1101691, aosp/1101710)

Poprawki błędów

  • Naprawiono błąd, który powodował, że dodanie elementu NavHostFragment do obiektu ViewPager2 nie powiodło się z powodu błędu IllegalArgumentException. (b/133640271)
  • Operator NavInflater unika teraz niepotrzebnych połączeń z numerem getResourceName(), co skraca czas inflacji nawet o 40%. (b/139213740)

Wersja 2.2.0-alfa01

7 sierpnia 2019 r.

Aplikacja androidx.navigation:navigation-*:2.2.0-alpha01 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • SavedStateViewModelFactory jest teraz domyślną fabryką używaną w przypadku użycia by navGraphViewModels() lub konstruktora ViewModelProvider z wartością ViewModelStoreOwner zwracaną przez NavController.getViewModelStoreOwner(). (b/135716331)

Zmiany w interfejsie API

Poprawki błędów

  • NavHostFragment używa teraz parametru FragmentContainerView. Rozwiązanie problemów z kolejnością animacji i wstawieniami okien w wysyłaniu fragmentów do fragmentów. (b/137310379)

Wersja 2.1.0

Wersja 2.1.0

5 września 2019 r.

Aplikacja androidx.navigation:navigation-*:2.1.0 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Ważne zmiany od wersji 2.0.0

  • Ograniczanie zakresu obiektów ViewModel do wykresu nawigacyjnego: możesz teraz tworzyć modele widoków danych ograniczone na poziomie wykresu nawigacyjnego za pomocą delegata właściwości by navGraphViewModels() dla użytkowników Kotlin korzystających z bibliotek -ktx lub za pomocą interfejsu API getViewModelStoreOwner() dodanego do NavController. Więcej informacji znajdziesz w artykule Udostępnianie między miejscami docelowymi danych związanych z interfejsem użytkownika.
  • Miejsca docelowe okien: możesz teraz tworzyć miejsca docelowe (<dialog>), które będą wyświetlać DialogFragment, gdy do nich dołączysz navigate. NavHostFragment domyślnie obsługuje miejsca docelowe okien. Więcej informacji znajdziesz w artykule Tworzenie miejsca docelowego z DialogFragment.
  • Nawigacja według identyfikatora URI: możesz teraz navigate korzystać z urządzenia Uri, które korzysta z <deepLink> dodanego przez Ciebie do miejsca docelowego, aby nawigować do tego miejsca. Więcej informacji znajdziesz w artykule Nawigowanie przy użyciu identyfikatora URI.
  • NavHostController: interfejsy API używane do tworzenia niestandardowych elementów NavHost zostały przeniesione do NavHostController, dzięki czemu implementacje mogą połączyć NavController z hostami LifecycleOwner, OnBackPressedDispatcher i ViewModelStore.

Wersja 2.1.0-rc01

7 sierpnia 2019 r.

Aplikacja androidx.navigation:navigation-*:2.1.0-rc01 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Wycofany interfejs getViewModelStore() API w systemie NavController wprowadzony w 2.1.0-alpha02 został usunięty. (Aosp/1091021)

Wersja 2.1.0-beta02

19 lipca 2019 r.

Aplikacja androidx.navigation:*:2.1.0-beta02 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Usunięto niezamierzoną zależność w stylu Jacoco, która została wprowadzona w 2.1.0-beta01. (b/137782950)

Wersja 2.1.0-beta01

17 lipca 2019 r.

Aplikacja androidx.navigation:*:2.1.0-beta01 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • NavigationUI animuje teraz usunięcie przycisku W górę podczas używania setupWithNavController() z Toolbar lub CollapsingToolbarLayout. (b/131403621)

Poprawki błędów

  • Rozwiązaliśmy problem z czasem w przypadku używania wielu elementów NavHostFragment z tym samym kontenerem z elementem findNavController(). (b/136021571)

Wersja 2.1.0-alfa06

2 lipca 2019 r.

Aplikacja androidx.navigation:*:2.1.0-alpha06 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Atrybut app:navGraph używany przez NavHostFragment został przeniesiony do artefaktu navigation-runtime. Niestandardowe elementy nawigacyjne, które można dodać za pomocą kodu XML, powinny używać tego atrybutu w celu integracji z panelem hosta edytora nawigacji. (b/133880955)

Zmiany w interfejsie API

  • Interfejs API getViewModelStore() w domenie NavController został wycofany i zastąpiony nową metodą getViewModelStoreOwner(), która zwraca wartość ViewModelStoreOwner. (Aosp/987010)
  • Implementacja miejsc docelowych okien pływających, takich jak miejsca docelowe <dialog>, została uogólniona w interfejs znacznika (FloatingWindow), który obecnie implementują wszystkie miejsca docelowe w <dialog>. Metody nawigacji w interfejsie do interakcji z górnym paskiem aplikacji ignorują teraz miejsca docelowe w aplikacji FloatingWindow. (b/133600763)

Zmiany w działaniu

  • Obecnie nawigacja prawidłowo synchronizuje jej stan z informacjami widocznymi na ekranie podczas korzystania z miejsca docelowego w <dialog>. W związku z tym Nawigacja automatycznie wyświetla teraz miejsca docelowe w usłudze <dialog>, gdy jedziesz do miejsca docelowego bez okna lub bez aktywności, np. do miejsca docelowego <fragment>. (b/134089818)

Poprawki błędów

  • Nawigacja wstrzymuje teraz animację, która pojawia się podczas odtwarzania aktywności podczas obsługi precyzyjnego linku lub naprawiania błędu wizualnego. (b/130362979)
  • Naprawiono błąd, który powodował, że stos wsteczny nawigacji nie był zsynchronizowany podczas tworzenia fragmentu w trakcie dodawania początkowego fragmentu. (b/133832218)

Wersja 2.1.0-alfa05

5 czerwca 2019 r.

Aplikacja androidx.navigation:*:2.1.0-alpha05 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Interfejsy API związane z hostem w domenie NavController zostały zmienione i przeniesione do nowej podklasy: NavController (NavHostController). (Aosp/966091)
  • Metoda NavController setHostOnBackPressedDispatcherOwner() została zastąpiona metodą setOnBackPressedDispatcher() NavHostController i teraz wymaga wywołania metody 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 stos wsteczny nie był prawidłowy po nawigowaniu według identyfikatora URI. (b/132509387)
  • Precyzyjne linki obsługiwane automatycznie przez kontroler NavController są teraz aktywowane tylko raz. (b/132754763)

Wersja 2.1.0-alfa04

16 maja 2019 r.

Aplikacja androidx.navigation:*:2.1.0-alpha04 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • NavHostFragment prawidłowo respektuje app:defaultNavHost podczas przechwytywania systemowych zdarzeń przycisku Wstecz, poprawiając regresję w nawigacji 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator teraz prawidłowo obsługuje operacje popBackStack() i navigateUp(). b/132576764
  • Naprawiono problem IllegalStateException: unknown destination during restore związany z wielokrotnym nawigowaniem między zagnieżdżonymi wykresami. b/131733658

Wersja 2.1.0-alfa03

7 maja 2019 r.

Aplikacja androidx.navigation:*:2.1.0-alpha03 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Znane problemy

  • NavHostFragment nadal przechwytuje systemowy przycisk Wstecz mimo użycia app:defaultNavHost="false" b/132077777

Nowe funkcje

  • Możesz teraz tworzyć miejsca docelowe <dialog>, które będą wyświetlać DialogFragment, gdy do nich navigate. NavHostFragment domyślnie obsługuje miejsca docelowe okien. b/80267254
  • Oprócz wywoływania funkcji navigate z identyfikatorem zasobu lub z wystąpieniem NavDirections możesz teraz korzystać z nawigacji Uri, która korzysta z <deepLink> dodanego do miejsca docelowego, aby przejść do prawidłowego miejsca docelowego. b/110412864

Zmiany w działaniu

  • Domyślne animacje dostarczane przez NavigationUI zostały zmniejszone z 400 ms do 220 ms, aby dopasować je do domyślnej szybkości animacji działań i fragmentów. b/130055522

Zmiany w interfejsie API

  • Metoda createFragmentNavigator() elementu NavHostFragment została wycofana, a jej funkcje zostały przeniesione do nowej metody onCreateNavController(), aby podkreślić, że jest to prawidłowy punkt wejścia w przypadku dodawania niestandardowych nawigatorów podczas tworzenia podklasy NavHostFragment. b/122802849
  • Do metody NavDestination dodano metodę hasDeepLink(), która pozwala sprawdzić, czy dany obiekt Uri może być obsługiwany przez to miejsce docelowe lub, w przypadku obiektu NavGraph, do dowolnego miejsca docelowego na wykresie nawigacyjnym. b/117437718

Poprawki błędów

  • Argumenty domyślne są teraz prawidłowo przekazywane do instancji OnDestinationChangedListener. b/130630686
  • NavHostFragment przechwytuje teraz zdarzenia systemowe przy użyciu OnBackPressedDispatcher, co naprawia problem podczas wykonywania nawigacji warunkowej w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096
  • W przypadku bezpiecznych argumentów element android:defaultValue=”@null” z nieokreślonym argumentem app:argType jest teraz prawidłowo wywnioskowany jako argument string. b/129629192

Wersja 2.1.0-alfa02

3 kwietnia 2019 r.

Aplikacja androidx.navigation:*:2.1.0-alpha02 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Możesz teraz tworzyć modele ViewModele ograniczone do wykresu nawigacyjnego za pomocą delegata usługi by navGraphViewModels() w przypadku użytkowników Kotlin lub za pomocą interfejsu API getViewModelStore() dodanego do NavController. b/111614463

Zmiany w interfejsie API

  • Możesz teraz dodać app:targetPackage do miejsca docelowego <activity>, aby ograniczyć pasującą nazwę pakietu. Obsługuje polecenie app:targetPackage="${applicationId}" w celu ograniczenia pakietu do identyfikatora Twojej aplikacji. b/110975456

Poprawki błędów

  • Element android:name w przypadku <activity> miejsc docelowych nie jest już analizowany jako klasa w czasie zawyżania jego atmosfery, co uniemożliwia klasyfikację ClassNotFoundExceptions podczas korzystania z funkcji dynamicznych. b/124538597

Wersja 2.1.0-alfa01

19 marca 2019 r.

To jest pierwsza wersja alfa nawigacji 2.1.0.

Zmiany zależności

  • Nawigacja zależy teraz od ustawień androidx.core:core:1.0.1 i androidx.fragment:fragment:1.1.0-alpha05. Ta wersja eliminuje również zależność od: androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

Zmiany w interfejsie API

  • Zamiast tworzenia detektora kliknięć z identyfikatorem zasobu i pakietem dodano nową metodę Navigation.createNavigateOnClickListener(NavDirections). b/127631752
  • Interfejs FragmentNavigator.instantiateFragment został wycofany. Domyślna implementacja używa teraz do tworzenia instancji fragmentów kodu za pomocą FragmentFactory. b/119054429

Poprawki błędów

  • Nawigacja nie wysyła już wartości null Bundle, gdy do miejsca docelowego są dołączone argumenty, co naprawia problem podczas korzystania z android:defaultValue="@null". b/128531879
  • Bezpieczne argumenty zależą teraz od wersji KotlinPoet 1.1.0, przez co naprawiono problem z bardzo długimi nazwami pakietów. b/123654948

Wersja 2.0.0

Wersja 2.0.0

14 marca 2019 r.

Nawigacja 2.0.0 została opublikowana bez zmian z 2.0.0-rc02.

Wersja 2.0.0-rc02

6 marca 2019 r.

Nawigacja 2.0.0-rc02 zawiera nowe artefakty z identyfikatorem grupy androidx.navigation i zmienia jej zależności na ich odpowiedniki w AndroidzieX.

Działanie kodu 2.0.0-rc02 jest takie samo jak w przypadku nawigacji 1.0.0-rc02. Aktualizacja z wersji 1.0.0-rc02 nie wymaga wprowadzania żadnych zmian w kodzie. Nie wystarczy też zaktualizować zależności w celu dopasowania ich do nowych zależności.

Aby można było korzystać z nawigacji w wersji 2.X, Twój projekt musi zostać przeniesiony na AndroidaX. Nawigacja 1.0 stabilna będzie ostatnią wersją korzystającą z zależności Biblioteki pomocy. Wszystkie przyszłe wersje programowania aplikacji po wersji 1.0 będą opierać się na AndroidzieX i dalej na stabilnej wersji 2.0.

Zależności sprzed AndroidaX

W wersjach Nawigacji starszych niż AndroidX dołącz te zależności:

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

W przypadku bezpiecznych argumentów dodaj tę ścieżkę classpath do pliku build.gradle najwyższego poziomu

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

Wersja 1.0.0

Wersja 1.0.0

14 marca 2019 r.

Nawigacja 1.0.0 została opublikowana bez zmian z 1.0.0-rc02.

Wersja 1.0.0-rc02

26 lutego 2019 r.

To jest druga wersja stabilnej wersji nawigacji 1.0.0. Ta wersja zawiera wiele poprawek błędów.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że wartość popBackStack() była ignorowana, jeśli wykres główny nie miał identyfikatora b/126251695
  • navigateUp() prawidłowo obsługuje teraz powrót do zadania aplikacji w przypadku wywołania po obsłudze precyzyjnego linku bez FLAG_ACTIVITY_NEW_TASK b/126082008
  • Naprawiono błąd, który powodował, że funkcja ActivityNavigator.applyPopAnimationsToPendingTransition nie stosowała prawidłowej animacji po wyjściu b/126237567
  • Kod Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych Kotlin, takich jak in i fun, w nazwie pakietu powiązanego z klasą R. b/126020455

Wersja 1.0.0-rc01

21 lutego 2019 r.

Jest to kandydat do opublikowania stabilnej wersji Nawigacji 1.0.0. Ta wersja zawiera jedną poprawkę błędu.

Poprawki błędów

  • Naprawiono błąd związany z używaniem fragmentów i operacji nawigacji singleTop b/124294805

Wersja 1.0.0-beta02

12 lutego 2019 r.

Ta wersja zawiera szereg drobnych ulepszeń i ważnych poprawek błędów.

Nowe funkcje

  • Możesz teraz używać 0 jako android:defaultValue dla argumentów reference. b/124248602

Zmiany w działaniu

  • Ścisłe dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z elementem .* lub dopasowaniami argumentu. b/123969518

Poprawki błędów

  • popBackStack() i navigateUp prawidłowo zwracają teraz false podczas otwierania ostatniego miejsca docelowego na stosie wstecznym, naprawiając regresję wprowadzoną w 1.0.0-beta01. b/123933201
  • Teraz nawigacja prawidłowo ustawia ClassLoader podczas przywracania zapisanego stanu instancji, co pozwala uniknąć problemów podczas korzystania z klas niestandardowych w zapisanym stanie Navigator lub w argumentach wysyłanych do NavDestination. b/123893858
  • Klasy NavArgs wygenerowane przez Safe Args nie ulegają już awarii podczas przywracania argumentu Parcelable[] z zapisanego stanu instancji. b/123963545
  • Safe Args prawidłowo usuwa teraz zbędne wygenerowane klasy Kotlin. b/124120883

Wersja 1.0.0-beta01

4 lutego 2019 r.

To jest pierwsza wersja beta Nawigacji. Od tej pory interfejs Navigation API będzie działać stabilnie do czasu następnej wersji, chyba że wystąpią problemy krytyczne. Ta wersja zawiera poprawki błędów i zmiany działania.

Zmiany w działaniu

  • Nawigacja zapewnia teraz, że domyślne wartości argumentów są traktowane identycznie w czasie działania oraz przez bezpieczne argumenty. W efekcie tylko argumenty z właściwością app:argType="reference" mogą mieć wartość domyślną wskazującą inny zasób (np. @color/colorPrimary). Próba użycia wartości domyślnej odwołania z inną wartością parametru app:argType spowoduje wyjątek podczas analizowania kodu XML nawigacji. b/123551990
  • Bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 3.3.0 aosp/888413
  • Bezpieczne Args zależą teraz od Kotlin 1.3.20 aosp/888414

Poprawki błędów

  • Bezpiecznych argumentów można teraz używać w modułach bibliotek i funkcji we wszystkich wersjach wtyczki Androida do obsługi Gradle. b/121304903
  • Naprawiliśmy regresję, która spowodowała, że pojedyncza operacja popBackStack() powodowała usunięcie wszystkich kopii miejsca docelowego z góry stosu, a nie tylko jednego miejsca docelowego naraz. b/123552990
  • Rozwiązaliśmy problem, który powodował desynchronizację stanu FragmentNavigator ze stanem obiektu NavController, powodując IllegalStateException podczas próby przywrócenia stosu wstecznego. b/123803044
  • Rozwiązaliśmy problem, który powodował, że obsługiwana strzałka wstecz NavigationUI nie pojawiała się podczas korzystania z funkcji ProGuard z zaciemnianiem. b/123449431
  • Kod wygenerowany przez Safe Args prawidłowo obsługuje teraz użycie app:argType wskazującego statycznej klasy wewnętrznej w formacie .OuterClass$InnerClass. b/123736741
  • Kod Java wygenerowany przez Safe Args prawidłowo obsługuje teraz działania globalne i głęboko zagnieżdżone miejsca docelowe. b/123347762

Wersja 1.0.0-alfa11

23 stycznia 2019 r.

To jest poprawka do wersji 1.0.0-alpha10, która rozwiązuje problem z Safe Args.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja Safe Args nie importowała klasy Directions powiązanych z działaniami globalnymi. b/123307342

Wersja 1.0.0-alfa10

23 stycznia 2019 r.

Znane problemy

  • Safe Args nie zaimportuje klasy Directions powiązanej z działaniami globalnymi. b/123307342

Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.

Nowe funkcje

  • Użytkownicy Kotlin mogą teraz używać delegata właściwości by navArgs() do leniwego pobierania odwołania do klasy NavArgs wygenerowanej przez Safe Args w Activity lub Fragment. b/122603367
  • Safe Args umożliwia teraz generowanie kodu Kotlin przez zastosowanie wtyczki androidx.navigation.safeargs.kotlin. Kod Kotlin został stworzony specjalnie dla modułów Kotlin z użyciem domyślnych argumentów i klas niezmiennych zamiast wzorca konstruktora, który jest wciąż dostępny w poprzedniej wtyczce androidx.navigation.safeargs. b/110263087

Zmiany w działaniu

  • Pasujące precyzyjne linki są teraz promowane w odniesieniu do precyzyjnego linku, który ma najlepiej dopasowane argumenty. b/118393029
  • Wywołanie setGraph() w urządzeniu NavController spowoduje teraz zresetowanie stosu wstecznego. b/111450672
  • Nieznane precyzyjne linki nie powodują już wywołania IllegalStateException, ale są ignorowane, co rozwiązuje problemy z zagnieżdżonymi lub wieloma elementami NavHostFragment. b/121340440

Niezbędne zmiany

  • Metoda NavOptions.applyPopAnimationsToPendingTransition() stosowania animacji pop w aktywności został przeniesiony do ActivityNavigator. b/122413117
  • Bezpieczne argumenty pozwalają teraz uniknąć powielania identycznych klas działań bez argumentów. Zwracany typ metod bez argumentów w wygenerowanych klasach NavDirections to teraz NavDirections. b/123233147
  • Klasy wskazówek dojazdu wygenerowane przez Safe Args nie mają już publicznego konstruktora – należy korzystać tylko z wygenerowanych metod statycznych. b/123031660
  • Klasyfikowane przez bezpieczne argumenty klasy NavDirections nie mają już publicznego konstruktora. Należy je generować tylko za pomocą metod statycznych w wygenerowanych klasach Directions. b/122963206
  • Zwrócony Bundle z kolumny getArguments() NavDirections jest teraz oznaczony jako @NonNull, a nie @Nullable. b/123243957

Poprawki błędów

  • NavDeepLinkBuilder teraz prawidłowo obsługuje wiele jednoczesnych operacji PendingIntent do tego samego miejsca docelowego, używając argumentów, które przekazujesz, aby określić unikalność. b/120042732
  • NavController teraz prawidłowo obsługuje operacje popBackStack() podczas korzystania z zagnieżdżonych NavHostFragment i innych podrzędnych fragmentów z wykorzystaniem stosu wstecznego. b/122770335
  • NavigationUI poprawnie ustawia teraz opis treści przycisku w górę. b/120395362
  • Wygenerowane przez Safe Args klasy Directions prawidłowo obsługują teraz działania globalne, które mają ten sam identyfikator co działanie w miejscu docelowym. b/122962504
  • Wygenerowane przez bezpieczne klasy argumenty NavDirections poprawnie mają teraz równe hashCode() wartości, a equals() zwraca wartość „prawda”. b/123043662
  • FragmentNavigator zwraca teraz lepszy komunikat o błędzie, jeśli spróbujesz wykonać niestandardową czynność FragmentTransactions na urządzeniu FragmentManager NavHostFragment. Należy zawsze używać języka getChildFragmentManager(). b/112927148

Wersja 1.0.0-alfa09

18 grudnia 2018 r.

Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.

Postanowiliśmy nie kontynuować opracowywania artefaktu android.arch.navigation:navigation-testing. Chociaż okazało się to pomocne w wewnętrznych testach funkcji NavController, zdecydowanie zalecamy korzystanie z alternatywnych strategii testowania, takich jak naśladowanie wystąpienia NavController, ponieważ pozwoli to sprawdzić, czy wykonywane są prawidłowe wywołania navigate(). To podejście zostało szczegółowo omówione w prezentacji dotyczącej pojedynczego działania na AndroidDevSummit 2018. Będziemy też pracować nad dodatkową dokumentacją dotyczącą testowania z nawigacją.

Nowe funkcje

  • Obiekty MenuItem z elementem menuCategory="secondary" nie będą już wstawać wstecznego stosu, gdy są używane z metodami NavigationUI. b/120104424
  • AppBarConfiguration umożliwia teraz ustawienie wystąpienia kreacji zastępczej OnNavigateUpListener, która będzie wywoływana, gdy navController.navigateUp() zwróci false. b/79993862 b/120690961

Niezbędne zmiany

  • Gdy używasz obiektu <argument> z elementem argType="reference", nawigacja nie analizuje już odwołania, a zamiast tego udostępnia sam nieprzetworzony identyfikator zasobu. b/111736515
  • Domyślnie onNavDestinationSelected() wraca do miejsca docelowego początkowego wykresu nawigacyjnego, dzięki czemu jest zgodna z metodami setup. Dodaj menuCategory="secondary" do tablicy MenuItem, aby nie powiększyć stosu. aosp/852869
  • Metody fromBundle() wygenerowanych klas Args przyjmują teraz niepustą wartość Bundle zamiast wartości null Bundle aosp/845616

Poprawki błędów

  • Argumenty są teraz prawidłowo analizowane z precyzyjnych linków jako prawidłowe argType, a nie zawsze jako ciągi znaków b/110273284
  • Teraz Nawigacja prawidłowo eksportuje swoje zasoby publiczne b/121059552
  • Usługa Safe Args jest teraz zgodna z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 lub nowszej b/119662045

Wersja 1.0.0-alfa08

6 grudnia 2018 r.

Ta wersja zawiera zmiany w interfejsie API, które naruszają zasady. Zapoznaj się z sekcją „Breaking changes”, która znajduje się poniżej.

Nowe funkcje

  • Etykiety miejsc docelowych używane z metodami NavigationUI będą teraz automatycznie zastępować instancje {argName} w obiekcie android:label prawidłowym argumentem b/80267266.
  • Nawigacja zależy teraz od biblioteki pomocy 28.0.0 b/120293333

Niezbędne zmiany

  • Nazwa usługi OnNavigatedListener została zmieniona na OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener przekazuje teraz także Bundle argumentów aosp/837142.
  • Atrybuty app:clearTask i app:launchDocument oraz powiązane z nimi metody zostały usunięte. Użyj operatora app:popUpTo z pierwiastkiem wykresu, aby usunąć wszystkie miejsca docelowe ze stosu wstecznego. b/119628354
  • ActivityNavigator.Extras używa teraz wzorca Builder i dodaje możliwość ustawiania dowolnych flag Intent.FLAG_ACTIVITY_ aosp/828140
  • Nazwa domeny NavController.onHandleDeepLink została zmieniona na handleDeepLink aosp/836063
  • Wiele klas i metod, które nie są przeznaczone do podklas, np. NavOptions, NavInflater, NavDeepLinkBuilder i AppBarConfiguration, zostało utworzonych final aosp/835681.
  • Wycofana metoda NavHostFragment.setGraph() została usunięta aosp/835684
  • Wycofana metoda NavigationUI.navigateUp(DrawerLayout, NavController) została usunięta. aosp/835684
  • Tworzenie fragmentów kodu zostało przeniesione do FragmentNavigator, co ułatwia przekazanie procesu tworzenia fragmentów na platformę FragmentFactory. b/119054429
  • Konstruktor NavGraphNavigator nie przyjmuje już typu Context aosp/835340
  • NavigatorProvider to teraz klasa, a nie interfejs. Element NavigatorProvider zwrócony przez getNavigatorProvider() nie zmienił się. aosp/830660
  • NavDestination.navigate() został(a) usunięty(a). Zadzwoń pod numer navigate() pod numer Navigator. aosp/830663
  • Znacząca refaktoryzacja parametru Navigator eliminuje potrzebę korzystania z elementu OnNavigatorNavigatedListener. Zamiast tego navigate zwraca przekierowywany NavDestination.
  • Instancje (Navigator) nie mogą już wysyłać zdarzeń typu pop do interfejsu NavController. Rozważ użycie OnBackPressedCallback do przechwycenia naciśnięć przycisku Wstecz i wywołania navController.popBackStack(). Aosp/833716

Poprawki błędów

  • popUpTo działa teraz konsekwentnie, gdy miejscem docelowym jest element <navigation> b/116831650
  • Naprawiliśmy kilka błędów, które powodowały występowanie błędu IllegalArgumentException podczas korzystania z zagnieżdżonych wykresów b/118713731 b/113611083 b/113346925 b/113305559
  • Atrybut dataPattern miejsc docelowych <activity> będzie teraz wypełniać argumenty z argumentów innych niż ciąg znaków przez wywołanie metody toString() b/120161365

Bezpieczne argumenty

  • Bezpieczne argumenty obsługują obiekty możliwe do serializacji, w tym wartości Enum. Typy wyliczeń mogą ustawić wartość domyślną za pomocą literału wyliczeniowego bez nazwy klasy (np. app:defaultValue="READ") b/111316353
  • Bezpieczne Args obsługują tablice wszystkich obsługiwanych typów b/111487504
  • Safe Args ignoruje teraz podfoldery katalogów zasobów b/117893516
  • Tam, gdzie to możliwe, Safe Args dodaje adnotacje @Override b/117145301

Wersja 1.0.0-alfa07

29 października 2018 r.

Nowe funkcje

  • Nowa klasa AppBarConfiguration pozwala określić, które miejsca docelowe są uznawane za miejsca docelowe najwyższego poziomu. Więcej informacji znajdziesz w zaktualizowanej dokumentacji. b/117333663
  • Teraz możesz przekazywać argumenty do początkowego miejsca docelowego wykresu b/110300470
  • Precyzyjne linki obsługują teraz schematy niestandardowe z kropkami, łącznikami i znakami plusa. b/112806402

Niezbędne zmiany

  • Moduł navigation-testing-ktx został złożony do jednostki navigation-testing artifact i nie zostanie opublikowany.
  • Artefakt navigation-testing zależy teraz od biblioteki standardowej Kotlin. Interfejs API został zmieniony, by był bardziej zgodny z konwencjami Kotlin, ale nadal możesz go używać do testów napisanych w Javie.
  • Wykresy nawigacyjne zarejestrowanych w pliku manifestu metadanych nie są już obsługiwane. b/118355937
  • Akcji nie można już dołączać do miejsc docelowych <activity>. aosp/785539

Poprawki błędów

  • Precyzyjne linki prawidłowo analizują teraz parametry zapytania. b/110057514
  • Miejsca docelowe aktywności prawidłowo stosują teraz wszystkie animacje wejścia i wyjścia. b/117145284
  • Usunięto awarię, która występowała po zmianie konfiguracji podczas korzystania z niestandardowych nawigatorów. b/110763345

Bezpieczne argumenty

  • Bezpieczne argumenty są teraz uzależnione od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
  • Można teraz generować wskazówki dojazdu dla klas wewnętrznych. b/117407555
  • Rozwiązaliśmy problem z generowaniem wskazówek dojazdu do wykresu <include>. b/116542123

Wersja 1.0.0-alfa06

20 września 2018 r.

Nowe funkcje

Zmiany w interfejsie API

  • Zmiana wymagająca: metoda Nawigatora navigate() przyjmuje teraz parametr Navigator.Extras.
  • Metoda getGraph() kontrolera NavController to teraz NonNull b/112243286

Poprawki błędów

  • NavigationUI.setupWithNavController() nie ujawnia już wyświetleń, jeśli jest używany z widokami z poszczególnych miejsc docelowych b/111961977
  • Nawigator onSaveState() jest teraz wywoływany tylko raz b/112627079

Bezpieczne argumenty

  • Klasy wskazówek dojazdu do miejsca docelowego nawigacji rozszerzają teraz klasę Directions swoich elementów nadrzędnych (o ile taka istnieje w klasie b/79871405).
  • Klasy kierunków i args mają teraz przydatną implementację toString() b/111843389

Wersja 1.0.0-alfa05

10 sierpnia 2018 r.

Poprawki błędów

  • Popraw błąd, który powoduje nieprawidłowe działanie cofania. b/111907708
  • Popraw błąd w equals() klasach wygenerowanych argumentów. b/111450897
  • Napraw błąd kompilacji w Safe Args. b/109409713
  • Jak naprawić konwersję z identyfikatorów zasobów na nazwy Java b/111602491
  • Naprawianie komunikatów o błędach dotyczących wartości null we wtyczce Safe Args.
  • Dodaj brakujące adnotacje wartości null.

Wersja 1.0.0-alfa04

19 lipca 2018 r.

Nawigacja 1.0.0-alpha04 i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.

Zmiany w interfejsie API lub zachowaniu

  • NavHostFragment zawsze ustawia bieżący fragment jako główny fragment nawigacyjny, upewniając się, że menedżery fragmentów podrzędnych są umieszczane przed wypełnieniem zewnętrznego kontrolera NavController b/111345778.

Bezpieczne argumenty

  • Zmiana powodująca niezgodność: app:type została zmieniona na app:argType, aby uniknąć konfliktów z innymi bibliotekami, takimi jak ConstraintLayout 2.0.0-alpha1 b/111110548
  • Komunikaty o błędach z bezpiecznych argumentów można teraz kliknąć b/111534438
  • Klasy Args potwierdzają teraz, że atrybuty NonNull w rzeczywistości nie mają wartości null b/111451769
  • Do klas wygenerowanych na podstawie polecenia NavDirections i Args zostały dodane dodatkowe adnotacje NonNull b/111455455 b/111455456.

Poprawki błędów

  • Naprawiono problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnego linku do miejsca docelowego fragmentu b/111515685

Wersja 1.0.0-alfa03

12 lipca 2018 r.

Nawigacja 1.0.0-alpha03 i powiązana z nią wtyczka Safe Args Gradle zawiera szereg zmian w interfejsie API oraz zmian w działaniu i poprawkach.

Zmiany w interfejsie API lub zachowaniu

  • Dodano metodę NavigationUI.setupWithNavController do paska narzędzi Toolbar b/109868820
  • Wprowadzono metodę NavigationUI.setupWithNavController do klasy CollapsingToolbarUkład: b/110887183
  • popBackStack() zwraca teraz wartość „false”, gdy stos wsteczny jest pusty lub gdy podany identyfikator miejsca docelowego nie znajduje się w stosie wstecznym b/110893637
  • FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu FragmentManager, unikając wyjątków „Nie można wykonać tego działania po onSaveInstanceState” b/110987825

Bezpieczne argumenty

  • Zmiana zmieniająca: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkością liter wielbłąda w odpowiednich nazwach metod NavDirections.
    • Np. DemoController.index zmieni się na setDemoControllerIndex b/79995048
    • Np. action_show_settings zmieni się na actionShowSettings b/79642240
  • Niezgodna zmiana: domyślnie argumenty nie mają wartości zero. Aby zezwolić na wartości null w ciągu znaków i argumentach typu parcelable, dodaj app:nullable="true" b/79642307
  • Możesz teraz używać app:type="long" z wartością defaultValues w postaci „123L” b/79563966
  • Argumenty typu Parcelable są teraz obsługiwane przy użyciu w pełni kwalifikowanej nazwy klasy w funkcji app:type. Jedyną obsługiwaną wartością domyślną jest "@null" b/79563966
  • Klasy ARG implementują teraz equals() i hashCode() b/79642246
  • Wtyczkę Safe Args możesz teraz stosować w projektach biblioteki b/80036553
  • Wtyczka Safe Args można teraz stosować do projektów cech b/110011752

Poprawki błędów

  • Rozwiązaliśmy problemy z nawigacją w ramach metod cyklu życia fragmentu b/109916080
  • Rozwiązanie problemów z wielokrotnym nawigacją po zagnieżdżonych wykresach b/110178671
  • Rozwiązanie problemów z usługą setPopUpTo z pierwszym miejscem docelowym na wykresie b/109909461
  • Rozwiązanie problemu polegającego na tym, że wszystkie wartości app:defaultValue były przekazywane jako ciągi znaków b/110710788
  • aapt2 w pakiecie z wtyczką Androida do obsługi Gradle 3.2 Beta 01 dodaje teraz reguły Keep dla każdego atrybutu android:name w plikach XML nawigacji b/79874119
  • Usunięto wyciek pamięci podczas zastępowania domyślnego obiektu FragmentNavigator b/110900142

Wersja 1.0.0-alfa02

7 czerwca 2018 r.

Zmiany w działaniu

  • FragmentNavigator używa teraz konta setReorderingAllowed(true). b/109826220

  • Teraz nawigacja URLDekoduje argumenty URL-e analizowane z adresów URL precyzyjnych linków. b/79982454

Poprawki błędów

  • Naprawiono błąd IllegalStateException podczas wywoływania przechodzenia z metod cyklu życia fragmentu. b/79632233

  • Aby rozwiązać problem migotania podczas używania animacji, nawigacja korzysta teraz z Biblioteki pomocy w wersji 27.1.1. b/80160903

  • Poprawiono błąd IllegalArgumentException w przypadku użycia parametru defaultNavHost="true" jako fragmentu podrzędnego. b/79656847

  • Naprawiono błąd StackOverflowError podczas korzystania z NavDeepLinkBuilder. b/109653065

  • Naprawiono błąd IllegalArgumentException podczas przechodzenia z powrotem do zagnieżdżonego wykresu. b/80453447

  • Naprawiono problem z nakładającymi się fragmentami przy korzystaniu z funkcji launchSingleTop. b/79407969

  • Nawigacja tworzy teraz prawidłowy syntetyczny stos wsteczny dla zagnieżdżonych wykresów. b/79734195

  • Podczas korzystania z zagnieżdżonego wykresu jako elementu MenuItem interfejs NavigationUI wyróżnia teraz właściwy element. b/109675998

Zmiany w interfejsie API

  • Atrybut clearTask działań i powiązany interfejs API w NavOptions zostały wycofane. b/80338878

  • Atrybut launchDocument działań i powiązany interfejs API w NavOptions zostały wycofane. b/109806636

Wersja 1.0.0-alfa01

8 maja 2018 r.

Nawigacja stanowi platformę do tworzenia nawigacji w aplikacji. Pierwsza wersja to 1.0.0-alpha01.