Navigation
Navigation ist ein Framework zum Wechseln zwischen „Zielen“ in einer Android-Anwendung, das eine einheitliche API bietet, unabhängig davon, ob Ziele als Fragmente, Aktivitäten oder andere Komponenten implementiert sind.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
30. Oktober 2024 2.8.3 - - 2.9.0-alpha02

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von Navigation hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

Cool

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

Um sichere Argumente hinzuzufügen fügen Sie folgendes classpath in Ihre übergeordnete build.gradle-Datei ein:

Cool

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")
    }
}

Sie müssen außerdem eines der beiden verfügbaren Plug-ins anwenden.

Um für Java oder gemischte Java- und Kotlin-Module den Java-Sprachcode zu generieren, diese Zeile in die build.gradle-Datei Ihrer App oder Ihres Moduls ein:

Cool

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Alternativ können Sie folgenden Code hinzufügen, um Kotlin-Code zu generieren, der für reine Kotlin-Module geeignet ist:

Cool

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

Kotlin

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

android.useAndroidX=true muss in deinem gradle.properties Datei gemäß Zu AndroidX migrieren

Weitere Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 2.9

Version 2.9.0-alpha02

30. Oktober 2024

androidx.navigation:navigation-*:2.9.0-alpha02 wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.

Externer Beitrag

  • Neue gängige NavController.handleDeepLink(request: NavDeepLinkRequest)-Methode. Vielen Dank, Konstantin Zchowrebov! (I3e228)

Version 2.9.0-alpha01

16. Oktober 2024

androidx.navigation:navigation-*:2.9.0-alpha01 wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Benutzerdefinierte Navigationssysteme können ihre Ziele jetzt als Implementierung der SupportingPane-Benutzeroberfläche kennzeichnen. Dadurch wird der NavController mitgeteilt, dass diese Ziele neben anderen Zielen angezeigt werden. Über diese Schnittstelle können beispielsweise mehrere Ziele gleichzeitig RESUMED sein. (ID5559)
  • Unter Navigation 2.8.3: Es wurden neue Lint-Prüfungen für die Module navigation-common, navigation-runtime und navigation-compose hinzugefügt, um typsichere Routen zu identifizieren, die nicht korrekt mit @Serializable annotiert sind. Diese Prüfung wird auf alle NavGraphBuilder- und NavDeepLinkBuilder-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • In Navigation 2.8.3: Neue Lint-Prüfungen für die Module navigation-common, navigation-runtime und navigation-compose wurden hinzugefügt, um typsichere Routen mit Enum-Argumenten zu identifizieren, die nicht korrekt mit @Keep annotiert sind. Diese Prüfung wird auf alle NavGraphBuilder- und NavDeepLinkBuilder-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Verhaltensänderungen

  • Wenn Sie versuchen, eine NavController zu verwenden, die zuvor DESTROYED war, wird jetzt eine IllegalStateException ausgegeben. (I520da, b/369616172)

Fehlerkorrekturen

  • Die Ausnahme „Enumerationsklasse nicht gefunden“ wurde aktualisiert, um die Verwendung der @Keep-Anmerkung vorzusehen, falls die Enumerationsklasse in minimierten Builds gelöscht wird. (I90e79, b/358137294)

Bekannte Probleme

  • Es gibt ein Problem mit den neuen Lint-Regeln, die in Navigation 2.8.* hinzugefügt wurden. Beim Versuch, Lint mit dem Android Gradle-Plug-in 8.4 oder höher auszuführen, wird ein Obsolete custom lint check-Fehler ausgegeben. (b/368070326, b/371463741)

Version 2.8

Version 2.8.3

16. Oktober 2024

androidx.navigation:navigation-*:2.8.3 wird veröffentlicht. Version 2.8.3 enthält diese Commits.

Neue Funktionen

  • Neue Lint-Prüfungen für die Module navigation-common, navigation-runtime und navigation-compose wurden hinzugefügt, um typsichere Routen zu identifizieren, die nicht korrekt mit @Serializable annotiert sind. Diese Prüfung wird auf alle NavGraphBuilder- und NavDeepLinkBuilder-Erweiterungsfunktionen angewendet. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • Es wurden neue Lint-Prüfungen für die Module navigation-common, navigation-runtime und navigation-compose hinzugefügt, um typsichere Routen mit Enum-Argumenten zu identifizieren, die nicht korrekt mit @Keep annotiert sind. Diese Prüfung wird auf alle Erweiterungsfunktionen von NavGraphBuilder und NavDeepLinkBuilder angewendet. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Fehlerkorrekturen

  • Die neuen Lint-Regeln, die in Navigation 2.8.* hinzugefügt wurden, führten zum Fehler Obsolete custom lint check, wenn versucht wurde, Lint mit dem Android-Gradle-Plug-in 8.4 oder höher auszuführen. (I1be3d, b/368070326, b/371463741)

Bekannte Probleme

  • Beim Versuch, Lint mit Lint 16 (AGP 8.7) oder höher auszuführen, wird von Navigation Lint der Fehler „Obsolete custom lint check“ ausgegeben. (b/371926651)

Version 2.8.2

2. Oktober 2024

androidx.navigation:navigation-*:2.8.2 wird veröffentlicht. Version 2.8.2 enthält diese Commits.

Neue Funktionen

  • Die Navigationstypsicherheit unterstützt jetzt serialisierbare Klassen, die Double, Double?, DoubleArray, DoubleArray?, List<Double> und List<Double>? enthalten, ohne dass eine benutzerdefinierte NavType erforderlich ist. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)

Fehlerkorrekturen

  • Die Fehlermeldung wurde verbessert, wenn die Navigation das Argument einer Route nicht einem NavType zuordnen kann. Die neue Fehlermeldung enthält den Argumentnamen, den voll qualifizierten Argumentnamen und den voll qualifizierten Namen der Route. (Id8416, b/346264232)

Version 2.8.1

18. September 2024

androidx.navigation:navigation-*:2.8.1 wird veröffentlicht. Version 2.8.1 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, um die Verwendung der popBackStack-Funktion zu erzwingen, die einen reifierten Klassentyp annimmt, wenn versucht wird, popBackStack mit typsicheren APIs zu verwenden. (Ief161, b/358095343)

Fehlerkorrekturen

  • Für die Navigation ist jetzt erforderlich, dass die an die startDestination eines NavGraph übergebene Route die Werte für alle erforderlichen Argumente enthält. Dazu gehören auch Argumente, die nicht null sein dürfen und keinen Standardwert haben. (I18e74, b/362594265)
  • Für Navigationsargumente, die für die Navigation sicher sind, wurde die Unterstützung für nicht nullwertige Strings hinzugefügt. „Null“-Werte werden jetzt so geparst und im Bundle gespeichert, wie sie sind. Das unterscheidet sich vom bisherigen Verhalten, bei dem „Null“-Werte in ein Nullobjekt geparst wurden. Diese Änderung gilt nur für Stringtypen, die nicht null sein dürfen. Nullbare Strings bleiben unverändert. (I08b4a, b/348936238)
  • Ein NavDestination kann nur noch über einen Deeplink aufgerufen werden, der dem Ziel explizit hinzugefügt wurde. Das bedeutet auch, dass Sie nur mit der Überladung der Navigationsfunktion, die eine Stringroute annimmt, zur Route eines Ziels navigieren können. Dadurch wird eine Sicherheitslücke geschlossen, die es ermöglichte, Deeplinks zu einem potenziell geschützten Ziel zu erstellen. (Ie30e6)

Abhängigkeitsupdate

  • Navigation Safe Args sind jetzt nicht mehr von Kotlin 2.X, sondern von Kotlin 1.9.24 abhängig. So müssen Entwickler nicht zwangsweise ein Update durchführen. (a4129a)
  • Die Navigation „Schreiben“ hängt jetzt von Schreiben 1.7.2 ab.

Version 2.8.0

4. September 2024

androidx.navigation:navigation-*:2.8.0 wurde veröffentlicht. Version 2.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.7.0

Typsicherheit der Kotlin-DSL für Navigation

  • Navigation bietet jetzt Typsicherheit für die Kotlin DSL, die von Navigation Compose verwendet wird, und verwendet die Kotlin-Serialisierung. Damit können Sie Ziele in Ihrem Navigationsdiagramm über typsichere Objekte und Datenklassen definieren:
    // 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( id ->
                navController.navigate(Profile(id))
            })
        }
        composable<Profile> { backStackEntry ->
            val profile: Profile = backStackEntry.toRoute()
            ProfileScreen(profile)
        }
    }

Weitere Informationen finden Sie im Blogpost Navigation Compose meet Type Safety.

Navigation Compose Predictive Back

  • Navigation Compose unterstützt jetzt die Vorhersage der In-App-Rückkehr über die neuen SeekableTransitionState APIs von compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Überleitung aufrufen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen.

Navigationsfragment – Composeable

  • Es wurde ein neues navigation-fragment-compose-Artefakt hinzugefügt, das eine ComposableNavHostFragment-Alternative zu NavHostFragment enthält. Damit können Sie Ihren Navigations-XML-Dateien zusammensetzbare Ziele hinzufügen. Jede composable-Zieladresse muss als @Composable-Methode auf oberster Ebene ohne Argument angegeben werden, deren vollständig qualifizierter Name als android:name-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele wechseln, wird ein enthaltendes Fragment erstellt, um die zusammensetzbaren Inhalte anzuzeigen.
  // 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" />

Weitere Änderungen

  • Navigation Compose hängt jetzt von Compose 1.7.0 ab.
  • Für die Navigation gibt es jetzt eine neue CollectionNavType<T>-Klasse, eine Unterklasse von NavType<T> für sammlungsbasierte Argumente wie Listen, Arrays und Maps. Alle Standard-NavType-Arrays (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType und StringArrayType) werden jetzt von dieser neuen Klasse abgeleitet.
  • NavType bietet jetzt integrierte Unterstützung für Listen von Ganzzahlen, Strings, Booleschen Werten, Gleitkommazahlen und Ganzzahlen vom Typ „Long“.

Version 2.8.0-rc01

21. August 2024

androidx.navigation:navigation-*:2.8.0-rc01 wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Navigationsabsturzes, der beim Übergeben von Enumerationsklassen der obersten Ebene als typsichere Argumente auftrat. (I0ba76, b/358137294)
  • Navigation 2.8 funktioniert jetzt richtig mit SDK 34 und wird erst mit der 2.9-Version zusammen mit den restlichen AndroidX-Bibliotheken auf SDK 35 umgestellt. (b/358798728)

Version 2.8.0-beta07

7. August 2024

androidx.navigation:navigation-*:2.8.0-beta07 wurde veröffentlicht. Version 2.8.0-beta07 enthält diese Commits.

Bekannte Probleme

  • Aufgrund von b/358137294 werden standardmäßig nur in einer anderen Klasse verschachtelte Enums unterstützt. Enums der obersten Ebene werden in der nächsten Version unterstützt.

Fehlerkorrekturen

  • Bei der Navigation zu doppelten oder gemeinsamen Zielen wird das Ziel ausgewählt, das dem aktuellen Standort im Graphen am nächsten ist. (Ic89a4, b/352006850)
  • Für die Navigation in sicheren Argumenten wurde jetzt ein neues NavType.EnumType hinzugefügt. Das bedeutet, dass für Enum-Typen keine benutzerdefinierten NavTypes mehr erforderlich sind. Beachten Sie, dass SerialName der Enum der voll qualifizierte Standardname sein muss. (I66d22, b/346475493)
  • Für die Navigation in sicheren Argumenten wurde die Unterstützung für typisierte Argumente mit Nullwert wie Int?, Long?, Float?, Boolean? und Enum<*>? hinzugefügt. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • Für die startDestination von NavGraph werden jetzt die Standardargumentwerte verwendet, wenn die an NavGraph übergebene startDestination-Route genau mit startDestination.route übereinstimmt. (I13762, b/354046047)

Version 2.8.0-beta06

24. Juli 2024

androidx.navigation:navigation-*:2.8.0-beta06 wird veröffentlicht. Version 2.8.0-beta06 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die WrongStartDestinationType-Lint-Prüfungen nicht auf Companion-Objekte für den übergebenen Klassentyp geprüft wurden, wodurch der Fehler von Lint nicht erkannt wurde. (I92b09)

Version 2.8.0-beta05

10. Juli 2024

androidx.navigation:navigation-*:2.8.0-beta05 wurde veröffentlicht. Version 2.8.0-beta05 enthält diese Commits.

Fehlerkorrekturen

  • Behebung des Absturzes der singleTop-Navigation, wenn verschachtelte NavGraphs dieselbe startDestination-Route teilen. (I17b94, b/294408596)

Version 2.8.0-beta04

26. Juni 2024

androidx.navigation:navigation-*:2.8.0-beta04 wurde veröffentlicht. Version 2.8.0-beta04 enthält diese Commits.

Fehlerkorrekturen

  • Die Navigation unterstützt jetzt die Navigation mit leeren Strings in Pfadargumenten. (Ic5dbd, b/339481310)
  • Die Fehlermeldung für benutzerdefinierte Serializer, die direkt über @Serializable(with =...) in Klassenfeldern deklariert werden, wurde verbessert, um klarzustellen, dass diese Funktion derzeit nicht unterstützt wird. (I052b0, b/341319151)
  • Die SavedStateHandleFactory-Test-API kann jetzt auch in nicht-Android-Tests verwendet werden. Dazu muss Robolectric das Argument-Parsing mit Bundles unterstützen. (I76cdc, b/340966212)
  • Der Absturz beim Wiederherstellen des Status beim Fortsetzen der App nach dem Prozesstod bei Verwendung der typsicheren Navigation in Compose wurde behoben. (Ia8f38, b/341801005)
  • Ein Problem in der Navigationsleiste wurde behoben, bei dem nach dem Abbrechen der Geste „Zurückvorhersagen“ die NavBackStackEntry, zu der der Nutzer zurückkehrt, nie wieder in den Lebenszyklusstatus RESUMED zurückkehrt. Auf diese Weise wird auch sichergestellt, dass das Rückkehrziel korrekt wieder animiert wird und nicht nach dem Flimmern einrastet. (I97a0c, b/346608857)
  • Wenn Sie die Funktion „Vorhersage zurück“ mit Navigation Compose verwenden, hat das eingeblendete Ziel jetzt die richtige Z-Reihenfolge und wird richtig über dem eingehenden Ziel animiert. (I2077b, b/345993681)

Version 2.8.0-beta03

12. Juni 2024

androidx.navigation:navigation-*:2.8.0-beta03 wird veröffentlicht. Version 2.8.0-beta03 enthält diese Commits.

API-Änderungen

  • CollectionNavType hat eine neue abstrakte emptyCollection()-Methode. Überschreiben Sie dies, um eine leere Sammlung zu verarbeiten, die als Argument übergeben wird. (Ie4d84, b/341723133)

Fehlerkorrekturen

  • Die Dokumentation zu NavType.serializeAsValue und serializeAsValues wurde ergänzt, um darauf hinzuweisen, dass die endgültigen Ausgaben URI-codiert sein sollten. (Ida6bd, b/344943214)
  • Ein Absturz beim Aufrufen von toRoute<T> mit einem null-CollectionNavType-Argument wurde behoben. Wenn Sie mit einem Nullwert für CollectionNavType navigieren, ist das Ausgabeargument der in Ihrer serialisierbaren Klasse deklarierte Standardwert oder der Rückgabewert von emptyCollection(), falls kein Standardwert vorhanden ist. (I84158, Id630f, b/342672856)

Version 2.8.0-beta02

29. Mai 2024

androidx.navigation:navigation-*:2.8.0-beta02 wird veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Der ClassCastException-Absturz bei Verwendung von NavBackStackEntry.toRoute mit einer benutzerdefinierten NavType, in der Nullwerte zulässig waren, wurde behoben. (I1c29b, b/342239473)
  • Probleme beim Wiederherstellen des Navigations-Backstack-Status wurden behoben, die beim Versuch aufgetreten sind, einen Backstack-Eintrag wiederherzustellen, der vom aktuellen Ziel aus nicht über die ID erreichbar ist. Da Routen von IDs unterstützt werden, waren auch Ziele betroffen, die mit Routen erstellt wurden. Außerdem wird ein Absturz behoben, der durch den Aufruf von clearBackStack() verursacht wurde und auf demselben zugrunde liegenden Problem beruhte. (I423c3, b/339908057)

Version 2.8.0-beta01

14. Mai 2024

androidx.navigation:navigation-*:2.8.0-beta01 wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.

API-Änderungen

  • SavedStateHandle.toRoute() verwendet jetzt einen typeMap-Parameter für benutzerdefinierte Argumenttypen. (Ie39fb, b/339026523)
  • navigation-testing wurde eine Test-API hinzugefügt, um ein SavedStateHandle aus einem serialisierbaren Kotlin-Objekt zu erstellen. (Id4867, b/339080702)

Fehlerkorrekturen

  • Die Dokumentation zu fehlenden Parametern für Navigations-Kotlin-DSL-Funktionen wurde hinzugefügt. (I26a36)

Version 2.8.0-alpha08

1. Mai 2024

androidx.navigation:navigation-*:2.8.0-alpha08 wurde veröffentlicht. Version 2.8.0-alpha08 enthält diese Commits.

Safe Args in Navigation Compose

Bei dieser Funktion wird die Kotlin-Serialisierung verwendet, damit Sie Ziele in Ihrem Navigationsgraphen über typsichere Objekte und Datenklassen definieren können:

  // 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( id ->
              navController.navigate(Profile(id))
          })
      }
      composable<Profile> { backStackEntry ->
          val profile: Profile = backStackEntry.toRoute()
          ProfileScreen(profile)
      }
  }

Weitere Informationen finden Sie im Blogpost Navigation Compose meet Type Safety.

Neue Funktionen

  • Das navigation-fragment-compose-Artefakt bietet jetzt eine LocalFragment-Komposition, die lokal für kombinierbare Methoden innerhalb einer ComposableFragment gilt. (If35e5)
  • NavType bietet jetzt integrierte Unterstützung für Listen von Ganzzahlen, Strings, Booleschen Werten, Gleitkommazahlen und Ganzzahlen vom Typ „Long“. (I4b6dd, Ia914c, b/188693139)

Version 2.8.0-alpha07

17. April 2024

androidx.navigation:navigation-*:2.8.0-alpha07 wurde veröffentlicht. Version 2.8.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Es wird ein neues navigation-fragment-compose-Artefakt hinzugefügt, das eine ComposableNavHostFragment-Alternative zu NavHostFragment enthält. Damit können Sie Ihren Navigations-XML-Dateien composable-Ziele hinzufügen. Jedes composable Ziel muss als Top-Level-Methode ohne Argument@Composable ausgedrückt werden, deren vollständig qualifizierter Name als Attribut android:name für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele wechseln, wird ein enthaltendes Fragment erstellt, um die zusammensetzbaren Inhalte anzuzeigen. (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" />
    

API-Änderungen

  • Die Unterstützung von Safe Args in Navigation Compose mit einem Ansatz, der auf der Kotlin-Serialisierung basiert, wurde fortgesetzt. Diese APIs sind noch nicht fertiggestellt und sind mit der Anmerkung ExperimentalSafeArgsApi gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. {Iefd95, I409c8, I409c8, I5b5b5ac, I7e7e753, I960f8, I3eabd, I8ed5a, Ied2c9, und 17}17}17.17.17.17.1.14}.

Version 2.8.0-alpha06

3. April 2024

androidx.navigation:navigation-*:2.8.0-alpha06 wird veröffentlicht. Version 2.8.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für Safe Args in Navigation Compose mit einem Ansatz, der auf der Kotlin-Serialisierung basiert, wurde eingeführt. Diese APIs sind noch nicht fertiggestellt und sind mit der Anmerkung ExperimentalSafeArgsApi gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertig ist.

Fehlerkorrekturen

  • NavHost verwendet jetzt Alignment.TopStart als Standardargument für „contentAlignment“. Dadurch entspricht sie dem Standard für AnimatedContent und einige Fälle mit unerwarteter Skalierung beim Übergang von der Mitte werden behoben. (I09e72, b/330111602)
  • Wenn Sie die Touch-Geste „Zurück“ verwenden, während Sie die Funktion „Navigationseingabe“ verwenden, wird der benutzerdefinierte Übergang durch NavHost jetzt korrekt und nicht sofort abgeschlossen. (I99017, b/327292110)

Version 2.8.0-alpha05

20. März 2024

androidx.navigation:navigation-*:2.8.0-alpha05 wurde veröffentlicht. Version 2.8.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt Argumente direkt in der startDestination-Route an startDestination von NavGraph übergeben, ohne defaultValue verwenden zu müssen. Das gilt auch für verschachtelte NavGraph startDestinations. (I0e0b5, b/109505019, b/188693139)

API-Änderungen

  • Neue abstrakte CollectionNavType<T>-Klasse hinzugefügt, eine Unterklasse von NavType<T> für sammlungsbasierte Argumente wie Listen, Arrays und Maps. (Ic6d63, b/188693139)
  • Alle Standard-NavType-Arrays (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType und StringArrayType) haben jetzt den Typ CollectionNavType (Idcf79, b/188693139)
  • NavType bietet jetzt eine neue offene valueEquals API, die bestimmt, ob zwei Werte desselben Typs einander entsprechen. (I6cb97, b/327229511)

Fehlerkorrekturen

  • Für Abfrageparameter in Deeplinks sind jetzt Werte in Form von geschweiften Klammern um den Argumentnamen (z.B. {argName}) als gültige Werte für stringbasierte NavTypes zulässig. Dadurch wird ein Problem behoben, bei dem ein solcher Wert für alle Typen als ungültig (oder als fehlender Wert) betrachtet wurde. (I18302, b/327274038)
  • NavController-Funktionen, die Routen wie navigate oder popBackStack unterstützen, können jetzt Routen mit Argumenten des Arrays NavTypes richtig abgleichen. (Iea805, b/327229511)

Version 2.8.0-alpha04

6. März 2024

androidx.navigation:navigation-*:2.8.0-alpha04 wurde veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Sie können die SizeTranform für Ihre Übergänge jetzt in Navigation Compose angeben, indem Sie sie als Teil der Initialisierung für die Funktionen composable und/oder navigation definieren. (I91062, b/296912651)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das bei der Navigation in der Compose-Ansicht mit der Schaltfläche „Zurück“ des Systems ohne Geste der Übergang nicht richtig angezeigt wurde.NavHost (Iceeae, b/325998468)

Version 2.8.0-alpha03

21. Februar 2024

androidx.navigation:navigation-*:2.8.0-alpha03 wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.

API-Änderungen

  • NavBackStackEntry.savedStateHandle ist jetzt als @MainThread gekennzeichnet, da sie Code verwendet, der sich trotzdem im Hauptthread befinden muss. (Ibb988, b/299523245)

Fehlerkorrekturen

  • Ein Problem in der Navigation wurde behoben, durch das NavGraph-ViewModels zu früh DESTROYED wurden, weil die ViewModel des zugehörigen Eintrags nicht Teil des gespeicherten Zustands war. (Ib6bb7, b/317581849)

Abhängigkeitsupdate

Version 2.8.0-alpha02

7. Februar 2024

androidx.navigation:navigation-*:2.8.0-alpha02 wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Navigation Compose unterstützt jetzt die Vorhersage der In-App-Rückkehr über die neuen SeekableTransitionState APIs von compose-animation. So können Sie mit der Zurück-Geste das vorherige Ziel mit Ihrer benutzerdefinierten Überleitung aufrufen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen. (I8b8e9)

Version 2.8.0-alpha01

24. Januar 2024

androidx.navigation:navigation-*:2.8.0-alpha01 wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.

Fehlerkorrekturen

  • Behoben wurde ein BackStackState-Leak, bei dem mehrere saveState-Aufrufe für ein Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste wiederhergestellt werden konnte. (I598b0, b/309559751)
  • Ein Problem wurde behoben, durch das Argumente, die keine Strings sind, nicht richtig angezeigt wurden, wenn die NavigationUI-Hilfsfunktionen zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)

Abhängigkeitsupdate

  • Die Navigationsfunktion „Compose“ hängt jetzt von Compose 1.7.0-alpha01 ab. Dadurch wurde ein Problem behoben, das zu einer unerwarteten Skalierungsanimation führen konnte. (b/297258205)

Externer Beitrag

  • Danke, SimonMarquis, dass das Anzeigeproblem für Nicht-String-Argumente behoben wurde, wenn die Helper NavigationUI zum Ausfüllen des Titels von App-Leisten verwendet wurden.

Version 2.7.7

Version 2.7.7

7. Februar 2024

androidx.navigation:navigation-*:2.7.7 wird veröffentlicht. Version 2.7.7 enthält diese Commits.

Fehlerkorrekturen

  • Backport aus Navigation 2.8.0-alpha01: Behobener BackStackState-Leak, bei dem mehrere saveState()-Aufrufe für eine einzelne NavBackStackEntry dazu führten, dass mehrere Zustände gespeichert wurden, aber nur der erste gespeicherte Zustand wiederhergestellt werden konnte. (I598b0, b/309559751)
  • Backport aus Navigation 2.8.0-alpha01: Ein Problem wurde behoben, bei dem Argumente, die keine Strings sind, nicht richtig angezeigt wurden, wenn der Titel von App-Leisten mithilfe der NavigationUI-Hilfsfunktionen ausgefüllt wurde. (#636, b/316676794)

Externer Beitrag

  • Vielen Dank an SimonMarquis für die Behebung des Anzeigeproblems bei nicht stringbasierten Argumenten, wenn der Titel von App-Leisten mithilfe der NavigationUI-Hilfsfunktionen ausgefüllt wird.

Version 2.7.6

Version 2.7.6

13. Dezember 2023

androidx.navigation:navigation-*:2.7.6 wurde veröffentlicht. Version 2.7.6 enthält diese Commits.

Fehlerkorrekturen

  • Bei der Funktion NavGraph equals() werden jetzt die Knoten des anderen Graphen korrekt berücksichtigt, nicht nur der aufrufende Graph. Dadurch wird sichergestellt, dass Diagramme mit Knoten mit unterschiedlichen IDs nicht mehr als gleich angesehen werden (I401cb, b/311414915).

Version 2.7.5

Version 2.7.5

1. November 2023

androidx.navigation:navigation-*:2.7.5 wurde veröffentlicht. Version 2.7.5 enthält diese Commits.

Leistungsverbesserungen

  • Die Leistung beim Vergleich von zwei Grafiken wurde erheblich verbessert (sowohl in Bezug auf die Zeit als auch in Bezug auf die Anzahl der Zuweisungen). Das bedeutet, dass Aufrufe wie setGraph, bei denen die neue Grafik intern mit der vorhandenen verglichen wird, viel schneller sind und zu weniger übersprungenen Frames führen. Vielen Dank an Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62)
  • NavHost rendert jetzt das Startziel im ersten Compose-Pass, anstatt auf den zweiten Pass zu warten, um den aktualisierten Status zu lesen. (I439a7, b/304852206)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem der Rückstapel entfernt wurde, wenn setGraph mehrmals mit dem exakt gleichen Diagramm aufgerufen wurde, nur wenn es in Ihrem Diagramm ein Ziel gab, das eine Aktion enthielt, die zwei Ziele verknüpfte. (Beispiel 7)
  • Dialoge, die in schneller Folge aufgerufen und geschlossen wurden, werden nicht mehr in die Liste der NavController.visibleEntries aufgenommen. (I67586, b/287969970)
  • Wenn ein Eintrag gefolgt von einer Konfigurationsänderung per Pop-up eingefügt wird, wird der ViewModel des Eintrags jetzt korrekt gelöscht, wenn saveState "false" ist. (Idf242, b/298164648)
  • Es wurde ein Problem behoben, bei dem NavController denselben Deeplink mehr als einmal verarbeiten konnte, wenn der Back-Stack vor einer Konfigurationsänderung vollständig leer war, oder setGraph nur dann aufruft, wenn für den eingehenden Intent das Flag FLAG_ACTIVITY_NEW_TASK gesetzt war. (I73c7f)

Abhängigkeitsupdates

  • Die Navigation mit Fragmenten hängt jetzt von Fragment 1.6.2 ab. Dadurch wurde ein Problem behoben, bei dem die ViewModel-Instanzen verschachtelter Fragmente beim Aufrufen von clearBackStack nicht gelöscht wurden.

Version 2.7.4

Version 2.7.4

4. Oktober 2023

androidx.navigation:navigation-*:2.7.4 wird veröffentlicht. Version 2.7.4 enthält diese Commits.

Neue Funktionen

  • Für popUpTo wurde die Unterstützung für Routen mit Argumenten hinzugefügt, um zu einem bestimmten Eintrag zurückzukehren, der genau diese Argumente verwendet. Dies entspricht der Unterstützung in popBackStack. (I731f4, b/299255572)

Fehlerkorrekturen

  • Problem behoben, bei dem die Unterbrechung einer Navigation durch eine andere Navigation mit popUpTo zum Absturz von FragmentNavigator führte. (I3c848, b/301887045)
  • Ein Problem wurde behoben, durch das die currentDestination nach dem Drücken der Rücktaste nicht richtig aktualisiert wurde, um dem angezeigten Fragment zu entsprechen. (Id0d6c, b/289877514)
  • Der DialogFragment-Lebenszyklus wechselt jetzt ordnungsgemäß in den Status RESUMED, wenn das Dialogfeld darüber geschlossen wird. (I88f0d, b/301811387)

Version 2.7.3

Version 2.7.3

20. September 2023

androidx.navigation:navigation-*:2.7.3 wird veröffentlicht. Version 2.7.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem bei der Navigation mit Fragmenten wurde behoben, durch das die Liste visibleEntries falsche Einträge enthielt. (I5caa9, b/288520638)
  • Ein Problem wurde behoben, bei dem für das Ziel „Floating Window“ (z. B. Dialogs, Bottomsheets usw.) nie ein RESUMED-Lebenszyklusereignis zurückgegeben wurde. (I3b866, b/287505132)

Version 2.7.2

Version 2.7.2

6. September 2023

androidx.navigation:navigation-*:2.7.2 wird veröffentlicht. Version 2.7.2 enthält diese Commits.

Fehlerkorrekturen

  • Die Navigation hängt jetzt vom Lebenszyklus 2.6.2 ab. Dabei wird eine Interaktion zwischen rememberSaveable und dem NavHost von Navigation Compose behoben, die dazu führt, dass der rememberSaveable-Status von Zielen und alle SavedStateHandle-Instanzen, die zu ViewModel gehören, nach dem Beenden eines Prozesses und der Neuerstellung nicht ordnungsgemäß wiederhergestellt werden. (b/298059596, b/289436035)
  • Ein Problem wurde behoben, bei dem bei der gleichzeitigen Anzeige mehrerer Dialogfelder in Navigation Compose die teilweise verdeckten Dialogfelder (z.B. nicht das oberste Dialogfeld) den Lebenszyklusstatus CREATED statt STARTED hatten. (aosp/2728520, b/289257213)
  • Ein Problem wurde behoben, bei dem beim gleichzeitigen Anzeigen mehrerer Dialogfelder in Navigation Compose das oberste Dialogfeld geschlossen wurde, wodurch das neue oberste Dialogfeld im Lebenszyklusstatus STARTED hängen blieb, anstatt korrekt zu RESUMED zu wechseln. (aosp/2629401, b/286371387)
  • Die Funktion „Navigation Safe Args“ instanziiert ihre Aufgabe nicht mehr sofort, wenn sie nicht tatsächlich ausgeführt wird. (I0e385, b/260322841)

Aktualisierung der Abhängigkeit

  • Die Navigationsfunktion „Compose“ hängt jetzt von Compose-Version 1.5.1 ab.

Version 2.7.1

Version 2.7.1

23. August 2023

androidx.navigation:navigation-*:2.7.1 wurde veröffentlicht. Version 2.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem bei der Navigation mit Compose wurde behoben, bei dem bei Verwendung einer Scaffold ein Fehler beim Zugriff auf eine Lifecycle.State.DESTROYED ViewModel ausgegeben werden konnte. (I1dc11, b/268422136)

Version 2.7.0

Version 2.7.0

9. August 2023

androidx.navigation:navigation-*:2.7.0 wurde veröffentlicht. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

Animationen von Accompanist

Da AnimatedContent jetzt stabil ist, konnten wir den Code aus der Navigationsanimation für Begleiter wieder in Navigation Compose verschieben.

Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost verfügbar waren, in NavHost direkt unterstützt werden.

An der Navigationsanimation von Accompanist werden keine weiteren Änderungen vorgenommen. Wir werden sie bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose veröffentlichen. Diese Anleitung ist jedoch genau umgekehrt wie die im Migrationsleitfaden beschriebene und es sind keine weiteren API-Änderungen erforderlich, wenn Sie bereits die neueste Alphaversion von Accompanist (0.31.2-alpha) verwenden. (b/197140101)

Fehlerkorrekturen

  • NavHost in Navigation Compose fängt jetzt System-Back-Aufrufe korrekt ab, auch nachdem die Aktivität ANGEHALTEN und WIEDERGEFÜHRT wurde. (Icb6de, b/279118447)

Abhängigkeitsupdates

  • Die Navigation hängt jetzt von „1.5.0 zusammenstellen“ von 1.1.0 ab.

Version 2.7.0-rc01

26. Juli 2023

androidx.navigation:navigation-*:2.7.0-rc01 wurde veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die im Rahmen der NavHost erstellten EnterTransition- und ExitTransition-Lambdas möglicherweise im Arbeitsspeicher verbleiben, auch nachdem die NavHost aus der Komposition entfernt wurde. (I893d0)

Bekannte Probleme

  • Bei Navigation 2.6.x kann es beim Navigieren mit „popUpTo“ zu einem IllegalArgumentException kommen. Möglicherweise lässt sich diese Ausnahme vermeiden, indem Sie Ihren Graphen umstrukturieren. Hier finden Sie entsprechende Tipps. (b/287133013)

Version 2.7.0-beta02

28. Juni 2023

androidx.navigation:navigation-*:2.7.0-beta02 wurde veröffentlicht. Version 2.7.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Die Navigations-Compose-Funktion hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, bei denen die Option „Mit popUpTo navigieren“ verwendet wird.(/Ib1c3a, b/285153947)

Version 2.7.0-beta01

7. Juni 2023

androidx.navigation:navigation-*:2.7.0-beta01 wird veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • NavHost in Navigation Compose fängt jetzt Systemrückrufe auch dann korrekt ab, wenn die Activity STOPPED und RESUMED wurde. (Icb6de, b/279118447)

Version 2.7.0-alpha01

24. Mai 2023

androidx.navigation:navigation-*:2.7.0-alpha01 wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.

Animationen von Accompanist

Da AnimatedContent jetzt stabil ist, konnten wir den Code aus der Navigationsanimation für Begleiter wieder in Navigation Compose verschieben.

Das bedeutet, dass alle Funktionen zum Festlegen benutzerdefinierter Übergänge, die in AnimatedNavHost verfügbar waren, in NavHost direkt unterstützt werden.

An der Navigationsanimation von Accompanist werden keine weiteren Änderungen vorgenommen. Wir werden sie bald offiziell einstellen und eine Anleitung zur Migration zurück zu Navigation Compose veröffentlichen. Diese Anleitung ist jedoch genau umgekehrt wie die im Migrationsleitfaden beschriebene und es sind keine weiteren API-Änderungen erforderlich, wenn Sie bereits die neueste Alphaversion von Accompanist (0.31.2-alpha) verwenden. (b/197140101)

Fehlerkorrekturen

  • Unter Navigation 2.6.0-rc02: Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn Sie mit popUpTo navigiert und ein Fragment aus dem Backstack entfernt haben, ohne die Ansicht neu zu erstellen, funktionierte das System nicht mehr. (Ieb8d4, b/281726455)

Abhängigkeitsupdates

  • Die Navigation hängt jetzt von der Funktion „Schreiben“ (1.5.0-beta01) ab.

Version 2.6.0

Version 2.6.0

7. Juni 2023

androidx.navigation:navigation-*:2.6.0 wird veröffentlicht. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen an der Navigation seit Version 2.5.0

  • Die arguments von NavBackStackEntry und die arguments, die an eine OnDestinationChangedListener übergeben werden, sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass alle Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf die arguments- oder andere OnDestinationChangedListener-Instanzen berücksichtigt werden.
  • NavDeepLink unterstützt jetzt Standardwerte für Arrays, wodurch wiederholte Suchparameter unterstützt werden, die dem Arraytyp des Arguments zugeordnet sind. NavType enthält jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren.
  • Benutzerdefinierte Unterklassen von NavType können jetzt serializeAsValue überschreiben, um einen Wert in einen String zu serialisieren. So können sowohl die Serialisierung als auch die Deserialisierung (über parseValue) vollständig in der NavType-Klasse gekapselt werden. StringType überschreibt jetzt diese Methode, um Uri.encode für die angegebene String aufzurufen.

Wichtige Änderungen an Navigation Compose seit Version 2.5.0

  • In der Vorschau eines NavHost-kompositables wird jetzt standardmäßig die startDestination des Navigationsgraphen angezeigt.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route) und NavController.clearBackStack(route) unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen.
  • Beim Versuch, ein leeres NavDeepLink mit der Kotlin DSL von navDeepLink zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein.

Wichtige Änderungen an der Navigation mit Fragmenten seit Version 2.5.0

  • NavHostFragment fängt die Zurück-Schaltfläche des Systems selbst nicht mehr ab. So kann die zugrunde liegende FragmentManager den Systemrückgang verarbeiten. So können mit Fragment 1.7.0-alpha01 und höher eine In-App-Animation für die Vorhersage der Rückwärtsnavigation auf Android U-Geräten bereitgestellt werden.
  • Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell eine FragmentTransaction auszuführen, die dem Backstack der FragmentManager ein Fragment hinzufügt, wird jetzt eine IllegalArgumentException geworfen. Sie sollten Fragmente immer über die navigate() API hinzufügen.
  • Wenn Sie den exakten String ${applicationId} als Platzhalter in den Attributen app:data und app:dataPattern im Aktivitätselement einer XML-Navigationsdatei verwenden, wird der Platzhalter beim Auffließen automatisch mit packageName des Kontexts ausgefüllt.
  • Die FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und minimiert wird. Das bedeutet, dass die NavBackStackEntry Lifecycle jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor sie die endgültige Lifecycle.State verschiebt.
  • Die DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und minimiert wird. Das bedeutet, dass die NavBackStackEntry Lifecycle jetzt darauf wartet, dass die DialogFragment Lifecycle zu DESTROYED wechselt, bevor sie selbst zu DESTROYED wechselt.
  • Mit NavHostFragment können Sie die NavController jetzt abrufen, sobald die NavHostFragment an die FragmentManager angehängt ist, und nicht erst nach onCreate().
  • Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab.
  • Die Funktion „Sichere Args“ für Navigation hängt jetzt von Version 7.3.0 des Android-Gradle-Plug-ins ab. Das bedeutet, dass es jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist.

Wichtige Änderungen an NavigationUI seit Version 2.5.0

  • Wenn die ID eines Navigationsgraphen an AppBarConfiguration übergeben wird (z. B. über eine Menu), betrachtet NavigationUI jetzt nur das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene, anstatt fälschlicherweise jedes Ziel innerhalb des Graphen als Ziel der obersten Ebene zu kennzeichnen. Das Übergeben der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neue isTopLevelDestination-Funktion auf AppBarConfiguration verfügbar.
  • Bei den setupWithNavController-Integrationen in NavigationUI für die obere App-Leiste werden R.string-Werte für ReferenceType-Argumente, die in Ihrer android:label gefunden werden, jetzt in ihre Stringwerte geparst, anstatt die automatisch generierte Ressourcenganzzahl auszugeben.
  • NavigationUI stellt jetzt Protokolle bereit, wenn die Navigation über eine ausgewählte MenuItem fehlschlägt.

Version 2.6.0-rc02

24. Mai 2023

androidx.navigation:navigation-*:2.6.0-rc02 wurde veröffentlicht. Version 2.6.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit der Navigation in Fragmenten wurde behoben. Wenn Sie mit popUpTo navigiert und ein Fragment aus dem Backstack entfernt haben, ohne die Ansicht neu zu erstellen, funktionierte das System nicht mehr. (Ieb8d4, b/281726455)

Version 2.6.0-rc01

10. Mai 2023

androidx.navigation:navigation-*:2.6.0-rc01 wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem in der Navigation mit Fragmenten behoben, bei dem das Entfernen eines Fragments über die Navigation mit popUpTo im onResume()-Lebenszyklus-Callback zu einem IllegalStateException führte. (I21884, b/279644470)

Version 2.6.0-beta01

19. April 2023

androidx.navigation:navigation-*:2.6.0-beta01 wurde veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.

Neue Funktionen

  • NavBackStackEntry bietet jetzt eine benutzerdefinierte toString-Implementierung. (Iff00b)

Fehlerkorrekturen

  • Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell eine FragmentTransaction auszuführen, die dem Backstack der FragmentManager ein Fragment hinzufügt, wird jetzt eine IllegalArgumentException geworfen. Sie sollten Fragmente immer über die navigate() API hinzufügen. (I6d38e)
  • Wenn es einen navigate gibt, der einen Eintrag hinzufügt, und einen popBackStack, der ihn im selben Frame entfernt, gelangt der resultierende oberste Eintrag im Backstack jetzt immer wieder zum RESUMED Lifecycle.State. (Id8067, b/276495952)

Version 2.6.0-alpha09

5. April 2023

androidx.navigation:navigation-*:2.6.0-alpha09 wird veröffentlicht. Version 2.6.0-alpha09 enthält diese Commits.

Fehlerkorrekturen

  • Die Prüfung auf ungültige Routen wurde korrigiert. Wenn eine NavDestination eine nicht nullwertige NavArgument enthält, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die mit der nicht nullwertigen NavArgument übereinstimmen. (Ic62bf, b/274697949)
  • Deeplink-Navigationen auf Grundlage von Action/MimeType schlagen jetzt fehl, wenn für den Navigationsvorgang eine nicht nullwertige NavArgument fehlt, die von der NavDestination, mit der die Action/MimeType übereinstimmt, benötigt wird. (Ibfa17, b/271777424)
  • Wenn NavController ein Diagramm mit derselben Route und denselben Zielen wie das vorherige Diagramm festlegt, werden die aktuellen Diagrammknoten und die Ziele des Backstacks jetzt ordnungsgemäß durch neue Instanzen ersetzt. Dadurch wird ein Absturz behoben, der bei Verwendung von onLaunchSingleTop ohne Speichern des Status in Navigation Compose auftritt. Außerdem wird ein Fehler behoben, bei dem beim Wechseln zu Zielen, die mit dem Stammgraphen verknüpft sind, ein falscher Rückstapel erstellt wird. (I5bc58, b/275258161, b/275407804)

Version 2.6.0-alpha08

22. März 2023

androidx.navigation:navigation-*:2.6.0-alpha08 wird veröffentlicht. Version 2.6.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Mit NavHostFragment können Sie die NavController jetzt abrufen, sobald die NavHostFragment an die FragmentManager angehängt ist, und nicht erst nach onCreate(). (Ic6382, b/220186282)

Fehlerkorrekturen

  • Ein NullPointerException-Fehler beim Pop-up eines verschachtelten Diagramms mit einem nicht nullwertigen Argument wurde behoben. (6b3581, b/249988437)
  • Wenn Sie nach der Navigation mit popUpTo die Schaltfläche „Zurück“ verwenden, wird der Status der NavController auf den richtigen Eintrag gesetzt. (I3a8ec, b/270447657)
  • FragmentNavigator entfernt jetzt ordnungsgemäß Einträge, wenn der Rückstapel über das System-Back-Symbol oder popBackStack() entfernt wird, unabhängig davon, ob die Transaktion Effekte für das Fragment verwendet. (I81bdf)
  • Das Hinzufügen von Fragmenten zum FragmentNavigator-FragmentManager ohne Navigation führt nicht mehr zu einem Absturz. (b17204, b/274167493)

Abhängigkeitsupdates

Version 2.6.0-alpha07

8. März 2023

androidx.navigation:navigation-*:2.6.0-alpha07 wird veröffentlicht. Version 2.6.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Die getBackStackEntry-, popBackStack- und clearBackStack-API-Varianten, die Routen annehmen, unterstützen jetzt Routenmuster mit nicht beschreibbaren Argumenten und nicht beschreibbaren Abfrageparametern (I22294, b/269302500)
  • Ein Problem wurde behoben, durch das beim Aufrufen von clearBackStack() aus NavController der gespeicherte Status im Fragmentmanager nicht gelöscht wurde, der mit dem gelöschten Rückstapel verknüpft ist. (Ic1cce, b/271190202)
  • Eine Regression in 2.6.0-alpha06 wurde behoben, durch die bei Verwendung des Systems zurück zwischen Tabs das falsche MenuItem in BottomNavigationView hervorgehoben wurde. (I634f6, b/270447657)
  • Behobene Regression in 2.6.0-alpha06, die dazu führte, dass NavBackStackEntrys bei Verwendung von Animations nicht in den Status „FORTGESETZT“ versetzt wurden. (Ib3589, b/269646882)

Version 2.6.0-alpha06

22. Februar 2023

androidx.navigation:navigation-*:2.6.0-alpha06 wird veröffentlicht. Version 2.6.0-alpha06 enthält diese Commits.

Neue Funktionen

  • In der Vorschau eines NavHost-kompositables wird jetzt standardmäßig die startDestination des Navigationsgraphen angezeigt. (I2b89f)

API-Änderungen

  • Alle NavController navigate-Überladungen sind jetzt mit @MainThread annotiert, damit sie im Hauptthread aufgerufen werden. (I2c0b0, b/263427111)

Fehlerkorrekturen

  • Absturz beim Navigieren bei Verwendung der dynamischen Fragmentnavigation wurde behoben. (I3ee29, b/268360479)
  • Ein Fehler wurde behoben, durch den die untere Leiste beim Wechseln zu einem anderen Fragment über die System-Schaltfläche „Zurück“ nicht mit dem korrekt ausgewählten Element aktualisiert wurde (If559f, b/269044426)

Bekannte Probleme

  • Wenn Sie die Navigation mit Fragmenten verwenden, wird bei Verwendung von Animation APIs der Lifecycle von NavBackStackEntry nicht auf RESUMED gesetzt. (b/269646882)
  • Wenn Sie die Navigation mit Fragmenten oder BottomNavigation verwenden und versuchen, einen Back Stack mit mehreren Einträgen wiederherzustellen, wird BottomMenuItem nicht korrekt aktualisiert. (b/270447657)
  • Wenn Sie die Navigation mit Fragmenten verwenden, wird nach dem Wiederherstellen des Status für NavBackStackEntry Lifecycle nicht DESTROYED zurückgegeben, wenn das Fragment DESTROYED ist . (b/270610768)

Version 2.6.0-alpha05

8. Februar 2023

androidx.navigation:navigation-*:2.6.0-alpha05 wurde veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.

Neue Funktionen

  • NavController.popBackStack(route), NavController.getBackStackEntry(route) und NavController.clearBackStack(route) unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen. (Iebd28, Ic678c, I3b37b, b/257514373)
  • Die FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und minimiert wird. Das bedeutet, dass die NavBackStackEntry Lifecycle jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor sie die endgültige Lifecycle.State verschiebt. (I3cb19, b/238686802)
  • Die DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und minimiert wird. Das bedeutet, dass die NavBackStackEntry Lifecycle jetzt darauf wartet, dass die DialogFragment Lifecycle zu DESTROYED wechselt, bevor sie selbst zu DESTROYED wechselt. (I53ee5, b/261213893)

API-Änderungen

  • NavigatorState stellt jetzt die prepareForTransition API bereit, damit Navigators NavBackStackEntries in ZwischenLifecycle.States verschieben können. (I42c21, b/238686802)
  • Sie können jetzt über eine backstack-Property auf den Backstack zugreifen, der mit einer NavGraphNavigator- oder ComposeNavigator-Property verknüpft ist. ComposeNavigator stellt jetzt auch den onTransitionComplete()-Callback bereit, um eine NavBackStackEntry, die einen Navigations- oder popBackStack-Vorgang ausgeführt hat, als abgeschlossen zu markieren. (I02062, I718db, b/257519195)

Fehlerkorrekturen

  • Der Navigationsstatus ist jetzt inaktiv, wenn die push/popWithTransition APIs verwendet werden und der Eintrag bereits verarbeitet wird. (Iadbfa, b/261213893)
  • Wenn Sie launchSingleTop mit einem verschachtelten NavGraph verwenden, werden alle Ziele vom ursprünglichen Ziel bis zu seiner startDestination nur richtig oben im Backstack hinzugefügt. (Id4bea, b/253256629)
  • Bei der Navigation wird die DialogFragment-Instanz jetzt richtig ersetzt, wenn das Ziel mit dem Flag launchSingleTop festgelegt ist. (I45b5a, b/149572817)
  • Navigation SafeArgs führen nicht mehr zu einem Kompilierungsfehler, wenn Argumente verwendet werden, die genau 19 Zeichen lang sind. (Id60bc, b/257110095)

Version 2.6.0-alpha04

9. November 2022

androidx.navigation:navigation-*:2.6.0-alpha04 wird veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Benutzerdefinierte abgeleitete Klassen von NavType können jetzt serializeAsValue überschreiben, um einen Wert in einen String zu serialisieren. Dadurch können sowohl Serialisierung als auch Deserialisierung (über parseValue) vollständig in die Klasse NavType gekapselt werden. StringType überschreibt diese Methode jetzt, um Uri.encode für die angegebene String aufzurufen. (Ie5213, b/247637434)
  • NavigationUI stellt jetzt Protokolle bereit, wenn die Navigation über eine ausgewählte MenuItem fehlschlägt. (I2af5a, b/247730357)

Fehlerkorrekturen

  • Navigations-Deeplinks werden jetzt verzögert geparst und nicht mehr bei der Diagramminitialisierung. Dadurch kann die App-Leistung beim Start verbessert werden. (Iab0ab)
  • Ein Absturz wurde behoben, der durch das Scrollen nach oben nach dem Deeplink zu einem Ziel mit null Standardargumenten verursacht wurde. (I51c24, b/243183636)

Abhängigkeitsupdate

  • Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. (Ib4ddc)
  • Navigation Safe Args ist jetzt von der Android Gradle-Plug-in-Version 7.3.0 abhängig. Das bedeutet, dass es jetzt nur noch mit Versionen ab 7.3.0 kompatibel ist. (I47e49)

Version 2.6.0-alpha03

24. Oktober 2022

androidx.navigation:navigation-*:2.6.0-alpha03 wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Unter Navigation 2.5.3: NavHost führt nicht mehr zu einer NoSuchElementException, wenn kein Ziel für die Crossfade verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416)
  • Unter Navigation 2.5.3: Ein Problem wurde behoben, durch das gespeicherte Zustände des Compose-Modus (z.B. Verwendungen von rememberSaveable) nicht vergessen und entfernt wurden, wenn ein Ziel aus dem Backstack entfernt wurde. (I64949)

Abhängigkeitsupdates

Version 2.6.0-alpha02

5. Oktober 2022

androidx.navigation:navigation-*:2.6.0-alpha02 wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.

Verhaltensänderungen

  • Wenn die ID eines Navigationsgraphen an AppBarConfiguration übergeben wird (z. B. über eine Menu), betrachtet NavigationUI jetzt nur das Startziel dieses Navigationsgraphen als Ziel der obersten Ebene, anstatt fälschlicherweise jedes Ziel innerhalb des Graphen als Ziel der obersten Ebene zu kennzeichnen. Das Übergeben der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neue isTopLevelDestination-Funktion auf AppBarConfiguration verfügbar. (Ie936e, b/238496771)

Fehlerkorrekturen

  • Die navigation:navigation-fragment-Komponente hängt jetzt von der Fragmentversion 1.5.2 ab. (I00ba4)
  • Der ausgewählte Menüpunkt wird nicht mehr aktualisiert, wenn Sie zu einem FloatingWindow-Ziel wie einem Dialogfeld wechseln. (I4cde8, b/240308330)

Version 2.6.0-alpha01

7. September 2022

androidx.navigation:navigation-*:2.6.0-alpha01 wurde veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Bei den setupWithNavController-Integrationen in NavigationUI für die obere App-Leiste werden R.string-Werte für ReferenceType-Argumente, die in Ihrer android:label gefunden werden, jetzt in ihre Stringwerte geparst, anstatt die automatisch generierte Ressourcenganzzahl auszugeben. (I5f803, b/167959935)
  • NavDeepLink unterstützt jetzt Standardwerte für Arrays. Dadurch können wiederholte Abfrageparameter unterstützt werden, die dem Arraytyp des Arguments zugeordnet werden. NavType enthält jetzt auch eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren. (Id68c3, b/209977108)
  • Wenn Sie den genauen String ${applicationId} als Platzhalter in den Attributen app:data und app:dataPattern im Aktivitätselement einer Navigations-XML-Datei verwenden, wird der Platzhalter beim Aufblasen automatisch mit dem packageName des Kontexts ausgefüllt. (Iaabde, b/234223561)
  • Beim Versuch, ein leeres NavDeepLink mit der Kotlin DSL von navDeepLink zu erstellen, wird jetzt eine Lint-Warnung angezeigt, die darauf hinweist, dass ein Deeplink einen URI, eine Aktion und/oder einen MIME-Typ benötigt, um gültig zu sein. (I08d2f, b/154038883)

API-Änderungen

  • Neue Erweiterungsfunktion NavDestination hinzugefügt, um dynamische Labels mit Argumenten in Form von android:label="{arg}" in einen String zu parsen. Unterstützt ReferenceType-Argumente, indem R.string-Werte in ihre String-Werte geparst werden. (I07d89, b/236269380)

Änderungen im Verhalten

  • Die arguments von NavBackStackEntry und die arguments, die an eine OnDestinationChangedListener übergeben werden, sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Wechseln zum Ziel erstellt wurden. Das bedeutet, dass alle Änderungen an diesen Bundles nicht bei nachfolgenden Zugriffen auf die arguments- oder andere OnDestinationChangedListener-Instanzen berücksichtigt werden. (I676f5)

Fehlerkorrekturen

  • Über Navigation 2.5.2: Die dynamische Navigation versucht jetzt ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor Sie zu ihnen navigieren. (Ia2c16, b/240292838)
  • In Navigation 2.5.2: Die Navigation ersetzt jetzt korrekt die Fragmentinstanz, wenn zum selben Ziel navigiert und das Flag launchSingleTop auf „true“ gesetzt wird. (I5a2f1, b/237374580)
  • In Navigation 2.5.2: Das Problem IllegalStateException, das durch das Aufrufen eines doppelt verschachtelten Diagramms verursacht wurde, das ein übergeordnetes Element mit einem neuen Pop-up-Startziel teilt. (I9f7cb, b/243778589)

Version 2.5

Version 2.5.3

24. Oktober 2022

androidx.navigation:navigation-*:2.5.3 wird veröffentlicht. Version 2.5.3 enthält diese Commits.

Fehlerkorrekturen

  • NavHost führt nicht mehr zu NoSuchElementException, wenn kein Ziel für die Crossfade verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416)
  • Ein Problem wurde behoben, durch das der gespeicherte Erstellungsstatus (z.B. Verwendung von rememberSaveable) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back Stack entfernt wurde. (I64949)

Version 2.5.2

7. September 2022

androidx.navigation:navigation-*:2.5.2 wird veröffentlicht. Version 2.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Bei der dynamischen Navigation wird jetzt richtig versucht, Aktivitätsziele aus anderen Modulen zu installieren, bevor die Navigation zu ihnen erfolgt. (Ia2c16, b/240292838)
  • Bei der Navigation wird die Fragmentinstanz jetzt richtig ersetzt, wenn Sie zum selben Ziel navigieren und das Flag launchSingleTop auf „wahr“ setzen. (I5a2f1, b/237374580)
  • Behoben wurde ein IllegalStateException, das beim Aufrufen einer doppelt verschachtelten Grafik auftrat, die ein übergeordnetes Element mit einem neuen Pop-up-Startziel gemeinsam hat. (I9f7cb, b/243778589)

Abhängigkeitsupdate

Version 2.5.1

27. Juli 2022

androidx.navigation:navigation-*:2.5.1 wird veröffentlicht. Version 2.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Navigation Safe Args löst bei Verwendung benutzerdefinierter Argumenttypen, die in einer Bundle gespeichert sind, keine Warnungen zur Einstellung mehr in generierten Klassen aus. (Id86ed, b/237725966)

Abhängigkeitsupdates

Version 2.5.0

29. Juni 2022

androidx.navigation:navigation-*:2.5.0 wird veröffentlicht. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • Integration von CreationExtras: Navigation kann jetzt über die CreationExtras von Lifecycle 2.5.0 einen zustandslosen ViewModelProvider.Factory bereitstellen.

SafeArgs Navigation

  • Navigation Safe Args hat die Android Gradle Plugin-Abhängigkeit aktualisiert, um sich auf 7.0.4 zu verlassen. Dadurch wurde die Kompatibilität für AGP-Versionen vor dem 7.0 aufgehoben.
  • Das Attribut „build.gradle“ wird jetzt anstelle von „applicationId“ unterstützt.

Weitere Änderungen

  • Die visibleEntries API ist nicht mehr experimentell und bietet eine Funktion zum Abrufen aller Einträge, deren Ziel gemäß der NavController derzeit sichtbar ist.

Version 2.5.0-rc02

15. Juni 2022

androidx.navigation:navigation-*:2.5.0-rc02 wird veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz, der durch schnelles Wechseln zwischen Zielen unten bei Verwendung der Navigationsfunktion „Compose“ NavHost verursacht wurde, wurde behoben. (I3979a, b/234054916)
  • Navigation SafeArgs stürzt nicht mehr ab, wenn ein applicationIdSuffix und ein Namespace verwendet werden, in dem entweder keine applicationId vorhanden ist oder sich applicationId und Namespace unterscheiden. (I754b1, b/233119646)
  • NavArgument hat jetzt eine benutzerdefinierte toString()-Funktion, mit der die internen Werte des Arguments angezeigt werden. (I900a8)

Version 2.5.0-rc01

11. Mai 2022

androidx.navigation:navigation-*:2.5.0-rc01 wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, die vor dem Einfügen von <deeplink>-Elementen in <activity>-Elemente in Ihrer navigation.xml-Datei warnt.(Ic15a5, b/178403185)

Fehlerkorrekturen

  • Composeable-Scopes in NavHost und DialogHost werden jetzt in der erwarteten Reihenfolge entsorgt, d.h. innere Composeables werden vor äußeren Composeables entsorgt. (I157e6)
  • Navigation SafeArgs verwendet jetzt PathSensitivity.RELATIVE in ArgumentsGenerationTask, um die Positionierung aus dem Cache zu ermöglichen. Das bedeutet, dass der Cacheeintrag jetzt von einem CI-Build für einen lokalen Build wiederverwendet werden kann. (I5f67c, b/173420454)
  • Die UnrememberedGetBackStackEntryDetector-Lint-Regel wurde aktualisiert, damit der remember-Aufruf um den Aufruf von getBackStackEntry() herum auch ein NavBackStackEntry-Objekt als Schlüssel übergibt.(Ib7081, b/227382831)

Version 2.5.0-beta01

20. April 2022

androidx.navigation:navigation-*:2.5.0-beta01 wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • DialogNavigator verwendet jetzt popWithTransition beim Ausführen eines dismiss()-Aufrufs. Dadurch wird eine Race-Bedingung bei Verwendung eines ViewModel innerhalb eines dialog-Ziels behoben, die zu einer IllegalStateException führt, wenn der Dialog entweder über die Systemrück-Schaltfläche oder durch Tippen außerhalb des Dialogfelds geschlossen wird. (Id7376, b/226552301)

Aktualisierung der Abhängigkeiten

  • Die Navigation hängt jetzt vom Nutzerlebenszyklus 2.5.0-beta01 ab. Wenn Sie mehrere Backstacks verwenden, wird ein IllegalStateException fixiert, wenn Sie einen NavHost in einem anderen NavHost in einem nicht primären Navigations-Tab unten verschachteln.

Version 2.5.0-alpha04

6. April 2022

androidx.navigation:navigation-*:2.5.0-alpha04 wird veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.

API-Änderungen

Fehlerkorrekturen

  • NavHost hängt jetzt von visibleEntries aus der NavController ab, um zu bestimmen, welche Einträge erstellt werden sollen. Das bedeutet, dass bei Verwendung eines verschachtelten NavHost die innere NavHost jetzt richtig animiert werden sollte. (I4ba2b, b/225394514)
  • Die von NavController bereitgestellte visibleEntries StateFlow basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags anstelle des aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren Einträge auch dann unverändert bleibt, wenn der Host-Lebenszyklus der navController unter „STARTED“ fällt. (I9e2a8, b/225394514)
  • SavedStateViewFactory unterstützt jetzt die Verwendung von CreationExtras, auch wenn es mit einer SavedStateRegistryOwner initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
  • NavDeepLink kann jetzt URIs mit einem einzelnen Abfrageparameter ohne Wert parsen. (I0efe8, b/148905489)
  • Leere Strings gelten jetzt als gültige Argumente in Deeplinks. (I70a0d, b/217399862)
  • Navigation Safe Args stürzt nicht mehr ab, wenn Namespaces verwendet werden und kein AndroidManifest.xml vorhanden ist. (I17ccf, b/227229815)

Version 2.5.0-alpha03

23. Februar 2022

androidx.navigation:navigation-*:2.5.0-alpha03 wurde veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • Sie können jetzt CreationExtras bis by navGraphViewModels übergeben, um eine ViewModel zu erstellen. (I29217, b/217618359)

Fehlerkorrekturen

  • NavDeepLinks codierte Zeilenumbruchzeichen, die in Routen-/Deeplink-URIs eingebettet sind, werden jetzt korrekt unterstützt. (I513d1, b/217815060)
  • CreationExtras funktioniert jetzt richtig, wenn es mit NavBackStackEntries zum Erstellen von ViewModels verwendet wird. (I69161, b/217617710)
  • Navigation Safe Args unterstützt jetzt die Verwendung des in build.gradle definierten Namespace anstelle des Pakets im AndroidManifest. (I659ef, b/217414933)

Version 2.5.0-alpha02

9. Februar 2022

androidx.navigation:navigation-*:2.5.0-alpha02 wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Unter Navigation 2.4.1: Die NavHostFragment setzt jetzt bei Verwendung von View-Binding mit verschachtelten Diagrammen die OnBackPressedDispatcher richtig. (Ifbb51, b/214577959)
  • Über Navigation 2.4.1: Wenn Deeplinks über mehrere verschachtelte NavGraphs erstellt werden, schließt der Back-Stack nun wie vorgesehen Zwischenstartziele ein. (I504c0, b/214383060)

Version 2.5.0-alpha01

26. Januar 2022

androidx.navigation:navigation-*:2.5.0-alpha01 wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.

Neue Funktionen

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das über by navGraphViewModels() aus dem onCreate() eines Fragments erstellt wurde, mit einem IllegalStateException fehlschlägt. (I8a14d)
  • NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal, d. h., die richtigen Argumente werden jetzt an Ihr endgültiges Ziel übergeben. (I31b0a, b/210711399)

Safe Args

  • Safe Args ist jetzt auf die Version 7.0.4 des Android Gradle-Plug-ins angewiesen. Das bedeutet, dass „Navigation Safe Args“ nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel ist, aber jetzt mit Android-Gradle-Plug-in 7.1.0 und höher kompatibel ist. (I41c88, b/213086135, b/207670704)

Version 2.4.2

Version 2.4.2

6. April 2022

androidx.navigation:navigation-*:2.4.2 wird veröffentlicht. Version 2.4.2 enthält diese Commits.

Fehlerkorrekturen

Version 2.4.1

Version 2.4.1

9. Februar 2022

androidx.navigation:navigation-*:2.4.1 wurde veröffentlicht. Version 2.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Bei Verwendung von Viewbinding mit verschachtelten Diagrammen wird die OnBackPressedDispatcher jetzt korrekt durch die NavHostFragment festgelegt. (Ifbb51, b/214577959)
  • Bei Deeplinks über mehrere verschachtelte NavGraphs enthält der Backstack jetzt korrekt Zwischenziele. (I504c0, b/214383060)
  • Backport aus Navigation 2.5.0-alpha01: Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das über by navGraphViewModels() aus der onCreate() eines Fragments erstellt wurde, mit einer IllegalStateException fehlgeschlagen ist. (I8a14d)
  • Backport aus Navigation 2.5.0-alpha01: NavDeepLinks decodieren Argumente nicht mehr unnötigerweise zweimal. Das bedeutet, dass die korrekt decodierten Argumente jetzt an das endgültige Ziel übergeben werden. (I31b0a, b/210711399)
  • Backport aus Navigation 2.5.0-alpha01: Safe Args hängt jetzt vom Android Gradle-Plug-in in Version 7.0.4 ab. Navigation Safe Args sind also nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel, aber mit dem Android Gradle-Plug-in 7.1.0 und höher. (I41c88, b/213086135, b/207670704)

Version 2.4.0

Version 2.4.0

26. Januar 2022

androidx.navigation:navigation-*:2.4.0 wird veröffentlicht. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dadurch wurde die Nullbarkeit von Klassen mit Generiken (z. B. NavType-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der -ktx-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die -ktx-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer.
  • Das Artefakt navigation-fragment enthält jetzt eine vordefinierte Implementierung eines Zwei-Bereichs-Layouts über die neue AbstractListDetailFragment. In diesem Fragment wird ein SlidingPaneLayout verwendet, um einen Listenbereich (der von Ihrer Unterklasse bereitgestellt wird) und einen Detailbereich zu verwalten, der eine NavHostFragment als Implementierung verwendet, wie in unserer Beispielimplementierung zu sehen.
  • Die Methode currentBackStackEntryAsFlow() für NavController stellt einen Flow bereit, der immer dann ausgegeben wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einer OnDestinationChangedListener verwendet werden.
  • Über die experimentelle Eigenschaft visibleEntries können Sie jetzt mit dem NavController eine Liste aller sichtbaren NavBackStackEntry-Instanzen als StateFlow abrufen.
  • Es ist jetzt möglich, die Klasse NavType zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie den Navigationsgraphen programmatisch erstellen, z. B. über die Navigationsgraph-Kotlin-DSL.
  • Für die Navigation gibt es jetzt die APIs findStartDestination() und getHierarchy(), mit denen sich eine benutzerdefinierte Navigations-UI implementieren lässt. findStartDestination() ist eine Erweiterungsfunktion von NavGraph, mit der das tatsächliche Startziel ermittelt wird, das angezeigt wird, wenn Sie zum Diagramm wechseln, auch wenn die startDestination selbst eine verschachtelte NavGraph ist. getHierarchy() ist eine Funktion in NavDestination, mit der überprüft werden kann, ob sich ein bestimmtes Ziel in der Hierarchie eines anderen befindet.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI-Methoden, die ein BottomNavigationView als Argument erwarteten, wurden aktualisiert, sodass stattdessen die Superklasse verwendet wird, die in Material 1.4.0, NavigationBarView eingeführt wurde. So können diese Methoden mit der NavigationRailView verwendet werden.

  • Wenn ein <action>-Element über XML maximiert wird, können Animationen Attribute verwenden, die mithilfe der app:enterAnim="?attr/transitionEnter"-Syntax aus Ihrem Design gezogen werden.

  • Safe Args generiert jetzt eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse. (#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)
    }
    

Navigationsrouten und Kotlin DSL

In früheren Versionen der Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen übergeordneten Zielen unterscheiden ließ und es ermöglichte, direkt oder über eine Aktion zu diesem Ziel zu navigate(). Dies ist zwar weiterhin gültig und nützlich, insbesondere in Fällen, in denen Sie Ihren Navigationsdiagramm in XML definieren und automatisch generierte R.id-Konstanten oder Safe Args verwenden können, die diese Konstanten zum Generieren von Code zum Build-Zeitpunkt verwenden. Dieses System aus eindeutigen Ganzzahlen erfasst jedoch nicht die semantische Bedeutung und Aussagekraft, die erforderlich ist, um vollständig dynamische Grafiken zu unterstützen, die zur Laufzeit über Navigation Kotlin DSL programmatisch erstellt werden.

In dieser Version wird eine neue Option eingeführt, mit der ein Ziel in einem Navigationsgraphen anhand seiner Route eindeutig identifiziert werden kann. Eine Route ist eine String, die den eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, die eine Ziel-ID akzeptierten, wurden eingestellt und durch eine entsprechende API ersetzt, die eine Route akzeptiert.

Jede Route sollte als „path“-Teil eines Uri behandelt werden, das dieses Ziel definiert, z.B. home, profile/{userId}, profile/{userId}/friends usw. Wenn die Identität eines Ziels mit einem bestimmten Inhalt verknüpft ist, sollten diese dynamischen Argumente Teil der Route sein und denselben Regeln wie implizite Deeplinks folgen.

Alle NavController APIs, für die bisher nur eine ID verwendet wurde, haben jetzt eine Überladung, die eine Route String annimmt. Dazu gehören navigate(), popBackStack(), popUpTo() und getBackStackEntry().

Dies hatte einige Auswirkungen auf die API:

  • Das Kotlin-Attribut popUpTo in Kotlin DSL wurde zugunsten von popUpToId eingestellt.
  • Die getStartDestination() API wurde zugunsten von getStartDestinationId() eingestellt.

Im Gegensatz zur Navigation per ID folgt die Navigation per Route denselben Regeln wie implizite Deeplinks, da Sie direkt zu einem beliebigen Ziel in einem verschachtelten Diagramm wechseln können. So können diese Routen in mehrmoduligen Projekten verwendet werden, ohne dass jedem Ziel explizit ein extern sichtbarer Deeplink hinzugefügt werden muss.

Navigation – Verfassen

Das Artefakt navigation-compose ermöglicht die Integration zwischen der Navigationskomponente und Jetpack Compose. Dabei werden @Composable-Funktionen als Ziele in Ihrer Anwendung verwendet.

Dieser Release bietet Folgendes:

  • Ein NavHost-Komposit, mit dem Sie Ihren Navigationsgraphen über eine Kotlin-DSL mit composable- und dialog-Zielen erstellen können, sowie Unterstützung für optionale Navigationselemente wie die aus dem Material zur Navigation mit Begleitern.
  • Erforderliche Unterstützung für Crossfading zwischen Zielen. Mit der Begleitnavigationsanimation können Sie die Ein- und Ausblendübergänge mithilfe experimenteller Compose APIs steuern.
  • Geltungsbereich einer Lifecycle zu jedem zusammensetzbaren Ziel. Jedes Ziel erreicht erst dann den RESUMED-Status, wenn alle eingehenden Übergänge abgeschlossen sind, und fällt sofort auf STARTED, wenn alle übergehenden Übergänge beginnen. Auf diese Weise können Sie alle IllegalStateException- und Multi-Touchpoint-Probleme vermeiden, indem Sie nur einen navigate-Aufruf auslösen, wenn Lifecycle den Wert RESUMED hat.
  • Geltungsbereich von ViewModel (über die viewModel() API von Lifecycle ViewModel Compose 2.4.0 oder hiltViewModel() von Hilt Navigation Compose 1.0.0 auf Zielebene; es wird ein Bereich angegeben, der Konfigurationsänderungen übersteht und sich im Back-Stack befindet (wenn Ihre zusammensetzbaren Inhalte anderweitig entnommen werden) sowie ein Signal im onCleared() des ViewModel, das die dauerhafte Entsorgung und Bereinigung des mit diesem NavBackStackEntry verknüpften Zustands angibt.
  • Der rememberSaveable-Status wird auf Zielebene festgelegt, damit der gesamte Composeable-Status automatisch gespeichert und wiederhergestellt wird, wenn Sie zu einem Ziel zurückkehren.
  • Vollständige Unterstützung für das Speichern und Wiederherstellen des Status von NavController und des Status des Ziels nach dem Beenden und Neustarten des Prozesses.
  • Automatische Integration in die Schaltfläche „Zurück“ des Systems
  • Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben eines Ergebnisses an vorherige Ziele.

  • Erstellen Sie spezielle Helpers in rememberNavController() und currentBackStackEntryAsState(), um den Status zu heben und die NavController mit Composeables außerhalb der NavHost zu verbinden (z. B. eine untere Navigationsleiste).

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()
        }
    }
}

Weitere Informationen finden Sie im Leitfaden zum Erstellen von Navigationselementen.

Mehrere Back Stacks

Der NavController ist für die Verwaltung des Backstacks der Ziele verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate() zu ihnen aufrufen, und entfernt sie, wenn Sie popBackStack() aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene NavOptions-Klasse und die Einbindung in <action>-Elemente im Navigationsgraphen-XML wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen.

Im Rahmen dieser Änderung wird der Status der eingeblendeten Ziele jetzt automatisch von den NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() gespeichert und wiederhergestellt. So wird die Unterstützung mehrerer Backstacks ohne Codeänderungen ermöglicht. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode zur Integration mehrerer Back Stacks.

Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Zustands sind über verschiedene Oberflächen verfügbar:

  • In Navigation XML können im Element <action> jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwendet werden, um den Status aller über app:popUpTo eingeblendeten Ziele zu speichern und den Status des Ziels wiederherzustellen, das als app:destination übergeben wurde:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • In der navOptions Kotlin DSL können Sie die booleschen Properties restoreState und saveState zum popUpTo-Builder hinzufügen:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • Wenn Sie ein NavOptions-Objekt manuell über NavOptions.Builder erstellen, können Sie die setRestoreState()- und die neue Überladung für setPopUpTo() verwenden, die einen zusätzlichen saveState-Parameter annimmt.

    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);
    
  • Programmatische Aufrufe von popBackStack() können jetzt einen zusätzlichen saveState-Parameter enthalten.

  • Mit der Methode clearBackStack() können Sie den Status löschen, der mit popBackStack() oder popUpToSaveState gespeichert wurde.

In allen Fällen speichert und stellt NavController den Status jeder NavBackStackEntry wieder her, einschließlich aller ViewModel-Instanzen auf Navigationszielebene. Die Navigator APIs wurden aktualisiert, damit jedes Navigator seinen eigenen Status speichern und wiederherstellen kann.

Verhaltensänderungen

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE dem von createPendingIntent() zurückgegebenen PendingIntent hinzu. Dadurch wird sichergestellt, dass diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert.
  • Die Navigation hängt jetzt vom Lebenszyklus 2.3.1 ab und markiert jetzt setGraph(), popBackStack(), navigateUp() und navigate(), die Methoden, die NavBackStackEntry Lifecycle aktualisieren, als @MainThread. Dadurch wird die Navigation an die im Lebenszyklus 2.3.0 eingeführte Hauptthreaderzwingung angepasst.
  • Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im Uri vorhanden sind.
  • In NavDeepLink geparste Argumente betrachten jetzt Rautezeichen genauso wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten, wodurch verhindert wird, dass sich ein Argument über das Rautezeichen erstreckt.
  • Beim Generieren von Aktionen werden Argumente ohne Standardwerte jetzt vor denen mit Standardwerten als Parameter in Kotlin-Code eingefügt, der aus Safe Args generiert wurde.
  • Bei der Generierung von Argumenten stellt Safe Args jetzt Parameter ohne Standardwerte vor Parameter mit Standardwerten.
  • Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, wenn Sie applicationIdTextResource verwenden.

Bekannte Probleme

  • Behoben in Navigation 2.5.0-alpha01: Der Zugriff auf eine ViewModel, die über by navGraphViewModels() aus der onCreate() eines Fragments erstellt wurde, schlägt mit einer IllegalStateException fehl. (b/213504272)
  • Behoben in Navigation 2.5.0-alpha01: Safe Args 2.4.0 ist nicht mit dem Android Gradle-Plug-in 7.1.0 und höher kompatibel. (b/213086135)
  • Bei Deeplinks mit mehreren verschachtelten Navigationsgrafiken wird der vollständige Backstack nicht korrekt erstellt. (b/214383060)

Version 2.4.0-rc01

15. Dezember 2021

androidx.navigation:navigation-*:2.4.0-rc01 wird veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.

Geändertes Verhalten

  • Bei der Analyse von NavDeepLink-Argumenten werden Hashzeichen jetzt genauso wie Fragezeichen als Trennzeichen zwischen Argumenten verwendet. (I21309, b/180042703)

Fehlerkorrekturen

  • Bei Deeplinks werden Argumente mit Werten, die mit dem Namen des Platzhalters übereinstimmen, nicht mehr ignoriert. (If8017, b/207389470)
  • NavController stürzt nicht mehr ab, wenn ein verschachteltes Ziel mithilfe von Übergängen eingeblendet wird, nachdem NavController wiederhergestellt wurde. (I0f7c9, b/205021623)
  • Die Fehlermeldung bei Verwendung einer ungültigen startDestination verweist jetzt standardmäßig auf die Route des Startziels, sofern verfügbar. (I86b9d, b/208041894)

Fehlerkorrekturen für die Navigation und das Verfassen von E-Mails

  • Behoben wurde ein möglicher Absturz, der durch schnelles Wechseln zwischen dem Startziel und einem anderen Ziel über die Menüpunkte in der unteren Navigationsleiste verursacht wurde. (Ic8976, b/208887901)
  • Das Ziel des Dialogfelds wird jetzt korrekt oben auf dem Bildschirm wiederhergestellt, nachdem die Konfiguration geändert oder der Prozess beendet wurde. (I4c0dc, b/207386169)
  • Das Problem wurde behoben, dass der Abruf einer ViewModel aus der NavBackStackEntry eines Dialogfelds fehlgeschlagen ist, wenn das Dialogfeld geschlossen wurde. (I6b96d, b/206465487)
  • Ein Problem wurde behoben, bei dem die Verwendung von activity-Zielen mit NavHost von Navigation Compose zu einer endlosen Neuzusammensetzung führte. (I8f64c)
  • Ein Leck in Navigation Compose wurde behoben, bei dem nach einer Konfigurationsänderung oder einem Prozessende eine Referenz auf die alte Aktivität beibehalten wurde. (I4efcb, b/204905432)

Fehlerkorrekturen für Safe Args

  • SafeArgs stürzt nicht mehr ab, wenn versucht wird, benutzerdefinierte Parcelable-Arrays nach dem Absturz des Prozesses wiederherzustellen. (I618e8, b/207315994)
  • Ein Fehler in sicheren Argumenten wurde behoben, durch den boolesche Arrays keinen null-Wert haben konnten. (I8c396, b/174787525)

Version 2.4.0-beta02

3. November 2021

androidx.navigation:navigation-*:2.4.0-beta02 wird veröffentlicht. Version 2.4.0-beta02 enthält diese Commits.

API-Änderungen

  • Bei der Verarbeitung sowohl expliziter als auch impliziter Deeplinks wird beim Wechseln zu einer anderen Grafik jetzt automatisch das Flag saveState hinzugefügt. So wird sichergestellt, dass Code wie NavigationUI.setupWithNavController und Code mit mehreren Backstacks wie erwartet funktioniert. (Ic8807)

Änderungen im Verhalten

  • Deeplink-Muster werden jetzt in NavDeepLink statt während der Inflation träge kompiliert. Dadurch sollte sich die Aufblühzeit von Navigationsgrafiken mit Deeplinks verbessern. (b8d257, b/184149935)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das NavBackStackEntries nach dem Wechsel zu Lifecycle.State.STARTED nach Lifecycle.State.CREATED verschoben wurden, wenn die NavHost direkt der setContent() der Aktivität hinzugefügt wird. (Ia5ac1, b/203536683)
  • Es wurde eine Race-Condition behoben, bei der ein DialogFragment-Ziel aus dem Rückstapel entfernt wurde, bevor das Dialogfeld tatsächlich angezeigt wurde. Das Dialogfeld wurde dadurch nicht geschlossen, was zu einem Absturz führte, wenn das fehlerhafte Dialogfeld vom Nutzer manuell geschlossen wurde. (I687e5)
  • Behoben: Die onNavDestinationSelected API auf NavigationUI gab true zurück, auch wenn Sie nicht tatsächlich navigate() zu diesem Navigationsgraphen navigate(). Es wird jetzt dieselbe Logik verwendet, die intern von setupWithNavController verwendet wird, um nur das MenuItem auszuwählen, das mit dem aktuellen Ziel verknüpft ist, und zwar anhand des hierarchy des Ziels. (I2b053)

Version 2.4.0-beta01

27. Oktober 2021

androidx.navigation:navigation-*:2.4.0-beta01 wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt by navGraphViewModel mit einer Route als Alternative zur Verwendung einer ID verwenden, um die Verwendung der Navigation Kotlin DSL mit Fragmenten besser zu unterstützen. (I901e3, b/201446416)

API-Änderungen

  • Die visibleEntries API befindet sich derzeit in der Testphase. (I93f6f)

Fehlerkorrekturen

  • ViewModels werden nicht mehr zerstört, wenn Übergänge unterbrochen werden, indem zwischen denselben Bildschirmen hin- und hergewechselt wird (Id52d8, b/200817333)
  • Für änderbare NavDeepLink-Argumente ist beim Hinzufügen von Deeplinks zu NavDestinations kein Standardwert mehr erforderlich. (I5aad4, b/201320030)
  • NavBackStackEntries mit unterschiedlichen Lebenszyklen werden jetzt nicht mehr als gleich betrachtet. Das bedeutet, dass NavHost alle Ziele bei der Navigation mit „singleTop“ und beim erneuten Auswählen von Menüpunkten unten korrekt neu zusammensetzt. (I1b351, b/196997433)
  • Es wurde ein Problem mit AbstractListDetailFragment behoben, das dazu führte, dass die Attribute layout_width und layout_weight im von onCreateListPaneView() zurückgegebenen Listenbereich falsch verarbeitet oder ignoriert wurden. (f5fbf3)
  • Der visuelle Status von Dialog-Zielen bleibt jetzt korrekt mit dem Status von DialogFragmentNavigator synchronisiert. Das bedeutet, dass beim manuellen Aufruf der asynchronen dismiss() API für DialogFragment jetzt alle Dialogziele über dem jetzt geschlossenen Dialogfeld korrekt gelöscht werden. Das gilt nicht, wenn Sie das Dialogfeld mit popUpTo oder popBackStack() schließen. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener enthält jetzt klarere Fehlermeldungen für onDestinationChanged(). (Ie742d)

Version 2.4.0-alpha10

29. September 2021

androidx.navigation:navigation-*:2.4.0-alpha10 wird veröffentlicht. Version 2.4.0-alpha10 enthält diese Commits.

Neue Funktionen

  • NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren NavBackStackEntry-Instanzen über visibleEntries StateFlow (Ia964e) abzurufen.
  • Für rememberNavController() wird jetzt ein optionaler Satz von Navigator-Instanzen verwendet, der der zurückgegebenen NavController hinzugefügt wird, um optionale Navigationselemente wie die aus dem Material zur Navigation für Begleiter besser zu unterstützen. (I4619e)

Fehlerkorrekturen

  • Die dynamische Navigation stürzt nicht mehr ab, wenn die Aktivität neu erstellt wird. (Ifa6a3, b/197942869)
  • Ein Problem mit der Schaltfläche „Zurück“ des Systems wurde behoben, das nur auftrat, wenn man zu einem zusammensetzbaren Ziel mit einer NavHost zurückkehrte. (3ed148, b/195668143)
  • SafeArgs generiert die Argumente für fromBundle() und fromSavedStateHandle() jetzt in der richtigen Parameterreihenfolge. (I824a8, b/200059831)

Version 2.4.0-alpha09

15. September 2021

androidx.navigation:navigation-*:2.4.0-alpha09 wird veröffentlicht. Version 2.4.0-alpha09 enthält diese Commits.

Neue Funktionen

  • Mit der Methode clearBackStack() können Sie jetzt den Status löschen, der mit popBackStack() oder popUpToSaveState gespeichert wurde. (I80a0f)
  • Sie können jetzt eine Liste von Argumenten und/oder Deeplinks an den Builder der verschachtelten Navigationsgrafik übergeben. Diese werden dann automatisch der resultierenden Grafik hinzugefügt. (I8a470, b/182545357)

API-Änderungen

  • Die Kotlin-DSL-Funktion navArgument ist jetzt Teil von navigation-common statt navigation-compose. In diesem Fall müssen Sie die Importe aktualisieren, um diese Funktion weiterhin nutzen zu können. (I1d095)

Änderungen im Verhalten

  • Bei der Generierung von Argumenten stellt Safe Args jetzt Parameter ohne Standardwerte vor Parameter mit Standardwerten. (I89709, b/198493585)

Fehlerkorrekturen

  • Bei Verwendung von Navigation Compose sind NavGraphs erst dann DESTROYED, wenn alle untergeordneten Elemente DESTROYED sind. (I86552, b/198741720)
  • NavDeepLink-Argumente, für die Nullwerte zulässig sind, erfordern keinen Standardwert mehr. (Ia14ef, b/198689811)
  • Wenn setGraph() mit einer neuen Grafik aufgerufen wird, werden jetzt zusätzlich zu dem vorherigen Verhalten, bei dem der Rückstapel geleert wird, alle gespeicherten Rückstapel gelöscht. (I97f96)
  • Ein Problem wurde behoben, bei dem OnDestinationChangedListener-Instanzen und die currentBackStackEntryFlow nicht benachrichtigt wurden, wenn launchSingleTop verwendet wurde. (Iaaebc)

Abhängigkeitsupdates

Version 2.4.0-alpha08

1. September 2021

androidx.navigation:navigation-*:2.4.0-alpha08 wird veröffentlicht. Version 2.4.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Es ist jetzt möglich, die NavType-Klasse zu erweitern, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie den Navigationsgraphen programmatisch erstellen, z. B. über die Navigationsgraph-Kotlin-DSL. (I78440, b/196871885)

Verhaltensänderungen

  • Beim Generieren von Aktionen werden Argumente ohne Standardwerte jetzt vor denen mit Standardwerten als Parameter in Kotlin-Code eingefügt, der aus Safe Args generiert wurde. (Idb697, b/188855904)
  • Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) in Uri vorhanden sind. (#204, b/185527157)

Fehlerkorrekturen

  • Wenn Sie getBackStackEntry und previousBackStackEntry in Kombination mit remember() in „composable()“ verwenden, wird keine Ausnahme mehr ausgelöst, wenn sich kein Ziel im Backstack befindet. (I75138, b/194313238)
  • Navigation Compose wird jetzt richtig neu erstellt, wenn Stack-Argumente zurückgegeben und launchSingleTop=true verwendet wird. (Iebd69, b/186392337)
  • Wenn setGraph mit einem Graphen mit 13 oder 29 Zielen aufgerufen wird, wird ArrayIndexOutOfBoundsException nicht mehr zurückgegeben. (I1a9f1, b/195171984)
  • Der Java-Generator „SafeArgs“ sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr verursachen. (I1a666, b/185843837)

Externer Beitrag

  • Vielen Dank an ospixd, dass Sie dafür gesorgt haben, dass bei Deeplinks geprüft wird, ob alle erforderlichen Argumente (ohne Standardwerte) in der Uri vorhanden sind. (#204, b/185527157)

Version 2.4.0-alpha07

18. August 2021

androidx.navigation:navigation-*:2.4.0-alpha07 wurde veröffentlicht. Version 2.4.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • In Navigation Compose wird der Status jetzt nach Konfigurationsänderungen und beim Wechseln von Diagrammen bei Verwendung der Funktion „Mehrere Backstacks“ korrekt gespeichert. (If5a3d, b/195141957)
  • Wenn Sie bei der Navigationszusammenstellung mit mehreren Backstacks denselben Tab noch einmal auswählen, wird nicht mehr ein leerer Bildschirm angezeigt. (I860dc, b/194925622)
  • NavHost prüft jetzt auf Änderungen am Lifecycle.State von NavBackStackEntrys. Das bedeutet, dass ein NavHost in einem Fragment jetzt bei Änderungen des Lebenszyklus korrekt neu zusammengesetzt wird, anstatt zu einem leeren Bildschirm zu führen. (I4eb85, b/195864489)
  • Ein Problem wurde behoben, durch das der Status NavController nach dem Erstellen Ihrer Aktivitäten (d.h. nach einer Konfigurationsänderung) nicht korrekt aktualisiert wurde, wenn Sie eine DialogFragment-Benachrichtigung geschlossen hatten. (Icd72b)
  • Ein Problem wurde behoben, bei dem durch das Öffnen eines Dialogziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte dazu, dass NavController die Schaltfläche „Zurück“ abfängt, obwohl kein Back-Stack vorhanden ist. (If3b34)
  • Safe-args generiert jetzt automatisch eine toSavedStateHandle-Methode für Argumente, mit der Ihr ViewModel-Code getestet werden kann. (If1e2d, b/193353880)

Version 2.4.0-alpha06

4. August 2021

androidx.navigation:navigation-*:2.4.0-alpha06 wird veröffentlicht. Version 2.4.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Methoden requireSlidingPaneLayout() und requireDetailPaneNavHostFragment() von AbstractListDetailFragment wurden in getSlidingPaneLayout() und getDetailPaneNavHostFragment() umbenannt. (I34a08)

Verhaltensänderungen

  • Bei der Navigation mit Animationen (z. B. Crossfade) erreicht die Lifecycle des neuen Ziels jetzt erst die RESUMED, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889)
  • Mit der Navigationsleiste „Compose“ (Erstellen) wird jetzt mit NavHost der Graph als Teil der ersten Komposition festgelegt. (Ieb7be)

Fehlerkorrekturen

  • Wenn das letzte Ziel in einem Navigationsdiagramm angezeigt wird, wird kein ClassCastException mehr ausgelöst. (If0543, b/172112072, b/194301889)
  • Ein NullPointerException wurde behoben, das beim Hinzufügen eines Deeplinks ohne Uri und beim Navigieren über eine Route oder einen Deeplink auftrat. (938a0c, b/193805425)
  • Ein Problem wurde behoben, bei dem ein Deeplink zu NavBackStackEntry den Status RESUMED nicht erreichte. (I192c5)
  • Ein Problem wurde behoben, durch das die Verarbeitung der Systemrückwärtsschaltfläche des NavControllers beim Aufrufen eines Dialogfelds nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Rückwärtsschaltfläche abfängt, obwohl kein Rückstapel vorhanden ist, der aufgepoppt werden kann. (aosp/1782668)

Version 2.4.0-alpha05

21. Juli 2021

androidx.navigation:navigation-*:2.4.0-alpha05 wird veröffentlicht. Version 2.4.0-alpha05 enthält diese Commits.

Verhaltensänderungen

  • Bei der Navigationsfunktion „Compose“ wird für NavHost jetzt immer ein Crossfade verwendet, wenn zwischen Zielen gewechselt wird. (I07049, b/172112072)
  • Sie können jetzt Änderungen an der Grafik eines NavHosts vornehmen. Grafiken mit demselben Startziel und denselben Zielen in der Grafik gelten als gleichwertig und löschen den Back-Stack NavController nicht. (I0b8db, b/175392262)

Fehlerkorrekturen

  • Es wurde ein NoSuchElementException-Fehler behoben, der beim Aufrufen von popBackStack() aus einer LifecycleObserver, die mit einem NavBackStackEntry verknüpft ist, verursacht wurde, der durch nicht wiederkehrende Aktualisierungen des NavController-Status verursacht wurde. (I64621)
  • Mit AbstractListDetailFragment können Sie SlidingPaneLayout jetzt vollständig aus Ihrem APK entfernen, wenn AbstractListDetailFragment nicht verwendet wird. (I611ad)
  • NavGraph und NavDestination überschreiben jetzt die Gleichheitsmethode, sodass zwei Objekte mit denselben Werten als gleich betrachtet werden. (I166eb, b/175392262)

Version 2.4.0-alpha04

1. Juli 2021

androidx.navigation:navigation-*:2.4.0-alpha04 wurde veröffentlicht. Version 2.4.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Das navigation-fragment-Artefakt enthält jetzt eine vorkonfigurierte Implementierung eines Layouts mit zwei Ansichten über die neue AbstractListDetailFragment. Dieses Fragment verwendet ein SlidingPaneLayout, um einen Listenbereich (den von Ihrer Unterklasse bereitgestellt wird) und einen Detailbereich zu verwalten, für den eine NavHostFragment als Implementierung verwendet wird, wie in unserer Beispielimplementierung gezeigt. (Iac4be, b/191276636)
  • Die NavHost des navigation-compose-Artefakts unterstützt jetzt neben composable-Zielen auch dialog-Zielvorhaben. Diese Dialogziele werden jeweils in einem zusammensetzbaren Dialog angezeigt, das über dem aktuellen composable-Ziel schwebt. (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()
            }
        }
    }

API-Änderungen

  • Die Funktion add in NavigatorState wurde in push umbenannt. Alle aktuellen Aufrufe von add() müssen zu „push()“ geändert werden. (Ie89fc, b/172112072)
  • Bei benutzerdefinierten Navigator-Instanzen können jetzt die pushWithTransaction- und popWithTransition-APIs auf NavigatorState verwendet werden, um ein Ziel asynchron zu pushen oder zu poppen. Diese APIs werden noch von keinem der enthaltenen Navigationselemente verwendet. (Ic4d7c, b/172112072)

Verhaltensänderungen

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE dem von createPendingIntent() zurückgegebenen PendingIntent hinzu. Dadurch wird sichergestellt, dass diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert. (If8c52)

Fehlerkorrekturen

  • Ein Problem mit <include-dynamic> wurde behoben, bei dem Argumente, die an den Graphen übergeben wurden, nicht korrekt an den dynamisch eingebundenen Graphen übergeben wurden. (I3e115)
  • Fehlerkorrektur für NullPointerException beim Aufrufen eines Ziels mithilfe eines string[]-Arguments mit dem Standardwert @null. (I1fbe8)
  • Fügen Sie ProGuard-Regeln für @Navigator.Name hinzu, um Probleme bei der Verwendung des R8 3.1-Modus im Vollbildmodus zu beheben. (I2add9, b/191654433)
  • SafeArgs schlägt beim Erstellen Ihrer App mit Kotlin-Versionen vor 1.5.0 nicht mehr fehl. (Icd1ff, b/190739257)

Version 2.4.0-alpha03

16. Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha03 wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das zwei navigate()-Aufrufe erforderlich waren, um zu einem enthaltenen dynamischen Diagramm zu gelangen. (I7785c, b/188859835)
  • Es wurde eine Regression behoben, die in der Navigation 2.4.0-alpha01 eingeführt wurde, bei der setupActionBarWithNavController() das Aufwärtssymbol nicht korrekt entfernt hat, wenn man sich an einem Ziel auf oberster Ebene befindet. (I5d443, b/189868637)
  • Ein Fehler beim Aufrufen von popBackStack() wurde behoben, wenn zuvor der Stammgraph des NavControllers gepoppt wurde.IllegalStateException (I2a330, b/190265699)
  • Die ProGuard-Regeln für by navArgs() gelten jetzt ordnungsgemäß, wenn navigation-common oder andere Artefakte verwendet werden, die davon abhängen. (I68800, b/190082521)
  • Ein OnDestinationChangedListener, das navigate() zum ersten Mal aufruft, wenn es einen Callback erhält, erhält jetzt korrekt einen zweiten Callback mit dem Ziel, zu dem es weitergeleitet wurde. (Ie5f9e, b/190228815)
  • Safe Args stürzt nicht mehr ab, wenn es mit dynamischen Funktionsmodulen und AGP 7.0 oder höher verwendet wird. (I69518, b/189966576)

Bekanntes Problem

  • Bei Verwendung von Gradle 6.7.0 schlägt Safe Args aufgrund einer Abhängigkeit von einer älteren Version von Kotlin mit dem Fehler Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ fehl. Sie können das Problem umgehen, indem Sie auf Gradle 7.0 umstellen. (b/190739257)

Version 2.4.0-alpha02

2. Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha02 wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Routen werden jetzt für Aktivitäts-, Fragment- und Dialogziele sowie in der DynamicNavigation-Kotlin-DSL unterstützt. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI hat vorübergehend experimentelle APIs hinzugefügt, um das Speichern Ihres Status zu deaktivieren. Das Speichern des Status ist zwar das richtige Verhalten, aber es gibt immer noch veraltete Bibliotheken (beibehaltene Fragmente), die beim Speichern des Status nicht unterstützt werden. So haben Apps die Möglichkeit, langsam von nicht unterstützten APIs zu konvertieren. (Idf93c)
  • Für die Navigation gibt es jetzt die APIs findDestination() und getHierarchy(), mit denen sich eine benutzerdefinierte Navigations-UI implementieren lässt. findDestination() ist eine Erweiterungsfunktion von NavGraph, mit der ein Ziel innerhalb des Graphen ermittelt wird. getHierarchy() ist eine Funktion von NavDestination, mit der überprüft werden kann, ob sich ein bestimmtes Ziel in der Hierarchie eines anderen befindet.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI-Methoden, die ein BottomNavigationView verwendet haben, wurden aktualisiert, sodass nun die in Material 1.4.0 eingeführte übergeordnete Klasse NavigationBarView verwendet wird. So können diese Methoden mit der NavigationRailView verwendet werden. (Ib0b36, b/182938895)

  • Wenn Sie ein <action>-Element über XML einfügen, können für die Animation Attribute verwendet werden, die mit der app:enterAnim="?attr/transitionEnter"-Syntax aus Ihrem Design gezogen werden. (I07bc1, b/178291654)

API-Änderungen

  • Kotlin-DSL-Builder, die eine ID verwenden, wurden eingestellt und sollten durch Builder ersetzt werden, die Routen verwenden (I85b42, b/188816479) (I9f58f, b/188816479)

Fehlerkorrekturen

  • DialogFragmentNavigator verwendet jetzt die NavigatorState.pop() API, um NavController darüber zu informieren, wenn ein Dialogfeld durch Drücken der Schaltfläche „Zurück“ oder Klicken außerhalb des Dialogfelds geschlossen wird. So ist der Status von NavController immer mit dem Status des Navigators synchronisiert. (I2ead9)
  • Bei der Navigation wird keine ConcurrentModificationException mehr ausgegeben, wenn die Liste der OnDestinationChangedListeners über einen onDestinationChanged-Callback manipuliert wird. (Ib1707, b/188860458)

  • Safe Args stürzt nicht mehr ab, wenn versucht wird, Richtungseigenschaften in Kotlin zu generieren. (Id2416, b/188564435)

  • Die Methode „setId“ von „NavDestination“ ist jetzt korrekt mit @IdRes annotiert, sodass nur Ressourcen-IDs akzeptiert werden. (I69b80)

  • Der int-Parameter von findNode ist jetzt resId anstelle von resid. (I7711d)

Aktualisierung der Abhängigkeit

  • Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Das bedeutet, dass Sie die Warnung „applicationIdTextResource“ nicht mehr erhalten sollten. (I6d67b, b/172824579)

Version 2.4.0-alpha01

18. Mai 2021

androidx.navigation:navigation-*:2.4.0-alpha01 wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Die currentBackStackEntryAsFlow()-Methode von NavController liefert eine Flow, die jedes Mal ausgegeben wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung einer OnDestinationChangedListener verwendet werden. (I19c4a, #89, b/163947280)

Mehrere Rückstapel

Der NavController ist für die Verwaltung des Backstacks der Ziele verantwortlich. Er fügt dem Backstack Ziele hinzu, wenn Sie navigate() zu ihnen aufrufen, und entfernt sie, wenn Sie popBackStack() aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene NavOptions-Klasse und die Einbindung in <action>-Einträge im Navigationsgraphen-XML wurden erweitert, um das Speichern und Wiederherstellen des Backstacks zu unterstützen. (b/80029773)

Im Rahmen dieser Änderung wird der Status der eingeblendeten Ziele jetzt automatisch von den NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() gespeichert und wiederhergestellt. So wird die Unterstützung mehrerer Backstacks ohne Codeänderungen ermöglicht. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode, um mehrere Backstacks zu integrieren. (Ie07ca)

Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Zustands sind über verschiedene Oberflächen verfügbar:

  • In Navigation XML können im Element <action> jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwendet werden, um den Status aller über app:popUpTo eingeblendeten Ziele zu speichern und den Status des Ziels wiederherzustellen, das als app:destination übergeben wurde:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • In der navOptions Kotlin DSL können Sie die booleschen Properties restoreState und saveState zum popUpTo-Builder hinzufügen:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • Wenn Sie ein NavOptions-Objekt manuell über NavOptions.Builder erstellen, können Sie die setRestoreState()- und die neue Überladung für setPopUpTo() verwenden, die einen zusätzlichen saveState-Parameter annimmt.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • Programmatische Aufrufe von popBackStack() können jetzt einen zusätzlichen saveState-Parameter enthalten.

In allen Fällen speichert und stellt NavController den Status jeder NavBackStackEntry wieder her, einschließlich aller ViewModel-Instanzen auf Navigationszielebene. Die Navigator APIs wurden aktualisiert, damit jedes Navigator seinen eigenen Status speichern und wiederherstellen kann.

Die ComposeNavigator, die für composable-Ziele in Navigation Compose verwendet wird, und die FragmentNavigator und DynamicFragmentNavigator, die für <fragment>-Ziele in Navigation with Fragments verwendet werden, wurden aktualisiert, um die neuen Navigator APIs zu verwenden und den Status zu speichern und wiederherzustellen.

Navigationsrouten

Eine Route ist eine String, die ein Ziel eindeutig identifiziert. Dieses Konzept wurde bisher nur in Navigation Compose verwendet, ist jetzt aber Teil der Navigation APIs. Dies ist eine Alternative zur Verwendung von Ganzzahl-IDs beim Erstellen des Graphen über die Navigation Kotlin DSL. (b/172823546)

Alle APIs, die bisher nur eine ID akzeptiert haben, haben jetzt eine Überladung, die eine Route String akzeptiert. Dazu gehören navigate(), popBackStack(), popUpTo() und getBackStackEntry().

Das hat einige Auswirkungen auf APIs:

  • Die Kotlin-Eigenschaft popUpTo in der Kotlin-DSL wurde zugunsten von popUpToId eingestellt. (I59c73, b/172823546)
  • Die getStartDestination() API wurde zugunsten von getStartDestinationId() eingestellt. (I0887f, b/172823546)

Für Entwickler, die von früheren Versionen von Navigation Compose auf Navigation Compose 2.4.0-alpha01 umstellen, bedeutet das, dass die folgenden Importe von Erweiterungsmethoden nicht mehr erforderlich sind und entfernt werden sollten:

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

Das Argument KEY_ROUTE wurde durch das route-Attribut auf NavDestination ersetzt. Sie können navBackStackEntry.destination.route jetzt direkt aufrufen.

API-Änderungen

  • Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dadurch wurde die Null-Zulässigkeit von Klassen mit generischen Werten (z. B. abgeleitete NavType-Klassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die zuvor Teil der -ktx-Artefakte waren, wurden in die jeweiligen Hauptartefakte verschoben. Die -ktx-Artefakte werden weiterhin veröffentlicht, sind aber völlig leer. (b/184292145)
  • NavDeepLinkBuilder unterstützt jetzt das Hinzufügen mehrerer verschiedener Ziele zum generierten Rückstapel. (I3ee0d, b/147913689)
  • Standardfunktionen für DynamicNavHostFragment hinzufügen (Icd515, b/175222619)
  • Die eindeutige ID einer NavBackStackEntry wird jetzt als Teil der öffentlichen API freigegeben. (Ie033a)
  • Die Felder name und argument sowie die Destrukturierungsfunktionen von NamedNavArgument sind jetzt öffentlich. (#174, b/181320559)
  • Es wurde eine neue NavBackStackEntry#provideToCompositionLocals-Erweiterung eingeführt, die die NavBackStackEntry den entsprechenden Kompositionen zur Verfügung stellt. (#175, b/187229439)

Sichere Argumente

  • Safe Args generiert jetzt eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse. (#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)
    }
    
  • Safe Args wurde aktualisiert, sodass es jetzt von KotlinPoet 1.8.0 abhängt. (#172, b/183990444)

Verhaltensänderungen

  • Die Navigation hängt jetzt vom Lifecycle 2.3.1 ab und setGraph(), popBackStack(), navigateUp() und navigate(), die Methoden, mit denen die NavBackStackEntry Lifecycle aktualisiert wird, werden jetzt als @MainThread gekennzeichnet. Damit wird die Navigation an die in Lifecycle 2.3.0 eingeführte Erzwingung des Hauptthreads angepasst. (b/171125856)
  • Beim Parsen von Enum-Argumenten aus Deeplinks wird jetzt die Groß- und Kleinschreibung nicht berücksichtigt. So kann ein Deeplink wie http://www.example.com/red mit einem Deeplink von www.example.com/{color} übereinstimmen, auch wenn das Enum den Wert RED hat. (#152, b/135857840)

Compose-Kompatibilität

  • androidx.navigation:navigation-compose:2.4.0-alpha01 ist nur mit Compose-Version 1.0.0-beta07 und höher kompatibel.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks hatten, die mit einem genau übereinstimmenden Suffix versehen waren. (#153, b/184072811)
  • NavHostFragment unterstützt jetzt benutzerdefinierte Navigationselemente, die dieselbe @Navigator.Name("dialog") wie die StandardDialogFragmentNavigator verwenden. (Ib1c2c, b/175979140)
  • Das Verhalten von NavigatorProvider#addNavigator wurde verbessert, sodass ein wiederholtes Aufrufen mit derselben Instanz keine Probleme verursacht. (#176, b/187443146)

Externe Beiträge

  • Vielen Dank an simonschiller für die Unterstützung von Safe Args, die eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse generiert. (#122, b/136967621)
  • Vielen Dank an Bradleycorn, der das Parsen von Enum-Argumenten aus Deeplinks jetzt unabhängig von der Groß- und Kleinschreibung ermöglicht. (#152, b/135857840)
  • Vielen Dank an osipxd für die Behebung eines Problems, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks hatten, die ein exakt übereinstimmendes Suffix haben. (#153, b/184072811)
  • Vielen Dank an tatocaster, dass er Safe Args so aktualisiert hat, dass es von KotlinPoet 1.8.0 abhängt. (#172, b/183990444)
  • Vielen Dank an jossiwolf, der die Felder name und argument sowie die Destrukturierungsfunktionen von NamedNavArgument veröffentlicht hat. (#174, b/181320559)
  • Vielen Dank an jossiwolf für die Einführung einer neuen NavBackStackEntry#provideToCompositionLocals-Erweiterung, die die NavBackStackEntry für die entsprechenden Kompositions-Locals bereitstellt. (#175, b/187229439)
  • Danke, jossiwolf, dass du das Verhalten von NavigatorProvider#addNavigator verbessert hast, damit das wiederholte Aufrufen mit derselben Instanz keine Probleme verursacht. (#176, b/187443146)

Version 1.0.0-alpha10

7. April 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 wird veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

  • NavHost akzeptiert jetzt eine Modifier, die an den zusammensetzbaren Container übergeben wird, der die zusammensetzbaren Zielanwendungen zusammenfasst. (I85aca, b/175125483)

Fehlerkorrekturen

  • NavHost funktioniert jetzt auch dann, wenn kein OnBackPressedDispatcherOwner gefunden wird, z. B. in der Vorschau der NavHost. (I7d8b4)
  • „Navigation Compose“ hängt jetzt von Navigation 2.3.5 ab. Dadurch wurde ein Problem behoben, das bei der Verwendung von BackHandler in einem NavHost-Ziel aufgetreten ist. (I7e63b, b/182284739)

Version 1.0.0-alpha09

10. März 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 wird veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • LocalViewModelStoreOwner.current gibt jetzt einen ViewModelStoreOwner-Wert zurück, der Nullwerte zulässt, um besser festzustellen, ob ein ViewModelStoreOwner in der aktuellen Zusammensetzung verfügbar ist. Bei APIs, für die eine ViewModelStoreOwner erforderlich ist, z. B. viewModel() und NavHost, wird weiterhin eine Ausnahme ausgelöst, wenn keine ViewModelStoreOwner festgelegt ist. (Idf39a)

Fehlerkorrekturen

  • Navigation Compose hängt jetzt von Navigation 2.3.4 ab. Diese Version enthält eine Fehlerkorrektur für den Versuch, dasselbe ViewModelStore-Objekt festzulegen, nachdem die Grafik festgelegt wurde. (I65c24, b/177825470)

Version 1.0.0-alpha08

24. Februar 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

Neue Funktionen

  • NavHost gibt nun die NavBackStackEntry des Ziels für LocalSavedStateRegistryOwner CompositionLocal an. Dadurch wird sichergestellt, dass jeder direkt in SavedStateRegistry gespeicherte Status gespeichert und zusammen mit dem Ziel wiederhergestellt wird. (I435d7, b/179469431)

Version 1.0.0-alpha07

10. Februar 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

Abhängigkeitsupdates

Version 1.0.0-alpha06

28. Januar 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • Es wurde eine getBackStackEntry(route: String)-Erweiterungsmethode für NavController hinzugefügt, die die zugehörige NavBackStackEntry zurückgibt. (If8931)

Version 1.0.0-alpha05

13. Januar 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Aktualisiert, um von Compose 1.0.0-alpha10 abhängig zu sein.

Version 1.0.0-alpha04

16. Dezember 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

  • Aktualisiert, um die Kompatibilität mit „Compose“ (1.0.0-alpha09) zu verbessern.

Version 1.0.0-alpha03

2. Dezember 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 wird veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem popBackStack() und navigateUp() nach einer Konfigurationsänderung nicht funktionierten oder dass der Vorgang beendet und die Wiederherstellung durchgeführt wurde. (Icea47, b/173281473)
  • Das Navigieren zu einer verschachtelten Grafik in Ihrem NavHost funktioniert jetzt ordnungsgemäß. (I0948d, b/173647694)

Version 1.0.0-alpha02

11. November 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • Navigations-Compose-Elemente unterstützen jetzt NavOptions für die Verwendung von popUpTo- und launchSingleTop-Vorgängen (If96c3, b/171468994)
  • Es wurde eine Navigationsfunktion hinzugefügt, die eine Route anstelle einer ID verwendet, mit der sich verschachtelte Grafiken in der DSL „Navigation Compose“ erstellen lassen. (I1661d)
  • „startDestination“ steht jetzt in der Liste der Parameter für einen NavHost vor der Route (Ie620e)
  • Sie können jetzt einen Graphen erstellen, der die Route als Start- oder Ziel außerhalb eines NavHost-Kompositionselements verwendet. (Iceb75)

Version 1.0.0-alpha01

28. Oktober 2020

android.navigation:navigation-compose:1.0.0-alpha01 wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

Das navigation-compose-Artefakt ermöglicht die Integration der Navigationskomponente in Jetpack Compose. Dabei werden @Composable-Funktionen als Ziele in Ihrer Anwendung verwendet.

Diese erste Version bietet Folgendes:

  • Ein NavHost-Komposit, mit dem Sie Ihren Navigationsgraphen über eine Kotlin-DSL erstellen können.
  • Begrenzung des Lebenszyklus, von ViewModel und des gespeicherten Status auf Zielebene.
  • Automatische Integration in die Schaltfläche „Zurück“ des Systems
  • Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben eines Ergebnisses an vorherige Ziele.
  • Erstellen Sie spezielle Helpers in rememberNavController() und currentBackStackEntryAsState(), um den Status zu heben und die NavController mit Composeables außerhalb der NavHost zu verbinden (z. B. eine untere Navigationsleiste).

Weitere Informationen finden Sie in der Anleitung zur Navigation erstellen.

Version 2.3.5

Version 2.3.5

7. April 2021

androidx.navigation:navigation-*:2.3.5 wird veröffentlicht. Version 2.3.5 enthält diese Commits.

Neue Funktionen

  • Wenn Sie mithilfe von NavDeepLinkRequest oder Uri navigieren, können Sie jetzt auf den Uri, die Aktion und den Mime-Typ im resultierenden Ziel zugreifen, indem Sie die Absicht über Argumente über KEY_DEEP_LINK_INTENT abrufen. Diese Funktion ist bereits für externe Deeplinks verfügbar. (I975c3, b/181521877)

Fehlerkorrekturen

  • OnBackPressedCallbacks wurde einem Dispatcher mit NavBackStackEntry als LifecycleOwner hinzugefügt. Jetzt wird nach dem Aktivitätslebenszyklus STOPPED und dann STARTED richtig zurückgefiltert. (Iff94f, b/182284739)
  • Beim Parsen von Deeplink-Domains wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So wird sichergestellt, dass www.example.com sowohl mit www.example.com als auch mit www.Example.com übereinstimmt. Bei Abfrageparameternamen wird weiterhin zwischen Groß- und Kleinschreibung unterschieden. (#144, b/153829033)
  • Ein NullPointerException wurde behoben, das auftreten konnte, wenn ein Ziel mehrere nicht nullwertige Standardargumente hat und Sie zu diesem Ziel wechseln, während Sie nur einen Teil dieser Argumente überschreiben. (aosp/1644827)

Abhängigkeitsupdates

  • Das Gradle-Plug-in „Navigation Safe Args“ ist jetzt für die Version 1.4.31 des Kotlin-Gradle-Plug-ins erforderlich. (aosp/1661058, b/181156413)

Externer Beitrag

  • Vielen Dank an bentrengrove für den Pull-Request, durch den das Parsen von Deeplink-Domains jetzt unabhängig von der Groß- und Kleinschreibung erfolgt. (#144, b/153829033)

Version 2.3.4

Version 2.3.4

10. März 2021

androidx.navigation:navigation-*:2.3.4 wird veröffentlicht. Version 2.3.4 enthält diese Commits.

Neue Funktionen

  • ReferenceType-Argumente können jetzt korrekt geparst werden, wenn sie als Teil eines Deeplink-URI gesendet werden. Es werden sowohl der Ganzzahlwert als auch Hexadezimalwerte mit dem Präfix 0x unterstützt. (#127, b/179166693)
  • Die android:defaultValue für ein Argument mit app:argType="float" unterstützt jetzt ganzzahlige Standardwerte, sodass Sie android:defaultValue="0" anstelle von 0.0 verwenden können. (#117, b/173766247)

Fehlerkorrekturen

  • Behebung eines Fehlers, bei dem der Installationsvorgang bei Verwendung der Navigationsunterstützung für dynamische Funktionen hängen blieb (Ib27a7, b/169636207)
  • Der Aufruf von setViewModelStore oder setLifecycleOwner mit demselben Objekt, das bereits festgelegt wurde, ist nun ein No-Op (Idf491, b/177825470).
  • Safe-Args fügt jetzt Unterdrückungsannotationen zu den richtigen Methoden hinzu, wenn Java verwendet wird. (I8fbc5, b/179463137)

Externe Beiträge

  • Vielen Dank an JvmName für den Pull-Request, durch den ReferenceType-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URIs gesendet werden. (#127, b/179166693)
  • Vielen Dank an tatocaster für den Pull-Request, mit dem defaultValue für ein Argument zugelassen wird. app:argType=”float” unterstützt jetzt Ganzzahl-Standardwerte. (#117, b/173766247)

Version 2.3.3

Version 2.3.3

27. Januar 2021

androidx.navigation:navigation-*:2.3.3 wird veröffentlicht. Version 2.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Es gibt keinen Absturz mehr, wenn ein NavBackStackEntry per Pop-up aufgerufen wird, bevor seine Lifecycle nach CREATED verschoben wird. (Ie3ba3)
  • Das Problem einer durch b/171364502 verursachten Regression wurde behoben, bei der das Aufrufen einer Aktivität mit dem Wert 0 für die Animationsressource den Fehler ResourceNotFoundException verursachte. (I7aedb, b/176819931)

Version 2.3.2

Version 2.3.2

2. Dezember 2020

androidx.navigation:navigation-*:2.3.2 wurde veröffentlicht. Version 2.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression in NavigationUI wurde behoben, bei der bei Verwendung eines <activity>-Ziels mit onNavDestinationSelected nicht zur Aktivität gelangt wurde. (I22e34, b/171364502)
  • navigation-dynamic-features-fragment hat dazu geführt, dass mehrmals zum neu installierten Ziel navigiert wurde. Dieses Problem wurde behoben. (aosp/1486056, b/169636207)
  • Ein Problem wurde behoben, bei dem Standardargumente bei Verwendung von launchSingleTop nicht an OnDestinationChangedListener-Instanzen gesendet wurden. (I2c5cb)
  • Ein Problem wurde behoben, durch das beim Wechsel zu einem verschachtelten Navigationsgraphen keine neue Graph-Instanz im Backstack erstellt wurde. (Ifc831)
  • Ein Problem wurde behoben, bei dem bei Verwendung von navigate() mit einem popUpTo, durch das das letzte Ziel in einem Navigationsgraphen entfernt wurde, der Navigationsgraph nicht sofort zerstört und aus dem Backstack entfernt wurde. (I910a3)
  • Für Navigation SafeArgs wird jetzt KotlinPoet Version 1.7.2 verwendet, die den expliziten API-Modus von Kotlin unterstützt. (I918b5)
  • NavHostFragment.findNavController(Fragment) prüft jetzt zusätzlich zu den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die Stamm-Dekor-Ansicht eines DialogFragment. So können Sie Dialogfragmente testen, die die Navigation mit FragmentScenario und Navigation.setViewNavController() verwenden. (I69e0d)

Version 2.3.1

Version 2.3.1

14. Oktober 2020

androidx.navigation:navigation-*:2.3.1 wurde veröffentlicht. Version 2.3.1 enthält diese Commits.

Neue Funktionen

  • Der Navigationsoberfläche wurden Standard-Animator-Ressourcen hinzugefügt, die den Standard-Animationsressourcen vorgezogen werden sollten. (b/167430145)
  • Die Methoden „hashcode“ und „equals“ werden jetzt von NavOptions überschrieben (b/161586466)
  • Die Navigation enthält jetzt das aktuelle Ziel in der IllegalArgumentException „Kein Ziel mit ID“. Das sollte die Fehlerbehebung für Entwickler verbessern. (b/168311416)

Fehlerkorrekturen

  • Safe Args bricht die Rückgabezeile nicht mehr um, auch wenn der generierte Name der Argumentklasse länger als 100 Zeichen ist. (b/168584987)

Änderungen an Abhängigkeiten

  • navigation-ui ist jetzt von DrawerLayout 1.1.1 abhängig. So kann NavigationUI die Leiste auch bei Verwendung von LOCK_MODE_LOCKED_CLOSED oder LOCK_MODE_LOCKED_OPEN öffnen. (b/162253907)
  • Safe Args hängt jetzt von KotlinPoet 1.6.0 ab (aosp/1435911)
  • Safe Args ist jetzt von AGP 4.0.1 (aosp/1442337) abhängig.

Version 2.3.0

Version 2.3.0

24. Juni 2020

androidx.navigation:navigation-*:2.3.0 wird veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Integration von Funktionsmodulen: Mit den Artefakten navigation-dynamic-features-runtime und navigation-dynamic-features-fragment können Sie zu Zielen navigieren, die in Funktionsmodulen definiert sind. Die Installation der Funktionsmodule erfolgt automatisch nach Bedarf. Weitere Informationen finden Sie unter Mithilfe von Funktionsmodulen navigieren.
  • Navigationstests: Das Artefakt navigation-testing stellt ein TestNavHostController bereit, mit dem Sie das aktuelle Ziel festlegen und den Back-Stack nach Navigationsvorgängen prüfen können. Weitere Informationen finden Sie unter Navigation testen.
  • Ergebnis zurückgeben: Über die NavBackStackEntry, die jedem Ziel im Navigationsrückstack zugeordnet ist, können Sie jetzt auf eine SavedStateHandle zugreifen, die zum Speichern kleiner Mengen an gespeichertem Status geeignet ist, die einem bestimmten Backstack-Eintrag zugeordnet werden sollten. Weitere Informationen finden Sie unter Ergebnis an das vorherige Ziel zurückgeben.
  • NavigationUI-Unterstützung für Openable: Alle Verwendungen von DrawerLayout in NavigationUI wurden durch die allgemeinere Openable-Oberfläche ersetzt, die in CustomView 1.1.0 hinzugefügt und von DrawerLayout in DrawerLayout 1.1.0 implementiert wurde.
  • Unterstützung von Aktions- und Mime-Typen in Deeplinks: Deeplinks werden zusätzlich zu den bisher verfügbaren app:uri unterstützt, sodass jetzt app:action und app:mimeType unterstützt werden. NavController unterstützt jetzt die Navigation über eine beliebige Kombination dieser Felder über die neue NavDeepLinkRequest-Klasse. Weitere Informationen finden Sie unter Über NavDeepLinkRequest navigieren.

Bekannte Probleme

  • Die Unterstützung für Deeplink-Aktionen und MIME-Typen ist im Manifest Merger noch nicht verfügbar. Bis diese Schritte abgeschlossen sind, enthalten die generierten <intent-filter>-Elemente aus dem <nav-graph>-Element in deinem Manifest weder deinen MIME-Typ im <data>-Element noch in deinem benutzerdefinierten <action>. Sie müssen Ihrem Manifest manuell eine entsprechende <intent-filter> hinzufügen.

Version 2.3.0-rc01

10. Juni 2020

androidx.navigation:navigation-*:2.3.0-rc01 wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein NullPointerException wurde behoben, bei dem eine Instanz eines Ziels ohne Argumente durch eine andere Instanz mit Argumenten durch singleTop ersetzt wurde. (b/158006669)
  • Alle von NavController geworfenen destination is unknown-Ausnahmen enthalten jetzt zusätzliche Informationen zur Fehlerbehebung, die bei der Bestimmung des Status von NavController helfen. (b/157764916)

Version 2.3.0-beta01

20. Mai 2020

androidx.navigation:navigation-*:2.3.0-beta01 wurden freigegeben. Version 2.3.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Lifecycle der NavBackStackEntry nach dem Beenden des Prozesses nicht richtig aktualisiert wurde. (b/155218371)
  • OnDestinationChangedListener Instanzen, die vor dem Aufruf von setGraph() registriert wurden, werden jetzt nach dem Beenden eines Prozesses ordnungsgemäß an das wiederhergestellte Ziel gesendet. (b/155218371)
  • Wenn Sie singleTop verwenden, werden die Argumente der NavBackStackEntry jetzt korrekt aktualisiert und an alle OnDestinationChangeListener-Instanzen gesendet. (b/156545508)

Abhängigkeitsupdates

Version 2.3.0-alpha06

29. April 2020

androidx.navigation:navigation-*:2.3.0-alpha06 wurde veröffentlicht. (Version 2.3.0-alpha06 enthält diese Commits.)

Neue Funktionen

  • Deeplinks werden jetzt zusätzlich zu den bisher verfügbaren app:uri auch für app:action und app:mimeType unterstützt. Der NavController unterstützt jetzt über die neue Klasse NavDeepLinkRequest die Navigation über eine beliebige Kombination dieser Felder. (b/136573074, b/135334841)

API-Änderungen

  • Die Kotlin-DSL-Unterstützung für Ziele der dynamischen Navigation wurde stark erweitert. (b/148969800)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das Deeplink-Intents bei Verwendung eines verschachtelten Startziels ignoriert wurden. (b/154532067)

Version 2.3.0-alpha05

15. April 2020

androidx.navigation:navigation-*:2.3.0-alpha05 wurde veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Bei dynamischen Diagramm-Einschlüssen, für die <include-dynamic> verwendet wird, müssen Sie app:graphPackage nicht mehr angeben. Stattdessen wird ein Standardwert verwendet, indem Sie dem applicationId nach einem Punkt das Suffix moduleName hinzufügen. Wenn Sie Ihre graphPackage anpassen möchten, wird jetzt ein ${applicationId}-Platzhalter unterstützt. (b/152696768)
  • Die Kotlin-DSL für Navigationsgraphen stellt jetzt ein defaultArguments-Map für Aktionen bereit, was der Möglichkeit entspricht, Standardwerte für <action>-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)

Fehlerkorrekturen

  • In Navigation 2.2.2 wurde ein IllegalStateException-Fehler beim Deeplink zum Startziel Ihres Diagramms behoben, wenn Sie mehrere NavHostFragment-Instanzen in Ihrer Aktivität haben. (b/147378752)

Abhängigkeitsupdates

Version 2.3.0-alpha04

18. März 2020

androidx.navigation:navigation-*:2.3.0-alpha04 wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Unterstützung für Aktivitäts- und Fragmentziele von Feature-Modulen in der Navigations-Kotlin-DSL hinzugefügt. (b/148969800)

API-Änderungen

  • Die DynamicExtras-Klasse verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671)
  • DynamicActivityNavigator nimmt jetzt einen Context in seinem Konstruktor anstelle eines Activity an. (aosp/1250252)

Fehlerkorrekturen

  • Leere Labels (d. h. Ziele mit android:label=””) werden von NavigationUI nicht mehr ignoriert. Der Titel wird jetzt korrekt als leere Zeichenfolge festgelegt. (b/148679860)

Abhängigkeitsupdates

  • Die Artefakte für dynamische Navigationsfunktionen sind jetzt von Play Core 1.6.5 abhängig. (b/149556401)

Version 2.3.0-alpha03

4. März 2020

androidx.navigation:navigation-*:2.3.0-alpha03 wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Anstatt auf die konkrete DrawerLayout-Klasse zu setzen, verwendet AppBarConfiguration jetzt die Openable-Schnittstelle, die in CustomView 1.1.0-alpha02 eingeführt wurde (die DrawerLayout ab DrawerLayout 1.1.0-alpha04 implementiert). So können Sie benutzerdefinierte Implementierungen von Openable mit NavigationUI verwenden. (b/129030452)

Fehlerkorrekturen

  • Die ProGuard-Regeln von navigation-common-ktx behalten jetzt korrekt nur die verwendeten NavArgs-Klassen anstelle aller NavArgs-Instanzen bei. (b/150213558)

Abhängigkeitsänderungen

  • Die Navigation ist jetzt wieder von Core 1.1.0 abhängig, da Entwickler nicht zu einer neueren Abhängigkeit wechseln müssen, wenn die Navigation nicht von neuen APIs in Core 1.2.0 abhängt.1.2.0

Version 2.3.0-alpha02

19. Februar 2020

androidx.navigation:navigation-*:2.3.0-alpha02 wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Mit NavBackStackEntry können Sie jetzt auf ein SavedStateHandle zugreifen, das sich zum Speichern kleiner Mengen des gespeicherten Status eignet, die mit einem bestimmten Back-Stack-Eintrag verknüpft werden sollen. Ein Anwendungsfall ist unter Ergebnis zurückgeben beschrieben. (b/79672220)

API-Änderungen

  • Es wurden praktische Methoden für getCurrentBackStackEntry() und getPreviousBackStackEntry() hinzugefügt, um den Abruf einer NavBackStackEntry für das aktuelle und vorherige Ziel zu vereinfachen. (b/79672220)

Fehlerkorrekturen

  • navigateUp() übergibt jetzt die Argumente des aktuellen Ziels und KEY_DEEP_LINK_INTENT an das vorherige Ziel, wenn Ihre App in Ihrem eigenen Task-Stack gestartet wird. (b/147456890)

Abhängigkeitsänderungen

Version 2.3.0-alpha01

5. Februar 2020

androidx.navigation:navigation-*:2.3.0-alpha01 wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Das neue navigation-testing-Artefakt enthält eine TestNavHostController-Klasse. Diese Klasse bietet eine Alternative zur Verwendung eines Mock-NavController beim Testen der Navigation. Damit können Sie das aktuelle Ziel festlegen und den Backstack nach Navigationsvorgängen überprüfen. (b/140884273)
  • Mit der neuen navigation-dynamic-features-fragment (und ihrer übertragbaren Abhängigkeit navigation-dynamic-features-runtime) können Sie Ziele oder ganze Navigationsgraphen (über <include-dynamic>) aus Funktionsmodulen einbinden. So wird die Installation von On-Demand-Funktionsmodulen beim Aufrufen dieser Ziele nahtlos ermöglicht. Weitere Informationen finden Sie unter Mithilfe von Funktionsmodulen navigieren. (b/132170186)

Fehlerkorrekturen

  • Navigation 2.2.1: Deeplinks ohne Suchparameter werden jetzt korrekt ignoriert, anstatt sie an nachfolgende {argument}-Elemente anzuhängen oder nicht mit dem Deeplink abzugleichen. (b/147447512)
  • Unter Navigation 2.2.1: Die navigation-ui ProGuard-Regeln für DrawerArrowDrawable wurden aktualisiert, damit android.enableJetifier=true nicht mehr erforderlich ist. (b/147610424)
  • In der Navigation 2.2.1: Das Modul navigation-common-ktx hat jetzt einen eindeutigen Namen für das Manifestpaket und hat nicht mehr denselben Namen für das Manifestpaket wie navigation-runtime-ktx. (aosp/1141947)

Aktualisierung der Abhängigkeiten

Version 2.2.2

Version 2.2.2

15. April 2020

androidx.navigation:navigation-*:2.2.2 werden veröffentlicht. Version 2.2.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der beim Deeplink zum Startziel Ihres Diagramms auftrat, wenn Ihre Aktivität mehrere NavHostFragment-Instanzen enthält.IllegalStateException (b/147378752)
  • Leere Labels (d. h. Ziele mit android:label=””) werden von NavigationUI nicht mehr ignoriert. Der Titel wird jetzt korrekt als leere Zeichenfolge festgelegt. Diese Funktion wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860)
  • Die navigation-common-ktx ProGuard-Regeln behalten jetzt nur die verwendeten NavArgs-Klassen bei, anstatt alle NavArgs-Instanzen. Dies wurde bereits in Navigation 2.3.0-alpha03 veröffentlicht. (b/150213558

Aktualisierung der Abhängigkeiten

Version 2.2.1

Version 2.2.1

5. Februar 2020

androidx.navigation:navigation-*:2.2.1 wurde veröffentlicht. Version 2.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt, statt sie an nachgestellte {argument}-Elemente anzuhängen oder sie nicht mit dem Deeplink übereinzustimmen. (b/147447512)
  • Die navigation-ui ProGuard-Regeln für DrawerArrowDrawable wurden aktualisiert, damit android.enableJetifier=true nicht mehr erforderlich ist. (b/147610424)
  • Das navigation-common-ktx-Modul hat jetzt einen eindeutigen Manifestpaketnamen, anstatt denselben Manifestpaketnamen wie navigation-runtime-ktx zu verwenden. (aosp/1141947)

Abhängigkeitsupdates

Version 2.2.0

Version 2.2.0

22. Januar 2020

androidx.navigation:navigation-*:2.2.0 wird veröffentlicht. Version 2.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.1.0

  • NavBackStackEntry: Sie können jetzt NavController.getBackStackEntry() aufrufen und dabei die ID eines Ziels oder Navigationsgraphen im Backstack übergeben. Die zurückgegebene NavBackStackEntry enthält ein LifecycleOwner, ein ViewModelStoreOwner (das gleiche, das von NavController.getViewModelStoreOwner() zurückgegeben wird) und ein SavedStateRegistryOwner, die alle von der Navigation gesteuert werden. Außerdem werden die Argumente angegeben, die zum Starten dieses Ziels verwendet wurden.
  • Integration von Lifecycle ViewModel SavedState: SavedStateViewModelFactory ist jetzt die Standard-Factory, die bei Verwendung von by navGraphViewModels() oder dem ViewModelProvider-Konstruktor mit einem ViewModelStoreOwner verwendet wird, das von NavController.getBackStackEntry() oder NavController.getViewModelStoreOwner() zurückgegeben wird.
  • Unterstützung von Abfrageparametern für Deeplinks: Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente mit einem Standardwert oder mit dem Attribut „nullable“ sind beim Abgleich von Deeplinks jetzt optional.
  • Verbesserte Animation – NavHostFragment verwendet jetzt FragmentContainerView aus Fragment 1.2.0. Dadurch werden Probleme mit der Z-Reihenfolge von Animationen und Fenster-Inset-Dispatches an Fragmente behoben.

Version 2.2.0-rc04

18. Dezember 2019

androidx.navigation:navigation-*:2.2.0-rc04 wird veröffentlicht. Version 2.2.0-rc04 enthält diese Commits.

Fehlerkorrekturen

  • Die von navigation-ui verwendeten standardmäßigen Ausblendungsanimationen wurden so angepasst, dass sie den angepassten Ausblendungsanimationen in Fragment 1.2.0-rc04 entsprechen. (b/145769814)

Version 2.2.0-rc03

4. Dezember 2019

androidx.navigation:navigation-*:2.2.0-rc03 wird veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem beim Parsen von Deeplinks behoben, bei dem Suchparameter und ein Argument als letzter Teil des Pfads verwendet wurden, wodurch mehr als ein Zeichen des Arguments des finalen Pfads nicht geparst werden konnte. (b/144554689)
  • Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter "@null" statt null erhielten. (b/141613546)
  • NavHostFragment stellt den Graphen jetzt nach einer Konfigurationsänderung wieder richtig wieder her, wenn er mit FragmentContainerView verwendet wird. (b/143752103)

Änderungen an Abhängigkeiten

  • Die Navigation hängt jetzt von Lebenszyklus 2.2.0-rc03, Lebenszyklusansichtsmodell SavedState 1.0.0-rc03, Aktivität 1.1.0-rc03 und Fragment 1.2.0-rc03 ab, sofern zutreffend.

Version 2.2.0-rc02

7. November 2019

androidx.navigation:navigation-*:2.2.0-rc02 wird veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.

Änderungen an Abhängigkeiten

  • Die Navigation hängt jetzt von androidx.lifecycle 2.2.0-rc02 ab.

Version 2.2.0-rc01

23. Oktober 2019

androidx.navigation:navigation-*:2.2.0-rc01 wird seit 2.2.0-beta01 unverändert veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.

Version 2.2.0-beta01

9. Oktober 2019

androidx.navigation:navigation-*:2.2.0-beta01 wurde veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • NavDestination und seine Unterklassen überschreiben jetzt toString(), um bei der Fehlerbehebung hilfreichere Informationen bereitzustellen. (b/141264986)

Geändertes Verhalten

  • Zusätzliche Suchparameter werden beim Abgleich von Deeplinks jetzt ignoriert, anstatt den Abgleich zu verhindern. (b/141482822)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Abfrageparameter angegeben wurden. (b/141505755)
  • Die navArgs() Kotlin-Erweiterung für Activity hat jetzt eine bessere Fehlermeldung, wenn es keine Extras gibt. (b/141408999)
  • Von Safe Args generierte Directions-Java-Klassen enthalten jetzt Standardwerte. (b/141099045)
  • Sichere Args generierte Args-Java-Klassen enthalten jetzt Standardwerte. (b/140123727)
  • Bei Verwendung eines Toolbar animiert NavigationUI die Textänderung beim Wechsel zwischen zwei Zielen der obersten Ebene nicht mehr. (b/140848160)

Version 2.2.0-alpha03

18. September 2019

androidx.navigation:navigation-*:2.2.0-alpha03 wurde veröffentlicht. Version 2.2.0-alpha03 enthält diese Commits.

Verhaltensänderungen

  • Wenn Sie setViewModelStore() nach setGraph aufrufen, erhalten Sie jetzt eine IllegalStateException. Dieser Wert sollte immer von der NavHost im Rahmen der Ersteinrichtung festgelegt werden, damit alle NavBackStackEntry-Instanzen einen einheitlichen Speicher für ViewModel-Instanzen haben. (aosp/1111821)

Fehlerkorrekturen

  • Ein ConcurrentModificationException wurde behoben, wenn ViewModel-Instanzen verwendet wurden, die an mehrere ViewModelStore-Instanzen mit einem Navigationsdiagrammbereich angehängt waren. (aosp/1112257)

Version 2.2.0-alpha02

5. September 2019

androidx.navigation:navigation-*:2.2.0-alpha02 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Deeplinks mit Suchparametern unterstützen jetzt neu angeordnete Suchparameter. Argumente, die einen Standardwert haben oder bei denen Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional. (b/133273839)
  • Sie können jetzt NavController.getBackStackEntry() aufrufen und die ID eines Ziels oder eines Navigationsdiagramms im Back-Stack übergeben. Die zurückgegebene NavBackStackEntry bietet ein navigationsgesteuertes LifecycleOwner, ViewModelStoreOwner (dieselbes wird von NavController.getViewModelStoreOwner() zurückgegeben) und SavedStateRegistryOwner sowie die Argumente, die zum Starten dieses Ziels verwendet werden. (aosp/1101691, aosp/1101710)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das das Hinzufügen einer NavHostFragment zu einer ViewPager2 mit einer IllegalArgumentException fehlgeschlagen ist. (b/133640271)
  • NavInflater ruft getResourceName() jetzt nicht mehr unnötig auf, wodurch sich die Inflationszeit um bis zu 40 % verkürzt. (b/139213740)

Version 2.2.0-alpha01

7. August 2019

androidx.navigation:navigation-*:2.2.0-alpha01 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • SavedStateViewModelFactory ist jetzt die Standard-Factory, die bei Verwendung von by navGraphViewModels() oder dem ViewModelProvider-Konstruktor mit einem von NavController.getViewModelStoreOwner() zurückgegebenen ViewModelStoreOwner verwendet wird. (b/135716331)

API-Änderungen

Fehlerkorrekturen

  • In NavHostFragment wird jetzt FragmentContainerView verwendet. Dadurch wurden Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinblendungen an Fragmente behoben. (b/137310379)

Version 2.1.0

Version 2.1.0

5. September 2019

androidx.navigation:navigation-*:2.1.0 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 2.0.0

  • ViewModels auf Navigationsgraphenebene einschränken: Sie können jetzt ViewModels erstellen, die auf Navigationsgraphenebene eingeschränkt sind. Verwenden Sie dazu den by navGraphViewModels()-Property-Delegate für Kotlin-Nutzer mit den -ktx-Bibliotheken oder die getViewModelStoreOwner() API, die NavController hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen teilen.
  • Dialogziele: Sie können jetzt <dialog>-Ziele erstellen, bei denen eine DialogFragment angezeigt wird, wenn Sie navigate aufrufen. NavHostFragment unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel über DialogFragment erstellen.
  • Navigation per URI: Sie können jetzt navigate mit einem Uri verwenden. Dabei wird der <deepLink> verwendet, den Sie einem Ziel hinzugefügt haben, um dorthin zu navigieren. Weitere Informationen finden Sie unter Über einen URI navigieren.
  • NavHostController: APIs, die speziell zum Erstellen einer benutzerdefinierten NavHost verwendet werden, wurden zu NavHostController verschoben. Dadurch können Implementierungen NavController mit dem Hosting-Objekt LifecycleOwner, OnBackPressedDispatcher und ViewModelStore verbinden.

Version 2.1.0-rc01

7. August 2019

androidx.navigation:navigation-*:2.1.0-rc01 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Die eingestellte getViewModelStore() API auf NavController, die 2014 eingeführt wurde, wurde entfernt.2.1.0-alpha02 (aosp/1091021)

Version 2.1.0-beta02

19. Juli 2019

androidx.navigation:*:2.1.0-beta02 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Unbeabsichtigte Jacoco-Abhängigkeit, die in 2.1.0-beta01 eingeführt wurde, wurde entfernt. (b/137782950)

Version 2.1.0-beta01

17. Juli 2019

androidx.navigation:*:2.1.0-beta01 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Bei NavigationUI wird jetzt die Entfernung der Schaltfläche „Nach oben“ animiert, wenn setupWithNavController() mit Toolbar oder CollapsingToolbarLayout verwendet wird. (b/131403621)

Fehlerkorrekturen

  • Ein Timing-Problem bei der Verwendung mehrerer NavHostFragments mit demselben Container mit findNavController() wurde behoben. (b/136021571)

Version 2.1.0-alpha06

2. Juli 2019

androidx.navigation:*:2.1.0-alpha06 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Das von NavHostFragment verwendete Attribut app:navGraph wurde in das navigation-runtime-Artefakt verschoben. Benutzerdefinierte Navigationselemente, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um sie in den Navigationseditor einzubinden. (b/133880955)

API-Änderungen

  • Die getViewModelStore() API auf NavController wurde zugunsten der neuen getViewModelStoreOwner()-Methode eingestellt, die eine ViewModelStoreOwner zurückgibt. (aosp/987010)
  • Die Implementierung von Zielen mit schwebendem Fenster, z. B. <dialog>-Ziele, wurde in eine Markierungsoberfläche (FloatingWindow) verallgemeinert, die jetzt von allen <dialog>-Zielen implementiert wird. NavigationUI-Methoden für die Interaktion mit der oberen App-Leiste ignorieren jetzt FloatingWindow-Ziele. (b/133600763)

Geändertes Verhalten

  • Der Navigationsstatus wird jetzt bei Verwendung eines <dialog>-Ziels korrekt mit dem angezeigten Inhalt synchronisiert. Die Navigation zeigt daher jetzt automatisch <dialog>-Ziele an, wenn Sie zu einem Ziel ohne Dialog oder zu einem Ziel ohne Aktivität navigieren, z. B. zu einem <fragment>-Ziel. (b/134089818)

Fehlerkorrekturen

  • Bei der Navigation unterdrückt jetzt die Animation, die beim Neuerstellen der Aktivität bei der Verarbeitung eines Deep-Links stattfindet, wodurch ein visuelles Blitzlicht behoben wird. (b/130362979)
  • Es wurde ein Fehler behoben, bei dem der Back-Stack der Navigation nicht synchron war, wenn ein Fragment beim Hinzufügen des anfänglichen Fragments per Pop-up angezeigt wurde. (b/133832218)

Version 2.1.0-alpha05

5. Juni 2019

androidx.navigation:*:2.1.0-alpha05 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Hostbezogene APIs auf NavController wurden umbenannt und in eine neue abgeleitete Klasse von NavController, NavHostController, verschoben. (aosp/966091)
  • Die Methode NavController setHostOnBackPressedDispatcherOwner() wurde durch die Methode setOnBackPressedDispatcher() von NavHostController ersetzt. Sie muss jetzt vor dem Aufruf aufgerufen werden.setLifecycleOwner() (aosp/965409)
  • NavHostController enthält jetzt eine enableOnBackPressed(boolean)-Methode, die die Klasse NavHostOnBackPressedManager ersetzt, die zuvor von setHostOnBackPressedDispatcherOwner() zurückgegeben wurde. (aosp/966091)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das der Rückstapel nach der Navigation über einen URI nicht korrekt war. (b/132509387)
  • Deeplinks, die vom NavController automatisch verarbeitet werden, werden jetzt nur noch einmal ausgelöst. (b/132754763)

Version 2.1.0-alpha04

16. Mai 2019

androidx.navigation:*:2.1.0-alpha04 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • NavHostFragment berücksichtigt app:defaultNavHost beim Abfangen der Systemereignisse der Zurück-Schaltfläche korrekt, wodurch eine Regression in Navigation 2.1.0-alpha03 behoben wird. b/132077777
  • DialogFragmentNavigator verarbeitet jetzt popBackStack()- und navigateUp()-Vorgänge korrekt. b/132576764
  • Das Problem IllegalStateException: unknown destination during restore beim wiederholten Wechseln zwischen verschachtelten Grafiken wurde behoben. b/131733658

Version 2.1.0-alpha03

7. Mai 2019

androidx.navigation:*:2.1.0-alpha03 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Bekannte Probleme

  • NavHostFragment fängt weiterhin die Schaltfläche „Zurück“ des Systems ab, obwohl app:defaultNavHost="false" b/132077777 verwendet wird

Neue Funktionen

  • Sie können jetzt <dialog>-Ziele erstellen, bei denen ein DialogFragment angezeigt wird, wenn Sie navigate. NavHostFragment unterstützt standardmäßig Dialogziele. b/80267254
  • Sie können navigate nicht nur mit einer Ressourcen-ID oder einer NavDirections-Instanz aufrufen, sondern jetzt auch über eine Uri. Dabei wird die <deepLink> verwendet, die Sie einem Ziel hinzugefügt haben, um zum richtigen Ziel zu gelangen. b/110412864

Geändertes Verhalten

  • Die Standardanimationen von NavigationUI wurden von 400 ms auf 220 ms beschleunigt, um der Standardanimation von Aktivitäten und Fragmenten zu entsprechen. b/130055522

API-Änderungen

  • Die Methode createFragmentNavigator() von NavHostFragment wurde eingestellt und ihre Funktionen wurden in die neue Methode onCreateNavController() verschoben, um deutlicher zu machen, dass dies der richtige Einstiegspunkt für das Hinzufügen benutzerdefinierter Navigatoren ist, wenn Unterklassen von NavHostFragment erstellt werden. b/122802849
  • NavDestination wurde die Methode hasDeepLink() hinzugefügt, mit der Sie prüfen können, ob eine bestimmte Uri von diesem Ziel oder, im Fall einer NavGraph, von einem beliebigen Ziel im Navigationsgraphen verarbeitet werden kann. b/117437718

Fehlerkorrekturen

  • Standardargumente werden jetzt korrekt an OnDestinationChangedListener-Instanzen übergeben. b/130630686
  • NavHostFragment fängt jetzt System-Back-Ereignisse mithilfe von OnBackPressedDispatcher ab. Dadurch wird ein Problem bei der bedingten Navigation in Fragment-Lifecycle-Methoden beim Zurückkehren zu einem Fragment behoben. b/111598096
  • Bei sicheren Argumenten wird ein android:defaultValue=”@null” mit einem nicht angegebenen app:argType jetzt korrekt als string-Argument abgeleitet. b/129629192

Version 2.1.0-alpha02

3. April 2019

androidx.navigation:*:2.1.0-alpha02 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Sie können jetzt ViewModels erstellen, die auf Navigationsgraphebene gelten. Verwenden Sie dazu den by navGraphViewModels()-Property-Delegate für Kotlin-Nutzer oder die getViewModelStore() API, die NavController hinzugefügt wurde. b/111614463

API-Änderungen

  • Sie können einem <activity>-Ziel jetzt ein app:targetPackage hinzufügen, um den Abgleich des Paketnamens einzuschränken. Es unterstützt app:targetPackage="${applicationId}", um das Paket auf Ihre eigene Anwendungs-ID zu beschränken. b/110975456

Fehlerkorrekturen

  • Die android:name für <activity>-Ziele werden zum Zeitpunkt der Inflation nicht mehr in eine Klasse geparst, wodurch ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert werden. b/124538597

Version 2.1.0-alpha01

19. März 2019

Dies ist die erste Alphaversion von Navigation 2.1.0.

Abhängigkeitsänderungen

  • Die Navigation hängt jetzt von androidx.core:core:1.0.1 und androidx.fragment:fragment:1.1.0-alpha05 ab. Außerdem wurde die Abhängigkeit von androidx.legacy:legacy-support-core-utils:1.0.0 entfernt. b/128632612

API-Änderungen

  • Als Alternative zum Erstellen eines Klick-Listeners mit einer Ressourcen-ID und einem Bundle wurde die neue Methode Navigation.createNavigateOnClickListener(NavDirections) hinzugefügt. b/127631752
  • FragmentNavigator.instantiateFragment wurde eingestellt. In der Standardimplementierung wird jetzt FragmentFactory verwendet, um Fragmente zu instanziieren. b/119054429

Fehlerkorrekturen

  • Bei der Navigation wird kein null-Bundle mehr gesendet, wenn einem Ziel Argumente angehängt sind. Dadurch wird ein Problem bei der Verwendung von android:defaultValue="@null" behoben. b/128531879
  • Safe Args ist jetzt von KotlinPoet 1.1.0 abhängig. Dadurch wurde ein Problem mit extrem langen Paketnamen behoben. b/123654948

Version 2.0.0

Version 2.0.0

14. März 2019

Navigation 2.0.0 wird ohne Änderungen gegenüber 2.0.0-rc02 veröffentlicht.

Version 2.0.0-rc02

6. März 2019

Navigation 2.0.0-rc02 stellt neue Artefakte mit der Gruppen-ID androidx.navigation bereit und ändert ihre Abhängigkeiten in die AndroidX-Äquivalente.

Das Verhalten von 2.0.0-rc02 ist mit dem von Navigation 1.0.0-rc02 identisch. Für das Upgrade von 1.0.0-rc02 sollten keine Änderungen am Code erforderlich sein, außer dass Sie Ihre Abhängigkeiten an die neuen Abhängigkeiten anpassen.

Ihr Projekt muss zu AndroidX migriert worden sein, um 2.X-Releases von Navigation verwenden zu können. Navigation 1.0 (stabil) ist die letzte Version, die die Support Library-Abhängigkeiten verwendet. Alle zukünftigen Entwicklungen nach Version 1.0 basieren auf AndroidX und bauen auf der stabilen Version 2.0 auf.

Abhängigkeiten vor AndroidX

Fügen Sie für die Navigationsversionen vor Android X die folgenden Abhängigkeiten hinzu:

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
}

Fügen Sie für Safe args die folgende Classpath in die build.gradle-Datei auf oberster Ebene ein.

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

Version 1.0.0

Version 1.0.0

14. März 2019

Navigation 1.0.0 wird ohne Änderungen gegenüber 1.0.0-rc02 veröffentlicht.

Version 1.0.0-rc02

26. Februar 2019

Dies ist der zweite Releasekandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Reihe von Fehlerkorrekturen.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem popBackStack() ignoriert wurde, wenn die Stammgrafik keine ID b/126251695 hatte.
  • navigateUp() verarbeitet jetzt korrekt die Navigation zurück zur Aufgabe Ihrer App, wenn sie nach der Verarbeitung eines Deeplinks ohne FLAG_ACTIVITY_NEW_TASK aufgerufen wird b/126082008
  • Ein Problem wurde behoben, bei dem mit ActivityNavigator.applyPopAnimationsToPendingTransition nicht die richtige Pop-out-Ausgangsanimation angewendet wurde b/126237567
  • In Kotlin-Code, der mit Safe Args generiert wird, werden Kotlin-Keywords wie in und fun im Paketnamen, der mit der Klasse R verknüpft ist, jetzt ordnungsgemäß maskiert. b/126020455

Version 1.0.0-rc01

21. Februar 2019

Dies ist ein Release-Kandidat für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Fehlerkorrektur.

Fehlerkorrekturen

  • Ein Problem bei der Verwendung von Fragmenten und singleTop-Navigationsvorgängen wurde behoben. b/124294805

Version 1.0.0-beta02

12. Februar 2019

Diese Version enthält eine Reihe kleinerer Verbesserungen und wichtiger Fehlerkorrekturen.

Neue Funktionen

  • Sie können jetzt 0 als android:defaultValue für reference-Argumente verwenden. b/124248602

Verhaltensänderungen

  • Übereinstimmungen mit genauen Deeplinks haben jetzt Vorrang vor Deeplinks mit Übereinstimmungen mit .* oder Argumenten. b/123969518

Fehlerkorrekturen

  • popBackStack() und navigateUp geben jetzt beim Poppen des letzten Ziels im Backstack korrekt false zurück. Damit wurde eine in 1.0.0-beta01 eingeführte Regression behoben. b/123933201
  • Bei der Navigation wird die ClassLoader jetzt beim Wiederherstellen des gespeicherten Instanzstatus korrekt festgelegt. So werden Probleme bei der Verwendung benutzerdefinierter Klassen im gespeicherten Navigator-Status oder in Argumenten vermieden, die an eine NavDestination gesendet werden. b/123893858
  • Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein Parcelable[]-Argument aus dem gespeicherten Instanzstatus wiederhergestellt wird. b/123963545
  • Mit Safe Args werden jetzt nicht mehr benötigte generierte Kotlin-Klassen ordnungsgemäß bereinigt. b/124120883

Version 1.0.0-beta01

4. Februar 2019

Dies ist die erste Betaversion der Navigation API. Sofern keine kritischen Probleme auftreten, sollte sie bis zur nächsten Version stabil bleiben. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.

Geändertes Verhalten

  • Die Navigation stellt jetzt sicher, dass Standardwerte von Argumenten zur Laufzeit und über sichere Args identisch behandelt werden. Daher kann nur bei Argumenten mit einer app:argType="reference" ein Standardwert auf eine andere Ressource verweisen (z. B. @color/colorPrimary). Der Versuch, einen Standardwert für einen Verweis mit einer anderen app:argType zu verwenden, führt beim Parsen der Navigations-XML zu einer Ausnahme. b/123551990
  • "Sichere Args" hängt jetzt vom Android-Gradle-Plug-in 3.3.0 ab aosp/888413
  • Safe Args ist jetzt von Kotlin 1.3.20 abhängig aosp/888414

Fehlerkorrekturen

  • Safe Args können jetzt in Bibliotheks- und Funktionsmodulen in allen Versionen des Android Gradle-Plug-ins verwendet werden. b/121304903
  • Eine Regression behoben, bei der durch einen einzelnen popBackStack()-Vorgang alle Kopien eines Ziels vom Backstack entfernt wurden, anstatt nur eines einzelnen Ziels. b/123552990
  • Ein Problem wurde behoben, durch das der Status von FragmentNavigator nicht mehr mit dem Status von NavController synchronisiert wurde, was beim Versuch, den Backstack wiederherzustellen, zu einer IllegalStateException führte. b/123803044
  • Ein Problem wurde behoben, durch das der zurückgestrichelte Pfeil NavigationUI bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431
  • Der von Safe Args generierte Code verarbeitet jetzt ordnungsgemäß die Verwendung eines app:argType, der auf eine statische innere Klasse im Format .OuterClass$InnerClass verweist. b/123736741
  • Der von Safe Args generierte Java-Code verarbeitet jetzt globale Aktionen und tief verschachtelte Ziele richtig. b/123347762

Version 1.0.0-alpha11

23. Januar 2019

Dies ist ein Hotfix für 1.0.0-alpha10, mit dem ein Problem mit Safe Args behoben wird.

Fehlerkorrekturen

  • Behebt ein Problem, bei dem die Klasse „Wegbeschreibungen“, die mit globalen Aktionen verknüpft ist, von Safe Args nicht importiert werden konnte. b/123307342

Version 1.0.0-alpha10

23. Januar 2019

Bekannte Probleme

  • Mit Safe Args kann die Klasse „Wegbeschreibungen“ nicht importiert werden, die mit globalen Aktionen verknüpft ist. b/123307342

Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.

Neue Funktionen

  • Kotlin-Nutzer können jetzt den by navArgs()-Property-Delegate verwenden, um in einer Activity oder Fragment einen Verweis auf eine mit Safe Args generierte NavArgs-Klasse zu erhalten. b/122603367
  • Mit Safe Args können Sie jetzt Kotlin-Code generieren, indem Sie das androidx.navigation.safeargs.kotlin-Plug-in anwenden. Der Kotlin-Code wurde speziell für Module entwickelt, die nur Kotlin enthalten. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster verwendet, das noch über das vorherige androidx.navigation.safeargs-Plug-in verfügbar ist. b/110263087

Verhaltensänderungen

  • Übereinstimmende Deeplinks werden jetzt dem Deeplink zugeordnet, der die meisten übereinstimmenden Argumente hat. b/118393029
  • Wenn setGraph() auf einer NavController aufgerufen wird, wird der Rückstapel jetzt zurückgesetzt. b/111450672
  • Bei unbekannten Deeplinks wird keine IllegalStateException mehr ausgegeben, sondern sie werden ignoriert. So werden Probleme mit verschachtelten oder mehreren NavHostFragments behoben. b/121340440

Wichtige Änderungen

  • Die Methode NavOptions.applyPopAnimationsToPendingTransition() zum Anwenden von Pop-up-Animationen auf eine Aktivität wurde zu ActivityNavigator verschoben. b/122413117
  • Mit Safe Args werden jetzt identische Klassen für Aktionen ohne Argumente nicht mehr dupliziert. Der Rückgabetyp für Methoden ohne Argumente in generierten NavDirections-Klassen ist jetzt NavDirections. b/123233147
  • Von Safe Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur mit den generierten statischen Methoden interagieren. b/123031660
  • Von Safe Args generierte NavDirections-Klassen haben keinen öffentlichen Konstruktor mehr. Sie sollten nur über die statischen Methoden in den generierten Directions-Klassen generiert werden. b/122963206
  • Die zurückgegebene Bundle von NavDirections' getArguments() wird jetzt als @NonNull statt als @Nullable gekennzeichnet. b/123243957

Fehlerkorrekturen

  • NavDeepLinkBuilder verarbeitet jetzt mehrere gleichzeitige PendingIntents am selben Ziel korrekt, indem die von Ihnen übergebenen Argumente zur Bestimmung der Eindeutigkeit verwendet werden. b/120042732
  • NavController verarbeitet popBackStack()-Vorgänge jetzt korrekt, wenn ein verschachteltes NavHostFragment oder andere untergeordnete Fragmente mit einem Back Stack verwendet werden. b/122770335
  • NavigationUI legt die Inhaltsbeschreibung der Schaltfläche „Nach oben“ jetzt korrekt fest. b/120395362
  • Von Safe Args generierte Navigationsklassen verarbeiten jetzt globale Aktionen, die dieselbe ID wie eine Aktion für ein Ziel haben, richtig. b/122962504
  • Von Safe Args generierte NavDirections-Klassen haben jetzt korrekt gleiche hashCode()-Werte, wenn equals() „wahr“ zurückgibt. b/123043662
  • FragmentNavigator gibt jetzt eine bessere Fehlermeldung aus, wenn du versuchst, benutzerdefinierte FragmentTransactions auf dem FragmentManager der NavHostFragment auszuführen. Sie sollten immer getChildFragmentManager() verwenden. b/112927148

Version 1.0.0-alpha09

18. Dezember 2018

Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.

Wir haben uns entschieden, die Entwicklung des android.arch.navigation:navigation-testing-Artefakts nicht fortzusetzen. Diese Methode hat sich zwar für interne Tests von NavController bewährt, wir empfehlen jedoch dringend alternative Teststrategien, z. B. das Mocking der NavController-Instanz, um zu prüfen, ob die richtigen navigate()-Aufrufe ausgeführt werden. Dieser Ansatz wird im Single Activity Talk beim AndroidDevSummit 2018 ausführlich erläutert. Wir arbeiten an einer zusätzlichen Dokumentation speziell zum Testen mit Navigation.

Neue Funktionen

  • MenuItem-Objekte mit menuCategory="secondary" können nicht mehr als Back-Stack verwendet werden, wenn sie mit NavigationUI-Methoden verwendet werden. b/120104424
  • Mit AppBarConfiguration können Sie jetzt eine Fallback-OnNavigateUpListener-Instanz festlegen, die aufgerufen wird, wenn navController.navigateUp() false zurückgibt. b/79993862 b/120690961

Nicht abwärtskompatible Änderungen

  • Wenn ein <argument> mit einem argType="reference" verwendet wird, parst Navigation nicht mehr die Referenz, sondern gibt die Rohressourcen-ID selbst an. b/111736515
  • onNavDestinationSelected() wird jetzt standardmäßig zum Startziel des Navigationsdiagramms zurückgegeben, sodass sie mit den setup-Methoden konsistent sind. Fügen Sie menuCategory="secondary" zu MenuItem hinzu, um zu verhindern, dass der Rückstapel aufgerufen wird. aosp/852869
  • Die fromBundle()-Methoden der generierten Args-Klassen nehmen jetzt einen nicht nullwertigen Bundle anstelle eines nullable Bundle entgegen. aosp/845616

Fehlerkorrekturen

  • Argumente werden jetzt aus Deeplinks richtig als argType und nicht immer als Strings geparst b/110273284
  • Die Navigation exportiert jetzt ihre öffentlichen Ressourcen korrekt. b/121059552
  • Safe Args ist jetzt mit dem Android Gradle Plugin 3.4 Canary 4 und höher kompatibel b/119662045

Version 1.0.0-alpha08

6. Dezember 2018

Diese Version enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.

Neue Funktionen

  • Wenn Sie Ziellabels mit NavigationUI-Methoden verwenden, werden {argName}-Instanzen in android:label jetzt automatisch durch das richtige Argument ersetzt. b/80267266
  • Die Navigation hängt jetzt von der Support Library 28.0.0 b/120293333 ab.

Wichtige Änderungen

  • OnNavigatedListener wurde in OnDestinationChangedListener umbenannt b/118670572
  • OnDestinationChangedListener übergibt jetzt auch die Bundle der Argumente aosp/837142
  • Die Attribute app:clearTask und app:launchDocument sowie die zugehörigen Methoden wurden entfernt. Verwenden Sie app:popUpTo mit dem Stammknoten Ihres Graphen, um alle Ziele aus dem Backstack zu entfernen. b/119628354
  • ActivityNavigator.Extras verwendet jetzt ein Builder-Muster und es ist möglich, beliebige Intent.FLAG_ACTIVITY_-Flags festzulegen. aosp/828140
  • NavController.onHandleDeepLink wurde in handleDeepLink umbenannt aosp/836063
  • Viele Klassen und Methoden, die nicht für Unterklassen gedacht sind, wie NavOptions, NavInflater, NavDeepLinkBuilder und AppBarConfiguration, wurden zu final aosp/835681
  • Die eingestellte Methode NavHostFragment.setGraph() wurde entfernt. aosp/835684
  • Die eingestellte Methode NavigationUI.navigateUp(DrawerLayout, NavController) wurde entfernt. aosp/835684
  • Die Erstellung von Fragmenten wurde zu FragmentNavigator verschoben. So können Sie die Erstellung von Fragmenten jetzt noch einfacher an einen FragmentFactory delegieren. b/119054429
  • Der Konstruktor für NavGraphNavigator akzeptiert kein Context mehr. aosp/835340
  • NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle mehr. Die Funktionsweise von NavigatorProvider, die von getNavigatorProvider() zurückgegeben wird, hat sich nicht geändert. aosp/830660
  • NavDestination.navigate() wurde entfernt. Rufen Sie stattdessen navigate() auf dem Navigator an. aosp/830663
  • Die Funktion Navigator wurde erheblich überarbeitet. OnNavigatorNavigatedListener ist nicht mehr erforderlich. Stattdessen gibt navigate die NavDestination zurück, zu der die Navigation erfolgt ist.
  • Navigator-Instanzen können keine Pop-Ereignisse mehr an die NavController senden. Du kannst einen OnBackPressedCallback verwenden, um das Drücken der Schaltfläche „Zurück“ abzufangen und navController.popBackStack() aufzurufen. aosp/833716

Fehlerkorrekturen

  • popUpTo funktioniert jetzt konsistent, wenn das Ziel ein <navigation>-Element ist. b/116831650
  • Es wurden mehrere Fehler behoben, die bei Verwendung verschachtelter Diagramme zu einem IllegalArgumentException führten: b/118713731 b/113611083 b/113346925 b/113305559
  • Das dataPattern-Attribut von <activity>-Zielen wird jetzt mit Argumenten aus nicht-String-Argumenten gefüllt, indem toString() b/120161365 aufgerufen wird.

Safe Args

  • Safe Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Für Enum-Typen kann ein Standardwert festgelegt werden, indem das Enum-Literal ohne den Klassennamen verwendet wird (z. B. app:defaultValue="READ"). b/111316353
  • Sichere Args unterstützt Arrays aller unterstützten Typen. b/111487504
  • Unterordner von Ressourcenverzeichnissen werden jetzt von Safe Args ignoriert b/117893516
  • Safe Args fügt bei Bedarf @Override-Anmerkungen hinzu. b/117145301

Version 1.0.0-alpha07

29. Oktober 2018

Neue Funktionen

  • Mit der neuen Klasse AppBarConfiguration können Sie anpassen, welche Ziele als Ziele der obersten Ebene betrachtet werden sollen. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
  • Sie können jetzt Argumente an das Startziel der Grafik b/110300470 übergeben.
  • Deeplinks unterstützen jetzt benutzerdefinierte Schemas mit Punkten, Bindestriche und Pluszeichen. b/112806402

Wichtige Änderungen

  • Das navigation-testing-ktx-Modul wurde in das navigation-testing artifact-Modul aufgenommen und wird nicht mehr veröffentlicht.
  • Das navigation-testing-Artefakt hat jetzt eine Abhängigkeit von der Kotlin-Standardbibliothek. Die API wurde so geändert, dass sie den Kotlin-Konventionen entspricht. Sie können sie jedoch weiterhin für Tests verwenden, die in Java geschrieben wurden.
  • Im Metadatenmanifest registrierte Navigationsdiagramme werden nicht mehr unterstützt. b/118355937
  • Aktionen können nicht mehr an <activity>-Ziele angehängt werden. aosp/785539

Fehlerkorrekturen

  • Abfrageparameter werden in Deeplinks jetzt korrekt geparst. b/110057514
  • Bei Zielen für Aktivitäten werden jetzt alle Ein- und Ausblendungsanimationen korrekt angewendet. b/117145284
  • Ein Absturz, der nach Konfigurationsänderungen bei Verwendung benutzerdefinierter Navigationselemente auftrat, wurde behoben. b/110763345

Safe Args

  • Sichere Argumente haben jetzt eine feste Abhängigkeit vom Android Gradle-Plug-in 3.2.1. b/113167627
  • Wegbeschreibungen können jetzt für innere Klassen generiert werden. b/117407555
  • Ein Problem beim Generieren von Wegbeschreibungen zu einem <include>-Graphen wurde behoben. b/116542123

Version 1.0.0-alpha06

20. September 2018

Neue Funktionen

API-Änderungen

  • Nicht abwärtskompatible Änderung: Die Navigator-Methode navigate() verwendet jetzt einen Navigator.Extras-Parameter.
  • Die getGraph()-Methode von NavController ist jetzt NonNull b/112243286

Fehlerkorrekturen

  • NavigationUI.setupWithNavController() leitet keine Aufrufe mehr weiter, wenn er mit Daten aus einzelnen Zielen verwendet wird b/111961977
  • Navigator onSaveState() wird jetzt nur noch einmal aufgerufen b/112627079

Sichere Argumente

  • Die „Directions“-Klassen für Navigationsziele erweitern jetzt die „Directions“-Klasse der übergeordneten Elemente, sofern vorhanden. b/79871405
  • Die Klassen „Directions“ und „Args“ haben jetzt eine nützliche toString()-Implementierung b/111843389

Version 1.0.0-alpha05

10. August 2018

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der zu einem falschen Backstack-Verhalten führte. b/111907708
  • Fehlerkorrektur in equals() von Generated Args-Klassen. b/111450897
  • Behebung eines Buildfehlers bei Safe Args. b/109409713
  • Fehler bei der Umwandlung von Ressourcen-IDs in Java-Namen beheben b/111602491
  • Fehlermeldungen zur Nullbarkeit im Safe Args-Plug-in behoben.
  • Fügen Sie fehlende Anmerkungen für die Null-Zulässigkeit hinzu.

Version 1.0.0-alpha04

July 19, 2018

Navigation 1.0.0-alpha04 und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.

API-/Verhaltensänderungen

  • NavHostFragment setzt immer das aktuelle Fragment als primäres Navigationsfragment, damit die untergeordneten Fragmentmanager entfernt werden, bevor der äußere NavController entfernt wird. b/111345778

Sichere Argumente

  • Nicht abwärtskompatible Änderung: app:type wurde zu app:argType geändert, um Konflikte mit anderen Bibliotheken wie ConstraintLayout 2.0.0-alpha1 b/111110548 zu vermeiden.
  • Fehlermeldungen von Safe Args sind jetzt anklickbar b/111534438
  • Die Args-Klassen bestätigen jetzt, dass NonNull-Attribute tatsächlich nicht null sind. b/111451769
  • Den von NavDirections und Args generierten Klassen b/111455455 b/111455456 wurden zusätzliche NonNull-Anmerkungen hinzugefügt.

Fehlerkorrekturen

  • Ein Problem mit der System-Zurück-Schaltfläche nach dem Deeplink zu einem Fragmentziel wurde behoben b/111515685

Version 1.0.0-alpha03

12. Juli 2018

Navigation 1.0.0-alpha03 und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.

API-/Verhaltensänderungen

  • Die Methode „NavigationUI.setupWithNavController“ für die Symbolleiste wurde hinzugefügt b/109868820
  • Die NavigationUI.setupWithNavController-Methode für "CollapsingToolbarLayout" wurde hinzugefügt: b/110887183
  • „popBackStack()“ gibt jetzt „false“ zurück, wenn der Backstack leer ist oder die angegebene Ziel-ID nicht im Backstack enthalten ist b/110893637
  • FragmentNavigator ignoriert jetzt Navigationsaktionen, nachdem der FragmentManager den Status gespeichert hat. Dadurch werden Ausnahmen vom Typ „Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden“ vermieden. b/110987825

Safe Args

  • Nicht abwärtskompatible Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den Namen der entsprechenden NavDirections-Methoden durch die Camel-Case-Schreibweise ersetzt.
    • Beispiel: DemoController.index wird zu setDemoControllerIndex b/79995048.
    • Beispiel: action_show_settings wird zu actionShowSettings b/79642240
  • Funktionsgefährdende Änderung:Argumente werden jetzt standardmäßig als nicht null betrachtet. Wenn Sie Nullwerte für String- und Parcelable-Argumente zulassen möchten, fügen Sie app:nullable="true" b/79642307 hinzu.
  • Sie können app:type="long" jetzt mit Standardwerten in Form von „123L“ verwenden. b/79563966
  • Parcelable-Argumente werden jetzt unterstützt. Dabei wird für app:type ein vollständig qualifizierter Klassenname verwendet. Der einzige unterstützte Standardwert ist "@null" b/79563966.
  • Args-Klassen implementieren jetzt equals() und hashCode() b/79642246
  • Das Plug-in "Safe Args" kann jetzt auf Bibliotheksprojekte angewendet werden b/80036553
  • Das Safe Args-Plug-in kann jetzt auf Feature-Projekte angewendet werden b/110011752

Fehlerkorrekturen

  • Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
  • Probleme behoben, die beim mehrmaligen Navigieren durch verschachtelte Grafiken aufgetreten sind b/110178671
  • Probleme bei der Verwendung von setPopUpTo mit dem ersten Ziel im Diagramm b/109909461 behoben
  • Problem behoben, bei dem alle app:defaultValue-Werte als Strings übergeben wurden b/110710788
  • aapt2, das im Android Gradle Plugin 3.2 Beta 01 enthalten ist, fügt jetzt in Navigations-XML-Dateien für jedes android:name-Attribut Regeln zum Beibehalten hinzu b/79874119
  • Speicherleck beim Ersetzen des Standard-FragmentNavigators behoben b/110900142

Version 1.0.0-alpha02

7. Juni 2018

Verhaltensänderungen

  • FragmentNavigator verwendet jetzt setReorderingAllowed(true). b/109826220

  • Bei der Navigation werden jetzt Argumente decodiert, die aus Deeplink-URLs geparst wurden. b/79982454

Fehlerkorrekturen

  • Ein IllegalStateException wurde beim Aufrufen von „navigate“ aus den Lebenszyklusmethoden des Fragments behoben. b/79632233

  • Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um das Flimmern bei Verwendung von Animationen zu beheben. b/80160903

  • Ein IllegalArgumentException wurde korrigiert, das bei Verwendung von „defaultNavHost="true"“ als untergeordnetes Fragment aufgetreten ist. b/79656847

  • Ein StackOverflowError bei der Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065

  • Ein IllegalArgumentException wurde behoben, das beim Zurückwechseln zu einem verschachtelten Diagramm angezeigt wurde. b/80453447

  • Ein Problem mit sich überschneidenden Fragmenten bei Verwendung von launchSingleTop wurde behoben. b/79407969

  • Bei der Navigation wird jetzt der richtige synthetische Backstack für verschachtelte Diagramme erstellt. b/79734195

  • In der NavigationUI wird jetzt das richtige Element hervorgehoben, wenn ein verschachtelter Graph als MenuItem verwendet wird. b/109675998

API-Änderungen

  • Das clearTask-Attribut für Aktionen und die zugehörige API in NavOptions wurden eingestellt. b/80338878

  • Das Attribut launchDocument für Aktionen und die zugehörige API in NavOptions wurden eingestellt. b/109806636

Version 1.0.0-alpha01

8. Mai 2018

Navigation bietet ein Framework für die Erstellung der Navigation in der App. Diese erste Version ist 1.0.0-alpha01.