Nawigacja

Nawigacja jest platformą nawigacja między miejscami docelowymi w aplikacji na Androida, która udostępnia spójnego interfejsu API niezależnie od tego, czy miejsca docelowe są zaimplementowane jako fragmenty, działania z innymi komponentami.
Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
4 września 2024 r. 2.8.0 - - -

Deklarowanie zależności

Aby dodać zależność w Nawigacji, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .

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

Odlotowe

dependencies {
  def nav_version = "2.8.0"

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

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

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

}

Kotlin

dependencies {
  val nav_version = "2.8.0"

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

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

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

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

}

Safe Args

Aby dodać bezpieczne argumenty, w swoim projekcie umieść w pliku build.gradle najwyższego poziomu ten element: classpath:

Odlotowe

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

Kotlin

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

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

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

Odlotowe

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Aby wygenerować kod Kotlin odpowiedni dla modułów wyłącznie Kotlin, dodaj:

Odlotowe

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

Kotlin

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

Musisz mieć android.useAndroidX=true w gradle.properties plik zgodnie z Migracja na AndroidaX

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

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.

Tworzenie nowego numeru

Zobacz dokumentację narzędzia Issue Tracker. .

Wersja 2.8

Wersja 2.8.0

4 września 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0 została zwolniona. Wersja 2.8.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 2.7.0

Nawigacja Kotlin DSL Type-Safety

  • Nawigacja zapewnia teraz poziom bezpieczeństwa typu dla DSL Kotlin (używanego przez Navigation Compose) przy użyciu serializacji Kotlin, co umożliwia definiowanie miejsc docelowych na wykresie nawigacji przy użyciu obiektów i klas danych bezpiecznych dla typu:
    // Define a home destination that doesn't take any arguments
    @Serializable
    object Home

    // Define a profile destination that takes an ID
    @Serializable
    data class Profile(val id: String)

    // Now define your NavHost using type safe objects
    NavHost(navController, startDestination = Home) {
        composable<Home> {
            HomeScreen(onNavigateToProfile = { id ->
                navController.navigate(Profile(id))
            })
        }
        composable<Profile> { backStackEntry ->
            val profile: Profile = backStackEntry.toRoute()
            ProfileScreen(profile)
        }
    }

Więcej informacji znajdziesz w poście na blogu na temat funkcji Nawigacja i Bezpieczeństwo typów.

Przewidywanie wstecz w przypadku tworzenia wiadomości w nawigacji

  • Navigation Compose obsługuje teraz funkcję przewidywania w aplikacji z powrotem przez nowe interfejsy API SeekableTransitionState dostępne w compose-animation. Dzięki temu możesz użyć gestu cofania, aby wyświetlić poprzednie miejsce docelowe w ramach niestandardowego przejścia przed podjęciem decyzji o zrealizowaniu transakcji za pomocą zrealizowanego gestu lub jej anulowaniem.

Kompozytowalny fragment nawigacji

  • Dodaliśmy nowy artefakt navigation-fragment-compose zawierający alternatywę ComposableNavHostFragment dla NavHostFragment, która umożliwia dodawanie kompozycyjnych miejsc docelowych 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 pełna i jednoznaczna nazwa jest używana jako atrybut android:name w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc tworzony jest fragment zawierający treści kompozycyjne.
  // In HomeScreen.kt
  @Composable
  fun HomeScreen() {
    // Your Composable content here
  }

  // In your navigation.xml
  <composable
    android:id="@+id/home_screen"
    android:name="com.example.HomeScreenKt\$HomeScreen" />

Inne zmiany

  • Funkcja Navigation Compose teraz jest oparta na nowej wersji 1.7.0.
  • Nawigacja udostępnia teraz nową klasę CollectionNavType<T>, podklasę NavType<T> dla argumentów opartych na zbiorach, takich jak lista, tablice czy mapy. Wszystkie domyślne tablice NavType (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType i StringArrayType) dziedziczą teraz z tej nowej klasy.
  • NavType ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i długich.

Wersja 2.8.0-rc01

21 sierpnia 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-rc01 została zwolniona. Wersja 2.8.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawa awarii nawigacji podczas przekazywania klas Enum najwyższego poziomu jako argumentów bezpiecznych typów. (I0ba76, b/358137294)
  • Nawigacja 2.8 działa teraz prawidłowo z pakietem SDK 34 i nie zostanie zastąpiona pakietem SDK 35 do czasu wersji 2.9 oraz pozostałych bibliotek AndroidaX. (b/358798728)

Wersja 2.8.0-beta07

7 sierpnia 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta07 została zwolniona. Wersja 2.8.0-beta07 zawiera te zatwierdzenia.

Znane problemy

  • Ze względu na stan b/358137294 domyślnie obsługiwane są tylko enum zagnieżdżone w innych klasach. Wyliczenia najwyższego poziomu będą obsługiwane w następnej wersji.

Poprawki błędów

  • Podczas nawigacji do zduplikowanych lub udostępnionych miejsc docelowych nawigacja traktuje priorytetowo dotarcie do miejsca docelowego najbliżej pasującego miejsca docelowego od bieżącej lokalizacji widocznej na wykresie. (IC89a4, b/352006850)
  • Do nawigacji w bezpiecznych argumentach dodano nowy element: NavType.EnumType. Oznacza to, że typy Enum nie wymagają już niestandardowych komponentów typu NavType. Pamiętaj, że pole SerialName elementu Enum musi być domyślną pełną i jednoznaczną nazwą. (I66d22, b/346475493)
  • Do nawigacji w bezpiecznych argumentach dodano wbudowaną obsługę typów argumentów do wartości null,takich jak Int?, Long?, Float?, Boolean? i Enum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • Funkcja startDestination funkcji NavGraph będzie teraz używać domyślnych wartości argumentów, jeśli trasa startDestination przekazywana do interfejsu NavGraph będzie dokładnie równa startDestination.route. (I13762, b/354046047)

Wersja 2.8.0-beta06

24 lipca 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta06 została zwolniona. Wersja 2.8.0-beta06 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że sprawdzanie lint (WrongStartDestinationType) nie sprawdzało obiektów towarzyszących w przekazanym typie klasy. W rezultacie lint nie wykrywał błędu. (I92b09)

Wersja 2.8.0-beta05

10 lipca 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta05 została zwolniona. Wersja 2.8.0-beta05 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw błąd nawigacji (singleTop), gdy zagnieżdżone NavGraphs korzystają z tej samej trasy startDestination. (I17b94, b/294408596)

Wersja 2.8.0-beta04

26 czerwca 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta04 została zwolniona. Wersja 2.8.0-beta04 zawiera te zatwierdzenia.

Poprawki błędów

  • Nawigacja obsługuje teraz nawigację z pustymi ciągami znaków w argumentach ścieżki. (Ic5dbd, b/339481310)
  • Popraw komunikat o błędzie dotyczący niestandardowych serializerów zadeklarowanych bezpośrednio w polach klasy przez @Serializable(with =...), aby wyjaśnić, że obecnie jest to nieobsługiwana funkcja. (I052b0, b/341319151)
  • Testowy interfejs API SavedStateHandleFactory może być teraz używany w testach niedotyczących Androida, ale będzie wymagać Robolectric do obsługi analizy argumentów za pomocą pakietów. (I76cdc, b/340966212)
  • Rozwiązaliśmy problem powodujący awarię, która występowała podczas przywracania stanu przy wznawianiu aplikacji po śmierci procesu w przypadku korzystania z nawigacji obsługującej pisanie w narzędziu Compose. (Ia8f38, b/341801005)
  • Naprawiono błąd w funkcji tworzenia nawigacji, który powodował, że po anulowaniu gestu przewidywania gestu cofania użytkownik NavBackStackEntry wracał i nigdy nie wracał do RESUMEDstanu cyklu życia. Dzięki temu powracające miejsce docelowe prawidłowo animuje się z powrotem, a nie wskoczy na miejsce po zwinięciu. (I97a0c, b/346608857)
  • Gdy korzystasz z funkcji przewidywania wstecz w funkcji tworzenia nawigacji, miejsce docelowe ma teraz odpowiednią animację w kolejności nakładania się na niego, a nad nim jest prawidłowo animowane. (I2077b, b/345993681)

Wersja 2.8.0-beta03

12 czerwca 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta03 została zwolniona. Wersja 2.8.0-beta03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcja CollectionNavType ma nową abstrakcyjną metodę emptyCollection(). Zastąp to ustawienie, aby obsługiwać pustą kolekcję przekazywaną jako argument. (Ie4d84, b/341723133)

Poprawki błędów

  • Dodaliśmy dokumentację dotyczącą NavType.serializeAsValue i serializeAsValues, by podkreślić, że ostateczne dane wyjściowe powinny być zakodowane przy użyciu identyfikatora URI. (Ida6bd, b/344943214)
  • Naprawiono awarię, która występowała podczas wywoływania funkcji toRoute<T> z pustym argumentem CollectionNavType. Podczas poruszania się z wartością CollectionNavType o wartości null argumentem wyjściowym będzie wartość domyślna zadeklarowana w klasie Serializable lub wartość zwracana emptyCollection(), jeśli nie ma wartości domyślnej. (I84158, Id630f, b/342672856)

Wersja 2.8.0-beta02

29 maja 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta02 została zwolniona. Wersja 2.8.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono ClassCastExceptionawarię, która występowała podczas używania NavBackStackEntry.toRoute z niestandardowym NavType z wartością null. (I1c29b, b/342239473)
  • Rozwiązaliśmy problemy z odtwarzaniem wstecznego stanu stosu Nawigacji, które występowały podczas próby przywrócenia wpisu stosu, który jest nieosiągalny za pomocą identyfikatora z bieżącego miejsca docelowego. Ponieważ trasy są zależne od identyfikatorów, zmiana dotyczyła również miejsc docelowych utworzonych z wykorzystaniem tras. Rozwiązano też awarię spowodowaną wywołaniem funkcji clearBackStack() z tym samym problemem. (I423c3, b/339908057)

Wersja 2.8.0-beta01

14 maja 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-beta01 została zwolniona. Wersja 2.8.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Funkcja SavedStateHandle.toRoute() przyjmuje teraz parametr typeMap dla typów argumentów niestandardowych. (IE39fb, b/339026523)
  • W programie navigation-testing dodano testowy interfejs API w celu utworzenia obiektu SavedStateHandle z obiektu Kotlin z możliwością serializacji. (Id4867, b/339080702)

Poprawki błędów

  • Dodaliśmy brakujące dokumenty parametrów funkcji nawigacji Kotlin DSL. (I26a36)

Wersja 2.8.0-alpha08

1 maja 2024 r.

Usługa androidx.navigation:navigation-*:2.8.0-alpha08 została zwolniona. Wersja 2.8.0-alfa08 zawiera te zatwierdzenia.

Bezpieczne argumenty w funkcji Navigation Compose

  • Zakończyliśmy prace nad zapewnieniem bezpieczeństwa typu czasu kompilowania w usłudze Navigation Compose oraz użytkownikom nawigacji DSL opartej na serializacji Kotlin. Wcześniej eksperymentalne interfejsy API są teraz stabilne.

Ta funkcja wykorzystuje serializację Kotlin, aby umożliwić definiowanie miejsc docelowych na wykresie nawigacyjnym za pomocą obiektów i klas danych umożliwiających bezpieczne typy:

  // Define a home destination that doesn't take any arguments
  @Serializable
  object Home

  // Define a profile destination that takes an ID
  @Serializable
  data class Profile(val id: String)

  // Now define your NavHost using type safe objects
  NavHost(navController, startDestination = Home) {
      composable<Home> {
          HomeScreen(onNavigateToProfile = { id ->
              navController.navigate(Profile(id))
          })
      }
      composable<Profile> { backStackEntry ->
          val profile: Profile = backStackEntry.toRoute()
          ProfileScreen(profile)
      }
  }

Więcej informacji znajdziesz w poście na blogu na temat funkcji Nawigacja i Bezpieczeństwo typów.

Nowe funkcje

  • Artefakt navigation-fragment-compose udostępnia teraz kompozycję LocalFragment lokalną dla metod kompozycyjnych w obiekcie ComposableFragment. (If35e5).
  • NavType ma teraz wbudowaną obsługę list liczb całkowitych, ciągów znaków, wartości logicznych, liczb zmiennoprzecinkowych i długich. (I4b6dd, Ia914c, b/188693139)

Wersja 2.8.0-alpha07

17 kwietnia 2024 r.

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

Nowe funkcje

  • Dodaje nowy artefakt navigation-fragment-compose zawierający alternatywę ComposableNavHostFragment dla NavHostFragment, która umożliwia dodawanie 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 pełna i jednoznaczna nazwa jest używana jako atrybut android:name w każdym miejscu docelowym. Podczas przechodzenia do jednego z tych miejsc tworzony jest fragment zawierający treści kompozycyjne. (I0ef2e, b/265480755)

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

Zmiany interfejsu API

  • Nadal obsługiwane są bezpieczne argumenty w Navigation Compose przy użyciu metody opartej na serializacji Kotlin. Działanie tych interfejsów API nie zostało ukończone i są oznaczone adnotacją ExperimentalSafeArgsApi. Ta adnotacja zostanie usunięta w kolejnej wersji, gdy cała powierzchnia interfejsu API będzie gotowa. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I360f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I524}d I524db2}d

Wersja 2.8.0-alpha06

3 kwietnia 2024 r.

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

Zmiany interfejsu API

  • Rozpoczęła się obsługa bezpiecznych argumentów w Navigation Compose z użyciem metody opartej na serializacji Kotlin. Działanie tych interfejsów API nie zostało ukończone i są oznaczone adnotacją ExperimentalSafeArgsApi. Ta adnotacja zostanie usunięta w kolejnej wersji, gdy cała powierzchnia interfejsu API będzie gotowa. I43a51, I836a1. Ic5eec. I39407. I39407. I244041. I24.

Poprawki błędów

  • W usłudze NavHost jako domyślny argument content wyrównanie jest teraz używany Alignment.TopStart. Nadaje to wartość domyślną dla AnimatedContent i eliminuje niektóre przypadki nieoczekiwanej skali od środka. (I09e72, b/330111602)
  • Gdy podczas korzystania z funkcji tworzenia nawigacji zamiast szybkiego cofania się przesuwasz niestandardowe przejście, NavHost może teraz prawidłowo wykonać przejście niestandardowe. (I99017, b/327292110)

Wersja 2.8.0-alpha05

20 marca 2024 r.

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

Nowe funkcje

  • Możesz teraz przekazywać argumenty do funkcji startDestination urządzenia NavGraph bezpośrednio na trasie startDestination, bez użycia funkcji defaultValue. Dotyczy to również zagnieżdżonych typów NavGraph startDestinations. (I0e0b5, b/109505019, b/188693139)

Zmiany interfejsu API

  • Dodano nową abstrakcyjną klasę CollectionNavType<T>, podklasę klasy NavType<T> dla argumentów opartych na zbiorach, takich jak lista, tablice czy mapy. (Ic6d63, b/188693139)
  • Wszystkie domyślne tablice NavType (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType i StringArrayType) są teraz typu 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 (np. {argName}) jako prawidłowe wartości w NavTypes opartych na ciągach znaków. Rozwiązuje to problem, który powodował, że taka wartość była uznawana za nieprawidłową (lub braku wartości) dla wszystkich typów. (I18302, b/327274038)
  • Funkcje NavController, które obsługują trasy, takie jak navigate lub popBackStack, mogą teraz prawidłowo dopasowywać trasy wypełnione argumentami tablicy NavTypes. (IEa805, b/327229511)

Wersja 2.8.0-alpha04

6 marca 2024 roku

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

Nowe funkcje

  • Możesz teraz określić SizeTranform dla przejść w narzędziu Navigation Compose, definiując je jako część inicjowania funkcji composable i/lub navigation. (I91062, b/296912651)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że funkcja NavHost w nawigacji w tworzeniu wiadomości nie wyświetlała prawidłowo przejścia, gdy użytkownik korzystał z Wstecz bez użycia gestu. (Iceeae, b/325998468)

Wersja 2.8.0-alfa03

21 lutego 2024 r.

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

Zmiany interfejsu API

  • Element NavBackStackEntry.savedStateHandle jest teraz oznaczony jako @MainThread, ponieważ korzysta z kodu, który i tak musi być w wątku głównym. (Ibb988, b/299523245)

Poprawki błędów

  • Naprawiono błąd w Nawigacji, który powodował, że modele widoków NavGraph były zbyt wcześnieDESTROYEDwtedy, ponieważ powiązany wpis ViewModel nie był częścią zapisanego stanu. (Ib6bb7, b/317581849)

Aktualizacja zależności

Wersja 2.8.0-alpha02

7 lutego 2024 r.

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

Nowe funkcje

  • Navigation Compose obsługuje teraz funkcję przewidywania w aplikacji z powrotem przez nowe interfejsy API SeekableTransitionState dostępne w compose-animation. Dzięki temu możesz użyć gestu cofania, aby wyświetlić poprzednie miejsce docelowe w ramach niestandardowego przejścia przed podjęciem decyzji o zrealizowaniu transakcji za pomocą zrealizowanego gestu lub jej anulowaniem. (I8B8E9)

Wersja 2.8.0-alpha01

24 stycznia 2024 r.

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

Poprawki błędów

  • Naprawiliśmy wyciek BackStackState, który powodował, że wiele wywołań saveState z miejsca docelowego powodowało zapisanie wielu stanów, ale przywrócono tylko pierwsze z nich. (I598b0, b/309559751)
  • Rozwiązaliśmy problem, który powodował, że argumenty inne niż ciągi tekstowe nie były prawidłowo wyświetlane, gdy do wypełniania tytułu pasków aplikacji były używane pomocnicze NavigationUI. (#636, b/316676794)

Aktualizacja zależności

  • Funkcja tworzenia nawigacji wymaga teraz opcji Utwórz 1.7.0-alpha01, która naprawia błąd, który może powodować nieoczekiwaną animację skali. (b/297258205)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem w przypadku argumentów niebędących ciągiem znaków podczas korzystania z pomocników NavigationUI do wypełniania tytułu pasków aplikacji.

Wersja 2.7.7

Wersja 2.7.7

7 lutego 2024 r.

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

Poprawki błędów

  • Przeniesione z Nawigacji 2.8.0-alpha01: usunięto wyciek danych BackStackState, w wyniku którego po kilku wywołaniach saveState() na 1 pojedynczym NavBackStackEntry zapisano wiele stanów, ale przywrócono tylko pierwszy zapisany stan. (I598b0, b/309559751)
  • Przeniesione z Nawigacji 2.8.0-alpha01: naprawiono błąd polegający na tym, że argumenty niebędące ciągami znaków nie były prawidłowo wyświetlane, gdy do wypełniania tytułu pasków aplikacji są używane argumenty NavigationUI. (#636, b/316676794)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dziękujemy SimonMarquis za rozwiązanie problemu z wyświetlaniem w przypadku argumentów niebędących ciągiem znaków podczas korzystania z pomocników NavigationUI do wypełniania tytułu pasków aplikacji.

Wersja 2.7.6

Wersja 2.7.6

13 grudnia 2023 r.

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

Poprawki błędów

  • Funkcja NavGraph equals() prawidłowo uwzględnia teraz węzły innego wykresu, a nie tylko jeden z wywołań. Dzięki temu wykresy, które mają węzły o różnych identyfikatorach, nie będą już uznawane za równe (I401cb, b/311414915).

Wersja 2.7.5

Wersja 2.7.5

1 listopada 2023 roku

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

Ulepszenia wydajności

  • Znacznie poprawiła się wydajność porównywania 2 wykresów (zarówno pod względem czasu, jak i liczby alokacji). Oznacza to, że wywołania typu setGraph służące do wewnętrznego porównania nowego wykresu z wykresem istniejącym są znacznie szybsze i skutkują mniejszą liczbą pomijanych klatek. Dziękujemy Michałowi Z za dokładną analizę, która doprowadziła do tego ulepszenia. (I6ad62).
  • NavHost wyrenderuje teraz miejsce docelowe początkowe w pierwszym przebiegu kompozycji, zamiast czekać na odczyt zaktualizowanego stanu przez drugi przebieg. (I439a7, b/304852206)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że w przypadku wywołania funkcji setGraph więcej niż raz z tym samym wykresem tylko wtedy, gdy na wykresie znajdowało się miejsce docelowe, które zawierało działanie łączące 2 miejsca docelowe. (EOG7)
  • Okna, które były otwierane i zamknięte w krótkich odstępach czasu, nie będą już wyciekać na listę NavController.visibleEntries. (I67586, b/287969970)
  • Po wyświetleniu wpisu i zmianie konfiguracji jego ViewModel zostanie teraz prawidłowo wyczyszczony, jeśli saveState ma wartość false (fałsz). (Idf242, b/298164648)
  • Rozwiązaliśmy problem, który powodował, że funkcja NavController obsługiwała ten sam precyzyjny link więcej niż raz, jeśli stos wsteczny był całkowicie pusty przed zmianą konfiguracji lub wywołaniem setGraph tylko wtedy, gdy intencja przychodząca miała ustawioną flagę FLAG_ACTIVITY_NEW_TASK. (I73c7f)

Aktualizacje zależności

  • Nawigacja z fragmentami kodu jest teraz uzależniona od fragmentu 1.6.2. Naprawiamy problem, który powodował, że wystąpienia ViewModel zagnieżdżonych fragmentów nie były wyczyszczone podczas wywoływania funkcji clearBackStack.

Wersja 2.7.4

Wersja 2.7.4

4 października 2023 roku

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

Nowe funkcje

  • Dodano obsługę tras z argumentami w popUpTo. Pozwala to wrócić do konkretnego wpisu korzystającego z konkretnych argumentów i spełniać kryteria zgodne z funkcją popBackStack. (I731f4, b/299255572)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że przerwanie nawigacji z użyciem innej nawigacji z użyciem parametru popUpTo powoduje awarię FragmentNavigator. (I3c848, b/301887045)
  • Rozwiązaliśmy problem polegający na tym, że naciśnięcie klawisza wstecznego powodowało nieprawidłowe aktualizowanie elementu currentDestination, aby pasowało do wyświetlanego fragmentu. (Id0d6c, b/289877514)
  • Cykl życia DialogFragment zostanie teraz prawidłowo zmieniony na RESUMED po zamknięciu okna powyżej. (I88f0d, b/301811387)

Wersja 2.7.3

Wersja 2.7.3

20 września 2023 r.

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

Poprawki błędów

  • Naprawiono błąd w nawigacji z fragmentami kodu, który powodował, że lista visibleEntries zawierała nieprawidłowe wpisy. (I5caa9, b/288520638)
  • Rozwiązaliśmy problem, który powodował, że miejsce docelowe pływającego okna (tj.Dialogs, Bottomsheets itp.) nie otrzymywało wywołania zwrotnego cyklu życia RESUMED. (I3b866, b/287505132)

Wersja 2.7.2

Wersja 2.7.2

6 września 2023 r.

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

Poprawki błędów

  • Nawigacja jest teraz uzależniona od cyklu życia 2.6.2. Naprawiono interakcję między rememberSaveable a kontem NavHost w funkcji nawigacji, która spowodowała prawidłowe przywrócenie stanu rememberSaveable miejsc docelowych i wszystkich instancji SavedStateHandle należących do ViewModel po śmierci i odtworzeniu procesu. (b/298059596, b/289436035)
  • Rozwiązaliśmy problem, który powodował, że w kompozycji nawigacji jednocześnie wyświetlała się wiele okien dialogowych, w których częściowo zasłonięte okna (np. nie znajdujące się na samej górze) miały stan CREATED, a nie STARTED. (Aosp/2728520, b/289257213)
  • Rozwiązaliśmy problem, który powodował, że w funkcji tworzenia nawigacji jednocześnie wyświetlało się wiele okien, w których zamknięcie pierwszego z nich powodowało zablokowanie nowego okna najwyższego poziomu w stanie cyklu życia STARTED zamiast poprawnego przeniesienia się do RESUMED. (Aosp/2629401, b/286371387)
  • Bezpieczne argumenty nawigacji nie tworzą już instancji zadania w sposób, który w rzeczywistości nie jest wykonywany. (I0e385, b/260322841)

Aktualizacja zależności

  • Tworzenie nawigacji zależy teraz od funkcji Utwórz 1.5.1.

Wersja 2.7.1

Wersja 2.7.1

23 sierpnia 2023 r.

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

Poprawki błędów

  • Rozwiązaliśmy problemy w nawigacji z funkcją tworzenia wiadomości, które powodowały, że podczas korzystania z elementu Scaffold mógł wystąpić błąd przy próbie uzyskania dostępu do elementu ViewModel Lifecycle.State.DESTROYED. (I1dc11, b/268422136)

Wersja 2.7.0

Wersja 2.7.0

9 sierpnia 2023 r.

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

Ważne zmiany wprowadzone od wersji 2.6.0

Animacje od akompaniatora

Teraz, gdy usługa AnimatedContent jest stabilna, udało nam się przenieść kod z Accompanist Navigation Animation z powrotem do narzędzia Navigation Compose.

Oznacza to, że cała obsługa ustawiania niestandardowych przejść z usługi AnimatedNavHost jest bezpośrednio obsługiwana w NavHost.

Nie wprowadzimy żadnych dodatkowych zmian w animacji z nawigacją towarzyszącą. Wkrótce zostanie ona oficjalnie wycofana. Dotyczy to też wskazówek na temat przejścia z powrotem do Edytora nawigacji. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa usługi Accompanist (0.31.2-alpha), nie musisz wprowadzać żadnych zmian w interfejsie API. (b/197140101)

Poprawki błędów

  • NavHost w narzędziu Navigation Compose teraz prawidłowo przechwytuje połączenia zwrotne systemu, nawet gdy działanie zostało ZATRZYMANE i WZNÓW. (Icb6de, b/279118447)

Aktualizacje zależności

  • Nawigacja opiera się teraz na funkcji Utwórz 1.5.0 od 1.1.0.

Wersja 2.7.0-rc01

26 lipca 2023 r.

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

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że lambda EnterTransition i ExitTransition utworzone w ramach elementu NavHost mogły pozostać w pamięci nawet po usunięciu elementu NavHost z kompozycji. (I893d0)

Znane problemy

  • W Nawigacji w wersji 2.6.x występuje problem polegający na tym, że podczas korzystania z funkcji popUpTo można wywołać błąd IllegalArgumentException. Można tego uniknąć, zmieniając strukturę wykresu zgodnie z tymi wskazówkami. (b/287133013)

Wersja 2.7.0-beta02

28 czerwca 2023 r.

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

Poprawki błędów

  • Funkcja Navigation Compose ma teraz odpowiednią kolejność przejść niestandardowych w przypadku niestandardowych przejść z użyciem opcji popUpTo (/Ib1c3a, b/285153947).

Wersja 2.7.0-beta01

7 czerwca 2023 r.

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

Poprawki błędów

  • Funkcja NavHost w narzędziu Navigation Compose teraz prawidłowo przechwytuje połączenia zwrotne systemowe, nawet jeśli Activity ma wartość STOPPED i RESUMED. (Icb6de, b/279118447)

Wersja 2.7.0-alpha01

24 maja 2023 r.

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

Animacje od akompaniatora

Teraz, gdy usługa AnimatedContent jest stabilna, udało nam się przenieść kod z Accompanist Navigation Animation z powrotem do narzędzia Navigation Compose.

Oznacza to, że cała obsługa ustawiania niestandardowych przejść z usługi AnimatedNavHost jest bezpośrednio obsługiwana w NavHost.

Nie wprowadzimy żadnych dodatkowych zmian w animacji z nawigacją towarzyszącą. Wkrótce zostanie ona oficjalnie wycofana. Dotyczy to też wskazówek na temat przejścia z powrotem do Edytora nawigacji. Będzie to jednak odwrotność przewodnika po migracji. Jeśli korzystasz już z najnowszej wersji alfa usługi Accompanist (0.31.2-alpha), nie musisz wprowadzać żadnych zmian w interfejsie API. (b/197140101)

Poprawki błędów

  • Z sekcji Nawigacja 2.6.0-rc02: naprawiono błąd związany z nawigacją we fragmentach „Fragmenty”, który powodował, że nawigacja z użyciem popUpTo i wyskakiwanie fragmentu z tylnego stosu bez odtworzenia jego widoku powodowała z powrotem przerwanie działania systemu. (Ieb8d4, b/281726455)

Aktualizacje zależności

  • Nawigacja opiera się teraz na funkcji Utwórz 1.5.0-beta01.

Wersja 2.6.0

Wersja 2.6.0

7 czerwca 2023 r.

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

Ważne zmiany w Nawigacji wprowadzone od wersji 2.5.0

  • Elementy arguments funkcji NavBackStackEntry i elementy arguments przekazywane do funkcji OnDestinationChangedListener są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne przy późniejszym dostępie do instancji arguments ani do innych instancji OnDestinationChangedListener.
  • Funkcja NavDeepLink obsługuje teraz domyślne wartości tablic, co umożliwia obsługę powtórzonych parametrów zapytania, które będą mapowane na typ tablicy argumentu. NavType zawiera teraz metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości.
  • Niestandardowe podklasy klasy NavType mogą teraz zastąpić klasę serializeAsValue, aby zserializować wartość w ciągu znaków. Dzięki temu serializacja i deserializacja (za pomocą parseValue) mogą zostać w całości zamknięte w klasie NavType. Funkcja StringType zastępuje teraz tę metodę wywoływania funkcji Uri.encode w określonym elemencie String.

Ważne zmiany w usłudze Navigation Compose od wersji 2.5.0

  • Podczas wyświetlania podglądu funkcji kompozycyjnej przy użyciu funkcji NavHost domyślnie wyświetla się teraz startDestination na wykresie nawigacji.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) są teraz dostępne wszystkie trasy obsługi z argumentami częściowo lub całkowicie wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu.
  • Próba utworzenia pustego pola NavDeepLink za pomocą DSL navDeepLink Kotlin spowoduje teraz wyświetlenie ostrzeżenia o tym, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME.

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

  • NavHostFragment nie przechwytuje już systemowego przycisku Wstecz. Dzięki temu bazowe FragmentManager może obsłużyć system z powrotem. Dzięki temu fragment fragmentu 1.7.0-alpha01 i nowszym może wyświetlać animację wsteczną w aplikacji na urządzeniach z Androidem U.
  • Gdy korzystasz z nawigacji z fragmentami kodu, próba ręcznego wykonania polecenia FragmentTransaction, który dodaje fragment do stosu wstecznego FragmentManager, spowoduje zgłoszenie 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 do nawigacji, obiekt zastępczy zostanie automatycznie wypełniony wartością packageName kontekstu.
  • FragmentNavigator używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementów NavBackStackEntries. Oznacza to, że NavBackStackEntry Lifecycle będzie teraz czekać na zakończenie efektów specjalnych we fragmencie, w którym następuje przejście lub zakończenie, przed przeniesieniem ostatniego elementu Lifecycle.State.
  • DialogFragmentNavigator używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementów NavBackStackEntries. Oznacza to, że NavBackStackEntry Lifecycle będzie teraz czekać, aż DialogFragment Lifecycle przejdzie do DESTROYED, zanim przejdzie do samej DESTROYED.
  • NavHostFragment umożliwia teraz pobranie NavController natychmiast po podłączeniu obiektu NavHostFragment do FragmentManager, a nie dopiero po onCreate().
  • Obsługa modułów funkcji dynamicznych zależy teraz od szczegółowej biblioteki Play Feature Delivery.
  • Bezpieczne argumenty nawigacji wymagają teraz wtyczki Androida do obsługi Gradle w wersji 7.3.0. Oznacza to, że jest ona obecnie zgodna tylko z wersjami 7.3.0 i nowszymi.

Ważne zmiany w NavigationUI od wersji 2.5.0

  • Podczas przekazywania identyfikatora wykresu nawigacji do AppBarConfiguration (np. za pomocą Menu) NavigationUI traktuje teraz tylko początkowe miejsce docelowe tego wykresu nawigacyjnego jako miejsce docelowe najwyższego poziomu i nie oznacza w nieprawidłowy sposób każdego miejsca docelowego na wykresie. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej funkcji isTopLevelDestination w AppBarConfiguration.
  • Integracje setupWithNavController w NavigationUI umożliwiające pracę 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ągu znaków, zamiast podawać automatycznie wygenerowaną liczbę całkowitą zasobu.
  • NavigationUI udostępnia teraz logi, gdy nie może przejść przez wybrany obszar MenuItem.

Wersja 2.6.0-rc02

24 maja 2023 r.

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

Poprawki błędów

  • Naprawiono problem z nawigacją we fragmentach „Fragmenty”, która polegała na tym, że nawigowanie z użyciem parametru popUpTo i wyskakiwanie fragmentu z tylnego stosu bez odtworzenia jego widoku powodowało z powrotem przerwanie działania systemu. (Ieb8d4, b/281726455)

Wersja 2.6.0-rc01

10 maja 2023 r.

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

Poprawki błędów

  • Naprawiono błąd nawigacji z fragmentami, który powodował, że usunięcie fragmentu przez nawigację z użyciem parametru popUpTo w wywołaniu zwrotnym cyklu życia onResume() skutkowało wyświetleniem IllegalStateException. (I21884, b/279644470)

Wersja 2.6.0-beta01

19 kwietnia 2023 r.

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

Nowe funkcje

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

Poprawki błędów

  • Gdy korzystasz z nawigacji z fragmentami kodu, próba ręcznego wykonania polecenia FragmentTransaction, który dodaje fragment do stosu wstecznego FragmentManager, spowoduje zgłoszenie IllegalArgumentException. Zawsze dodawaj fragmenty za pomocą interfejsu API navigate(). (I6d38e)
  • Jeśli obiekt navigate dodaje wpis i zasadę popBackStack, która usuwa go w tej samej ramce, wynikowy wpis górny na stosie tylnym będzie teraz konsekwentnie wracać do RESUMED Lifecycle.State. (Id8067, b/276495952)

Wersja 2.6.0-alpha09

5 kwietnia 2023 r.

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

Poprawki błędów

  • Naprawiono sprawdzanie nieprawidłowej trasy, na przykład jeśli NavDestination zawiera wartość NavArgument, która nie ma wartości null, trasa tego miejsca docelowego musi zawierać zmienne dla argumentów o takich samych nazwach jak wartość NavArgument, która nie ma wartości null. (Ic62bf, b/274697949)
  • Nawigacja z użyciem precyzyjnych linków oparta na metodzie Action/MimeType będzie teraz kończyć się niepowodzeniem, jeśli w operacji nawigacji brakuje wartości NavArgument, która nie jest wartością null wymaganej przez obiekt NavDestination, do którego pasuje Action/MimeType. (Ibfa17, b/271777424)
  • Gdy NavController ustawi wykres z tą samą trasą i miejscami docelowymi co poprzedni wykres, teraz prawidłowo zastąpi bieżące węzły grafu i miejsca docelowe stosu wstecznego nowymi instancjami. Rozwiązano problem powodujący awarię występującą podczas korzystania z funkcji onLaunchSingleTop bez zapisywania stanu w narzędziu Nawigacja. Rozwiązuje to też błąd polegający na tym, że w celu nawigacji do miejsc docelowych powiązanych z kompilacją na wykresie głównym i nieprawidłowym stosem powrotnym. (I5bc58, b/275258161, b/275407804)

Wersja 2.6.0-alpha08

22 marca 2023 r.

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

Nowe funkcje

  • NavHostFragment umożliwia teraz pobranie NavController natychmiast po podłączeniu obiektu NavHostFragment do FragmentManager, a nie dopiero po onCreate(). (Ic6382, b/220186282)

Poprawki błędów

  • Naprawiono błąd NullPointerException podczas wyświetlania zagnieżdżonego wykresu zawierającego argument niedopuszczający wartości pustych. (6b3581, b/249988437)
  • Podczas korzystania z systemu po przeprowadzeniu nawigacji przy użyciu popUpTo stan elementu NavController zostanie uzupełniony o właściwy wpis. (I3a8ec, b/270447657)
  • FragmentNavigator będzie teraz prawidłowo rozpoznawać wpisy, gdy tylny stos zostanie pobrany przez system zwrotny systemu lub popBackStack() i czy transakcja używa efektów dla danego fragmentu. (I81bdf)
  • Dodaję fragmenty do adresu FragmentNavigator FragmentManager bez korzystania z nawigacji nie będzie już powodować awarii. (B17204, b/274167493)

Aktualizacje zależności

Wersja 2.6.0-alpha07

8 marca 2023 r.

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

Poprawki błędów

  • Warianty interfejsu API getBackStackEntry, popBackStack i clearBackStack, które przyjmują trasy, przyjmują teraz wzorce tras z argumentami do wartości null i parametrami zapytania dopuszczonymi do wartości null (I22294, b/269302500)
  • Naprawiono błąd, który powodował, że wywołanie funkcji clearBackStack() z poziomu NavController nie skutkowało usunięciem zapisanego stanu w menedżerze fragmentów powiązanym z usuniętym stosem wstecznym. (Ic1cce, b/271190202)
  • Naprawiliśmy regresję w wersjach 2.6.0-alfa06, która powodowała podświetlanie niewłaściwego elementu MenuItem w elemencie BottomNavigationView przy korzystaniu z systemu między kartami. (I634f6, b/270447657)
  • Naprawiliśmy regresję w wersjach 2.6.0-alfa06, w wyniku której elementy NavBackStackEntry nie zostały przeniesione do stanu WZNÓW podczas korzystania z elementów Animation. (Ib3589, b/269646882)

Wersja 2.6.0-alpha06

22 lutego 2023 roku

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

Nowe funkcje

  • Podczas wyświetlania podglądu funkcji kompozycyjnej przy użyciu funkcji NavHost domyślnie wyświetla się teraz startDestination na wykresie nawigacji. (I2B89f)

Zmiany interfejsu API

  • Wszystkie NavController przeciążenia typu navigate są teraz opatrzone adnotacjami @MainThread, aby były wywoływane w wątku głównym. (I2c0b0, b/263427111)

Poprawki błędów

  • Naprawiono błąd występujący podczas próby nawigacji podczas korzystania z dynamicznej nawigacji po fragmentach. (I3ee29, b/268360479)
  • Naprawiono błąd polegający na tym, że przejście do innego fragmentu za pomocą przycisku Wstecz w systemie nie powodowało zmiany dolnego paska na prawidłowy wybrany element (If559f, b/269044426)

Znane problemy

  • Jeśli używasz nawigacji z fragmentami, cykl życia NavBackStackEntry nie dociera do RESUMED przy korzystaniu z interfejsów API Animation. (b/269646882)
  • Jeśli korzystasz z nawigacji z fragmentami z fragmentami z fragmentami z krzyżykiem i używasz funkcji BottomNavigation, próba przywrócenia stosu z kilkoma wpisami spowoduje, że BottomMenuItem nie zostanie prawidłowo zaktualizowany. (b/270447657)
  • Podczas korzystania z nawigacji z fragmentami kodu po przywróceniu stanu NavBackStackEntry Lifecycle nie otrzymuje parametru DESTROYED, gdy jego fragment ma wartość DESTROYED . (B/270610768)

Wersja 2.6.0-alpha05

8 lutego 2023 r.

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

Nowe funkcje

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) są teraz dostępne wszystkie trasy obsługi z argumentami częściowo lub całkowicie wypełnionymi. Pamiętaj, że argumenty muszą być dokładnie takie same jak argumenty wpisu. (Iebd28, Ic678c, I3b37b, b/257514373)
  • FragmentNavigator używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementów NavBackStackEntries. Oznacza to, że NavBackStackEntry Lifecycle będzie teraz czekać na zakończenie efektów specjalnych we fragmencie, w którym następuje przejście lub zakończenie, przed przeniesieniem ostatniego elementu Lifecycle.State. (I3cb19, b/238686802)
  • DialogFragmentNavigator używa teraz interfejsów API przejścia podczas nawigowania i wyświetlania elementów NavBackStackEntries. Oznacza to, że NavBackStackEntry Lifecycle będzie teraz czekać, aż DialogFragment Lifecycle przejdzie do DESTROYED, zanim przejdzie do samej DESTROYED. (I53ee5, b/261213893)

Zmiany interfejsu API

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

Poprawki błędów

  • Podczas korzystania z interfejsów API push/popWithTransition stan nawigacji będzie teraz ustawiony w trybie No-op, a wpis jest już obsługiwany. (Iadbfa, b/261213893)
  • Jeśli używasz interfejsu launchSingleTop z zagnieżdżonym NavGraph, wszystkie miejsca docelowe zaczynające się od pierwotnego miejsca docelowego do startDestination zostaną prawidłowo dodane tylko na górze stosu. (Id4bea, b/253256629)
  • Nawigacja będzie teraz prawidłowo zastępować instancję DialogFragment podczas nawigacji do tego samego miejsca docelowego z flagą launchSingleTop ustawioną na „true”. (I45b5a, b/149572817)
  • Element SafeArgs w nawigacji nie będzie już powodować błędu kompilacji, gdy używasz argumentów o długości dokładnie 19 znaków. (Id60bc, b/257110095)

Wersja 2.6.0-alpha04

9 listopada 2022 r.

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

Nowe funkcje

  • Niestandardowe podklasy klasy NavType mogą teraz zastąpić klasę serializeAsValue, aby zserializować wartość w ciągu znaków. Dzięki temu serializacja i deserializacja (za pomocą parseValue) mogą zostać w całości zamknięte w klasie NavType. Funkcja StringType zastępuje teraz tę metodę wywoływania funkcji Uri.encode w określonym elemencie String. (IE5213, b/247637434)
  • NavigationUI udostępnia teraz logi, gdy nie może przejść przez wybrany obszar MenuItem. (I2af5a, b/247730357)

Poprawki błędów

  • Precyzyjne linki nawigacyjne są teraz analizowane leniwie zamiast na wykresie, co może poprawić wydajność przy uruchomieniu. (IAB0ab)
  • Naprawiono awarię powodowaną przez przejście w górę po precyzyjnym linku do miejsca docelowego z domyślnymi argumentami o wartości null. (I51c24, b/243183636)

Aktualizacja zależności

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

Wersja 2.6.0-alpha03

24 października 2022 r.

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

Poprawki błędów

  • Z Nawigacji 2.5.3: NavHost nie spowoduje już wyświetlenia ciągu NoSuchElementException, jeśli nie ma miejsca docelowego, które może utworzyć Crossfade. Teraz pominie tylko kompozycję. (Ieb46e, b/253299416)
  • Z poziomu Nawigacji 2.5.3: naprawiliśmy błąd polegający na tym, że zapisany stan tworzenia wiadomości (np. przypadki użycia rememberSaveable) nie był zapamiętywany i usuwany, gdy miejsce docelowe było wyskakiwane z tylnego stosu. (I64949)

Aktualizacje zależności

Wersja 2.6.0-alpha02

5 października 2022 r.

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

Zmiany w działaniu

  • Podczas przekazywania identyfikatora wykresu nawigacji do AppBarConfiguration (np. za pomocą Menu) NavigationUI traktuje teraz tylko początkowe miejsce docelowe tego wykresu nawigacyjnego jako miejsce docelowe najwyższego poziomu i nie oznacza w nieprawidłowy sposób każdego miejsca docelowego na wykresie. Sposób przekazywania identyfikatora pojedynczego miejsca docelowego pozostaje bez zmian. Ta sama funkcja jest dostępna w Twoim kodzie za pomocą nowej 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)
  • Wybrany element menu nie będzie już aktualizowany podczas przechodzenia do miejsca docelowego FloatingWindow, takiego jak okno. (I4cde8, b/240308330)

Wersja 2.6.0-alpha01

7 września 2022 roku

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

Nowe funkcje

  • Integracje setupWithNavController w NavigationUI umożliwiające pracę 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ągu znaków, zamiast podawać automatycznie wygenerowaną liczbę całkowitą zasobu. (I5f803, b/167959935)
  • Funkcja NavDeepLink obsługuje teraz domyślne wartości tablic, co umożliwia obsługę powtórzonych parametrów zapytania, które będą mapowane na typ tablicy argumentu. NavType zawiera teraz metodę domyślną, którą można zastąpić, aby połączyć 2 przeanalizowane wartości. (Id68c3, b/209977108)
  • Jeśli używasz dokładnego ciągu ${applicationId} jako symbolu zastępczego w atrybutach app:data i app:dataPattern w elemencie aktywności pliku XML do nawigacji, obiekt zastępczy zostanie automatycznie wypełniony wartością packageName kontekstu. (Iaabde, b/234223561)
  • Próba utworzenia pustego pola NavDeepLink za pomocą DSL navDeepLink Kotlin spowoduje teraz wyświetlenie ostrzeżenia o tym, że precyzyjny link wymaga prawidłowego identyfikatora URI, działania lub typu MIME. (I08d2f, b/154038883)

Zmiany interfejsu API

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

Zmiany w działaniu

  • arguments NavBackStackEntry i arguments przekazane do OnDestinationChangedListener są teraz tylko kopią stałych argumentów, które zostały utworzone podczas przechodzenia do miejsca docelowego. Oznacza to, że zmiany wprowadzone w tych pakietach nie będą widoczne przy późniejszym dostępie do instancji arguments ani do innych instancji OnDestinationChangedListener. (I676f5)

Poprawki błędów

  • Na karcie Nawigacja 2.5.2: dynamiczna nawigacja teraz prawidłowo próbuje zainstalować miejsca docelowe aktywności z innych modułów, zanim przejdzie do nich. (Ia2c16, b/240292838)
  • Od Nawigacji 2.5.2: nawigacja będzie teraz prawidłowo zastępować instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi launchSingleTop na „prawda”. (I5a2f1, b/237374580)
  • Z Nawigacji 2.5.2: naprawiono błąd IllegalStateException związany z przejściem do podwójnych zagnieżdżonych wykresów, które korzystają z tego samego wykresu nadrzędnego i nowego miejsca docelowego z wyskakującym punktem początkowym. (I9f7cb, b/243778589)

Wersja 2.5

Wersja 2.5.3

24 października 2022 r.

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

Poprawki błędów

  • Funkcja NavHost nie będzie już wywoływać NoSuchElementException, gdy nie ma dostępnego miejsca docelowego do utworzenia elementu Crossfade. Teraz pominie tylko kompozycję. (Ieb46e, b/253299416)
  • Rozwiązaliśmy problem, który powodował, że zapisany stan tworzenia wiadomości (np. przypadki użycia funkcji rememberSaveable) nie był zapomniany i usuwany, gdy miejsce docelowe było wyskakiwane z panelu tylnego. (I64949)

Wersja 2.5.2

7 września 2022 roku

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

Poprawki błędów

  • Obecnie dynamiczna nawigacja prawidłowo próbuje zainstalować miejsca docelowe aktywności z innych modułów, zanim przejdzie do nich. (Ia2c16, b/240292838)
  • Nawigacja będzie teraz prawidłowo zastępować instancję Fragment podczas przechodzenia do tego samego miejsca docelowego i ustawiania flagi launchSingleTop na „prawda”. (I5a2f1, b/237374580)
  • Naprawiono IllegalStateException spowodowane przejściem do podwójnych zagnieżdżonych wykresów, które mają ten sam element nadrzędny i nowe miejsce docelowe początkowe. (I9f7cb, b/243778589)

Aktualizacja zależności

Wersja 2.5.1

27 lipca 2022 roku

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

Poprawki błędów

  • Funkcja Navigation Safe Args nie będzie już wyświetlać ostrzeżeń o wycofaniu w wygenerowanych klasach, gdy używasz niestandardowych typów argumentów zapisanych w obiekcie Bundle. (Id86ed, b/237725966)

Aktualizacje zależności

Wersja 2.5.0

29 czerwca 2022 r.

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

Ważne zmiany wprowadzone od wersji 2.4.0

  • Integracja dodatków do tworzeniaNavigation może teraz udostępniać bezstanowe ViewModelProvider.Factory za pomocą funkcji CreationExtras w cyklu życia 2.5.0.

Bezpieczne argumenty nawigacji

  • W systemie Navigation Safe Args zależność Android Gradle Plugin została uaktualniona, tak aby korzystała z zasad 7.0.4, a zgodność z wersjami AGP została wycofana przed 7.0.
  • Dodano obsługę atrybutu build.gradle przestrzeni nazw zamiast atrybutu applicationId.

Inne zmiany

  • Interfejs API visibleEntries nie jest już eksperymentalny i zapewnia funkcję pobierania wszystkich wpisów, których miejsce docelowe jest obecnie widoczne zgodnie z tymi zasadami: NavController.

Wersja 2.5.0-rc02

15 czerwca 2022 r.

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

Poprawki błędów

  • Naprawiono błąd spowodowany szybkim przełączaniem się między dolnymi miejscami docelowymi podczas korzystania z funkcji tworzenia nawigacji NavHost. (I3979a, b/234054916)
  • Navigation SafeArgs nie będzie już ulegać awarii, gdy użyjesz applicationIdSuffix i przestrzeni nazw bez atrybutu applicationId lub gdy pola applicationId i przestrzeń nazw będą się różnić. (I754b1, b/233119646)
  • NavArgument ma teraz niestandardową funkcję toString() do pokazywania wartości wewnętrznych argumentu. (I900a8)

Wersja 2.5.0-rc01

11 maja 2022 roku

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

Nowe funkcje

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

Poprawki błędów

  • Zakresy kompozycyjne w zakresie NavHost i DialogHost są teraz rozmieszczone w odpowiedniej kolejności, tj. wewnętrzne kompozycje są usuwane przed zakresem zewnętrznym elementów kompozycyjnych. (I157e6)
  • Nawigacja SafeArgs używa teraz PathSensitivity.RELATIVE w: ArgumentsGenerationTask, aby umożliwić ponowne zlokalizowanie pamięci podręcznej. Oznacza to, że wpisu pamięci podręcznej można teraz ponownie użyć z kompilacji CI w kompilacji lokalnej. (I5f67c, b/173420454)
  • Reguła lintowania UnrememberedGetBackStackEntryDetector została zaktualizowana tak, aby wywołanie remember otaczające wywołanie funkcji getBackStackEntry() również było przekazywane w obiekcie NavBackStackEntry jako klucz.(Ib7081, b/227382831)

Wersja 2.5.0-beta01

20 kwietnia 2022 r.

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

Poprawki błędów

  • DialogNavigator używa teraz popWithTransition podczas wykonywania wywołania dismiss(). Naprawia to warunek wyścigu, gdy używany jest ViewModel w miejscu docelowym dialog, który powoduje wyświetlenie komunikatu IllegalStateException przy zamykaniu okna przez powrót systemu lub kliknięcie poza oknem, aby je zamknąć. (Id7376, b/226552301)

Aktualizacje zależności

  • Nawigacja opiera się teraz na cyklu życia 2.5.0-beta01, a naprawianie elementu IllegalStateException podczas umieszczania elementu NavHost w innym elemencie NavHost na oddzielnej dolnej karcie nawigacyjnej, gdy jest używany kilka stosów tylnych.

Wersja 2.5.0-alpha04

6 kwietnia 2022 roku

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

Zmiany interfejsu API

Poprawki błędów

  • Aby określić, które wpisy utworzyć, NavHost zależy teraz od parametru visibleEntries z obiektu NavController. Oznacza to, że w przypadku korzystania z zagnieżdżonych NavHost wewnętrzny obiekt NavHost powinien teraz prawidłowo animować się na zewnątrz. (I4ba2b, b/225394514)
  • Pole visibleEntries StateFlow dostarczane przez NavController jest teraz oparte na maksymalnym stanie cyklu życia wpisu, a nie na bieżącym stanie cyklu życia. Oznacza to, że nawet jeśli cykl życia hosta navController spadnie poniżej wartości STARTED, lista widocznych całości pozostanie bez zmian. (I9e2a8, b/225394514)
  • SavedStateViewFactory obsługuje teraz korzystanie z CreationExtras nawet wtedy, gdy zostało zainicjowane za pomocą SavedStateRegistryOwner. Jeśli podano dodatki, zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
  • NavDeepLink może teraz analizować identyfikatory URI za pomocą jednego parametru zapytania bez wartości. (I0efe8, b/148905489)
  • Pusty ciąg jest teraz uważany za prawidłowe argumenty w precyzyjnych linkach. (I70a0d, b/217399862)
  • Interfejs Navigation Safe Args nie będzie już ulegał awarii podczas korzystania z przestrzeni nazw, gdy nie będzie parametru AndroidManifest.xml. (I17ccf, b/227229815)

Wersja 2.5.0-alpha03

23 lutego 2022 r.

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

Zmiany interfejsu API

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

Poprawki błędów

  • NavDeepLinks teraz prawidłowo obsługuje zakodowane znaki nowego wiersza umieszczone w identyfikatorach URI tras/precyzyjnych linków. (I513d1, b/217815060)
  • Aplikacja CreationExtras będzie teraz działać prawidłowo, gdy jest używana z: NavBackStackEntries, aby utworzyć modele widoków. (I69161, b/217617710)
  • Bezpieczne argumenty nawigacji obsługują teraz używanie zdefiniowanej przestrzeni nazw w polu build.gradle zamiast pakietu z pliku AndroidManifest. (I659ef, b/217414933)

Wersja 2.5.0-alpha02

9 lutego 2022 r.

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

Poprawki błędów

  • Na karcie Nawigacja 2.4.1: NavHostFragment będzie teraz prawidłowo ustawiać wartość OnBackPressedDispatcher w przypadku powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)
  • Z sekcji Nawigacja 2.4.1: gdy precyzyjne linki prowadzą przez wiele zagnieżdżonych elementów NavGraph, stos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe rozpoczęcia. (I504c0, b/214383060)

Wersja 2.5.0-alpha01

26 stycznia 2022 r.

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

Nowe funkcje

Poprawki błędów

  • Rozwiązaliśmy problem z dostępem do tworzonego elementu ViewModel przez by navGraphViewModels() z: onCreate() fragmentu z fragmentem nie powiedzie się z wartością IllegalStateException. (I8a14d).
  • Dzięki funkcji NavDeepLink nie będą już dwukrotnie dekodować argumentów, co oznacza, że do ostatecznego miejsca docelowego przekazywane są odpowiednie argumenty. (I31b0a, b/210711399)

Bezpieczne argumenty

  • Bezpieczne argumenty wymagają teraz wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że bezpieczne argumenty nawigacyjne nie będą już zgodne z Android Studio w wersji starszej niż 7.0, ale jest teraz zgodny z Wtyczka Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (I41c88, b/213086135, b/207670704)

Wersja 2.4.2

Wersja 2.4.2

6 kwietnia 2022 roku

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

Poprawki błędów

Wersja 2.4.1

Wersja 2.4.1

9 lutego 2022 r.

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

Poprawki błędów

  • NavHostFragment będzie teraz prawidłowo ustawiać wartość OnBackPressedDispatcher podczas korzystania z powiązania widoku z zagnieżdżonymi wykresami. (Ifbb51, b/214577959)
  • Gdy używasz precyzyjnych linków przez wiele zagnieżdżonych komponentów NavGraph, stos wsteczny będzie teraz prawidłowo zawierać pośrednie miejsca docelowe rozpoczęcia. (I504c0, b/214383060)
  • Przeniesione z Nawigacji 2.5.0-alpha01: naprawiono błąd polegający na tym, że podczas tworzenia modelu widoku danych przez by navGraphViewModels() z albumu onCreate() fragmentu nie powiódłby się z IllegalStateException. (I8a14d).
  • Przeniesione z Nawigacji 2.5.0-alpha01: NavDeepLink nie już 2 razy niepotrzebnie dekodują argumentów, co oznacza, że prawidłowo zdekodowane argumenty są przekazywane do ostatecznego miejsca docelowego. (I31b0a, b/210711399)
  • Przeniesione z Nawigacji 2.5.0-alpha01: bezpieczne argumenty zależą teraz od wtyczki Androida do obsługi Gradle w wersji 7.0.4. Oznacza to, że bezpieczne argumenty nawigacyjne nie będą już zgodne z Android Studio w wersji starszej niż 7.0, ale są teraz zgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (I41c88, b/213086135, b/207670704)

Wersja 2.4.0

Wersja 2.4.0

26 stycznia 2022 r.

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

Ważne zmiany wprowadzone od wersji 2.3.0

  • Wszystkie artefakty nawigacji zostały przepisane w języku Kotlin. Dzięki temu zwiększyło się możliwość wartości null klas korzystających z klas ogólnych (takich jak podklasy NavType). Wszystkie funkcje rozszerzeń Kotlin, które były częścią artefaktów -ktx, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty -ktx będą nadal publikowane, ale będą całkowicie puste.
  • Artefakt navigation-fragment zawiera teraz gotową implementację układu z dwoma panelami za pomocą nowego interfejsu AbstractListDetailFragment. Ten fragment korzysta z elementu SlidingPaneLayout do zarządzania panelem listy (udostępnianym przez Twoją klasę podrzędną) i panelem szczegółów, w którym implementacją jest NavHostFragment, tak jak w naszej przykładowej implementacji.
  • Metoda currentBackStackEntryAsFlow() w systemie NavController udostępnia Flow, który jest emitowany zawsze, gdy zmienia się bieżąca wartość NavBackStackEntry. Możesz użyć tego procesu zamiast ręcznego zarządzania elementem OnDestinationChangedListener.
  • NavController umożliwia teraz pobranie listy wszystkich widocznych instancji NavBackStackEntry w postaci elementu StateFlow za pomocą eksperymentalnej właściwości visibleEntries.
  • Można teraz rozszerzyć klasę NavType, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas tworzenia automatycznie, np. za pomocą funkcji Wykres nawigacji Kotlin DSL.
  • Nawigacja udostępnia teraz interfejsy API findStartDestination() i getHierarchy(), które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI. findStartDestination() to funkcja rozszerzenia w usłudze NavGraph, która wskazuje miejsce docelowe początkowego, które wyświetli się po przejściu do wykresu, nawet jeśli startDestination jest zagnieżdżonym elementem NavGraph. getHierarchy() to funkcja w funkcji NavDestination, której można użyć do sprawdzenia, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metody usługi NavigationUI, które korzystały z klasy BottomNavigationView, zostały zaktualizowane, tak aby zajmowały nadrzędną klasę wprowadzone w interfejsie Material 1.4.0 w języku: NavigationBarView. Zezwala na używanie tych metod w NavigationRailView.

  • Podczas rozszerzania elementu <action> za pomocą kodu XML atrybuty animacji mogą korzystać z atrybutów pobranych z motywu ze składnią app:enterAnim="?attr/transitionEnter".

  • Bezpieczne argumenty generują teraz metodę fromSavedStateHandle() dla każdej 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 i DSL Kotlin

Poprzednie wersje Nawigacji polegały na tym, że każde miejsce docelowe miało stały identyfikator całkowity, który jednoznacznie identyfikowałby je na podstawie obu miejsc docelowych i umożliwiał navigate()dojście do tego miejsca docelowego bezpośrednio lub przez działanie. Chociaż taki wykres nadal jest przydatny i przydatny, zwłaszcza w przypadkach, gdy definiujesz graf nawigacji w formacie XML i możesz używać automatycznie generowanych stałych R.id lub Bezpiecznego argumentów (które wykorzystują te stałe do generowania kodu podczas kompilacji), ten system unikalnych liczb całkowitych nie umożliwiał rozpoznawania semantycznego znaczenia i wyrazu potrzebnego do obsługi w pełni dynamicznych wykresów tworzonych na podstawie oprogramowania Navigation Kotlin DSL.

W tej wersji wprowadziliśmy nową opcję, która pozwala jednoznacznie zidentyfikować miejsce docelowe na wykresie nawigacyjnym według jego trasy. Trasa to element typu String, który określa unikalną ścieżkę do miejsca docelowego. Wszystkie metody DSL Kotlin, które korzystały z identyfikatora miejsca docelowego, zostały wycofane i zastąpione odpowiednim interfejsem API, który korzysta z trasy.

Każda trasa powinna być traktowana jako część atrybutu Uri, która określa dany cel podróży, np. home, profile/{userId}, profile/{userId}/friends itp. Jeśli tożsamość miejsca docelowego jest powiązana z konkretnym fragmentem treści, te dynamiczne argumenty powinny być częścią trasy zgodnie z tymi samymi regułami co pośrednie precyzyjne linki.

Wszystkie interfejsy API usługi NavController, które dotychczas przyjmowały tylko identyfikator, mają teraz przeciążenie, które obejmuje trasę String. Są to między innymi navigate(), popBackStack(), popUpTo() i getBackStackEntry().

Ma to wpływ na interfejs API:

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

W przeciwieństwie do nawigacji według identyfikatora nawigacja według trasy podlega tym samym zasadom co pośrednie precyzyjne linki, ponieważ można bezpośrednio nawigować do dowolnego miejsca docelowego na dowolnym wykresie zagnieżdżonym. Dzięki temu możesz korzystać z tych tras w projektach wielomodułowych bez konieczności dodawania widocznego zewnętrznie precyzyjnego linku do każdego miejsca docelowego.

Tworzenie nawigacji

Artefakt navigation-compose zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa on funkcji @Composable.

W tej wersji:

  • Funkcja kompozycyjna NavHost, która umożliwia tworzenie grafu nawigacji przez DSL Kotlin i korzysta z miejsc docelowych composable i dialog. Dodatkowo obsługuje opcjonalne nawigatory, np. te z materiałów nawigacyjnych akompaniistów.
  • Obowiązkowa obsługa przechodzenia między miejscami docelowymi. Accompanist Navigation Animation może być używana do sterowania przejściami wejścia i wyjścia za pomocą eksperymentalnych interfejsów API tworzenia wiadomości.
  • Określanie zakresu wartości Lifecycle do każdego miejsca docelowego kompozycyjnego. Każde miejsce docelowe osiąga stan RESUMED tylko po zakończeniu dowolnego wejścia przejść i natychmiast spada do STARTED po rozpoczęciu dowolnego przejścia. Pozwala to uniknąć wszystkich problemów IllegalStateException i wielodotyku przez wywoływanie wywołania navigate tylko wtedy, gdy Lifecycle ma wartość RESUMED.
  • Określanie zakresu wartości ViewModel (za pomocą interfejsu viewModel() API Lifecycle ViewModel Compose 2.4.0 lub hiltViewModel() funkcji Hilt Navigation Compose 1.0.0 na poziomie miejsca docelowego, które zapewnia zakres, który przetrwa zmiany konfiguracji i pozostanie na stosie wstecznym (gdy treść kompozycyjna jest w innym przypadku usunięta) oraz sygnał w modelu onCleared() widoku danych wskazujący na trwałe usunięcie i oczyszczenie stanu powiązanego z tym elementem NavBackStackEntry.
  • Określenie zakresu stanu rememberSaveable na poziomie miejsca docelowego, dzięki czemu cały stan kompozycji jest automatycznie zapisany i przywracany po powrocie do miejsca docelowego.
  • Pełna obsługa zapisywania i przywracania NavController oraz stanu miejsca docelowego po śmierci i przywróceniu stanu procesu.
  • Automatyczna integracja z systemowym przyciskiem Wstecz.
  • Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych oraz zwracania wyniku do poprzednich miejsc docelowych.

  • Utwórz konkretne elementy pomocnicze w rememberNavController() i currentBackStackEntryAsState(), aby umożliwić stan podnoszenia i łączenie elementu NavController z kompozytami spoza obszaru NavHost (np. dolnym paskiem nawigacyjnym).

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

Więcej informacji znajdziesz w Przewodniku po tworzeniu wiadomości.

Wiele wstecznych stosów

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

W ramach tej zmiany metody NavigationUI w onNavDestinationSelected(), BottomNavigationView.setupWithNavController() i NavigationView.setupWithNavController() automatycznie zapisują i przywracają stan pobranych miejsc docelowych. Zapewnia to obsługę wielu stosów wstecznych bez konieczności wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami kodu jest to zalecany sposób integracji z wieloma stosami wstecznymi.

Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na wielu platformach:

  • W pliku XML nawigacji element <action> może teraz używać atrybutów logicznych app:popUpToSaveState i app:restoreState do zapisywania stanu wszystkich miejsc docelowych pobranych przez app:popUpTo i przywracania stanu powiązanego 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 narzędziu DSL navOptions Kotlin możesz dodać właściwość wartości logicznej restoreState i wartość logiczną saveState w kreatorze 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ą interfejsu NavOptions.Builder możesz użyć setRestoreState() i nowego przeciążenia w setPopUpTo(), które wymagają 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 popBackStack() mogą teraz zawierać dodatkowy parametr saveState.

  • Za pomocą metody clearBackStack() możesz wyczyścić wszystkie stany zapisane za pomocą metody popBackStack() lub popUpToSaveState.

We wszystkich przypadkach NavController zapisze i przywróci stan każdego elementu NavBackStackEntry, w tym instancje miejsca docelowego nawigacji o zakresie ViewModel. Interfejsy API Navigator zostały zaktualizowane, dzięki czemu każdy element Navigator obsługuje zapisywanie i przywracanie własnego stanu.

Zmiany w działaniu

  • NavDeepLinkBuilder dodaje teraz PendingIntent.FLAG_IMMUTABLE do: PendingIntent zwrócone przez createPendingIntent(), co zapewnia, że ten interfejs API działa zgodnie z oczekiwaniami, gdy jest kierowany na Androida 12.
  • Nawigacja zależy teraz od Cykl życia 2.3.1 i teraz oznacza setGraph(), popBackStack(), navigateUp() i navigate(), metody aktualizacji NavBackStackEntry Lifecycle, jako @MainThread, dostosowując Nawigację do wątku głównego wprowadzone w cyklu życia 2.3.0.
  • Precyzyjne linki sprawdzają teraz, czy Uri zawiera wszystkie wymagane argumenty (te bez wartości domyślnych).
  • Przeanalizowane argumenty funkcji NavDeepLink uwzględniają teraz znaki funta w taki sam sposób, jak znaki zapytania jako separator między segmentami ścieżki, co zapobiega rozpięciu argumentu na znak funta.
  • Podczas generowania działań kod Kotlin wygenerowany na podstawie Safe Args umieszcza teraz argumenty bez domyślne przed tymi, które jako parametry mają wartości domyślne.
  • Podczas generowania argumentów Bezpieczne argumenty dodają teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi.
  • Safe-Args wymaga teraz wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie o używaniu aplikacji applicationIdTextResource nie powinno już być wyświetlane.

Znane problemy

  • Naprawiono w Nawigacji 2.5.0-alpha01: dostęp do elementu ViewModel utworzony przez by navGraphViewModels() z onCreate() fragmentu z fragmentem nie powiedzie się z wartością IllegalStateException. (b/213504272)
  • Poprawiono w sekcji Nawigacja 2.5.0-alpha01: Bezpieczne argumenty 2.4.0 są niezgodne z wtyczką Androida do obsługi Gradle w wersji 7.1.0 lub nowszej. (b/213086135)
  • Precyzyjne linki z wieloma zagnieżdżonymi wykresami nawigacyjnymi nie tworzą poprawnie pełnego stos wsteczny. (B/214383060)

Wersja 2.4.0-rc01

15 grudnia 2021 roku

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

Zmiany w działaniu

  • Przeanalizowane argumenty funkcji NavDeepLink są teraz traktowane jako znaki funta w taki sam sposób, jak znaki zapytania jako separator między argumentami. (I21309, b/180042703)

Poprawki błędów

  • Precyzyjne linki nie będą już ignorować argumentów z wartościami takimi jak nazwa obiektu zastępczego. (If8017, b/207389470)
  • NavController nie będzie już ulegać awarii podczas wyświetlania zagnieżdżonego miejsca docelowego przy użyciu przejścia po przywróceniu elementu NavController. (I0f7c9, b/205021623)
  • Komunikat o błędzie podczas korzystania z nieprawidłowej wartości atrybutu startDestination będzie teraz domyślnie korzystać z trasy początkowej, jeśli jest ona dostępna. (I86b9d, b/208041894)

Poprawki błędów w tworzeniu nawigacji

  • Naprawiliśmy potencjalną awarię powodowaną przez szybkie przełączanie się między miejscem początkowym a innym miejscem docelowym za pomocą dolnych elementów menu nawigacyjnego. (IC8976, b/208887901)
  • Miejsce docelowe okna jest teraz prawidłowo przywracane u góry ekranu po zmianie konfiguracji lub śmierci procesu. (I4c0dc, b/207386169)
  • Rozwiązaliśmy problem, który powodował, że próba pobrania elementu ViewModel z okna NavBackStackEntry kończyła się niepowodzeniem po zamknięciu okna. (I6b96d, b/206465487)
  • Rozwiązaliśmy problem, który powodował, że podczas korzystania z celów podróży w activity z elementem NavHost w narzędziu Nawigacja w interfejsie można było nieskończone zmienianie kompozycji. (I8f64C)
  • Naprawiono wyciek w funkcji Kompozycje nawigacji, w wyniku którego po zmianie konfiguracji lub śmierci procesu pozostał on w odniesieniu do starej aktywności. (I4efcb, b/204905432)

Poprawki błędów Safe Args

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

Wersja 2.4.0-beta02

3 listopada 2021 r.

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

Zmiany interfejsu API

  • Obsługa zarówno jawnych, jak i ukrytych precyzyjne linki są teraz automatycznie dodawane do flagi saveState podczas przechodzenia do innego wykresu. Upewnij się, że kod na przykład NavigationUI.setupWithNavController i który korzysta z kilku stosów wstecznych. (IC8807)

Zmiany w działaniu

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

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że element NavBackStackEntries był przenoszony w dół Lifecycle.State.CREATED po przeniesieniu do Lifecycle.State.STARTED, gdy element NavHost jest dodawany bezpośrednio do sekcji setContent() aktywności. (Ia5ac1, b/203536683)
  • Naprawiono wyścig, w którym wyskakuję DialogFragment z miejsca docelowego stos wsteczny przed wyświetleniem okna nie spowoduje zamknięcia okna, co skutkuje awarię, która wystąpiła podczas ręcznego otwierania okna błędu odrzucone przez użytkownika. (I687e5)
  • Naprawiono błąd, który powodował, że Interfejs onNavDestinationSelected API w systemie NavigationUI zwróci wartość true, nawet jeśli nie wyświetlono elementu navigate() ten wykres nawigacyjny. Teraz ten sam mechanizm logiczny używane wewnętrznie przez setupWithNavController tylko do wybierz elementy (MenuItem) powiązane z bieżącym miejsce docelowe za pomocą parametru hierarchy miejsca docelowego. (I2b053)

Wersja 2.4.0-beta01

27 października 2021 roku

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

Nowe funkcje

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

Zmiany interfejsu API

  • Interfejs API visibleEntries jest teraz w wersji eksperymentalnej. (I93f6f)

Poprawki błędów

  • Modele ViewModel nie będą już niszczone, gdy przejścia są przerywane przełączanie się między tymi samymi ekranami (Id52d8, b/200817333);
  • Argumenty NavDeepLink do wartości null nie są już dostępne wymagaj wartości domyślnej przy dodawaniu precyzyjnych linków do NavDestination. (I5aad4, b/201320030)
  • NavBackStackEntries z różnymi cyklami życia nie uważane za równe. Oznacza to, że NavHost prawidłowo przekomponuje wszystko miejsca docelowe w przypadku nawigacji z użyciem funkcji singleTop i ponownego wyboru pozycje menu u dołu. (I1b351, b/196997433)
  • Usunięto problem z aplikacją AbstractListDetailFragment. który spowodował wyświetlenie atrybutów layout_width i layout_weight w panelu listy zwróconym przez onCreateListPaneView() mogą być nieprawidłowo obsługiwane lub ignorowane. (f5fbf3)
  • Wizualny stan miejsc docelowych okien dialogowych jest zsynchronizowany z kontem DialogFragmentNavigator stanu. Oznacza to, że ręczne wywołanie asynchronicznego Interfejs API dismiss() w domenie DialogFragment prawidłowo usuwa teraz wszystkie miejsca docelowe okien nad zamkniętym oknem. Ten nie ma wpływu na przypadki, w których używasz popUpTo lub popBackStack(), aby zamknąć okno. (I77ba2)
  • Teraz AbstractAppBarOnDestinationChangedListener ma bardziej zrozumiały komunikat o błędzie dla: onDestinationChanged(). (IE742D)

Wersja 2.4.0-alfa10

29 września 2021 r.

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

Nowe funkcje

  • NavController umożliwia teraz pobranie listy wszystkich widocznych NavBackStackEntry instancji przez visibleEntries StateFlow (Ia964e)
  • rememberNavController() przyjmuje teraz opcjonalne zestaw Navigator instancji, które zostaną dodane do zwrócono NavController, aby usprawnić (opcjonalnie) wsparcie Nawigatorzy, np. z Materiał nawigacyjny dla akompanitów. (I4619e)

Poprawki błędów

  • Dynamiczna nawigacja nie będzie się już zawieszać, jeśli aktywność będzie na nowo. (Ifa6a3, b/197942869)
  • Rozwiązaliśmy problem z systemowym przyciskiem Wstecz, który występował tylko po powrocie do miejsca docelowego kompozycyjnego zawierającego NavHost. (3ed148, b/195668143)
  • SafeArgs generuje teraz argumenty dla funkcji fromBundle() i fromSavedStateHandle() we właściwej kolejności. (I824a8, b/200059831)

Wersja 2.4.0-alpha09

15 września 2021 r.

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

Nowe funkcje

  • Możesz teraz używać metody clearBackStack() aby wyczyścić wszystkie stany zapisane w narzędziu popBackStack() lub popUpToSaveState. (I80a0F)
  • Możesz teraz przekazać listę argumentów lub precyzyjne linki do swojego kreatora zagnieżdżonego wykresu nawigacyjnego, który zostanie automatycznie dodany do utworzonego wykresu. (I8a470, b/182545357)

Zmiany interfejsu API

  • Funkcja DSL navArgument Kotlin jest teraz częścią navigation-common zamiast navigation-compose. To będzie wymagać zaktualizowanie importów, aby nadal korzystać z tej funkcji. (I1D095).

Zmiany w działaniu

  • Podczas generowania argumentów Bezpieczne argumenty dodają teraz parametry bez wartości domyślnych przed tymi z wartościami domyślnymi. (I89709, b/198493585)

Poprawki błędów

  • Podczas korzystania z funkcji tworzenia nawigacji wykresy nawigacyjne DESTROYED, gdy wszystkie dzieci będą miały DESTROYED lat. (I86552, b/198741720)
  • Argumenty NavDeepLink do wartości null nie są już dostępne wymagają wartości domyślnej. (Ia14ef, b/198689811)
  • Wywołuję funkcję setGraph() z nowym wykresem usuwa też wszystkie zapisane stosy wsteczne, do poprzedniego sposobu, w którym wysunął się tylny stos. (I97f96)
  • Naprawiono błąd, który powodował, że OnDestinationChangedListener instancji i currentBackStackEntryFlow nie otrzymał(a) powiadomienia, gdy za pomocą funkcji launchSingleTop. (Iaaebc).

Aktualizacje zależności

Wersja 2.4.0-alpha08

1 września 2021 roku

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

Nowe funkcje

  • Można teraz rozszerzyć klasę NavType, aby utworzyć niestandardowe typy NavType. Typy niestandardowe są obsługiwane tylko podczas tworzenia automatycznie, np. za pomocą funkcji Wykres nawigacji Kotlin DSL. (I78440, b/196871885)

Zmiany w działaniu

  • Podczas generowania działań kod Kotlin wygenerowany na podstawie Safe Args umieszcza teraz argumenty bez domyślne przed tymi, które jako parametry mają wartości domyślne. (Idb697, b/188855904)
  • Precyzyjne linki sprawdzają teraz, czy Uri zawiera wszystkie wymagane argumenty (te bez wartości domyślnych). (nr 204, b/185527157)

Poprawki błędów

  • Używam w środku getBackStackEntry i previousBackStackEntry composable() w połączeniu z remember() nie będzie już wywoływać funkcji jeśli nie ma miejsca docelowego na stosie wstecznym. (I75138, b/194313238)
  • Narzędzie Nawigacja w przypadku tworzenia wiadomości jest teraz prawidłowo ponownie komponowane po powrocie do poprzedniej wersji argumentów stosu i za pomocą launchSingleTop=true. (Iebd69, b/186392337)
  • ArrayIndexOutOfBoundsException już nie będzie gdy dzwonisz do: setGraph i masz wykres obejmujący 13 lub 29 miejsc docelowych. (I1a9f1, b/195171984)
  • Generator SafeArgs w języku Java nie powinien już powodować lintowania podczas generowania klas argumentów. (I1a666, b/185843837)

Treści tłumaczone przez użytkowników zewnętrznych

  • Dziękujemy za pomocą ospixd za sprawdzenie, czy precyzyjne linki sprawdzają, czy Uri zawiera wszystkie wymagane argumenty (te bez wartości domyślnych). (nr 204, b/185527157)

Wersja 2.4.0-alpha07

18 sierpnia 2021 r.

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

Poprawki błędów

  • Funkcja Navigation Compose teraz prawidłowo zapisuje stan po zmiany konfiguracji i wykresy przy korzystaniu dzięki funkcji wstecznego stosu. (If5a3d, b/195141957)
  • Ponowne wybieranie tej samej karty podczas korzystania z nawigacji Utwórz w nie spowoduje to już wyświetlania pustego ekranu. (I860dc, b/194925622)
  • NavHost obserwuje obecnie zmiany w Lifecycle.State: NavBackStackEntry, co oznacza, że użycie teraz elementu NavHost we fragmencie spowoduje i można je ponownie skomponować wraz ze zmianą cyklu życia, zamiast wyświetlać pusty ekran. (I4eb85, b/195864489)
  • Rozwiązaliśmy problem, który powodował, że odrzucanie DialogFragment nie zaktualizował(a) poprawnie Stan NavController po odtworzeniu aktywności (np. po zmianie konfiguracji). (ICD72B)
  • Naprawiono błąd polegający na wyskakaniu ikony nie spowoduje zaktualizowania parametru NavController obsługę przycisku Wstecz, co może powodować przechwytuje przycisk Wstecz mimo że nie ma żadnego stosu wstecznego do przebicia. (If3b34).
  • Bezpieczne argumenty automatycznie generują toSavedStateHandle. dla argumentów, których można użyć do testowania kodu ViewModel. (If1e2d, b/193353880)

Wersja 2.4.0-alpha06

4 sierpnia 2021 r.

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

Zmiany interfejsu API

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

Zmiany w działaniu

  • Podczas korzystania z animacji (np. Crossfade) wartość Lifecycle nowego miejsca docelowego osiągnie wartość RESUMED dopiero po zakończeniu animacji. (If0543, b/172112072, b/194301889)
  • Funkcja NavHost w narzędziu Nawigacyjnym umożliwia teraz ustawienie wartości który jest częścią pierwszej kompozycji. (Ieb7be)

Poprawki błędów

  • Przebicie ostatniego miejsca docelowego wykresu nawigacyjnego nie powoduje już wyświetlenia ClassCastException. (If0543, b/172112072, b/194301889)
  • Naprawiono błąd NullPointerException, który występował podczas dodawania precyzyjnego linku bez Uri oraz nawigowania za pomocą trasy lub precyzyjnego linku. (938a0c, b/193805425)
  • Naprawiono błąd w funkcji tworzenia nawigacji, który polegał na tym, precyzyjny link NavBackStackEntry nie dotarłby do RESUMED stan. (I192C5)
  • Naprawiono błąd, który powodował, że wyświetlenie miejsca docelowego okna dialogowego nie aktualizowało obsługi systemowego przycisku Wstecz w kontrolerze NavController. Mogło to powodować przechwytywanie przycisku Wstecz przez kontroler NavController, mimo że nie miał on wyskakującego stosu tylnego. (Aosp/1782668).

Wersja 2.4.0-alpha05

21 lipca 2021 r.

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

Zmiany w działaniu

  • NavHost w narzędziu NavHost w nawigacji podczas nawigacji zawsze używa przenikania przez miejsca docelowe. (I07049, b/172112072)
  • Możesz teraz wprowadzać zmiany na wykresie NavHost. Wykresy z tym samym miejscem docelowym i miejscami docelowymi na wykresie, zostaną jest uznawany za równy i nie usunie stosu wstecznego NavController. (I0b8db, b/175392262)

Poprawki błędów

  • Naprawiono błąd NoSuchElementException, gdy: możesz zadzwonić pod numer popBackStack() z aplikacji LifecycleObserver podłączone do urządzenia NavBackStackEntry spowodowane przez ponowne aktualizacje stanu kontrolera NavControllera. (I64621)
  • AbstractListDetailFragment zezwala teraz SlidingPaneLayout ma zostać całkowicie usunięty z APK, gdy nie używasz AbstractListDetailFragment. (I611ad).
  • Metody 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-alpha04

1 lipca 2021 r.

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

Nowe funkcje

  • Artefakt navigation-fragment zawiera teraz gotową implementację układu z dwoma panelami za pomocą nowego interfejsu AbstractListDetailFragment. Ten fragment korzysta z elementu SlidingPaneLayout do zarządzania panelem listy (udostępnianym przez Twoją klasę podrzędną) i panelem szczegółów, w którym implementacją jest NavHostFragment, tak jak w naszej przykładowej implementacji. (Iac4be, b/191276636)
  • NavHost artefaktu navigation-compose obsługuje teraz miejsca docelowe dialog, a nie tylko composable. Te miejsca docelowe okien będą wyświetlane 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 interfejsu API

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

Zmiany w działaniu

  • NavDeepLinkBuilder dodaje teraz PendingIntent.FLAG_IMMUTABLE do: PendingIntent zwrócone przez createPendingIntent(), co zapewnia, że ten interfejs API działa zgodnie z oczekiwaniami, gdy jest kierowany na Androida 12. (If8c52).

Poprawki błędów

  • Rozwiązaliśmy problem z aplikacją <include-dynamic>, w którym argumenty przekazywane do grafu nie byłyby prawidłowo przekazywane na dynamicznie dołączanym wykresie. (I3E115).
  • Naprawiono NullPointerException podczas nawigacji do miejsca docelowego. za pomocą argumentu string[] o domyślnej wartości @null. (I1fbe8)
  • Dodaj reguły ProGuard dla @Navigator.Name, naprawiam problemy w trybie pełnego dostępu R8 3.1. (I2add9, b/191654433)
  • Podczas tworzenia aplikacji za pomocą parametru SafeArgs nie będzie już błędów Kotlin wersji przed 1.5.0. (Icd1ff, b/190739257)

Wersja 2.4.0-alpha03

16 czerwca 2021 r.

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

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że przejście do uwzględnionego wykresu dynamicznego wymagało 2 wywołań navigate(). (I7785c, b/188859835)
  • Usunięto regresję wprowadzoną w Nawigacja 2.4.0-alpha01, gdzie: setupActionBarWithNavController() nie usunąć ikonę w górę na miejsce docelowe najwyższego poziomu. (I5d443, b/189868637)
  • Naprawiono błąd IllegalStateException, gdy: Wywołuję: popBackStack() po wyskakiwaniu na wykresie głównym kontrolera NavController. (I2a330, b/190265699)
  • Reguły ProGuard dla by navArgs() są teraz prawidłowe ma zastosowanie, gdy używasz navigation-common lub dowolnych artefaktów od tego zależą. (I68800, b/190082521)
  • Urządzenie OnDestinationChangedListener, które dzwoni navigate() po pierwszym oddzwonieniu. poprawnie uzyskać drugie wywołanie zwrotne z miejscem docelowym, przeszedł na stronę. (Ie5f9e, b/190228815)
  • Bezpieczne argumenty nie ulegają już awarii, gdy są używane z funkcjami dynamicznymi i AGP 7.0+. (I69518, b/189966576)

Znany problem

  • Podczas korzystania z narzędzia Gradle 6.7.0 bezpieczne argumenty będą kończyć się błędem Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ z powodu zależności od starszej wersji Kotlin. Aby obejść ten problem, zaktualizuj narzędzie, aby używało Gradle w wersji 7.0. (b/190739257)

Wersja 2.4.0-alpha02

2 czerwca 2021 r.

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

Nowe funkcje

  • Trasy są teraz obsługiwane w przypadku miejsc docelowych typu Activity, Fragment i Dialog, a także w całej DSL dynamicznej nawigacji Kotlin. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI tymczasowo dodała eksperymentalne interfejsy API, aby umożliwić rezygnację z zapisywania stanu. Choć zawsze zapisywanie stanu jest prawidłowe, w dalszym ciągu są używane wycofane biblioteki (np.zachowane fragmenty), których nie można obsługiwać podczas zapisywania stanu. Umożliwia to aplikacjom powolną konwersję z nieobsługiwanych interfejsów API. (Idf93c).
  • Nawigacja udostępnia teraz interfejsy API findDestination() i getHierarchy(), które można wykorzystać do wdrożenia niestandardowego interfejsu NavigationUI. findDestination() to funkcja rozszerzenia NavGraph, która znajduje miejsce docelowe na wykresie. getHierarchy() to funkcja w obiekcie NavDestination, której można użyć do sprawdzenia, czy dane miejsce docelowe znajduje się w hierarchii innego miejsca docelowego.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metody interfejsu NavigationUI, które korzystały z interfejsu BottomNavigationView, zostały zaktualizowane, aby zajmowały nadrzędną klasę wprowadzone w Material 1.4.0 (NavigationBarView). Zezwala na używanie tych metod w NavigationRailView. (Ib0b36, b/182938895)

  • Podczas rozszerzania elementu <action> za pomocą kodu XML atrybuty animacji mogą użyj atrybutów pobranych z motywu za pomocą Składnia app:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)

Zmiany interfejsu API

  • Kreatory DSL Kotlin korzystające z identyfikatora zostały wycofane należy zastąpić kreatorami, którzy korzystają z tras (I85b42, b/188816479) (I9f58f, b/188816479)

Poprawki błędów

  • DialogFragmentNavigator używa teraz Interfejs API NavigatorState.pop() przekazuje NavController gdy okno dialogowe zostaje zamknięte przez powrót do systemu. lub kliknięcie poza nim, upewniając się, że stan NavController jest zawsze zsynchronizowany z Stan nawigacji. (I2ead9)
  • Nawigacja nie wyświetla już ConcurrentModificationException, gdy: manipulowanie listą pozycji OnDestinationChangedListeners z wywołaniem zwrotnym onDestinationChanged. (Ib1707, b/188860458)

  • Bezpieczne argumenty nie ulegają już awarii podczas próby wygenerowania właściwości kierunku w Kotlin. (Id2416, b/188564435)

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

  • Parametr int parametru findNode ma teraz wartość resId zamiast resid (I7711D)

Aktualizacja zależności

  • Safe-Args wymaga teraz wtyczki Androida do obsługi Gradle w wersji 4.2.0. Oznacza to, że ostrzeżenie o używaniu aplikacji applicationIdTextResource nie powinno już być wyświetlane. (I6d67b, b/172824579)

Wersja 2.4.0-alpha01

18 maja 2021 r.

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

Nowe funkcje

  • Metoda currentBackStackEntryAsFlow() w systemie NavController udostępnia Flow, który jest emitowany zawsze, gdy zmienia się bieżąca wartość NavBackStackEntry. Możesz użyć tego procesu zamiast 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 miejsc docelowych do stosu tylnego, gdy navigate() do nich i usuwanie ich po wywołaniu popBackStack() lub uruchomieniu systemowego przycisku Wstecz. Istniejąca klasa NavOptions i integracja z wpisami <action> w kodzie XML wykresu nawigacji zostały rozszerzone, aby obsługiwać zapisywanie i przywracanie stosu wstecznego. (B/80029773)

W ramach tej zmiany metody NavigationUI w onNavDestinationSelected(), BottomNavigationView.setupWithNavController() i NavigationView.setupWithNavController() automatycznie zapisują i przywracają stan pobranych miejsc docelowych. Zapewnia to obsługę wielu stosów wstecznych bez konieczności wprowadzania zmian w kodzie. W przypadku korzystania z nawigacji z fragmentami kodu jest to zalecany sposób integracji z wieloma stosami wstecznymi. (IE07CA)

Podstawowe interfejsy API do zapisywania i przywracania stanu są udostępniane na wielu platformach:

  • W pliku XML nawigacji element <action> może teraz używać atrybutów logicznych app:popUpToSaveState i app:restoreState do zapisywania stanu wszystkich miejsc docelowych pobranych przez app:popUpTo i przywracania stanu powiązanego 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 narzędziu DSL navOptions Kotlin możesz dodać właściwość wartości logicznej restoreState i wartość logiczną saveState w kreatorze 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ą interfejsu NavOptions.Builder możesz użyć setRestoreState() i nowego przeciążenia w setPopUpTo(), które wymagają 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 popBackStack() mogą teraz zawierać dodatkowy parametr saveState.

We wszystkich przypadkach NavController zapisze i przywróci stan każdego elementu NavBackStackEntry, w tym instancje miejsca docelowego nawigacji o zakresie ViewModel. Interfejsy API Navigator zostały zaktualizowane, dzięki czemu każdy element Navigator obsługuje zapisywanie i przywracanie własnego stanu.

ComposeNavigator używane w przypadku miejsc docelowych composable w narzędziu Nawigacja oraz FragmentNavigator i DynamicFragmentNavigator używane na potrzeby miejsc docelowych <fragment> w Nawigacji z fragmentami z fragmentami z krzyżykiem zostały zaktualizowane, aby korzystały z nowych interfejsów Navigator API oraz obsługują zapisywanie i przywracanie stanu.

Trasy nawigacji

Trasa to identyfikator String, który jednoznacznie identyfikuje miejsce docelowe. Chociaż wcześniej ta koncepcja była używana tylko w narzędziu Navigation Compose, teraz jest już częścią podstawowych interfejsów API nawigacji. Jest to metoda alternatywna do korzystania z identyfikatorów całkowitych podczas tworzenia grafu za pomocą funkcji DSL nawigacji Kotlin. (b/172823546)

Wszystkie interfejsy API, które wcześniej przyjmowały tylko identyfikator, mają teraz przeciążenie, które odbiera trasę String. Są to między innymi navigate(), popBackStack(), popUpTo() i getBackStackEntry().

Ma to wpływ na interfejs API:

  • Właściwość kotlin popUpTo na platformie DSL Kotlin została wycofana. Zastąpiono ją usługą popUpToId (I59c73, b/172823546)
  • Interfejs API getStartDestination() został wycofany i zastąpiony z getStartDestinationId(). (I0887f, b/172823546)

Jeśli deweloperzy przechodzą z poprzednich wersji Navigation Compose do funkcji Navigation Compose 2.4.0-alpha01, oznacza to, że nie jest już potrzebny importowanie następujących metod rozszerzeń i należy je usunąć:

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

Argument KEY_ROUTE został zastąpiony właściwością route w funkcji NavDestination, dzięki czemu możesz bezpośrednio wywołać funkcję navBackStackEntry.destination.route.

Zmiany interfejsu API

  • Wszystkie artefakty nawigacji zostały przepisane w języku Kotlin. Dzięki temu zwiększyło się możliwość wartości null klas korzystających z klas ogólnych (takich jak podklasy NavType). Wszystkie funkcje rozszerzeń Kotlin, które były częścią artefaktów -ktx, zostały przeniesione do odpowiednich artefaktów głównych. Artefakty -ktx będą nadal publikowane, ale będą całkowicie puste. (b/184292145)
  • NavDeepLinkBuilder obsługuje teraz dodawanie wielu różnych miejsc docelowych stos wsteczny. (I3ee0d, b/147913689)
  • Dodaj funkcje fabryczne do urządzenia DynamicNavHostFragment (IcD515, b/175222619)
  • Unikalny identyfikator elementu NavBackStackEntry jest teraz udostępniana jako część swojego publicznego interfejsu API. (IE033a)
  • Pola name i argument oraz funkcje niszczenia NamedNavArgument są teraz publiczne. (nr 174, b/181320559)
  • Wprowadziliśmy nowe rozszerzenie NavBackStackEntry#provideToCompositionLocals, które udostępnia NavBackStackEntry odpowiednim użytkownikom lokalnym kompozycji. (nr 175, b/187229439)

Bezpieczne argumenty

  • Bezpieczne argumenty generują 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 bazowały na KotlinPoet 1.8.0. (nr 172, b/183990444)

Zmiany w działaniu

  • Nawigacja zależy teraz od Cykl życia 2.3.1 i teraz oznacza setGraph(), popBackStack(), navigateUp() i navigate(), metody aktualizacji NavBackStackEntry Lifecycle, jako @MainThread, dostosowując Nawigację do wątku głównego wprowadzone w cyklu życia 2.3.0. (b/171125856)
  • Wielkość liter w argumentach typu enum z precyzyjnych linków nie jest teraz rozróżniana, dzięki czemu precyzyjny link, taki jak http://www.example.com/red, może pasować do precyzyjnego linku www.example.com/{color}, nawet jeśli wyliczenie ma wartość RED. (nr 152, b/135857840)

Zgodność podczas tworzenia wiadomości

  • Usługa androidx.navigation:navigation-compose:2.4.0-alpha01 jest zgodna tylko z funkcją tworzenia wiadomości w wersji 1.0.0-beta07 i nowszych.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że zmienne argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami o pasującym sufiksie dokładnego. (nr 153, b/184072811)
  • NavHostFragment obsługuje teraz niestandardowe Nawigatory korzystające z tej samej wartości: @Navigator.Name("dialog") jako domyślna wartość DialogFragmentNavigator. (Ib1c2c, b/175979140)
  • Poprawiliśmy działanie interfejsu NavigatorProvider#addNavigator, aby uniknąć problemów przy jego wielokrotnym wywoływaniu z tą samą instancją. (#176, b/187443146)

Treści tłumaczone z zewnątrz

  • Dziękujemy, simonschiller za utworzenie obsługi bezpiecznych argumentów, która generuje metodę fromSavedStateHandle() dla każdej klasy NavArgs. (#122, b/136967621)
  • Dziękujemy Bradleycorn za to, że w argumencie enum nie jest rozróżniana wielkość liter w precyzyjnych linkach. (nr 152, b/135857840)
  • Dziękujemy za rozwiązanie problemu osipxd, który powodował, że obiekty zastępcze argumentów końcowych miały pierwszeństwo przed precyzyjnymi linkami z pasującym sufiksem dokładnego. (nr 153, b/184072811)
  • Dziękujemy tatocaster za zaktualizowanie bezpiecznych argumentów tak, aby zależało od KotlinPoet 1.8.0. (nr 172, b/183990444)
  • Dziękujemy jossiwolf za publiczne udostępnienie pól name i argument oraz niszczenie funkcji NamedNavArgument. (nr 174, b/181320559)
  • Dziękujemy jossiwolf za wprowadzenie nowego rozszerzenia NavBackStackEntry#provideToCompositionLocals, które udostępnia NavBackStackEntry odpowiednim użytkownikom lokalnym kompozycji. (nr 175, b/187229439)
  • Dziękujemy jossiwolf za poprawienie działania pakietu NavigatorProvider#addNavigator. Dzięki temu powtórne wywoływanie go z tym samym wystąpieniem nie będzie powodować problemów. (#176, b/187443146)

Wersja 1.0.0-alpha10

7 kwietnia 2021 r.

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

Zmiany interfejsu API

  • NavHost akceptuje teraz pole Modifier, które jest przekazywane do w kontenerze kompozycyjnym, który opakowuje docelowe elementy kompozycyjne. (I85aca, b/175125483)

Poprawki błędów

  • Funkcja NavHost już działa nawet jeśli OnBackPressedDispatcherOwner nie zostanie znaleziony, tak jest w przypadku podglądu elementu NavHost. (I7d8b4)
  • Funkcja tworzenia wiadomości nawigacji korzysta teraz z Nawigacji 2.3.5. Rozwiązaliśmy problem, gdy używasz elementu BackHandler w miejscu docelowym NavHost. (I7e63b, b/182284739)

Wersja 1.0.0-alpha09

10 marca 2021 r.

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

Zmiany interfejsu API

  • LocalViewModelStoreOwner.current zwraca teraz błąd ViewModelStoreOwner z dopuszczaniem wartości null, aby lepiej określić czy ViewModelStoreOwner jest dostępny w bieżącym kompozycji. Interfejsy API, które wymagają ViewModelStoreOwner, takiej jak jako viewModel() i NavHost, nadal zgłaszaj wyjątek jeśli ViewModelStoreOwner nie jest ustawiony. (Idf39a)

Poprawki błędów

  • Tworzenie nawigacji wymaga teraz Nawigacji 2.3.4 który zawiera poprawkę związaną z próbą ustawienia tego samego obiektu ViewModelStore po ustawieniu grafu. (I65c24, b/177825470)

Wersja 1.0.0-alpha08

24 lutego 2021 r.

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

Nowe funkcje

  • NavHost wypełnia teraz kolumnę LocalSavedStateRegistryOwner CompositionLocal wartością NavBackStackEntry tego miejsca docelowego, dzięki czemu wszystkie stany zapisane bezpośrednio w folderze SavedStateRegistry zostaną zapisane i przywrócone wraz z miejscem docelowym. (I435d7, b/179469431)
.

Wersja 1.0.0-alpha07

10 lutego 2021 r.

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

Aktualizacje zależności

.

Wersja 1.0.0-alpha06

28 stycznia 2021 roku

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

Zmiany interfejsu API

  • W systemie NavController dodano metodę rozszerzenia getBackStackEntry(route: String), która zwraca powiązane dane NavBackStackEntry. (If8931).
.

Wersja 1.0.0-alpha05

13 stycznia 2021 r.

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

Aktualizacja jest zgodna z wersją 1.0.0-alfa10.

Wersja 1.0.0-alpha04

16 grudnia 2020 roku

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

  • Zaktualizowano, aby zapewnić zgodność z funkcją tworzenia 1.0.0-alpha09.
.

Wersja 1.0.0-alpha03

Grudzień 2, 2020

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

Poprawki błędów

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

Wersja 1.0.0-alpha02

11 listopada 2020 roku

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

Zmiany interfejsu API

  • Tworzenie wiadomości nawigacyjnych obsługuje teraz NavOptions w celu korzystania z wyskakującego okienka i uruchom operacje SingleTop (If96c3, b/171468994)
  • Dodaliśmy funkcję nawigacyjną, która pobiera trasę zamiast Identyfikator, który umożliwia tworzenie zagnieżdżonych wykresów w Navigation Compose DSL. (I1661D)
  • Parametr startDestination jest teraz wyświetlany przed trasą na liście parametry dla NavHost (Ie620e),
  • Możesz teraz utworzyć wykres, używając trasy jako punktu wyjścia miejsce docelowe poza kompozycją NavHost. (Iceb75).

Wersja 1.0.0-alpha01

28 października 2020 r.

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

Nowe funkcje

Artefakt navigation-compose zapewnia integrację między komponentem nawigacji a Jetpack Compose. Jako miejsca docelowe w aplikacji używa on funkcji @Composable.

Zalety tej początkowej wersji:

  • Funkcja kompozycyjna NavHost, która umożliwia tworzenie grafów nawigacyjnych za pomocą DSL Kotlin.
  • Określanie zakresu cyklu życia (ViewModel) i zapamiętany stan na poziomie miejsca docelowego.
  • Automatyczna integracja z systemowym przyciskiem Wstecz.
  • Obsługa przekazywania argumentów, dołączania precyzyjnych linków do miejsc docelowych oraz zwracania wyniku do poprzednich miejsc docelowych.
  • Utwórz konkretne elementy pomocnicze w rememberNavController() i currentBackStackEntryAsState(), aby umożliwić stan podnoszenia i łączenie elementu NavController z kompozytami spoza obszaru NavHost (np. dolnym paskiem nawigacyjnym).

Więcej informacji znajdziesz w Przewodniku po tworzeniu wiadomości.

Wersja 2.3.5

Wersja 2.3.5

7 kwietnia 2021 r.

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

Nowe funkcje

  • Podczas nawigacji używające NavDeepLinkRequest lub Uri możesz teraz: uzyskać dostęp do typu Uri, działania i MIME w wynikowym miejscu docelowym przez pobieranie intencji z argumentów za pomocą KEY_DEEP_LINK_INTENT, co odzwierciedla funkcje dostępne już na potrzeby zewnętrznych precyzyjnych linków. (I975c3, b/181521877)

Poprawki błędów

  • Dodano numer OnBackPressedCallbacks do dyspozytora z NavBackStackEntry jako właściciela cyklu życia prawidłowo przechwytuje teraz po cyklu życia aktywności to STOPPED, a następnie STARTED (Iff94f, b/182284739)
  • Wielkość liter podczas analizy domeny precyzyjnych linków nie jest teraz rozróżniana, dzięki czemu parametr www.example.com pasuje zarówno do www.example.com, jak i do www.Example.com. Pamiętaj, że w nazwach parametrów zapytania nadal jest rozróżniana wielkość liter. (nr 144, b/153829033)
  • Naprawiliśmy błąd NullPointerException, który mógł wystąpić, gdy miejsce docelowe ma wiele niepustych argumentów domyślnych i przechodzisz do tego miejsca docelowego, zastępując tylko podzbiór tych argumentów. (Aosp/1644827)

Aktualizacje zależności

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

Treści tłumaczone przez użytkowników zewnętrznych

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

Wersja 2.3.4

Wersja 2.3.4

10 marca 2021 r.

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

Nowe funkcje

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

Poprawki błędów

  • Rozwiązywanie problemów z zatrzymaniem instalowania podczas korzystania z obsługi funkcji dynamicznych w Nawigacji. (Ib27a7, b/169636207)
  • Dzwonię pod setViewModelStore lub setLifecycleOwner w taki sam sposób Ustawiony już obiekt jest w stanie braku działań (Idf491, b/177825470)
  • Safe-Args dodaje teraz pomijanie adnotacji dotyczących odpowiednich metod w przypadku środowiska Java. (I8fbc5, b/179463137)

Treści tłumaczone z zewnątrz

  • Dziękujemy JvmName za żądanie pull. Dzięki temu argumenty ReferenceType mogą być teraz prawidłowo analizowane, gdy są wysyłane w ramach identyfikatora URI precyzyjnego linku. (#127, b/179166693)
  • Dziękujemy tatocaster za żądanie pull umożliwiające defaultValue dla argumentu z wartością app:argType=”float”, które obsługuje teraz domyślne wartości całkowite. (nr 117, b/173766247)

Wersja 2.3.3

Wersja 2.3.3

27 stycznia 2021 r.

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

Poprawki błędów

  • Już nie ma awarii podczas wyskakiwania NavBackStackEntry przed przeniesieniem tych danych: Lifecycle do CREATED. (IE3ba3)
  • Usunięto problem z regresją spowodowaną przez błąd b/171364502 polegający na przejściu do aktywność z wartością zasobu animacji 0 spowodowała wystąpienie ResourceNotFoundException (I7aedb, b/176819931)

Wersja 2.3.2

Wersja 2.3.2

Grudzień 2, 2020

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

Poprawki błędów

  • Naprawiono regresję w NavigationUI, w której użycie miejsca docelowego <activity> z parametrem onNavDestinationSelected powodowało przechodzenie do aktywności. (I22e34, b/171364502)
  • Rozwiązaliśmy problem, który powodował, że funkcja navigation-dynamic-features-fragment powodowała wielokrotne przechodzenie do nowo zainstalowanego miejsca docelowego. (aosp/1486056, b/169636207)
  • Rozwiązaliśmy problem, który powodował, że podczas korzystania z metody launchSingleTop do instancji OnDestinationChangedListener nie były wysyłane domyślne argumenty. (I2c5cb)
  • Rozwiązaliśmy problem, który powodował, że przejście do zagnieżdżonego wykresu nawigacyjnego nie skutkowało utworzeniem nowej instancji grafu w stosie tylnym. (Ifc831).
  • Naprawiono błąd polegający na tym, że użycie funkcji navigate() z wartością popUpTo w celu usunięcia ostatniego miejsca docelowego z wykresu nawigacyjnego nie powodowało natychmiastowego zniszczenia i usunięcia wykresu nawigacji z tylnego stosu. (I910a3)
  • Nawigacja SafeArgs korzysta teraz z KotlinPoet w wersji 1.7.2, która obsługuje jawny tryb interfejsu API Kotlin. (I918B5)
  • NavHostFragment.findNavController(Fragment) sprawdza teraz także widok głównego wystroju fragmentu DialogFragment oprócz istniejących kontroli hierarchii i hierarchii widoków Fragmentu. Pozwoli Ci to przetestować fragmenty okien, które korzystają z nawigacji, z funkcjami FragmentScenario i Navigation.setViewNavController(). (I69e0D)

Wersja 2.3.1

Wersja 2.3.1

14 października 2020 r.

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

Nowe funkcje

  • Domyślne zasoby animacji zostały dodane do interfejsu nawigacji i są zalecane zamiast domyślnych zasobów animacji. (B/167430145)
  • NavOptions zastępuje teraz kod skrótu i metody „równa się” (b/161586466).
  • Nawigacja obejmuje teraz bieżące miejsce docelowe w wyjątku IllegalArgumentException „Brak miejsca docelowego o identyfikatorze”, co powinno usprawnić debugowanie. (b/168311416)

Poprawki błędów

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

Zmiany zależności

  • navigation-ui zależy teraz od: DrawerLayout 1.1.1 upewnienie się, że NavigationUI może otworzyć panel nawet w przypadku użycia funkcji LOCK_MODE_LOCKED_CLOSED lub LOCK_MODE_LOCKED_OPEN. (B/162253907)
  • Bezpieczne argumenty korzystają teraz z KotlinPoet 1.6.0 (aosp/1435911)
  • Bezpieczne argumenty zależą teraz od AGP 4.0.1 (aosp/1442337)

Wersja 2.3.0

Wersja 2.3.0

24 czerwca 2020 r.

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

Ważne zmiany od wersji 2.2.0

  • Integracja modułu funkcji: artefakty navigation-dynamic-features-runtime i navigation-dynamic-features-fragment umożliwiają przechodzenie do miejsc docelowych zdefiniowanych w modułach funkcji i w razie potrzeby automatycznie obsługują ich instalację. Więcej informacji znajdziesz w sekcji Nawigacja z modułami funkcji.
  • Testowanie nawigacji: artefakt navigation-testing udostępnia TestNavHostController, który pozwala ustawić bieżące miejsce docelowe i zweryfikować stos tylny po operacjach nawigacji. Więcej informacji znajdziesz w sekcji Nawigacja testowa.
  • Zwracanie wyniku: element NavBackStackEntry powiązany z każdym miejscem docelowym w stosie nawigacji pozwala teraz uzyskać dostęp do obszaru SavedStateHandle odpowiedniego do przechowywania niewielkich ilości zapisanych informacji o stanie, które powinny być powiązane z konkretnym wpisem stosu. Więcej informacji znajdziesz w sekcji Zwracanie wyniku do poprzedniego miejsca docelowego.
  • Obsługa interfejsu Openable na platformie NavigationUI: wszystkie przypadki użycia funkcji DrawerLayout w tabeli NavigationUI zostały zastąpione bardziej ogólnym interfejsem Openable, który został dodany w widoku CustomView 1.1.0 i zaimplementowany przez DrawerLayout w DrawerLayout1.1.0.
  • Obsługa działań i typów MIME w precyzyjnych linkach: precyzyjne linki obsługują obecnie app:action i app:mimeType, a nie tylko app:uri, które były wcześniej dostępne. NavController umożliwia teraz nawigowanie według dowolnej kombinacji tych pól za pomocą nowej klasy NavDeepLinkRequest. Więcej informacji znajdziesz w sekcji Nawigacja przy użyciu NavDeepLinkRequest.
.

Znane problemy

  • Obsługa działań precyzyjnych linków i typów MIME nie jest jeszcze dostępna w przypadku łączenia plików manifestu. Dopóki te czynności nie zostaną ukończone, elementy <intent-filter> wygenerowane z elementu <nav-graph> w pliku manifestu nie będą zawierać typu MIME w elemencie <data> ani niestandardowym <action>. Musisz ręcznie dodać do pliku manifestu odpowiedni plik <intent-filter>.

Wersja 2.3.0-rc01

10 czerwca 2020 r.

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

Poprawki błędów

  • Naprawiono błąd NullPointerException podczas zastępowania wystąpienia miejsca docelowego bez argumentów innym wystąpieniem z argumentami singleTop. (B/158006669)
  • Wszystkie wyjątki typu destination is unknown zgłoszone przez zasadę NavController zawierają teraz dodatkowe informacje na potrzeby debugowania, które ułatwiają określenie stanu elementu NavController. (b/157764916)

Wersja 2.3.0-beta01

20 maja 2020 r.

Zwolniono androidx.navigation:navigation-*:2.3.0-beta01. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że element Lifecycle obiektu NavBackStackEntry nie był prawidłowo aktualizowany po śmierci procesu. (b/155218371)
  • OnDestinationChangedListener instancje zarejestrowane przed wywołaniem usługi setGraph() są teraz prawidłowo wysyłane do przywróconego miejsca docelowego po śmierci procesu. (b/155218371)
  • Gdy używasz funkcji singleTop, argumenty funkcji NavBackStackEntry zostały prawidłowo zaktualizowane, a zaktualizowane argumenty są wysyłane do wszystkich instancji OnDestinationChangeListener. (B/156545508)

Aktualizacje zależności

Wersja 2.3.0-alfa06

29 kwietnia 2020 roku

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

Nowe funkcje

  • Precyzyjne linki zostały rozszerzone o app:action i app:mimeType, a nie tylko do tych, które były wcześniej dostępne (app:uri). NavController umożliwia teraz nawigowanie według dowolnej kombinacji tych pól za pomocą nowej klasy NavDeepLinkRequest. (b/136573074, b/135334841)
.

Zmiany interfejsu API

  • Znacznie rozszerzyliśmy obsługę DSL Kotlin w miejscach docelowych dynamicznej nawigacji. (B/148969800)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że intencje precyzyjnych linków były ignorowane w przypadku korzystania z zagnieżdżonego początkowego miejsca docelowego. (B/154532067)

Wersja 2.3.0-alpha05

15 kwietnia 2020 roku

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

Nowe funkcje

  • W przypadku wykresów dynamicznych, w których używany jest <include-dynamic>, nie musisz już określać wartości app:graphPackage. Zostanie użyty model domyślny, dodając do applicationId po kropce sufiks moduleName. Jeśli chcesz dostosować graphPackage, możesz teraz użyć obiektu zastępczego ${applicationId}. (b/152696768)
  • Wykres nawigacyjny Kotlin DSL udostępnia teraz pole defaultArguments Map dla działań, odzwierciedlając możliwość ustawiania wartości domyślnych w elementach <action> w plikach XML nawigacji. (B/150345605)

Poprawki błędów

  • Z Nawigacji w wersji 2.2.2: naprawiono błąd IllegalStateException powodujący wyświetlanie precyzyjnych linków do początkowego miejsca docelowego wykresu, gdy w aktywności masz wiele wystąpień NavHostFragment. (b/147378752)

Aktualizacje zależności

Wersja 2.3.0-alfa04

18 marca 2020 r.

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

Nowe funkcje

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

Zmiany interfejsu API

  • Klasa DynamicExtras nie używa już wzorca konstruktora i można ją utworzyć bezpośrednio. (Aosp/1253671).
  • DynamicActivityNavigator używa teraz w konstruktorze funkcji Context zamiast Activity. (Aosp/1250252).

Poprawki błędów

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

Aktualizacje zależności

  • Artefakty funkcji dynamicznych nawigacji zależą teraz od podstawowej wersji Google Play 1.6.5. (b/149556401)

Wersja 2.3.0-alfa03

Marzec 4, 2020

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

Zmiany interfejsu API

Poprawki błędów

  • Teraz reguły ProGuard navigation-common-ktx poprawnie zachowują tylko używane klasy NavArgs, a nie wszystkie instancje NavArgs. (b/150213558)

Zmiany zależności

  • Nawigacja nie jest już zależna od Core 1.2.0i korzysta teraz z Core 1.1.0, aby nie zmuszać programistów do przejścia na nowszą zależność, gdy Nawigacja nie wymaga żadnych nowych interfejsów API w Core 1.2.0.

Wersja 2.3.0-alfa02

19 lutego 2020 r.

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

Nowe funkcje

  • NavBackStackEntry umożliwia teraz dostęp do obiektu SavedStateHandle odpowiedniego do przechowywania niewielkich ilości zapisanych stanów, które powinny być powiązane z konkretnym wpisem stosu wstecznego. Przykład zastosowania znajdziesz w sekcji Zwracanie wyniku. (b/79672220)

Zmiany interfejsu API

  • Dodaliśmy metody wygodnych usług getCurrentBackStackEntry() i getPreviousBackStackEntry(), aby ułatwić pobieranie NavBackStackEntry w przypadku bieżących i poprzednich miejsc docelowych. (b/79672220)

Poprawki błędów

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

Zmiany zależności

Wersja 2.3.0-alfa01

5 lutego 2020 r.

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

Nowe funkcje

  • Nowy artefakt navigation-testing udostępnia klasę TestNavHostController. Ta klasa stanowi alternatywę dla użycia przykładu NavController podczas testowania Nawigacji. Pozwala ona ustawić bieżące miejsce docelowe i zweryfikować stos wsteczny po operacjach nawigacji. (B/140884273)
  • Nowa funkcja navigation-dynamic-features-fragment (i jej zależność przejściowa navigation-dynamic-features-runtime) umożliwia dodanie miejsc docelowych lub całych wykresów nawigacyjnych (za pomocą <include-dynamic>) z modułów funkcji, co zapewnia bezproblemową instalację modułów funkcji na żądanie podczas korzystania z tych miejsc docelowych. Więcej informacji znajdziesz w sekcji Nawigacja z modułami funkcji. (b/132170186)

Poprawki błędów.

  • Z Nawigacji 2.2.1: precyzyjne linki bez parametrów zapytania prawidłowo ignorują teraz wszystkie parametry zapytania, zamiast dołączać je do końcowych elementów {argument} lub niepasujących do precyzyjnego linku. (b/147447512)
  • Z nawigacji 2.2.1: reguły ProGuard navigation-ui dla DrawerArrowDrawable zostały zaktualizowane, aby zasada android.enableJetifier=true nie była wymagana. (B/147610424)
  • Z Nawigacji 2.2.1: moduł navigation-common-ktx ma teraz unikalną nazwę pakietu manifestu, a nie jest taka sama jak nazwa navigation-runtime-ktx. (Aosp/1141947)

Aktualizacje zależności

Wersja 2.2.2

Wersja 2.2.2

15 kwietnia 2020 roku

Zwolniono androidx.navigation:navigation-*:2.2.2. Wersja 2.2.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono IllegalStateException występujące w przypadku precyzyjnych linków do początkowego miejsca docelowego wykresu, gdy w aktywności masz wiele wystąpień NavHostFragment. (b/147378752)
  • NavigationUI nie ignoruje już pustych etykiet (np. miejsca docelowego z atrybutem android:label=””), a teraz prawidłowo ustawia pusty ciąg znaków w tytule. Ta funkcja była już dostępna w Nawigacji w wersji 2.3.0-alfa04. (B/148679860)
  • Teraz reguły ProGuard navigation-common-ktx poprawnie zachowują tylko używane klasy NavArgs, a nie wszystkie instancje NavArgs. Wcześniej ta funkcja była dostępna w Nawigacji w wersjach 2.3.0-alfa03. (b/150213558)

Aktualizacje zależności

Wersja 2.2.1

Wersja 2.2.1

5 lutego 2020 r.

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

Poprawki błędów.

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

Aktualizacje zależności

Wersja 2.2.0

Wersja 2.2.0

Styczeń 22, 2020

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

Ważne zmiany wprowadzone od wersji 2.1.0

  • NavBackStackEntry: możesz teraz wywołać funkcję NavController.getBackStackEntry(), podając identyfikator miejsca docelowego lub wykresu nawigacji na stosie tylnym. Zwrócony obiekt NavBackStackEntry udostępnia parametry LifecycleOwner, ViewModelStoreOwner (to samo zwrócone przez NavController.getViewModelStoreOwner()) i SavedStateRegistryOwner, a także argumenty używane do rozpoczęcia podróży.
  • Integracja z zapisanym modelem widoku cyklu życia: SavedStateViewModelFactory jest teraz domyślną fabryką używaną podczas używania konstruktora by navGraphViewModels() lub konstruktora ViewModelProvider z wartością ViewModelStoreOwner zwracaną przez NavController.getBackStackEntry() lub NavController.getViewModelStoreOwner().
  • Obsługa parametrów zapytania w przypadku precyzyjnych linków: precyzyjne linki z parametrami zapytania obsługują teraz parametry zapytań o zmienionej kolejności. argumenty, które mają wartość domyślną lub mogą mieć wartość null, są teraz opcjonalne przy dopasowaniu precyzyjnych linków.
  • Ulepszona obsługa animacji: NavHostFragment korzysta teraz z FragmentContainerView z fragmentu 1.2.0, naprawia problemy z kolejnością nakładania elementów w animacji i wysyła wstawienia okien do fragmentów.

Wersja 2.2.0-rc04

18 grudnia 2019 r.

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

Poprawki błędów.

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

Wersja 2.2.0-rc03

4 grudnia 2019

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

Poprawki błędów.

  • Rozwiązaliśmy problem z analizą precyzyjnego linku, gdy używasz parametrów zapytania i argumentu jako ostatniej części ścieżki, co uniemożliwiało analizę więcej niż 1 znaku końcowego argumentu ścieżki. (b/144554689)
  • Rozwiązaliśmy problem z analizowaniem precyzyjnych linków, który powodował, że opcjonalne parametry otrzymywały "@null" zamiast null. (b/141613546)
  • NavHostFragment teraz prawidłowo przywraca wykres po zmianie konfiguracji w przypadku użycia z FragmentContainerView. (B/143752103)

Zmiany zależności

  • Nawigacja zależy teraz od Cykl życia 2.2.0-rc03, SavedState modelu cyklu życia 1.0.0-rc03, aktywności 1.1.0-rc03 i fragmentu 1.2.0-rc03 (w stosownych przypadkach).

Wersja 2.2.0-rc02

7 listopada 2019 r.

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

Zmiany zależności

  • Nawigacja korzysta teraz z elementu androidx.lifecycle 2.2.0-rc02.

Wersja 2.2.0-rc01

23 października 2019 r.

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

Wersja 2.2.0-beta01

9 października 2019 r.

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

Nowe funkcje

  • NavDestination i jej podklasy zastępują teraz toString(), aby dostarczać bardziej przydatnych informacji podczas debugowania. (b/141264986)

Zmiany w działaniu

  • Podczas dopasowywania precyzyjnych linków dodatkowe parametry zapytania są teraz ignorowane. Nie powoduje to niepowodzenia dopasowania. (b/141482822)

Poprawki błędów.

  • Naprawiono błąd polegający na tym, że argumenty na ścieżce precyzyjnego linku były ignorowane, jeśli określono też parametry zapytania. (B/141505755)
  • Rozszerzenie Kotlin navArgs() w systemie Activity ma teraz lepszy komunikat o błędzie, gdy nie ma żadnych dodatków. (b/141408999)
  • Klasy Java wygenerowane przez bezpieczne argumenty (Directions) zawierają teraz wartości domyślne. (B/141099045)
  • Klasy Java wygenerowane przez bezpieczne argumenty (Args) zawierają teraz wartości domyślne. (B/140123727)
  • Gdy używasz interfejsu Toolbar, NavigationUI nie animuje już zmiany tekstu podczas przechodzenia między dwoma miejscami docelowymi najwyższego poziomu. (B/140848160)

Wersja 2.2.0-alfa03

18 września 2019 r.

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

Zmiany w działaniu

  • Połączenie z użytkownikiem setViewModelStore() po połączeniu się z numerem setGraph skutkuje teraz IllegalStateException. To ustawienie należy zawsze ustawić przez NavHost w ramach wstępnej konfiguracji, aby zapewnić spójność miejsca na dane we wszystkich instancjach NavBackStackEntry w przypadku ViewModel instancji. (Aosp/1111821)

Poprawki błędów.

  • Naprawiono błąd ConcurrentModificationException w przypadku użycia instancji ViewModel dołączonych do wielu różnych grafów nawigacyjnych o zakresie ViewModelStore. (Aosp/1112257)

Wersja 2.2.0-alfa02

5 września 2019 r.

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

Nowe funkcje

  • Precyzyjne linki z parametrami zapytania obsługują teraz parametry zapytań o zmienionej kolejności. argumenty, które mają wartość domyślną lub mogą mieć wartość null, są teraz opcjonalne przy dopasowaniu precyzyjnych linków. (b/133273839)
  • Możesz teraz wywołać funkcję NavController.getBackStackEntry() i przekazać identyfikator miejsca docelowego lub wykresu nawigacji na stosie z tyłu. Zwrócony obiekt NavBackStackEntry udostępnia parametry LifecycleOwner, ViewModelStoreOwner (to samo zwrócone przez NavController.getViewModelStoreOwner()) i SavedStateRegistryOwner, a także argumenty używane do rozpoczęcia podróży. (aosp/1101691, aosp/1101710)

Poprawki błędów.

  • Rozwiązaliśmy problem, który powodował, że nie można było dodać elementu NavHostFragment do pliku ViewPager2 w przypadku użycia przycisku IllegalArgumentException. (B/133640271)
  • Funkcja NavInflater pozwala teraz uniknąć niepotrzebnego wywoływania funkcji getResourceName(), co skraca czas inflacji nawet o 40%. (b/139213740)

Wersja 2.2.0-alpha01

7 sierpnia 2019 r.

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

Nowe funkcje

  • SavedStateViewModelFactory jest teraz domyślną fabryką używaną podczas używania by navGraphViewModels() lub konstruktora ViewModelProvider z funkcją ViewModelStoreOwner zwróconym przez NavController.getViewModelStoreOwner(). (b/135716331)

Zmiany interfejsu API

Poprawki błędów.

  • NavHostFragment używa teraz FragmentContainerView, naprawiając problemy z kolejnością nakładania elementów w animacji i wysyłające okna do fragmentów. (b/137310379)

Wersja 2.1.0

Wersja 2.1.0

5 września 2019 r.

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

Ważne zmiany wprowadzone od wersji 2.0.0

  • Ograniczanie modeli widoków do wykresu nawigacyjnego: możesz teraz tworzyć modele widoków danych ograniczone do poziomu wykresu nawigacji za pomocą przedstawicieli właściwości by navGraphViewModels() w przypadku użytkowników Kotlin, korzystając z bibliotek -ktx lub interfejsu API getViewModelStoreOwner() dodanego do NavController. Więcej informacji znajdziesz w artykule Udostępnianie danych związanych z interfejsem między miejscami docelowymi.
  • Konta docelowe w oknach docelowych: możesz teraz tworzyć miejsca docelowe (<dialog>), które będą wyświetlać komunikat DialogFragment, gdy przejdziesz do nich navigate. NavHostFragment obsługuje domyślnie miejsca docelowe okien. Więcej informacji znajdziesz w artykule Tworzenie miejsca docelowego z fragmentu DialogFragment.
  • Nawigacja według Uri: możesz teraz navigate skorzystać z urządzenia Uri, które korzysta z <deepLink> dodanych przez Ciebie do miejsca docelowego, aby do niego nawigować. Więcej informacji znajdziesz w sekcji Nawigacja za pomocą identyfikatora URI.
  • NavHostController: interfejsy API używane specjalnie do tworzenia niestandardowych zasobów typu NavHost zostały przeniesione do NavHostController. Dzięki temu implementacje mogą połączyć swoje NavController z hostingami LifecycleOwner, OnBackPressedDispatcher i ViewModelStore.

Wersja 2.1.0-rc01

7 sierpnia 2019 r.

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

Zmiany interfejsu API

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

Wersja 2.1.0-beta02

19 lipca 2019 r.

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

Poprawki błędów.

  • Usunięto niezamierzoną zależność jacoco w 2.1.0-beta01. (b/137782950)

Wersja 2.1.0-beta01

17 lipca 2019 r.

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

Nowe funkcje

  • NavigationUI animuje usuwanie przycisku w górę, gdy używasz elementu setupWithNavController() z parametrem Toolbar lub CollapsingToolbarLayout. (b/131403621)

Poprawki błędów.

  • Rozwiązaliśmy problem z czasem, który występował, gdy w polu findNavController() używano wielu fragmentów NavHostFragmentów z tym samym kontenerem. (B/136021571)

Wersja 2.1.0-alpha06

2 lipca 2019 r.

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

Nowe funkcje

  • Atrybut app:navGraph używany przez fragment NavHostFragment został przeniesiony do artefaktu navigation-runtime. Niestandardowych nawigatorów, które można dodawać za pomocą kodu XML, należy używać tego atrybutu w celu integracji z panelem hosta edytora nawigacji. (B/133880955)

Zmiany interfejsu API

  • Interfejs API getViewModelStore() w systemie NavController został wycofany i zastąpiony nową metodą getViewModelStoreOwner(), która zwraca ViewModelStoreOwner. (AOSP/987010)
  • Implementację miejsc docelowych okien pływających, takich jak miejsca docelowe typu <dialog>, została uogólniona w interfejsie znaczników FloatingWindow, który jest teraz zaimplementowany we wszystkich miejscach docelowych <dialog>. Metody interfejsu użytkownika służące do interakcji z górnym paskiem aplikacji teraz ignorują miejsca docelowe FloatingWindow. (B/133600763)

Zmiany w działaniu

  • Gdy używasz miejsca docelowego <dialog>, Nawigacja prawidłowo synchronizuje swój stan z tym, co widzisz na ekranie. Dlatego Nawigacja automatycznie wyświetla teraz <dialog> miejsca docelowe, gdy dojdziesz do miejsca docelowego bez okna dialogowego lub bez aktywności, na przykład do celu <fragment>. (b/134089818)

Poprawki błędów.

  • Nawigacja wstrzymuje teraz animację, która pojawia się podczas odtwarzania działania podczas obsługi precyzyjnego linku, naprawiającego Flasha. (b/130362979)
  • Naprawiono błąd polegający na tym, że po dodaniu fragmentu początkowego stos nawigacji był niezsynchronizowany. (b/133832218)

Wersja 2.1.0-alpha05

5 czerwca 2019 r.

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

Zmiany interfejsu API

  • Interfejsy API związane z hostem w systemie NavController zostały zmienione i przeniesione do nowej podklasy, czyli NavController, NavHostController. (Aosp/966091)
  • Metoda NavController setHostOnBackPressedDispatcherOwner() została zastąpiona metodą setOnBackPressedDispatcher() usługi NavHostController. Teraz należy wywołać metodę setLifecycleOwner() przed jej wywołaniem. (Aosp/965409)
  • NavHostController zawiera teraz metodę enableOnBackPressed(boolean), która zastępuje klasę NavHostOnBackPressedManager, która została wcześniej zwrócona przez funkcję setHostOnBackPressedDispatcherOwner(). (Aosp/966091)

Poprawki błędów.

  • Rozwiązaliśmy problem, który powodował, że po nawigowaniu według identyfikatora URI stos wsteczny był nieprawidłowy. (b/132509387)
  • Precyzyjne linki obsługiwane przez NavController automatycznie uruchamiają się teraz tylko raz. (b/132754763)

Wersja 2.1.0-alfa04

16 maja 2019 r.

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

Poprawki błędów.

  • Funkcja NavHostFragment prawidłowo respektuje zasadę app:defaultNavHost podczas przechwytywania systemowych zdarzeń przycisku Wstecz, eliminując regresję w Nawigacji 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator prawidłowo obsługuje teraz operacje popBackStack() i navigateUp(). b/132576764
  • Rozwiązaliśmy problem (IllegalStateException: unknown destination during restore) występujący podczas wielokrotnego poruszania się między zagnieżdżonymi wykresami. b/131733658

Wersja 2.1.0-alfa03

7 maja 2019 r.

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

Znane problemy

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

Nowe funkcje

  • Możesz teraz tworzyć miejsca docelowe (<dialog>), które będą wyświetlać usługę DialogFragment, gdy dołączysz do: navigate. NavHostFragment obsługuje domyślnie miejsca docelowe okien. b/80267254,
  • Oprócz wywoływania funkcji navigate przy użyciu identyfikatora zasobu lub instancji NavDirections możesz teraz nawigować za pomocą instancji Uri, która wykorzystuje dodane przez Ciebie do miejsca docelowego informacje <deepLink>, aby przejść do właściwego miejsca docelowego. b/110412864

Zmiany w działaniu

  • Domyślne animacje dostarczane przez interfejs NavigationUI zostały skrócone z 400 do 220 ms, aby dopasować się do domyślnej szybkości animacji aktywności i fragmentów. b/130055522

Zmiany interfejsu API

  • Metoda createFragmentNavigator() metody 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 dodawania niestandardowych nawigatorów podczas podklasyfikacji NavHostFragment. b/122802849
  • Do NavDestination dodaliśmy metodę hasDeepLink(), która pozwala sprawdzić, czy dane miejsce docelowe (Uri) może być obsługiwane przez dane miejsce docelowe lub, w przypadku NavGraph, dowolne miejsce docelowe na wykresie nawigacji. b/117437718

Poprawki błędów.

  • Argumenty domyślne są teraz prawidłowo przekazywane do instancji OnDestinationChangedListener. b/130630686,
  • NavHostFragment przechwytuje teraz systemowe zdarzenia wstecz za pomocą OnBackPressedDispatcher. Naprawiamy problem z nawigacją warunkową w metodach cyklu życia fragmentu po powrocie do fragmentu. b/111598096
  • W przypadku bezpiecznych argumentów wartość android:defaultValue=”@null” z nieokreślonym app:argType jest teraz prawidłowo wnioskowana jako argument string. b/129629192

Wersja 2.1.0-alfa02

3 kwietnia 2019 r.

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

Nowe funkcje

  • Możesz teraz tworzyć modele widoków danych o zakresie ograniczonym do poziomu wykresu nawigacji za pomocą przedstawicieli usługi by navGraphViewModels() w przypadku użytkowników Kotlin lub za pomocą interfejsu API getViewModelStore() dodanego do NavController. b/111614463

Zmiany interfejsu API

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

Poprawki błędów.

  • Wartość android:name dla miejsc docelowych <activity> nie jest już analizowana jako klasa podczas inflacji, co uniemożliwia użycie obiektów ClassNotFoundExceptions podczas korzystania z funkcji dynamicznych. b/124538597

Wersja 2.1.0-alpha01

19 marca 2019 r.

To jest pierwsza wersja alfa Nawigacji 2.1.0.

Zmiany zależności

  • Nawigacja zależy teraz od tych funkcji: androidx.core:core:1.0.1 oraz androidx.fragment:fragment:1.1.0-alpha05 W tej wersji usunięto również zależność od androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

Zmiany interfejsu API

  • Nowa metoda Navigation.createNavigateOnClickListener(NavDirections) została dodana jako alternatywa dla tworzenia detektora kliknięć z identyfikatora zasobu i pakietu. b/127631752
  • Interfejs FragmentNavigator.instantiateFragment został wycofany. Domyślny Implementacja używa teraz FragmentFactory do tworzenia instancji fragmentów. b/119054429

Poprawki błędów

  • Nawigacja nie wysyła już pustej wartości Bundle, gdy dołączono argumenty do miejsca docelowego. Rozwiązaliśmy problem z użyciem android:defaultValue="@null". b/128531879
  • Bezpieczne argumenty są teraz oparte na KotlinPoet 1.1.0. ekstremalnie długie nazwy pakietów. b/123654948

Wersja 2.0.0

Wersja 2.0.0

14 marca 2019 r.

Nawigacja 2.0.0 została zwolniona bez zmian od 2.0.0-rc02.

Wersja 2.0.0-rc02

6 marca 2019 r.

Nawigacja 2.0.0-rc02 udostępnia nowe artefakty w interfejsie androidx.navigation identyfikator grupy i zmienia jego zależności na odpowiedniki AndroidaX.

Działanie wersji 2.0.0-rc02 jest takie samo jak w Nawigacji 1.0.0-rc02 i nie są wymagane żadne zmiany w kodzie przy aktualizacji z wersji 1.0.0-rc02 oprócz aktualizacji zależności, nowych zależności.

Twój projekt musi mieć przeszedł na AndroidaX, aby korzystać z wersji 2.X Nawigacja. Stabilną wersją Nawigacji będzie wersja 1.0, która będzie korzystać z pomocy Zależności bibliotek; wszystkie przyszłe prace nad wersją 1.0 będą oparte na AndroidX i rozwijanie platformy w oparciu o stabilną wersję 2.0.

Zależności sprzed AndroidaX

W przypadku wersji Nawigacji starszych niż Android X uwzględnij te zależności:

dependencies {
    def nav_version = "1.0.0"

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

W przypadku bezpiecznych argumentów dodaj parametr podążanie za ścieżkami klasy w pliku build.gradle najwyższego poziomu

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

Wersja 1.0.0

Wersja 1.0.0

14 marca 2019 r.

Nawigacja 1.0.0 została zwolniona bez zmian od 1.0.0-rc02.

Wersja 1.0.0-rc02

26 lutego 2019 r.

Jest to druga wersja kandydująca do stabilnej wersji Nawigacji 1.0.0. Ta wersja zawiera kilka poprawek błędów.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że parametr popBackStack() był ignorowany, jeśli wykres główny nie ma identyfikatora b/126251695
  • navigateUp() prawidłowo obsługuje teraz powrót do zadania w aplikacji w przypadku wywołania po użyciu precyzyjnego linku bez FLAG_ACTIVITY_NEW_TASK b/126082008
  • Usunięto problem z aplikacją ActivityNavigator.applyPopAnimationsToPendingTransition. nie zastosowano prawidłowej animacji wyjścia pop-up b/126237567
  • Kod Kotlin wygenerowany przez Safe Args prawidłowo zmienia znaczenie słów kluczowych Kotlin na przykład in i fun, w nazwie pakietu powiązanej z klasą R. b/126020455

Wersja 1.0.0-rc01

21 lutego 2019 r.

Jest to wersja kandydująca do stabilnej wersji Nawigacji 1.0.0. Ten zawiera 1 poprawkę błędu.

Poprawki błędów

  • Naprawiono problem związany z korzystaniem z operacji nawigacji na podstawie fragmentów i singleTop b/124294805

Wersja 1.0.0-beta02

12 lutego 2019 r.

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

Nowe funkcje

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

Zmiany w działaniu

  • Dokładne dopasowania precyzyjnych linków mają teraz wyższy priorytet niż precyzyjne linki z atrybutami .* lub pasuje do argumentu. b/123969518

Poprawki błędów

  • popBackStack() i navigateUp zwracają teraz prawidłowo wartość false podczas otwierania ostatnie miejsce docelowe w stosie wstecznym, naprawiając regresję, w aplikacji 1.0.0-beta01. b/123933201
  • Nawigacja teraz prawidłowo ustawia ClassLoader podczas przywracania zapisanej instancji, co pozwala uniknąć problemów w przypadku użycia klas niestandardowych w Navigator ma zapisany stan lub w argumentach wysłanych do: NavDestination. b/123893858
  • Klasy NavArgs wygenerowane przez Safe Args nie ulegają już awarii podczas przywracania Parcelable[] argument z zapisanego stanu instancji. b/123963545
  • Bezpieczne Args są teraz prawidłowo czyszczone z niepotrzebnych wygenerowanych klas Kotlin. b/124120883

Wersja 1.0.0-beta01

4 lutego 2019 r.

Jest to pierwsza wersja beta Nawigacji. będzie można korzystać z nawigacji Interfejs API powinien pozostawać stabilny do następnej wersji, chyba że o krytycznym problemie. Ta wersja zawiera poprawki błędów i zmiany w działaniu.

Zmiany w działaniu

  • Nawigacja zapewnia teraz jednakowe traktowanie wartości domyślnych argumentów w czasie działania i za pomocą Safe Args. W związku z tym tylko argumenty z app:argType="reference" może mieć wartość domyślną wskazującą inny zasób (na przykład @color/colorPrimary). Próba użycia domyślnej wartości referencyjnej z inną wartością app:argType spowoduje wystąpienie wyjątku, gdy podczas analizowania kodu XML nawigacji. b/123551990
  • Bezpieczne argumenty korzystają teraz z wtyczki Androida do obsługi Gradle w wersji 3.3.0 AOSp/888413
  • Bezpieczne argumenty opierają się teraz na Kotlin 1.3.20 Aosp/888414

Poprawki błędów

  • Bezpiecznych argumentów można teraz używać w bibliotece i modułach funkcji we wszystkich wersjach wtyczki Androida do obsługi Gradle. b/121304903
  • Naprawiliśmy regresję, która powodowała, że jedna operacja popBackStack() wyrzucać wszystkie kopie miejsca docelowego z góry na tylny stos, zamiast tylko do jednego miejsca docelowego naraz. b/123552990
  • Rozwiązaliśmy problem, który powodował desynchronizację stanu FragmentNavigator ze stanem NavController, powodując IllegalStateException, gdy i próbujesz przywrócić poprzedni stos. b/123803044
  • Rozwiązaliśmy problem, który powodował, że strzałka wstecz w obszarze NavigationUI nie działała są wyświetlane przy korzystaniu z ProGuard z zaciemnianiem kodu. b/123449431
  • Kod wygenerowany przez Safe Args działa teraz prawidłowo przy użyciu interfejsu app:argType wskazującą statyczną klasę wewnętrzną w formacie .OuterClass$InnerClass. b/123736741
  • Kod Java wygenerowany przez Safe Args prawidłowo obsługuje teraz działania globalne i głębokie zagnieżdżone miejsca docelowe. b/123347762

Wersja 1.0.0-alfa11

23 stycznia 2019 r.

Jest to poprawka do wersji 1.0.0-alpha10, która rozwiązuje problem z bezpiecznymi argumentami.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że usługa Safe Args nie mogła zaimportować klasy wskazówek dojazdu. powiązane z działaniami globalnymi. b/123307342

Wersja 1.0.0-alpha10

23 stycznia 2019 r.

Znane problemy

  • Bezpieczne argumenty nie zaimportują klasy Directions powiązanej z działaniami globalnymi. b/123307342

Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.

Nowe funkcje

  • Użytkownicy Kotlin mogą teraz korzystać z przekazywania dostępu do właściwości by navArgs() leniwie uzyskaj odwołanie do klasy NavArgs wygenerowanej przy użyciu Safe Args w: Activity lub Fragment. b/122603367
  • Bezpieczny argument umożliwia teraz generowanie kodu Kotlin przez zastosowanie Wtyczka androidx.navigation.safeargs.kotlin. Kod Kotlin został utworzony, tylko dla modułów Kotlin, przy użyciu argumentów domyślnych stałych klas nad wzorcem konstruktora, który jest nadal dostępny w poprzedniej wtyczki androidx.navigation.safeargs. b/110263087,

Zmiany w działaniu

  • Dopasowujące precyzyjne linki są teraz skierowane w stronę precyzyjnego linku, który ma z najbardziej pasujących argumentów. b/118393029
  • Wywołanie setGraph() na urządzeniu NavController spowoduje teraz zresetowanie stosu wstecznego. b/111450672
  • Nieznane precyzyjne linki już nie generują parametru IllegalStateException, ale są zignorowano, naprawiono problemy z zagnieżdżonymi lub wieloma elementami NavHostFragment. b/121340440

Zmiany najważniejsze

  • Metoda NavOptions.applyPopAnimationsToPendingTransition() do argumentu możliwość stosowania animacji pop do aktywności została przeniesiona do: ActivityNavigator. b/122413117
  • Bezpieczne argumenty unikają obecnie duplikowania identycznych klas w przypadku działań bez . Typ zwracany dla metod bez argumentów w wygenerowanych kierunkach NavDirections zajęcia są teraz: NavDirections. b/123233147
  • Klasy wskazówek dojazdu wygenerowane przez Safe Args nie mają już publicznego konstruktora – korzystaj tylko z wygenerowanych metod statycznych. b/123031660
  • Klasy NavDirections wygenerowane przez Safe Args nie mają już publicznych konstruktora – powinny być generowane wyłącznie za pomocą metod statycznych w w wygenerowanych klasach wskazówek dojazdu. b/122963206
  • Zwrócone Bundle z urządzenia NavDirections Oznaczono: getArguments() jako @NonNull, a nie @Nullable. b/123243957

Poprawki błędów

  • Funkcja NavDeepLinkBuilder prawidłowo obsługuje teraz wiele elementów jednocześnie PendingIntent w to samo miejsce docelowe przy użyciu przekazanych argumentów aby określić unikalność. b/120042732
  • NavController prawidłowo obsługuje teraz operacje popBackStack(), gdy: za pomocą zagnieżdżonych fragmentów NavHostFragment lub innych podrzędnych fragmentów ze stosem wstecznym. b/122770335
  • NavigationUI teraz prawidłowo ustawia opis treści przycisku w górę. b/120395362
  • Klasy wskazówek dojazdu wygenerowane przez bezpieczne argumenty obsługują teraz działania globalne o tym samym identyfikatorze co działanie w miejscu docelowym. b/122962504
  • NavDirections klasy wygenerowane przez bezpieczne argumenty mają teraz równe Wartości hashCode(), gdy equals() zwróci wartość prawda. b/123043662
  • FragmentNavigator wyświetli teraz lepszy komunikat o błędzie, jeśli spróbujesz zrób własne FragmentTransactions na: NavHostFragment FragmentManager Zawsze należy używać parametru getChildFragmentManager(). b/112927148

Wersja 1.0.0-alpha09

18 grudnia 2018 r.

Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.

Postanowiliśmy nie kontynuować rozwoju android.arch.navigation:navigation-testing artefakt. Co potwierdzono, przydatne do wewnętrznych testów aplikacji NavController, zdecydowanie zalecamy alternatywne strategie testowania, takie jak naśmiewanie się z instancji NavController. aby sprawdzić, czy wykonywane są prawidłowe wywołania navigate(). Ten jest szczegółowo omówione Prezentacja na temat pojedynczej aktywności na AndroidDevSummit 2018 będziemy opracowywać dodatkową dokumentację dotyczącą testowania dzięki Nawigacji.

Nowe funkcje

  • Elementy MenuItem z: menuCategory="secondary" nie będą już cofnięte. stos w przypadku użycia z metodami NavigationUI. b/120104424
  • AppBarConfiguration umożliwia teraz ustawienie kreacji zastępczej OnNavigateUpListener. instancja, która zostanie wywołana po zwróceniu navController.navigateUp() false. b/79993862 b/120690961

Zmiany najważniejsze

  • Gdy używasz: <argument> i elementu argType="reference", Nawigacja nie jest już dostępna analizuje odwołanie, zamiast podawać sam identyfikator surowego zasobu. b/111736515
  • onNavDestinationSelected() domyślnie powraca do miejsca docelowego wykresu nawigacji. co jest spójne z metodami setup. Dodaj menuCategory="secondary" do Twojego urządzenia MenuItem, aby uniknąć problemów z tylnym stosem. Aosp/852869
  • Metody fromBundle() wygenerowanych klas Args mają teraz wartość inną niż null Bundle zamiast Bundle do wartości null Aosp/845616

Poprawki błędów

  • Argumenty są teraz prawidłowo interpretowane z precyzyjnych linków jako prawidłowe argType. zamiast zawsze jako ciągi b/110273284
  • Nawigacja prawidłowo eksportuje teraz swoje zasoby publiczne b/121059552
  • Bezpieczne argumenty są teraz zgodne z wtyczką Androida do obsługi Gradle w wersji 3.4 Canary 4 lub nowszej b/119662045

Wersja 1.0.0-alpha08

6 grudnia 2018 r.

Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność; zapoznaj się z sekcją Zmiany powodujące niezgodność poniżej.

Nowe funkcje

  • Etykiety miejsc docelowych używane z metodami NavigationUI będą od teraz automatycznie zastąp {argName} instancji w kolumnie android:label prawidłowym argumentem b/80267266
  • Nawigacja korzysta teraz z Biblioteki pomocy w wersji 28.0.0 b/120293333

Zmiany najważniejsze

  • Zmiana nazwy użytkownika z OnNavigatedListener na OnDestinationChangedListener b/118670572
  • Funkcja OnDestinationChangedListener przekazuje teraz również Bundle argumentów Aosp/837142
  • Atrybuty app:clearTask i app:launchDocument oraz powiązane z nimi atrybuty Liczba usuniętych metod: . Użyj funkcji app:popUpTo jako pierwiastka wykresu, aby: usuń wszystkie miejsca docelowe ze stosu wstecznego. b/119628354
  • ActivityNavigator.Extras używa teraz wzorca Builder i dodaje możliwość ustaw dowolne flagi: Intent.FLAG_ACTIVITY_ Aosp/828140
  • Zmiana nazwy użytkownika z NavController.onHandleDeepLink na handleDeepLink Aosp/836063
  • Wiele klas i metod, które nie są przeznaczone do podklasyfikacji, na przykład NavOptions, NavInflater, NavDeepLinkBuilder i AppBarConfiguration, zostały final Aosp/835681
  • Wycofana metoda NavHostFragment.setGraph() została usunięta Aosp/835684
  • Wycofana metoda NavigationUI.navigateUp(DrawerLayout, NavController) został usunięty. Aosp/835684
  • Tworzenie fragmentów zostało przeniesione do FragmentNavigator, co ułatwia tworzenie przekazać tworzenie fragmentu do FragmentFactory. b/119054429
  • Konstruktor dla NavGraphNavigator nie wymaga już Context Aosp/835340
  • NavigatorProvider to teraz za pomocą klasy, a nie interfejsu. Wartość NavigatorProvider zwrócona przez getNavigatorProvider(). nie zmieniła swojego działania. Aosp/830660
  • NavDestination.navigate() został(a) usunięty(a). Zadzwoń do firmy navigate() na Navigator . Aosp/830663
  • Znaczna refaktoryzacja tekstu Navigator eliminująca potrzebę użycia OnNavigatorNavigatedListener i zamiast tego funkcja navigate zwróciła przekierowany do niej element NavDestination.
  • Instancje Navigator nie mogą już wysyłać zdarzeń pop do NavController. Rozważ za pomocą OnBackPressedCallback do przechwytywać naciśnięcia przycisku wstecz i wywołać navController.popBackStack(). Aosp/833716

Poprawki błędów

  • popUpTo działa teraz konsekwentnie, gdy miejsce docelowe jest elementem <navigation> b/116831650
  • Naprawiliśmy kilka błędów, które powodowały wyświetlanie się komunikatu o błędzie IllegalArgumentException. w przypadku korzystania z wykresów zagnieżdżonych b/118713731 b/113611083 b/113346925 b/113305559
  • Uzupełniony zostanie atrybut dataPattern <activity> miejsc docelowych argumentów z argumentów niebędących ciągiem znaków, wywołując funkcję toString() b/120161365

Bezpieczne argumenty

  • Bezpieczne argumenty obsługują obiekty możliwe do szeregowania, w tym wartości typu Enum. Typy typów wyliczeniowych może ustawić wartość domyślną przy użyciu literału wyliczeniowego bez nazwy klasy (np. app:defaultValue="READ") b/111316353
  • Bezpieczne argumenty obsługują tablice wszystkich obsługiwanych typów b/111487504
  • Bezpieczne argumenty ignoruje teraz podfoldery katalogów zasobów b/117893516
  • Bezpieczne argumenty dodają adnotacje @Override tam, gdzie jest to potrzebne b/117145301

Wersja 1.0.0-alpha07

29 października 2018 r.

Nowe funkcje

Zmiany najważniejsze

  • Moduł navigation-testing-ktx został złożony do navigation-testing artifact i nie zostanie już opublikowana.
  • Artefakt navigation-testing jest teraz zależny od standardu Kotlin bibliotece. Interfejs API został zmieniony, aby był bardziej spójny z Kotlin konw., ale nadal możesz go używać do testów napisanych w Javie.
  • Wykresy nawigacyjne zarejestrowane w pliku manifestu metadanych nie są już obsługiwane. b/118355937
  • Akcji nie można już dołączać do elementu <activity> miejsca docelowe. Aosp/785539

Poprawki błędów

  • Precyzyjne linki teraz prawidłowo analizują parametry zapytania. b/110057514
  • Teraz w miejscach docelowych aktywności wszystkie animacje rozpoczynania i zamykania są stosowane w przypadku wszystkich animacji. b/117145284
  • Usunięto awarię, która występowała po zmianie konfiguracji przy korzystaniu z niestandardowych ustawień Nawigatory. b/110763345

Bezpieczne argumenty

  • Bezpieczne argumenty są teraz stale zależne od wtyczki Androida do obsługi Gradle w wersji 3.2.1. b/113167627
  • Można teraz generować wskazówki dla zajęć wewnętrznych. b/117407555
  • Naprawiono problem z generowaniem wskazówek dojazdu do tagu <include>. wykres. b/116542123

Wersja 1.0.0-alpha06

20 września 2018 r.

Nowe funkcje

Zmiany interfejsu API

  • Zmiana powodująca niezgodność: metoda Nawigator navigate() przyjmuje teraz parametr Navigator.Extras.
  • Metoda getGraph() NavControllera to teraz NonNull b/112243286

Poprawki błędów

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

Bezpieczne argumenty

  • Klasy wskazówek dojazdu do miejsca docelowego nawigacji rozszerzają teraz klasyczną klasę wskazówek dojazdu z ich nadrzędnej klasy Directions (jeśli istnieje) b/79871405.
  • Klasy wskazówek i argumentów mają teraz przydatną implementację funkcji toString() b/111843389

Wersja 1.0.0-alpha05

10 sierpnia 2018 r.

Poprawki błędów

  • Napraw błąd, który powodował nieprawidłowe działanie stosu. b/111907708
  • Napraw błąd w equals() wygenerowanych klas. b/111450897
  • Napraw błąd kompilacji w bezpiecznych argumentach. b/109409713
  • Popraw konwersję z identyfikatorów zasobów na nazwy Java b/111602491
  • Naprawa komunikatów o błędach dotyczących dopuszczalności wartości null we wtyczce Safe Args.
  • Dodaj brakujące adnotacje dotyczące wartości null.

Wersja 1.0.0-alpha04

19 lipca 2018 r.

Nawigacja 1.0.0-alpha04 i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.

Zmiany interfejsu API / działania

  • NavHostFragment będzie zawsze ustawiać bieżący fragment jako główny fragment do nawigacji, dzięki czemu menedżery fragmentów podrzędnych zostaną wyskakujące przed wydzieleniem zewnętrznego kontrolera NavController b/111345778

Bezpieczne argumenty

  • Zmiana powodująca niezgodność: app:type została zmieniona 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 klikać b/111534438
  • Klasy Args potwierdzają teraz, że atrybuty NonNull w rzeczywistości nie są puste b/111451769
  • Adnotacje NonNull zostały dodane do klas NavDirections i generowanych argumentów b/111455455 b/111455456.

Poprawki błędów

  • Rozwiązaliśmy problem z systemowym przyciskiem Wstecz po zastosowaniu precyzyjnych linków do miejsca docelowego fragmentu b/111515685

Wersja 1.0.0-alpha03

12 lipca 2018 r.

Nawigacja 1.0.0-alpha03 i powiązana z nią wtyczka do obsługi interfejsu Safe Args wprowadziliśmy w interfejsie API i w jego działaniu oraz poprawki błędów.

Zmiany interfejsu API / działania

  • Dodano metodę NavigationUI.setupWithNavController w przypadku paska narzędzi Toolbar b/109868820.
  • Dodano metodę NavigationUI.setupWithNavController w przypadku elementu CollapsingToolbarLayout b/110887183
  • popBackStack() zwraca teraz wartość fałsz, gdy stos wsteczny jest pusty lub gdy podanego identyfikatora miejsca docelowego nie ma w stosie tylnym b/110893637
  • FragmentNavigator ignoruje teraz operacje nawigacji po zapisaniu stanu przez FragmentManager, aby uniknąć wyjątków „Nie można wykonać tego działania po onSaveInstanceState” w wyjątku b/110987825

Bezpieczne argumenty

  • Zmiana znaczenia: znaki inne niż alfanumeryczne w nazwach działań i argumentów zostaną zastąpione wielkimi literami w nazwach odpowiednich metod NavDirections.
    • Na przykład: DemoController.index będzie setDemoControllerIndex b/79995048
    • Na przykład: action_show_settings będzie actionShowSettings b/79642240
  • Zmiana powodująca niezgodność: argumenty są teraz domyślnie uznawane za niepuste. Aby zezwolić na null w przypadku ciągu znaków i argumentów parcelable, dodaj app:nullable="true" b/79642307
  • Możesz teraz używać parametru app:type="long" z wartościami domyślnymi w formacie „123L” b/79563966
  • Obsługiwane są teraz argumenty Parcelable z pełną i jednoznaczną nazwą klasy dla funkcji app:type. Jedyna obsługiwana wartość domyślna to "@null" b/79563966
  • Klasy Args implementują teraz funkcje equals() i hashCode() b/79642246
  • Wtyczki Safe Args można teraz stosować do projektów bibliotek b/80036553
  • Wtyczki Safe Args można teraz stosować do projektów cech b/110011752

Poprawki błędów

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

Wersja 1.0.0-alpha02

7 czerwca 2018 r.

Zmiany w działaniu

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

  • Argumenty Nawigacji URLDecodes analizowane z adresów URL precyzyjnych linków. b/79982454

Poprawki błędów

  • Poprawiliśmy IllegalStateException podczas wywoływania nawigacji z metod cyklu życia fragmentu. b/79632233

  • W przypadku migotania podczas korzystania z animacji nawigacja wymaga teraz Biblioteki pomocy 27.1.1. B/80160903

  • Naprawiono błąd IllegalArgumentException w przypadku użycia domyślnego NavHost="true". jako fragment podrzędny. b/79656847

  • Naprawiono błąd StackOverflowError, który występował podczas korzystania z NavDeepLinkBuilder. b/109653065

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

  • Naprawiono problem z pokrywającymi się fragmentami podczas korzystania z pola launchSingleTop. b/79407969

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

  • Interfejs NavigationUI wyróżni właściwy element, gdy zagnieżdżony wykres jest używany jako MenuItem. b/109675998

Zmiany interfejsu API

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

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

Wersja 1.0.0-alpha01

8 maja 2018 r.

Nawigacja zapewnia platformę do tworzenia w aplikacji nawigacji. Ta początkowa wersja to 1.0.0-alpha01.