Navigation

Die Navigation ist ein Gerüst für zwischen "Zielorten" navigieren in einer Android-App, die eine konsistentes API unabhängig davon, ob Ziele als Fragmente, Aktivitäten oder anderen Komponenten.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
24. Juli 2024 2.7,7 - 2.8.0-beta06 -

Abhängigkeiten deklarieren

Um eine Abhängigkeit von Navigation hinzuzufügen, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .

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

Groovig

dependencies {
  def nav_version = "2.7.7"

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

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

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

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

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

Kotlin

dependencies {
  val nav_version = "2.7.7"

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

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

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

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

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

Safe Args

Fügen Sie die folgende classpath in die build.gradle-Datei der obersten Ebene ein, um Ihrem Projekt Safe Args hinzuzufügen:

Groovig

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

Kotlin

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

Sie müssen außerdem eines von zwei verfügbaren Plug-ins anwenden.

Wenn Sie Java-Sprachcode generieren möchten, der für Java oder gemischte Java- und Kotlin-Module geeignet ist, fügen Sie diese Zeile in die Datei build.gradle Ihrer App oder Ihres Moduls ein:

Groovig

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Zum Generieren von Kotlin-Code, der nur für Kotlin-basierte Module geeignet ist, können Sie alternativ Folgendes hinzufügen:

Groovig

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

Kotlin

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

Wie unter Zu AndroidX migrieren beschrieben, muss android.useAndroidX=true in Ihrer gradle.properties-Datei enthalten sein.

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

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .

Version 2.8

Version 2.8.0-beta06

24. Juli 2024

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem die Lint-Prüfungen von WrongStartDestinationType nicht nach Companion-Objekten des übergebenen Klassentyps suchten, wodurch der Fehler durch Lint nicht erkannt wurde. (I92b09)

Version 2.8.0-beta05

10. Juli 2024

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

Fehlerkorrekturen

  • singleTop-Navigationsabsturz behoben, der bei verschachtelten NavGraphs-Elementen dieselbe startDestination-Route teilte. (I17b94, b/294408596)

Version 2.8.0-beta04

26. Juni 2024

androidx.navigation:navigation-*:2.8.0-beta04 wurde veröffentlicht. Die 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)
  • Verbesserte Fehlermeldung für benutzerdefinierte Serializer, die direkt in Klassenfeldern über @Serializable(with =...) deklariert wurden, um klarzustellen, dass diese Funktion derzeit nicht unterstützt wird. (I052b0, b/341319151)
  • Die SavedStateHandleFactory-Test-API kann jetzt in Nicht-Android-Tests verwendet werden, erfordert aber Robolectric, um das Parsen von Argumenten mit Bundles zu unterstützen. (I76cdc, b/340966212)
  • Ein Absturz beim Wiederherstellen des Zustands beim Fortsetzen der App nach dem Prozessbeendigung mit der Verwendung von typsicherer Navigation in Compose wurde behoben. (Ia8f38, b/341801005)
  • In „Navigation Compose“ wurde ein Problem behoben, bei dem die NavBackStackEntry, zu der der Nutzer zurückkehrt, nach dem Abbrechen der proaktiven Zurück-Geste nie in den RESUMED-Lebenszyklusstatus 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 Predictive Back mit Navigation Compose verwenden, hat das eingeblendete Ziel jetzt die richtige Z-Reihenfolge und wird korrekt über dem eingehenden Ziel animiert. (I2077b, b/345993681)

Version 2.8.0-beta03

12. Juni 2024

androidx.navigation:navigation-*:2.8.0-beta03 wurde veröffentlicht. Die 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

  • Eine Dokumentation zu NavType.serializeAsValue und serializeAsValues wurde hinzugefügt, um hervorzuheben, 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 Null-CollectionNavType navigieren, ist das Ausgabeargument der Standardwert, der in Ihrer serialisierbaren Klasse deklariert wurde, oder der Rückgabewert von emptyCollection(), wenn kein Standardwert vorhanden ist. (I84158, Id630f, b/342672856)

Version 2.8.0-beta02

29. Mai 2024

androidx.navigation:navigation-*:2.8.0-beta02 wurde veröffentlicht. Die 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)
  • Es wurden Probleme bei der Wiederherstellung des Back-Stack-Status der Navigation behoben, die bei dem Versuch aufgetreten sind, einen Back-Stack-Eintrag wiederherzustellen, der nicht über die ID vom aktuellen Ziel aus erreichbar war. Da Routen durch IDs gestützt werden, waren mit Routen erstellte Ziele ebenfalls davon betroffen. Dadurch wird auch ein Absturz behoben, der durch den Aufruf von clearBackStack() verursacht wurde, bei dem dasselbe zugrunde liegende Problem aufgetreten ist. (I423c3, b/339908057)

Version 2.8.0-beta01

14. Mai 2024

androidx.navigation:navigation-*:2.8.0-beta01 wurde 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)
  • Es wurde eine Test-API zu navigation-testing hinzugefügt, um eine SavedStateHandle aus einem Kotlin-Serializable-Objekt zu erstellen. (Id4867, b/339080702)

Fehlerkorrekturen

  • Fehlende Parameterdokumente für Navigation Kotlin-DSL-Funktionen wurden 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.

Sichere Argumente in „Navigation Compose“

  • Die Arbeit zur Unterstützung der Sicherheit für Kompilierungszeittypen für Navigation Compose und Nutzer der Navigation Kotlin DSL auf Basis der Kotlin-Serialisierung wurde abgeschlossen und die zuvor experimentellen APIs sind jetzt stabil.

Diese Funktion verwendet die Kotlin-Serialisierung, damit Sie Ziele in Ihrer Navigationsgrafik ü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(onNavigateToProfile = { id ->
              navController.navigate(Profile(id))
          })
      }
      composable<Profile> { backStackEntry ->
          val profile: Profile = backStackEntry.toRoute()
          ProfileScreen(profile)
      }
  }

Weitere Informationen finden Sie im Blogpost „Navigation Compose“ und „Type Safety“.

Neue Funktionen

  • Das Artefakt navigation-fragment-compose stellt jetzt eine LocalFragment-Zusammensetzung für zusammensetzbare Methoden in einem ComposableFragment bereit. (If35e5)
  • NavType bietet jetzt integrierte Unterstützung für Listen vom Typ „Int“, „String“, „Boolesch“, „Float“ und „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

  • Fügt ein neues navigation-fragment-compose-Artefakt hinzu, das eine ComposableNavHostFragment-Alternative zu NavHostFragment enthält, mit der du composable-Ziele zu deinen Navigations-XML-Dateien hinzufügen kannst. Jedes composable-Ziel muss als oberste Ebene ohne Argument vom Typ @Composable ausgedrückt werden, dessen vollständig qualifizierter Name als android:name-Attribut für jedes Ziel verwendet wird. Beim Navigieren zu einem dieser Ziele wird ein enthaltenes Fragment erstellt, um den zusammensetzbaren Inhalt 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 sicherer Argumente in „Navigation Compose“ mit einem auf Kotlin-Serialisierung basierenden Ansatz wurde fortgesetzt. Diese APIs sind noch nicht fertig und mit der Anmerkung ExperimentalSafeArgsApi gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I562db282{/136ab, I562DB, I8ed5a

Version 2.8.0-alpha06

3. April 2024

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

API-Änderungen

  • Die Unterstützung sicherer Argumente in „Navigation Compose“ mit einem auf Kotlin-Serialisierung basierenden Ansatz hat begonnen. Diese APIs sind noch nicht fertig und mit der Anmerkung ExperimentalSafeArgsApi gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertiggestellt ist.

Fehlerkorrekturen

  • NavHost verwendet jetzt Alignment.TopStart als Standardargument für „contentAlignment“. Damit entspricht sie dem Standardwert für AnimatedContent und behebt einige Fälle einer unerwarteten Skalierung vom Mitteübergang. (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 an die startDestination von NavGraph direkt in der Route startDestination übergeben, ohne sich auf defaultValue zu verlassen. Dies gilt auch für das 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 list, Arrays und maps. (Ic6d63, b/188693139)
  • Alle Standard-NavType-Arrays (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType und StringArrayType) sind jetzt vom 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 Argumentnamen (z.B. {argName}) als gültige Werte für das stringbasierte NavTypes zulässig. Dadurch wird ein Problem behoben, bei dem ein solcher Wert für alle Typen als ungültig (oder ohne Wert) angesehen wird. (I18302, b/327274038)
  • NavController-Funktionen, die Routen wie navigate oder popBackStack unterstützen, können jetzt Routen, die mit Argumenten des Arrays NavTypes ausgefüllt sind, korrekt 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

  • Du kannst jetzt in „Navigation Compose“ die SizeTranform für deine Übergänge angeben, indem du sie im Rahmen der Initialisierung für die composable- und/oder navigation-Funktionen definierst. (I91062, b/296912651)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem NavHost in der Funktion „Navigation erstellen“ den Übergang nicht richtig anzeigte, wenn „System Zurück“ ohne Touch-Geste verwendet wurde. (Iceeae, b/325998468)

Version 2.8.0-alpha03

21. Februar 2024

androidx.navigation:navigation-*:2.8.0-alpha03 wurde 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

  • Es wurde ein Problem in Navigation behoben, das dazu führte, dass NavGraph ViewModels zu früh auf DESTROYED gesetzt wurden, da die ViewModel des zugehörigen Eintrags nicht Teil des gespeicherten Status war. (Ib6bb7, b/317581849)

Aktualisierung der Abhängigkeit

Version 2.8.0-alpha02

7. Februar 2024

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

Neue Funktionen

  • Navigation Compose unterstützt jetzt die Funktion „Predictive“ in der App über die neuen SeekableTransitionState APIs von „Compose-Animation“. So können Sie die Zurück-Touch-Geste verwenden, um das vorherige Ziel mit Ihrem benutzerdefinierten Übergang zu sehen, bevor Sie sich entscheiden, die Transaktion entweder mit der abgeschlossenen Bewegung zu bestätigen oder abzubrechen. (I8b8e9)

Version 2.8.0-alpha01

24. Januar 2024

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

Fehlerkorrekturen

  • Das Datenleck BackStackState wurde behoben, bei dem mehrere saveState-Aufrufe an einem Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste Status wiederhergestellt werden konnte. (I598b0, b/309559751)
  • Es wurde ein Problem behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn die NavigationUI-Hilfsprogramme zum Füllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)

Aktualisierung der Abhängigkeit

  • Die Funktion „Schreiben“ in Navigation hängt jetzt davon ab, dass mit Schreiben 1.7.0-alpha01 ein Problem behoben wird, das zu einer unerwarteten Skalierungsanimation führen könnte. (b/297258205)

Externer Beitrag

  • Danke, SimonMarquis, dass du das Anzeigeproblem für Nicht-String-Argumente behoben hast, bei denen die NavigationUI-Hilfsprogramme 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 wurde veröffentlicht. Version 2.7.7 enthält diese Commits.

Fehlerkorrekturen

  • Aus Navigation 2.8.0-alpha01 rückportiert: Das Leck BackStackState wurde behoben, bei dem mehrere saveState()-Aufrufe auf einem einzelnen NavBackStackEntry dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste gespeicherte Status wiederhergestellt werden konnte. (I598b0, b/309559751)
  • Aus der Navigation 2.8.0-alpha01 rückportiert: Es wurde ein Problem behoben, bei dem Nicht-String-Argumente nicht korrekt angezeigt wurden, wenn die NavigationUI-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)

Externer Beitrag

  • Danke, SimonMarquis, dass du das Anzeigeproblem für Nicht-String-Argumente behoben hast, bei denen die NavigationUI-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet wurden.

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

  • Die Funktion NavGraph equals() berücksichtigt jetzt korrekt die Knoten des anderen Graphen anstelle des aufrufenden Knotens. 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, die die neue Grafik intern mit der vorhandenen vergleichen, viel schneller sind und weniger übersprungene Frames verursachen. Vielen Dank, Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62)
  • NavHost rendert jetzt das Startziel des ersten Kompositionsdurchlaufs, anstatt darauf zu warten, dass die zweite Karte den aktualisierten Status liest. (I439a7, b/304852206)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, durch das Ihre Back-Stacks angezeigt wurden, wenn Sie setGraph mehrmals mit genau derselben Grafik aufrufen und nur dann, wenn ein Ziel in der Grafik vorhanden war, das eine Aktion zur Verknüpfung von zwei Zielen enthielt. (Beispiel 7)
  • Dialogfelder, die schnell nacheinander 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)

Aktualisierung der Abhängigkeiten

  • 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 wurde veröffentlicht. Version 2.7.4 enthält diese Commits.

Neue Funktionen

  • popUpTo wird jetzt unterstützt, um Routen mit Argumenten zu verwenden, um zu einem bestimmten Eintrag mit genau diesen Argumenten zurückzukehren. Dies entspricht der Unterstützung in popBackStack. (I731f4, b/299255572)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Unterbrechen einer Navigation durch eine andere Navigation mit popUpTo dazu führte, dass FragmentNavigator abstürzt. (I3c848, b/301887045)
  • Ein Problem wurde behoben, bei dem das Zurückdrücken des Systems dazu führte, dass currentDestination nicht korrekt 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 wurde veröffentlicht. Version 2.7.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem bei der Navigation mit Fragmenten wurde behoben, durch das die visibleEntries-Liste falsche Einträge enthielt. (I5caa9, b/288520638)
  • Es wurde ein Problem behoben, durch das für das Floating-Fenster-Ziel (z.B. Dialogs oder Bottomsheets) nie ein RESUMED-Lebenszyklus-Callback empfangen wurde. (I3b866, b/287505132)

Version 2.7.2

Version 2.7.2

6. September 2023

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

Fehlerkorrekturen

  • Die Navigation hängt jetzt vom Lebenszyklus 2.6.2 ab. Dabei wurde 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)
  • Es wurde ein Problem behoben, bei dem mehrere Dialogfelder in „Navigation Compose“ gleichzeitig angezeigt wurden, wobei die teilweise verdeckten Dialogfelder (z.B. nicht das oberste Dialogfeld) im Lebenszyklusstatus CREATED statt im Status STARTED befanden. (aosp/2728520, b/289257213)
  • Es wurde ein Problem behoben, bei dem mehrere Dialogfelder gleichzeitig in „Navigationseingabe“ angezeigt wurden. Wenn das oberste Dialogfeld geschlossen wurde, blieb das neue oberste Dialogfeld im Lebenszyklusstatus STARTED und wurde nicht korrekt in RESUMED verschoben. (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

  • Es wurde ein Problem in der Navigation mit der Funktion „Schreiben“ behoben, bei dem bei der Verwendung von Scaffold beim Versuch, auf Lifecycle.State.DESTROYED ViewModel zuzugreifen, eine Fehlermeldung aufgetreten ist. (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 Begleitpersonen

Da AnimatedContent jetzt stabil ist, konnten wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.

Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge, die bisher in AnimatedNavHost vorhanden waren, direkt in NavHost unterstützt wird.

Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen und die Funktion wird bald offiziell eingestellt. Außerdem werden wir eine Anleitung für die Rückkehr zu Navigation Compose selbst geben. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha) verwenden, sind keine weiteren Änderungen an der API erforderlich. (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)

Aktualisierung der Abhängigkeiten

  • Die Navigation hängt jetzt von der Funktion zum Schreiben ab 1.5.0 ab dem 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

  • Die Lambdas EnterTransition und ExitTransition, die als Teil des NavHost erstellt wurden, konnten möglicherweise im Arbeitsspeicher verbleiben, selbst nachdem das NavHost aus der Zusammensetzung entfernt wurde. Dieses Problem wurde behoben. (I893d0)

Bekannte Probleme

  • Bei Navigation 2.6.x gibt es ein Problem, dass bei der Navigation mit popUpTo ein IllegalArgumentException ausgelöst werden kann. Diese Ausnahme lässt sich eventuell vermeiden, indem Sie die Grafik neu strukturieren, wie hier vorgeschlagen. (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 Funktion „Navigationseditor“ hat jetzt die richtige Z-Reihenfolge für benutzerdefinierte Übergänge, bei denen die Option popUpTo zum Navigieren verwendet wird.(/Ib1c3a, b/285153947)

Version 2.7.0-beta01

7. Juni 2023

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

Fehlerkorrekturen

  • NavHost in Navigation Compose fängt jetzt System-Back-Aufrufe korrekt ab, auch wenn Activity STOPPED und RESUMED wurde. (Icb6de, b/279118447)

Version 2.7.0-alpha01

24. Mai 2023

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

Animationen von Begleitpersonen

Da AnimatedContent jetzt stabil ist, konnten wir den Code von Accompanist Navigation Animation zurück in Navigation Compose verschieben.

Das bedeutet, dass die gesamte Unterstützung für das Festlegen benutzerdefinierter Übergänge, die bisher in AnimatedNavHost vorhanden waren, direkt in NavHost unterstützt wird.

Es werden keine weiteren Änderungen an Accompanist Navigation Animation vorgenommen und die Funktion wird bald offiziell eingestellt. Außerdem werden wir eine Anleitung für die Rückkehr zu Navigation Compose selbst geben. Wenn Sie bereits die neueste Accompanist-Alphaversion (0.31.2-alpha) verwenden, sind keine weiteren Änderungen an der API erforderlich. (b/197140101)

Fehlerkorrekturen

  • In Navigation 2.6.0-rc02: Ein Problem mit der Navigation in Fragmenten wurde behoben, bei dem das System wieder nicht mehr funktionierte, wenn man mit popUpTo navigierte und ein Fragment aus dem Back Stack absetzte, ohne seine Ansicht neu zu erstellen. (Ieb8d4, b/281726455)

Aktualisierung der Abhängigkeiten

  • 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 wurde veröffentlicht. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen an Navigation seit Version 2.5.0

  • Die arguments von NavBackStackEntry und die an OnDestinationChangedListener übergebenen arguments sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht für nachfolgende Zugriffe auf die arguments- oder andere OnDestinationChangedListener-Instanz übernommen 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 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 jetzt diese Methode, um Uri.encode für die angegebene String aufzurufen.

Wichtige Änderungen an „Navigation Compose“ seit Version 2.5.0

  • Bei der Vorschau einer zusammensetzbaren Funktion mit NavHost wird jetzt standardmäßig startDestination von NavGraph angezeigt.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route) und NavController.clearBackStack(route) unterstützen jetzt Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen.
  • 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 bei der Navigation mit Fragmenten seit Version 2.5.0

  • NavHostFragment fängt die Zurück-Schaltfläche des Systems selbst nicht mehr ab. Dadurch kann die zugrunde liegende FragmentManager das System wieder verarbeiten. Dadurch kann für Fragment 1.7.0-alpha01 und höher auf Android U-Geräten eine In-App-Animation mit vorausschauendem Zurückgehen erstellt werden.
  • Wenn Sie die Navigation mit Fragmenten verwenden und versuchen, manuell ein FragmentTransaction auszuführen, mit dem ein Fragment zum Back Stack von FragmentManager hinzugefügt wird, wird jetzt ein IllegalArgumentException ausgelöst. Fragmente sollten immer über die navigate() API hinzugefügt werden.
  • 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.
  • FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und per POP aufgerufen wird. Das bedeutet, dass NavBackStackEntry Lifecycle jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor die letzten Lifecycle.State verschoben werden.
  • DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und per POP aufgerufen wird. Das bedeutet, dass der NavBackStackEntry-Lifecycle jetzt wartet, bis der DialogFragment-Lifecycle in DESTROYED verschoben wurde, bevor er in DESTROYED selbst verschoben wird.
  • Mit NavHostFragment können Sie NavController jetzt abrufen, sobald NavHostFragment an FragmentManager angehängt wurde, 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

  • Bei der Übergabe der ID einer Navigationsgrafik an AppBarConfiguration (z. B. über Menu) betrachtet NavigationUI jetzt nur das Startziel dieses Navigationsdiagramms als Ziel der obersten Ebene, anstatt jedes Ziel in der Grafik fälschlicherweise als Ziel der obersten Ebene zu markieren. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neue isTopLevelDestination-Funktion in AppBarConfiguration verfügbar.
  • Die setupWithNavController-Integrationen in NavigationUI für die Arbeit mit der oberen App-Leiste parsen jetzt R.string-Werte für ReferenceType-Argumente, die in android:label gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben.
  • NavigationUI stellt jetzt Logs bereit, wenn eine ausgewählte MenuItem nicht verwendet werden kann.

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

  • Es wurde ein Problem mit der Navigation in Fragmenten behoben, bei dem das System nicht mehr funktionierte, wenn mit popUpTo navigiert und ein Fragment aus dem Back Stack entfernt wurde, ohne seine Ansicht neu zu erstellen. (Ieb8d4, b/281726455)

Version 2.6.0-rc01

10. Mai 2023

androidx.navigation:navigation-*:2.6.0-rc01 wurde 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 in seinem 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 ein FragmentTransaction auszuführen, mit dem ein Fragment zum Back Stack von FragmentManager hinzugefügt wird, wird jetzt ein IllegalArgumentException ausgelöst. Fragmente sollten immer über die navigate() API hinzugefügt werden. (I6d38e)
  • Wenn es ein navigate gibt, das einen Eintrag hinzufügt, und ein popBackStack, das ihn im selben Frame entfernt, erreicht der resultierende oberste Eintrag im Back Stack nun beständig wieder den RESUMED Lifecycle.State. (Id8067, b/276495952)

Version 2.6.0-alpha09

5. April 2023

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

Fehlerkorrekturen

  • Es wurde eine Prüfung auf ungültige Route durchgeführt. Wenn ein NavDestination NavArgument enthält, der keine Nullwerte zulässt, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die genauso benannt sind wie das NavArgument, das keine Nullwerte zulässt. (Ic62bf, b/274697949)
  • Deeplink-Navigationen, die auf Action/MimeType basieren, schlagen jetzt fehl, wenn im Navigationsvorgang eine NavArgument fehlt, die keine Nullwerte zulässt. Dies ist für die NavDestination erforderlich, mit der die Action/MimeType übereinstimmt. (Ibfa17, b/271777424)
  • Wenn NavController eine Grafik mit derselben Route und denselben Zielen wie in der vorherigen Grafik festlegt, werden die aktuellen Grafikknoten und die Back-Stack-Ziele jetzt korrekt durch neue Instanzen ersetzt. Dadurch wurde ein Absturz behoben, der auftrat, wenn onLaunchSingleTop verwendet wurde, ohne den Status in Navigation Compose zu speichern. Dadurch wird auch ein Fehler behoben, durch den beim Navigieren zu Zielen, die mit der Stammgrafik verknüpft sind, ein falscher Back-Stack erstellt wird. (I5bc58, b/275258161, b/275407804)

Version 2.6.0-alpha08

22. März 2023

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

Neue Funktionen

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

Fehlerkorrekturen

  • Es wurde ein NullPointerException-Fehler behoben, der beim Senden einer verschachtelten Grafik mit einem Argument, das keine Nullwerte zulässt, enthält. (6b3581, b/249988437)
  • Wenn Sie das System nach einer Navigation mit popUpTo wieder aufrufen, wird der Status von NavController zum richtigen Eintrag gesetzt. (I3a8ec, b/270447657)
  • FragmentNavigator gibt jetzt ordnungsgemäße Pop-up-Einträge ein, wenn der Back-Stack über die Systemrückseite oder popBackStack() per Pop-up übertragen wird und ob die Transaktion Effekte für das Fragment verwendet. (I81bdf)
  • Fragmente zum FragmentNavigator hinzufügen FragmentManager ohne die Navigation führt nicht mehr zu einem Absturz. (b17204, b/274167493)

Aktualisierung der Abhängigkeiten

Version 2.6.0-alpha07

8. März 2023

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

Fehlerkorrekturen

  • Die API-Varianten getBackStackEntry, popBackStack und clearBackStack, die Routen verwenden, verwenden jetzt Routenmuster mit Argumenten, für die Nullwerte zulässig sind, und Abfrageparametern, für die Nullwerte zulässig sind (I22294, b/269302500).
  • Ein Problem wurde behoben, bei dem durch das Aufrufen von clearBackStack() über NavController der gespeicherte Status im Fragmentmanager, der mit dem gelöschten Back-Stack verknüpft war, nicht gelöscht wurde. (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)
  • Die Regression in 2.6.0-alpha06, die dazu führte, dass NavBackStackEntrys bei der Verwendung von Animation-Werten nicht in den Status RESUMED verschoben wurden, wurde behoben. (Ib3589, b/269646882)

Version 2.6.0-alpha06

22. Februar 2023

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

Neue Funktionen

  • Bei der Vorschau einer zusammensetzbaren Funktion mit NavHost wird jetzt standardmäßig startDestination von NavGraph angezeigt. (I2b89f)

API-Änderungen

  • Alle NavController navigate-Überlastungen werden 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)
  • Es wurde ein Fehler behoben, durch den beim Navigieren zu einem anderen Fragment über die Schaltfläche „Zurück“ des Systems die untere Leiste nicht auf das richtige ausgewählte Element aktualisiert wurde (If559f, b/269044426).

Bekannte Probleme

  • Wenn Sie die Navigation mit Fragmenten verwenden, erreicht der Lebenszyklus von NavBackStackEntry bei Verwendung von Animation-APIs RESUMED nicht. (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, erhält der NavBackStackEntry Lifecycle nach dem Wiederherstellen des Status nicht DESTROYED, wenn sein 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 Routen mit teilweise oder vollständig ausgefüllten Argumenten. Beachten Sie, dass die Argumente genau mit den Argumenten des Eintrags übereinstimmen müssen. (Iebd28, Ic678c, I3b37b, b/257514373)
  • FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und per POP aufgerufen wird. Das bedeutet, dass NavBackStackEntry Lifecycle jetzt wartet, bis die Spezialeffekte für das Ein- und Ausblenden des Fragments abgeschlossen sind, bevor die letzten Lifecycle.State verschoben werden. (I3cb19, b/238686802)
  • DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries aufgerufen und per POP aufgerufen wird. Das bedeutet, dass der NavBackStackEntry-Lifecycle jetzt wartet, bis der DialogFragment-Lifecycle in DESTROYED verschoben wurde, bevor er in DESTROYED selbst verschoben wird. (I53ee5, b/261213893)

API-Änderungen

  • NavigatorState bietet jetzt die prepareForTransition API, mit der Navigators NavBackStackEntries in Zwischen-Lifecycle.States verschieben können. (I42c21, b/238686802)
  • Du kannst jetzt über ein backstack-Attribut auf den Back-Stack zugreifen, der mit NavGraphNavigator oder ComposeNavigator verknüpft ist. ComposeNavigator zeigt jetzt auch den onTransitionComplete()-Callback an, um eine NavBackStackEntry, die einen Navigations- oder popBackStack-Vorgang ausgeführt hat, als abgeschlossen zu markieren. (I02062, I718db, b/257519195)

Fehlerkorrekturen

  • Der Navigatorstatus ist jetzt managementfrei, wenn die push/popWithTransition-APIs verwendet werden und der Eintrag bereits verarbeitet wird. (Iadbfa, b/261213893)
  • Bei Verwendung von launchSingleTop mit einem verschachtelten NavGraph werden alle Ziele, beginnend vom ursprünglichen Ziel bis zum zugehörigen startDestination, nur ordnungsgemäß oben im Backstack hinzugefügt. (Id4bea, b/253256629)
  • Die Navigation ersetzt jetzt korrekt die DialogFragment-Instanz, wenn zum selben Ziel navigiert wird, wobei das Flag launchSingleTop auf „true“ gesetzt ist. (I45b5a, b/149572817)
  • Navigation SafeArgs verursacht keinen Kompilierungsfehler mehr, wenn Argumente mit genau 19 Zeichen lang sind. (Id60bc, b/257110095)

Version 2.6.0-alpha04

9. November 2022

androidx.navigation:navigation-*:2.6.0-alpha04 wurde 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 jetzt diese Methode, um Uri.encode für die angegebene String aufzurufen. (Ie5213, b/247637434)
  • NavigationUI stellt jetzt Logs bereit, wenn eine ausgewählte MenuItem nicht verwendet werden kann. (I2af5a, b/247730357)

Fehlerkorrekturen

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

Aktualisierung der Abhängigkeit

  • Die Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. (Ib4ddc)
  • 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. (I47e49)

Version 2.6.0-alpha03

24. Oktober 2022

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

Fehlerkorrekturen

  • Über die Navigation 2.5.3: NavHost löst kein NoSuchElementException mehr aus, wenn kein Ziel zum Erstellen der Datei Crossfade verfügbar ist. Die Komposition wird jetzt einfach übersprungen. (Ieb46e, b/253299416)
  • In Navigation 2.5.3: 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)

Aktualisierung der Abhängigkeiten

Version 2.6.0-alpha02

5. Oktober 2022

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

Änderungen im Verhalten

  • Bei der Übergabe der ID einer Navigationsgrafik an AppBarConfiguration (z. B. über Menu) betrachtet NavigationUI jetzt nur das Startziel dieses Navigationsdiagramms als Ziel der obersten Ebene, anstatt jedes Ziel in der Grafik fälschlicherweise als Ziel der obersten Ebene zu markieren. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Diese Funktion ist auch für Ihren eigenen Code über die neue isTopLevelDestination-Funktion in AppBarConfiguration verfügbar. (Ie936e, b/238496771)

Fehlerkorrekturen

  • Die Komponente „navigation:navigation-fragment“ hängt jetzt von der Fragmentversion 1.5.2 ab. (I00ba4)
  • Der ausgewählte Menüpunkt wird beim Aufrufen eines FloatingWindow-Ziels, z. B. einem Dialogfeld, nicht mehr aktualisiert. (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

  • Die setupWithNavController-Integrationen in NavigationUI für die Arbeit mit der oberen App-Leiste parsen jetzt R.string-Werte für ReferenceType-Argumente, die in android:label gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben. (I5f803, b/167959935)
  • 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. (Id68c3, b/209977108)
  • 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. (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

  • Es wurde eine 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 an ein OnDestinationChangedListener übergebenen arguments sind jetzt nur noch eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen an diesen Bundles nicht für nachfolgende Zugriffe auf die arguments- oder andere OnDestinationChangedListener-Instanz übernommen 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 wurde veröffentlicht. Version 2.5.3 enthält diese Commits.

Fehlerkorrekturen

  • NavHost löst kein NoSuchElementException mehr aus, wenn kein Ziel für das Erstellen der 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 wurde veröffentlicht. Version 2.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Die dynamische Navigation versucht nun ordnungsgemäß, Ziele von Aktivitäten aus anderen Modulen zu installieren, bevor Sie dorthin navigieren. (Ia2c16, b/240292838)
  • Die Navigation ersetzt jetzt korrekt die Fragment-Instanz, wenn zum selben Ziel navigiert und das Flag launchSingleTop auf „true“ gesetzt wird. (I5a2f1, b/237374580)
  • Das Problem IllegalStateException wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, die ein übergeordnetes Element mit einem neuen Startziel mit Pop-up teilt. (I9f7cb, b/243778589)

Aktualisierung der Abhängigkeit

Version 2.5.1

27. Juli 2022

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

Fehlerkorrekturen

  • Navigation Safe Args löst in generierten Klassen keine Einstellungswarnungen mehr aus, wenn benutzerdefinierte Argumenttypen verwendet werden, die in einer Bundle gespeichert sind. (Id86ed, b/237725966)

Aktualisierung der Abhängigkeiten

Version 2.5.0

29. Juni 2022

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

Wichtige Änderungen seit Version 2.4.0

  • CreationExtras-Integration: Navigation kann jetzt eine zustandslose ViewModelProvider.Factory über CreationExtras des Lebenszyklus 2.5.0 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.
  • Zusätzlicher Support für das Namespace-Attribut „build.gradle“, das anstelle von „applicationId“ verwendet werden soll.

Weitere Änderungen

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

Version 2.5.0-rc02

15. Juni 2022

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

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der durch schnelles Umschalten zwischen unten angezeigten Zielen bei Verwendung der Funktion zum Erstellen von Navigationselementen NavHost verursacht wurde. (I3979a, b/234054916)
  • Navigation SafeArgs stürzt nicht mehr ab, wenn ein applicationIdSuffix und ein Namespace verwendet werden, bei dem applicationId nicht vorhanden ist, oder wenn sich applicationId und Namespace unterscheiden. (I754b1, b/233119646)
  • NavArgument hat jetzt eine benutzerdefinierte toString()-Funktion zum Anzeigen der internen Werte des Arguments. (I900a8)

Version 2.5.0-rc01

11. Mai 2022

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

Neue Funktionen

  • Neue Lint-Regel hinzugefügt, um zu warnen, dass <deeplink>-Elemente innerhalb von <activity>-Elementen in Ihrer navigation.xml-Datei nicht platziert werden (Ic15a5, b/178403185)

Fehlerkorrekturen

  • Zusammensetzbare Bereiche in NavHost und DialogHost werden jetzt in der erwarteten Reihenfolge angeordnet, d. h. inner zusammensetzbare Bereiche werden vor äußeren Bereichen platziert. zusammensetzbaren Funktionen. (I157e6)
  • Navigation SafeArgs verwendet jetzt PathSensitivity.RELATIVE in ArgumentsGenerationTask, um die Positionierung aus dem Cache zu ermöglichen. Das bedeutet, dass der Cache-Eintrag jetzt von einem CI-Build für einen lokalen Build wiederverwendet werden kann. (I5f67c, b/173420454)
  • Die Lint-Regel UnrememberedGetBackStackEntryDetector wurde aktualisiert, damit der remember-Aufruf, der den Aufruf von getBackStackEntry() umgibt, 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 wurde 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 behoben, die bei Verwendung eines ViewModel im Ziel dialog zu einer IllegalStateException führt, wenn das Dialogfeld geschlossen wird, indem entweder das System zurückkehrt oder außerhalb des Dialogfelds getippt wird. (Id7376, b/226552301)

Aktualisierung der Abhängigkeiten

  • Die Navigation hängt jetzt vom Lebenszyklus 2.5.0-beta01 ab. Damit wird ein IllegalStateException behoben, wenn eine NavHost in einem anderen NavHost auf einem nicht primären Navigationstab am unteren Rand verschachtelt wird, wenn mehrere Back-Stacks verwendet werden.

Version 2.5.0-alpha04

6. April 2022

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

API-Änderungen

Fehlerkorrekturen

  • NavHost hängt jetzt von visibleEntries aus NavController ab, um zu bestimmen, welche Einträge erstellt werden. Das bedeutet, dass bei Verwendung verschachtelter In NavHost sollte jetzt das innere NavHost-Objekt wie vorgesehen animiert werden. (I4ba2b, b/225394514)
  • Der von NavController bereitgestellte visibleEntries StateFlow basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags anstelle des aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren ganzen Elemente gleich bleibt, auch wenn der Hostlebenszyklus von navController unter „STARTED“ (GESTARTET) liegt. (I9e2a8, b/225394514)
  • SavedStateViewFactory unterstützt jetzt die Verwendung von CreationExtras, auch wenn es mit einem SavedStateRegistryOwner initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
  • NavDeepLink kann URIs jetzt mit einem einzelnen Suchparameter ohne Wert parsen. (I0efe8, b/148905489)
  • Ein leerer String wird jetzt in Deeplinks als gültige Argumente betrachtet. (I70a0d, b/217399862)
  • Navigation Safe Args stürzt nicht mehr ab, wenn Namespaces verwendet werden und AndroidManifest.xml nicht 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 an by navGraphViewModels übergeben um ein ViewModel zu erstellen. (I29217, b/217618359)

Fehlerkorrekturen

  • NavDeepLinks unterstützt jetzt korrekt codierte Zeilenvorschubzeichen, die in Routen-/Deeplink-URIs eingebettet sind. (I513d1, b/217815060)
  • CreationExtras funktioniert jetzt ordnungsgemäß mit NavBackStackEntries zum Erstellen von ViewModels. (I69161, b/217617710)
  • Sichere Navigationselemente unterstützen jetzt die Verwendung des definierten Namespace in build.gradle anstelle des Pakets im AndroidManifest ein. (I659ef, b/217414933)

Version 2.5.0-alpha02

9. Februar 2022

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

Fehlerkorrekturen

  • Über die Navigation 2.4.1: NavHostFragment stellt nun den Wert OnBackPressedDispatcher bei Verwendung von Viewbinding mit verschachtelten Grafiken. (Ifbb51, b/214577959)
  • Über Navigation 2.4.1: Wenn Deeplinks über mehrere verschachtelte NavGraphs erstellt werden, schließt der Back-Stack nun wie vorgesehen Zwischenziele ein. (I504c0, b/214383060)

Version 2.5.0-alpha01

26. Januar 2022

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

Neue Funktionen

Fehlerkorrekturen

  • Es wurde ein Problem behoben, durch das beim Zugriff auf ein erstelltes ViewModel-Objekt über by navGraphViewModels() aus onCreate() eines Fragments würde mit IllegalStateException fehlschlagen. (I8a14d)
  • NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal, Das bedeutet, dass die richtigen Argumente an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399)

Sichere Argumente

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

Version 2.4.2

Version 2.4.2

6. April 2022

androidx.navigation:navigation-*:2.4.2 wurde 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

  • NavHostFragment legt OnBackPressedDispatcher jetzt korrekt fest, wenn „viewbinding“ mit verschachtelten Grafiken verwendet wird. (Ifbb51, b/214577959)
  • Bei Deeplinks über mehrere verschachtelte NavGraphs schließt der Back-Stack nun wie vorgesehen Zwischenziele ein. (I504c0, b/214383060)
  • Aus der Navigation 2.5.0-alpha01 rückportiert: Es wurde ein Problem behoben, durch das beim Zugriff auf ein ViewModel über by navGraphViewModels() aus onCreate() eines Fragments würde mit einem IllegalStateException fehlschlagen. (I8a14d)
  • Aus Navigation 2.5.0-alpha01 rückportiert: NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal, Das bedeutet, dass die ordnungsgemäß decodierten Argumente nun an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399)
  • Von Navigation 2.5.0-alpha01 rückportiert: Sichere Args hängen jetzt von Version 7.0.4 des Android-Gradle-Plug-ins ab. Das bedeutet, dass Navigation Safe Args nicht mehr mit Android Studio-Versionen vor 7.0 kompatibel ist, aber jetzt mit dem Android-Gradle-Plug-in 7.1.0 und höher kompatibel ist. (I41c88, b/213086135, b/207670704)

Version 2.4.0

Version 2.4.0

26. Januar 2022

androidx.navigation:navigation-*:2.4.0 wurde 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 Null-Zulässigkeit von Klassen mit generischen Werten (z. B. abgeleitete NavType-Klassen) 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-Fenster-Layouts ü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.
  • Die Methode currentBackStackEntryAsFlow() für NavController stellt einen Flow bereit, der immer dann ausgegeben wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann alternativ zur manuellen Verwaltung eines OnDestinationChangedListener verwendet werden.
  • NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren NavBackStackEntry-Instanzen als StateFlow über die experimentelle visibleEntries-Eigenschaft abzurufen.
  • Es ist jetzt möglich, die NavType-Klasse zu erweitern, um benutzerdefinierte NavTypes. Benutzerdefinierte Typen werden nur beim Erstellen Ihrer Navigationsdiagramm programmatisch, wie zum Beispiel über die Navigation Graph Kotlin DSL
  • Navigation bietet jetzt die APIs findStartDestination() und getHierarchy(), mit denen die benutzerdefinierte NavigationUI implementiert werden kann. findStartDestination() ist eine Erweiterungsfunktion auf NavGraph. Sie sucht nach dem tatsächlichen Startziel, das angezeigt wird, wenn Sie zur Grafik navigieren, auch wenn startDestination selbst ein verschachteltes NavGraph-Element ist. getHierarchy() ist eine Funktion in NavDestination, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI-Methoden, die eine BottomNavigationView verwendet haben, wurden aktualisiert, sodass stattdessen die in Material 1.4.0 eingeführte Basisklasse NavigationBarView verwendet wird. Dadurch können diese Methoden mit dem NavigationRailView verwendet werden.

  • Wenn ein <action>-Element über XML aufgebläht wird, können für Animationsattribute Attribute verwendet werden, die mit der app:enterAnim="?attr/transitionEnter"-Syntax aus dem Design abgerufen werden.

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

Bei früheren Versionen von Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen gleichgeordneten Zielen identifiziert und es Ihnen ermöglicht, das Ziel entweder direkt oder über eine Aktion mit „navigate()“ zu erreichen. 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 zur eindeutigen Identifizierung eines Ziels in einer Navigationsgrafik mithilfe der route eingeführt. Eine Route ist ein String, der einen eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, für die eine Ziel-ID verwendet wurde, wurden verworfen und durch eine entsprechende API ersetzt, die eine Route verwendet.

Jede Route sollte als Pfadteil eines Uri behandelt werden, der das 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. Dabei gelten dieselben Regeln wie für implizite Deeplinks.

Alle NavController APIs, die bisher nur eine ID verwendet haben, haben jetzt eine Überlastung, die die Route String verwendet. 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.
  • Die getStartDestination() API wurde zugunsten eingestellt von getStartDestinationId().

Anders als bei der Navigation nach ID gelten für die Navigation nach Route dieselben Regeln wie für implizite Deeplinks: Sie können in jedem verschachtelten Graphen direkt zu jedem Ziel navigieren. Dadurch wird sichergestellt, dass diese Routen in Projekten mit mehreren Modulen verwendet werden können, ohne dass Sie jedem Ziel explizit einen extern sichtbaren Deeplink hinzufügen müssen.

Navigation „Compose“

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

Diese Version bietet folgende Vorteile:

  • Eine zusammensetzbare Funktion für NavHost, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL mit composable- und dialog-Zielen erstellen können. Außerdem werden optionale Navigatoren wie die von Accompanist Navigation Material unterstützt.
  • Obligatorische Unterstützung für Überblendung zwischen Zielen Begleitende Navigationsanimation kann verwendet werden, um den Wechsel zwischen Ein- und Ausblenden mithilfe von experimentellen Compose APIs zu 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 bereitgestellt, 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.
  • Geltungsbereich des rememberSaveable-Status auf Zielebene, sodass alle zusammensetzbaren Status gespeichert und automatisch wiederhergestellt werden, wenn Sie zu einem Ziel zurückkehren.
  • Vollständige Unterstützung für das Speichern und Wiederherstellen des Status von NavController und des Zielstatus nach dem Beenden von Prozessen und der Neuerstellung.
  • Automatische Integration mit der Zurück-Schaltfläche des Systems
  • Unterstützung für die Übergabe von Argumenten, das Anhängen von Deeplinks an Ziele und die Rückgabe von Ergebnissen an vorherige Ziele.

  • Erstellen Sie bestimmte Hilfskräfte in rememberNavController() und currentBackStackEntryAsState(), um den Windstatus zu ermöglichen und NavController mit zusammensetzbaren Funktionen außerhalb von 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 in der Anleitung zur Navigation erstellen.

Mehrere Back Stacks

Der NavController verwaltet den Back-Stack von Zielen. Er fügt dem Back-Stack Ziele hinzu, wenn Sie mit navigate() fortfahren, und entfernt sie, wenn Sie popBackStack() aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene Klasse NavOptions und die Integration in <action>-Elemente in der XML-Datei des Navigationsdiagramms wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen.

Im Rahmen dieser Änderung speichern und wiederherstellen die NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() jetzt automatisch den Status von Zielen, die eingeblendet wurden, sodass mehrere Back-Stacks ohne Codeänderungen unterstützt werden. 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 Status werden über verschiedene Oberflächen bereitgestellt:

  • In Navigations-XML kann das Element <action> jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwenden, um den Status aller Ziele, die über app:popUpTo geöffnet wurden, 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 navOptions Kotlin DSL können Sie die boolesche Eigenschaft restoreState und die boolesche Eigenschaft saveState im 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
      }
    }
    
  • Beim manuellen Erstellen eines NavOptions-Objekts mithilfe von NavOptions.Builder können Sie die setRestoreState() und die neue Überlastung für setPopUpTo() verwenden, für die ein zusätzlicher saveState-Parameter erforderlich ist.

    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.

  • Sie können die Methode clearBackStack() verwenden, um jeden mit popBackStack() oder popUpToSaveState gespeicherten Status zu löschen.

In allen Fällen speichert NavController den Status jeder NavBackStackEntry und stellt sie wieder her, einschließlich aller ViewModel-Instanzen auf Ebene des Navigationsziels. Die Navigator APIs wurden aktualisiert, damit jede Navigator das Speichern und Wiederherstellen ihres eigenen Status unterstützen kann.

Verhaltensänderungen

  • NavDeepLinkBuilder fügt jetzt hinzu PendingIntent.FLAG_IMMUTABLE in PendingIntent von createPendingIntent() zurückgegeben. Dabei wird sichergestellt, funktioniert diese API bei einer Ausrichtung auf Android 12 wie erwartet.
  • Die Navigation hängt jetzt davon ab, Lebenszyklus 2.3.1 und markiert jetzt setGraph(), popBackStack(), navigateUp() und navigate(), zum Aktualisieren von NavBackStackEntry Lifecycle als @MainThread und richten Sie die Navigation am Hauptthread aus. Erzwingung der Richtlinie im Lebenszyklus 2.3.0 eingeführt.
  • Über 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 enthält der aus Safe Args generierte Kotlin-Code jetzt Argumente ohne Standardwerten vor denen mit Standardwerten als Parameter.
  • Bei der Generierung von Argumenten werden jetzt Parameter ohne Standardwerte vor denen mit Standardwerten.
  • Safe-Args ist jetzt auf Android-Gradle-Plug-in 4.2.0 angewiesen. Das bedeutet, dass Sie die Warnung „applicationIdTextResource“ nicht mehr erhalten sollten.

Bekannte Probleme

  • Behoben in der Navigation 2.5.0-alpha01: Durch den Zugriff auf ein erstelltes ViewModel-Objekt wurde behoben. über by navGraphViewModels() aus onCreate() eines Fragments schlägt mit einem IllegalStateException fehl. (b/213504272)
  • Problem in Navigation 2.5.0-alpha01 behoben: Safe Args 2.4.0 ist nicht kompatibel. mit dem Android-Gradle-Plug-in 7.1.0 und höher. (b/213086135)
  • Wenn Sie Deeplinks mit mehreren verschachtelten Navigationsdiagrammen erstellen, werden nicht die vollständigen Backstack erstellen. (b/214383060)

Version 2.4.0-rc01

15. Dezember 2021

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

Verhaltensänderungen

  • In NavDeepLink geparste Argumente werden jetzt Rautezeichen genauso betrachtet wie Fragezeichen als Trennzeichen zwischen Argumenten. (I21309, b/180042703)

Fehlerkorrekturen

  • Deeplink ignoriert Argumente mit Werten, die mit dem Namen des Platzhalters identisch sind, nicht mehr. (If8017, b/207389470)
  • NavController stürzt nicht mehr ab, wenn ein verschachteltes Ziel mit Übergängen per Pop-up dargestellt wird, nachdem NavController wiederhergestellt wurde. (I0f7c9, b/205021623)
  • In der Fehlermeldung bei Verwendung eines ungültigen startDestination wird jetzt standardmäßig die Route des Startziels verwendet, sofern eine verfügbar ist. (I86b9d, b/208041894)

Fehlerkorrekturen bei der Funktion „Schreibassistent“

  • Ein möglicher Absturz wurde behoben, der durch schnelles Wechseln zwischen Startziel und einem anderen Ziel über die Elemente des unteren Navigationsmenüs 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)
  • Ein Problem wurde behoben, durch das ein ViewModel aus dem NavBackStackEntry eines Dialogfelds nicht abgerufen werden konnte, wenn das Dialogfeld geschlossen wurde. (I6b96d, b/206465487)
  • Es wurde ein Problem behoben, bei dem activity-Ziele mit der Funktion NavHost von Navigation Compose verwendet wurden, was zu einer unendlichen Neuzusammensetzung führte. (I8f64c)
  • Es wurde ein Leck in Navigation Compose behoben, bei dem eine Referenz der alten Aktivität nach einer Konfigurationsänderung oder dem Beendigung eines Prozesses festgehalten wurde. (I4efcb, b/204905432)

Fehlerkorrekturen bei sicheren Args

  • SafeArgs stürzt beim Versuch, benutzerdefinierte parcelable Arrays nach dem Beenden eines Prozesses wiederherzustellen, nicht mehr ab. (I618e8, b/207315994)
  • Ein Fehler in sicheren Argumenten, der boolesche Arrays keinen null-Wert zulässt, wurde behoben. (I8c396, b/174787525)

Version 2.4.0-beta02

3. November 2021

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

API-Änderungen

  • Sowohl explizite als auch implizite Für Deeplinks wird jetzt automatisch das Flag saveState hinzugefügt, wenn Sie zu einem anderen Diagramm navigieren. z. B. NavigationUI.setupWithNavController und mit mehreren Back-Stacks funktioniert. (IC8807)

Änderungen im Verhalten

  • Deeplink-Muster werden jetzt verzögert in NavDeepLink und nicht mehr während der Inflation kompiliert. Dadurch sollte sich die Inflationszeit von Navigationsgrafiken mit Deeplinks verbessern. (b8d257, b/184149935)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem NavBackStackEntries nach unten verschoben wurde Lifecycle.State.CREATED nach dem Wechsel zu Lifecycle.State.STARTED, wenn Die NavHost wird direkt zur setContent() der Aktivität hinzugefügt. (Ia5ac1, b/203536683)
  • Es wurde eine Race-Bedingung behoben, bei der ein DialogFragment Ziel aus dem Back Stack, bevor das Dialogfeld tatsächlich angezeigt wurde wird das Dialogfeld nicht geschlossen, Absturz aufgetreten, wenn das fehlerhafte Dialogfeld manuell die vom Nutzer geschlossen wurden. (I687e5)
  • Das Problem, dass der onNavDestinationSelected API unter NavigationUI würde true zurückgeben, auch wenn Sie navigate() dieses Navigationsdiagramms. Jetzt wird dieselbe Logik verwendet, intern von setupWithNavController verwendet, um nur wählen Sie die MenuItem aus, die dem aktuellen mit dem hierarchy des Ziels. (I2b053)

Version 2.4.0-beta01

27. Oktober 2021

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

Neue Funktionen

  • Als Alternative zu einer ID können Sie jetzt by navGraphViewModel mit einer Route verwenden, um die Verwendung des Navigations-Kotlins DSL mit Fragmenten besser zu unterstützen. (I901e3, b/201446416)

API-Änderungen

  • Die visibleEntries API ist jetzt experimentell. (I93f6f)

Fehlerkorrekturen

  • ViewModels werden bei Übergängen nicht mehr gelöscht. durch Wechseln zwischen denselben Bildschirmen unterbrochen wird (Id52d8, b/200817333).
  • NavDeepLink-Argumente, für die Nullwerte zulässig sind, sind nicht mehr zulässig ist ein Standardwert erforderlich, wenn Sie Deeplinks NavDestination. (I5aad4, b/201320030)
  • NavBackStackEntries jetzt mit unterschiedlichen Lebenszyklen länger als gleich gelten. Das bedeutet, dass NavHost alle bei der Navigation mit „singleTop“ und beim erneuten Auswählen Menüpunkte unten. (I1b351, b/196997433)
  • Problem mit AbstractListDetailFragment behoben die die Attribute layout_width und layout_weight verursacht haben, im Listenbereich, der von onCreateListPaneView() zurückgegeben wurde, falsch behandelt oder ignoriert werden. (f5fbf3)
  • Der visuelle Zustand der Dialogziele wird korrekt mit den DialogFragmentNavigators Bundesstaat. Das bedeutet, dass manueller Aufruf des asynchronen dismiss() API für DialogFragment löscht jetzt ordnungsgemäß alle Ziele des Dialogfelds über dem jetzt geschlossenen Dialogfeld. Dieses Dies hat keine Auswirkungen auf Fälle, in denen Sie popUpTo oder popBackStack(), um das Dialogfeld zu schließen. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener jetzt hat eindeutigere Fehlermeldungen für onDestinationChanged(). (IE742d)

Version 2.4.0-alpha10

29. September 2021

androidx.navigation:navigation-*:2.4.0-alpha10 wurde 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)
  • rememberNavController() nimmt jetzt eine optionale Gruppe von Navigator Instanzen, die dem NavController zurückgegeben, um eine bessere Unterstützung zu ermöglichen (optional) Navigatoren wie die von Navigation für Begleitpersonen. (I4619e)

Fehlerkorrekturen

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

Version 2.4.0-alpha09

15. September 2021

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

Neue Funktionen

  • Sie können jetzt die Methode clearBackStack() verwenden , um alle mit popBackStack() gespeicherten Status zu löschen oder popUpToSaveState. (I80a0f)
  • Sie können jetzt eine Liste mit Argumenten und/oder Deeplinks an Ihre Builder der verschachtelten Navigationsgrafik. Diese werden automatisch hinzu. (I8a470, b/182545357)

API-Änderungen

  • Die Kotlin-DSL-Funktion navArgument ist jetzt Teil von navigation-common statt navigation-compose. Dazu benötigen Sie Aktualisieren der Importe, um diese Funktion weiterhin zu verwenden. (I1d095)

Änderungen im Verhalten

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

Fehlerkorrekturen

  • Bei Verwendung von Navigation Compose werden NavGraphs nur DESTROYED, sobald alle ihre Kinder DESTROYED sind. (I86552, b/198741720)
  • NavDeepLink-Argumente, für die Nullwerte zulässig sind, sind nicht mehr zulässig erfordern einen Standardwert. (Ia14ef, b/198689811)
  • setGraph() mit einer neuen Grafik aufrufen werden jetzt auch alle gespeicherten Back-Stacks zum vorherigen Verhalten beim Pop-up des Back-Stacks zurück. (I97f96)
  • Folgendes Problem wurde behoben: OnDestinationChangedListener Instanzen und die currentBackStackEntryFlow wurden nicht benachrichtigt, wenn mit launchSingleTop. (Iaaebc)

Aktualisierung der Abhängigkeiten

Version 2.4.0-alpha08

1. September 2021

androidx.navigation:navigation-*:2.4.0-alpha08 wurde 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. Benutzerdefinierte Typen werden nur beim Erstellen Ihrer Navigationsdiagramm programmatisch, wie zum Beispiel über die Navigation Graph Kotlin DSL (I78440, b/196871885)

Änderungen im Verhalten

  • Beim Generieren von Aktionen enthält der aus Safe Args generierte Kotlin-Code jetzt Argumente ohne Standardwerten vor denen mit Standardwerten als Parameter. (Idb697, b/188855904)
  • Über Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) im Uri vorhanden sind. (#204, b/185527157)

Fehlerkorrekturen

  • getBackStackEntry und previousBackStackEntry werden verwendet composable() in Verbindung mit remember() keinen Fehler mehr Ausnahme: Kein Ziel befindet sich im Back-Stack. (I75138, b/194313238)
  • Navigation Compose wird jetzt korrekt neu zusammengesetzt, wenn zurückgewechselt wird Stapelargumente unter Verwendung von launchSingleTop=true. (Iebd69, b/186392337)
  • Es gibt dann kein ArrayIndexOutOfBoundsException mehr wenn setGraph mit einem Diagramm mit 13 oder 29 Zielen aufgerufen wird. (I1a9f1, b/195171984)
  • Der SafeArgs-Java-Generator sollte kein Lint mehr auslösen Warnungen beim Generieren von Args-Klassen. (I1a666, b/185843837)

Externer Beitrag

  • Vielen Dank, ospixd, dass du bei Deeplinks geprüft hast, ob alle erforderlichen Argumente (ohne Standardwerte) im 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

  • „Navigation Compose“ speichert den Status jetzt korrekt nach Konfigurationsänderungen und wenn Sie Grafiken ändern, während Sie die verschiedenen Back-Stack-Funktion. (If5a3d, b/195141957)
  • Erneute Auswahl desselben Tabs beim Verwenden der Navigation/Schreiben mit bei mehreren Back-Stacks nicht mehr zu einem leeren Bildschirm. (I860dc, b/194925622)
  • NavHost beobachtet jetzt Änderungen bei Lifecycle.State von NavBackStackEntrys bedeutet, dass die Verwendung einer NavHost in einem Fragment jetzt wenn sich der Lebenszyklus ändert, statt zu einem leeren Bildschirm zu wechseln. (I4eb85, b/195864489)
  • Beim Schließen eines DialogFragment konnte den NavController-Status nach der Neuerstellung Ihrer Aktivität (d.h. nach einer Konfigurationsänderung). (Icd72b)
  • Es wurde ein Problem behoben, durch das Ziel des Dialogfelds das NavController-Element Umgang mit der Zurück-Taste des Systems. Dies führt möglicherweise NavController, um die Zurück-Schaltfläche abzufangen auch wenn kein Back-Stack vorhanden ist. (If3b34)
  • Safe-args generieren jetzt automatisch ein toSavedStateHandle. für Argumente, mit denen der ViewModel-Code getestet werden kann. (If1e2d, b/193353880)

Version 2.4.0-alpha06

4. August 2021

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

API-Änderungen

  • Die Methoden requireSlidingPaneLayout() und requireDetailPaneNavHostFragment() für AbstractListDetailFragment wurden in getSlidingPaneLayout() bzw. getDetailPaneNavHostFragment() umbenannt. (I34a08)

Änderungen im Verhalten

  • Wenn Sie mit Animationen (z. B. Crossfade) navigieren, erreicht der Lifecycle des neuen Ziels jetzt erst RESUMED, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889)
  • Mit der Funktion NavHost von „Navigation Compose“ wird jetzt als Teil der ersten Komposition. (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)
  • Es wurde ein Problem in „Navigation Compose“ behoben, bei dem ein Deeplink NavBackStackEntry würde den RESUMED. (I192c5)
  • Es wurde ein Problem behoben, bei dem durch das Drücken 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. (aosp/1782668)

Version 2.4.0-alpha05

21. Juli 2021

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

Änderungen im Verhalten

  • NavHost von „Navigation Compose“ verwendet jetzt bei der Navigation immer Überblendungen durch Ziele zu erreichen. (I07049, b/172112072)
  • Sie können jetzt Änderungen an der Grafik eines NavHosts vornehmen. Grafiken mit demselben Start-Ziel und denselben Zielen in der Grafik wird als gleich betrachtet und der Back-Stack von NavController wird nicht gelöscht. (I0b8db, b/175392262)

Fehlerkorrekturen

  • Ein NoSuchElementException wurde behoben, wenn popBackStack() von LifecycleObserver aus aufrufen an NavBackStackEntry angehängt durch nicht wiederkehrende Aktualisierungen des NavController-Status. (I64621)
  • AbstractListDetailFragment erlaubt jetzt SlidingPaneLayout vollständig entfernt werden dein APK, wenn AbstractListDetailFragment nicht verwendet wird. (I611ad)
  • NavGraph und NavDestination überschreiben jetzt die Gleichheitsmethode, zwei Objekte mit denselben Werten als gleich angesehen 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 Artefakt navigation-fragment enthält jetzt eine vordefinierte Implementierung eines Zwei-Fenster-Layouts ü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 Artefakts navigation-compose unterstützt jetzt zusätzlich zu composable-Zielen dialog-Ziele. Diese Dialogziele werden jeweils in einer zusammensetzbaren Dialog angezeigt, die ü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 Alle aktuellen Aufrufe von add() müssen in „push()“ geändert werden. (Ie89fc, b/172112072)
  • Benutzerdefinierte Navigator-Instanzen können jetzt die APIs pushWithTransaction und popWithTransition auf NavigatorState verwenden, um ein Ziel asynchron zu übertragen oder zu übertragen. Beachten Sie, dass diese APIs noch von keinem der enthaltenen Navigatoren verwendet werden. (Ic4d7c, b/172112072)

Änderungen im Verhalten

  • NavDeepLinkBuilder fügt jetzt hinzu PendingIntent.FLAG_IMMUTABLE in PendingIntent von createPendingIntent() zurückgegeben. Dabei wird sichergestellt, funktioniert diese API bei einer Ausrichtung auf Android 12 wie erwartet. (If8c52)

Fehlerkorrekturen

  • Es wurde ein Problem mit <include-dynamic> behoben: An die Grafik übergebene Argumente werden nicht korrekt übergeben. zur dynamisch eingefügten Grafik hinzu. (I3e115)
  • Fehler behoben: NullPointerException beim Navigieren zu einem Ziel mithilfe eines string[]-Arguments mit dem Standardwert @null. (I1fbe8)
  • ProGuard-Regeln für @Navigator.Name hinzufügen, um Probleme zu beheben im R8 3.1-Full-Modus. (I2add9, b/191654433)
  • SafeArgs schlägt nicht mehr fehl, wenn Ihre App mit Kotlin Versionen vor dem 1.5.0. (Icd1ff, b/190739257)

Version 2.4.0-alpha03

16. Juni 2021

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem zwei navigate()-Aufrufe erforderlich waren, um eine enthaltene dynamische Grafik aufzurufen. (I7785c, b/188859835)
  • Eine in Navigation 2.4.0-alpha01 wo setupActionBarWithNavController() würde nicht um das Aufwärtssymbol korrekt zu entfernen, wenn Sie sich auf einem übergeordnetes Ziel an. (I5d443, b/189868637)
  • Ein IllegalStateException wurde behoben, popBackStack() nach vorherigem Hochladen aufrufen der Stammgrafik von NavController. (I2a330, b/190265699)
  • ProGuard-Regeln für by navArgs() wurden jetzt korrekt festgelegt anwenden, wenn navigation-common oder Artefakte verwendet werden die davon abhängen. (I68800, b/190082521)
  • Eine OnDestinationChangedListener, die Anrufe navigate(), wenn jetzt zum ersten Mal ein Rückruf eingeht einen zweiten Callback mit dem Ziel zu erhalten, aufgerufen wurde. (Ie5f9e, b/190228815)
  • Safe Args stürzt nicht mehr ab, wenn es mit dynamischen Funktionen verwendet wird. und AGP 7.0 und höher. (I69518, b/189966576)

Bekanntes Problem

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

Version 2.4.0-alpha02

2. Juni 2021

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

Neue Funktionen

  • Routen werden jetzt für Activity-, Fragment- und Dialog-Ziele 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 korrekt, aber es gibt immer noch nicht mehr unterstützte 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)
  • Navigation bietet jetzt die APIs findDestination() und getHierarchy(), mit denen die benutzerdefinierte NavigationUI implementiert werden kann. findDestination() ist eine Erweiterungsfunktion für NavGraph, die ein Ziel in der Grafik findet. getHierarchy() ist eine Funktion in NavDestination, mit der geprüft werden kann, ob ein bestimmtes Ziel innerhalb der Hierarchie eines anderen Ziels liegt.(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. Dadurch können diese Methoden mit dem NavigationRailView verwendet werden. (Ib0b36, b/182938895)

  • Wenn ein <action>-Element über XML aufgebläht wird, können Animationsattribute Verwenden Sie Attribute aus Ihrem Design mithilfe der app:enterAnim="?attr/transitionEnter"-Syntax. (I07bc1, b/178291654)

API-Änderungen

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

Fehlerkorrekturen

  • DialogFragmentNavigator verwendet jetzt den NavigatorState.pop() API zur Benachrichtigung der NavController Ein Dialogfeld wird durch das erneute Aufrufen des Systems geschlossen. außerhalb davon klicken, um sicherzustellen, Der Status NavController ist immer mit dem Status des Navigators. (I2ead9)
  • Die Navigation gibt kein ConcurrentModificationException mehr zurück, wenn Die Liste der OnDestinationChangedListeners wird mit einem onDestinationChanged-Callback bearbeitet. (Ib1707, b/188860458)

  • „Sichere Args“ stürzt bei Generierungsversuche nicht mehr ab. Richtungseigenschaften in Kotlin. (Id2416, b/188564435)

  • Die setId-Methode für NavDestination ist jetzt korrekt annotiert mit @IdRes, 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 ist jetzt auf Android-Gradle-Plug-in 4.2.0 angewiesen. 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 wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Die Methode currentBackStackEntryAsFlow() für NavController stellt einen Flow bereit, der immer dann ausgegeben wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann alternativ zur manuellen Verwaltung eines OnDestinationChangedListener verwendet werden. (I19c4a, #89, b/163947280)

Mehrere Back Stacks

Der NavController verwaltet den Back-Stack von Zielen. Er fügt dem Back-Stack Ziele hinzu, wenn Sie mit navigate() fortfahren, und entfernt sie, wenn Sie popBackStack() aufrufen oder die Schaltfläche „Zurück“ des Systems auslösen. Die vorhandene Klasse NavOptions und die Integration in <action>-Einträge in der XML-Datei des Navigationsdiagramms wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen. (b/80029773)

Im Rahmen dieser Änderung speichern und wiederherstellen die NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() jetzt automatisch den Status von Zielen, die eingeblendet wurden, sodass mehrere Back-Stacks ohne Codeänderungen unterstützt werden. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode zur Integration mehrerer Back Stacks. (Ie07ca)

Die zugrunde liegenden APIs zum Speichern und Wiederherstellen des Status werden über verschiedene Oberflächen bereitgestellt:

  • In Navigations-XML kann das Element <action> jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwenden, um den Status aller Ziele, die über app:popUpTo geöffnet wurden, 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 navOptions Kotlin DSL können Sie die boolesche Eigenschaft restoreState und die boolesche Eigenschaft saveState im 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
      }
    }
    
  • Beim manuellen Erstellen eines NavOptions-Objekts mithilfe von NavOptions.Builder können Sie die setRestoreState() und die neue Überlastung für setPopUpTo() verwenden, für die ein zusätzlicher saveState-Parameter erforderlich ist.

    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 NavController den Status jeder NavBackStackEntry und stellt sie wieder her, einschließlich aller ViewModel-Instanzen auf Ebene des Navigationsziels. Die Navigator APIs wurden aktualisiert, damit jede Navigator das Speichern und Wiederherstellen ihres eigenen Status unterstützen kann.

Die ComposeNavigator, die für composable-Ziele in Navigation Compose verwendet werden, und FragmentNavigator und DynamicFragmentNavigator für <fragment>-Ziele in Navigation mit Fragmenten wurden aktualisiert. Beide verwenden jetzt die neuen Navigator APIs und unterstützen das Speichern und Wiederherstellen des Status.

Navigationsrouten

Eine Route ist ein String, der ein Ziel eindeutig identifiziert. Früher wurde es nur in Navigation Compose verwendet. Inzwischen gehört dieses Konzept zu den wichtigsten Navigations-APIs. Dies bietet eine Alternative zur Verwendung von Ganzzahl-IDs, wenn Sie Ihre Grafik über die Navigation Kotlin DSL erstellen. (b/172823546)

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

Dies hatte einige Auswirkungen auf die API:

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

Für Entwickler, die von früheren Versionen von Navigation Compose auf Navigation Compose 2.4.0-alpha01 aktualisieren, bedeutet dies, dass die folgenden Importe in 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 Attribut route in NavDestination ersetzt, sodass Sie navBackStackEntry.destination.route direkt aufrufen können.

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 früher Teil der -ktx-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die -ktx-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. (b/184292145)
  • NavDeepLinkBuilder unterstützt jetzt das Hinzufügen mehrere unterschiedliche Ziele an die generierte Back Stack ab. (I3ee0d, b/147913689)
  • Factory-Funktionen für DynamicNavHostFragment hinzufügen (Icd515, b/175222619)
  • Die eindeutige ID eines NavBackStackEntry wird jetzt als Teil der öffentlichen API bereitgestellt. (Ie033a)
  • Die Felder name und argument sowie die destruktiven Funktionen von NamedNavArgument sind jetzt öffentlich. (#174, b/181320559)
  • Es wurde eine neue NavBackStackEntry#provideToCompositionLocals-Erweiterung eingeführt, die den relevanten lokalen Kompositionen die NavBackStackEntry bereitstellt. (#175, b/187229439)

Sichere Argumente

  • Sichere Args generiert jetzt eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse. (Nr. 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)
    }
    
  • Sichere Argumente wurden aktualisiert, sodass sie von KotlinPoet 1.8.0 abhängig sind. (Nr. 172, b/183990444)

Änderungen im Verhalten

  • Die Navigation hängt jetzt davon ab, Lebenszyklus 2.3.1 und markiert jetzt setGraph(), popBackStack(), navigateUp() und navigate(), zum Aktualisieren von NavBackStackEntry Lifecycle als @MainThread und richten Sie die Navigation auf den Hauptthread aus. Erzwingung der Richtlinie im Lebenszyklus 2.3.0 eingeführt. (b/171125856)
  • Beim Parsen von Enum-Argumenten von Deeplinks wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So kann ein Deeplink wie http://www.example.com/red mit einem www.example.com/{color}-Deeplink übereinstimmen, selbst wenn die Aufzählung den Wert RED hat. (#152, b/135857840)

Compose-Kompatibilität

  • androidx.navigation:navigation-compose:2.4.0-alpha01 ist nur mit der E-Mail-Adresse „Compose“ ab Version 1.0.0-beta07 kompatibel.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks mit genau übereinstimmendem Suffix hatten. (Nr. 153, b/184072811)
  • NavHostFragment unterstützt jetzt benutzerdefinierte Navigatoren mit identischem @Navigator.Name("dialog")-Wert als Standard-DialogFragmentNavigator. (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, simonschiller, dass Sie die Unterstützung für sichere Args generieren, die eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse generiert. (Nr. 122, b/136967621)
  • Vielen Dank, Bradleycorn, dass beim Parsen von Enum-Argumenten aus Deeplinks die Groß-/Kleinschreibung berücksichtigt wird. (#152, b/135857840)
  • Vielen Dank für osipxd, dass du ein Problem behoben hast, bei dem Platzhalter für nachgestellte Argumente Vorrang vor Deeplinks mit exakt passendem Suffix haben. (Nr. 153, b/184072811)
  • Vielen Dank, tatocaster, dass du Safe Args aktualisiert hast, sodass sie von KotlinPoet 1.8.0 abhängig sind. (Nr. 172, b/183990444)
  • Vielen Dank, jossiwolf, dass du die Felder name und argument und die destruktiven Funktionen von NamedNavArgument veröffentlicht hast. (#174, b/181320559)
  • Danke, jossiwolf für die Einführung der neuen NavBackStackEntry#provideToCompositionLocals-Erweiterung, mit der die NavBackStackEntry für die relevanten lokalen Nutzer bereitgestellt wird. (#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 wurde veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

  • NavHost akzeptiert jetzt eine Modifier, die an den zusammensetzbaren Container, der die zusammensetzbaren Zielanwendungen umschließt. (I85aca, b/175125483)

Fehlerkorrekturen

  • NavHost funktioniert jetzt auch wenn kein OnBackPressedDispatcherOwner gefunden wird, Dies ist bei der Vorschau von NavHost der Fall. (I7d8b4)
  • Die Funktion „Schreibassistent“ hängt jetzt von der Navigation 2.3.5 ab. Damit wurde ein Problem behoben, das bei der Verwendung von BackHandler innerhalb eines NavHost-Ziels aufgetreten ist. (I7e63b, b/182284739)

Version 1.0.0-alpha09

10. März 2021

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

API-Änderungen

  • LocalViewModelStoreOwner.current gibt jetzt Folgendes zurück: ViewModelStoreOwner, für die Nullwerte zulässig sind, um besser bestimmen zu können ob eine ViewModelStoreOwner in der aktuellen Zusammensetzung. APIs, die eine ViewModelStoreOwner erfordern, z. B. als viewModel() und NavHost, wird trotzdem eine Ausnahme ausgelöst. wenn kein ViewModelStoreOwner festgelegt ist. (Idf39a)

Fehlerkorrekturen

  • Die Funktion „Schreibassistent“ hängt jetzt von Navigation 2.3.4 ab mit der Fehlerbehebung für den Versuch, dasselbe ViewModelStore festzulegen, nach dem Festlegen des Graphen zurück. (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.

Aktualisierung der Abhängigkeiten

Version 1.0.0-alpha06

28. Januar 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 wurde 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 verknüpften NavBackStackEntry zurückgibt. (If8931)

Version 1.0.0-alpha05

13. Januar 2021

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

Aktualisiert und abhängig von Compose 1.0.0-alpha10.

Version 1.0.0-alpha04

16. Dezember 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 wurde 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 wurde 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 wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • Beim Erstellen der Navigation werden jetzt NavOptions für die Verwendung von popUpTo unterstützt und launchSingleTop-Operationen (If96c3, b/171468994)
  • Es wurde eine Navigationsfunktion hinzugefügt, die eine Route statt einer ID, mit der Sie verschachtelte Grafiken in „Navigation Compose“ erstellen DSL (I1661d)
  • startDestination kommt nun vor der Route in der Liste einer Parameter für einen NavHost (Ie620e)
  • Sie können jetzt eine Grafik mit der Route als Ausgangspunkt erstellen Ziel außerhalb eines zusammensetzbaren NavHost-Elements. (Iceb75)

Version 1.0.0-alpha01

28. Oktober 2020

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

Neue Funktionen

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

Diese erste Version bietet folgende Vorteile:

  • Eine zusammensetzbare Funktion für NavHost, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL erstellen können.
  • Geltungsbereich des Lebenszyklus, ViewModel und des gespeicherten Status auf Zielebene.
  • Automatische Integration mit der Zurück-Schaltfläche des Systems
  • Unterstützung für die Übergabe von Argumenten, das Anhängen von Deeplinks an Ziele und die Rückgabe von Ergebnissen an vorherige Ziele.
  • Erstellen Sie bestimmte Hilfskräfte in rememberNavController() und currentBackStackEntryAsState(), um den Windstatus zu ermöglichen und NavController mit zusammensetzbaren Funktionen außerhalb von 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 wurde veröffentlicht. Version 2.3.5 enthält diese Commits.

Neue Funktionen

  • Wenn du über NavDeepLinkRequest oder Uri navigierst, kannst du jetzt Folgendes tun: auf Uri, Aktion und MIME-Typ im resultierenden Ziel zugreifen, Der Intent aus Argumenten über KEY_DEEP_LINK_INTENT wird abgerufen, was die Funktionalität widerspiegelt, die bereits für externe Deeplinks verfügbar ist. (I975c3, b/181521877)

Fehlerkorrekturen

  • OnBackPressedCallbacks wurde einem Disponenten mit der NavBackStackEntry als LifecycleOwner fängt jetzt ordnungsgemäß ab Wenn der Aktivitätslebenszyklus STOPPED ist, dann STARTED (Iff94f, b/182284739)
  • Beim Parsen der Deeplink-Domain wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden, sodass www.example.com sowohl mit www.example.com als auch mit www.Example.com übereinstimmt. Bei Namen von Abfrageparametern wird weiterhin zwischen Groß- und Kleinschreibung unterschieden. (Nr. 144, b/153829033)
  • Ein NullPointerException wurde behoben, das auftreten konnte, wenn ein Ziel mehrere Standardargumente hat, die keine Nullwerte zulassen können, und Sie zu diesem Ziel navigieren, während Sie nur einen Teil dieser Argumente überschreiben. (aosp/1644827)

Aktualisierung der Abhängigkeiten

  • 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, bentrengrove für die Pull-Anfrage, durch die beim Parsen der Deeplink-Domain die Groß-/Kleinschreibung nicht berücksichtigt wird. (Nr. 144, b/153829033)

Version 2.3.4

Version 2.3.4

10. März 2021

androidx.navigation:navigation-*:2.3.4 wurde 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 ganzzahlige Rohdaten als auch Hexadezimalwerte mit dem Präfix 0x unterstützt. (Nr. 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. (Nr. 117, b/173766247)

Fehlerkorrekturen

  • Ein hängender Installationsfortschritt bei der Nutzung dynamischer Funktionen von Navigation wurde behoben. (Ib27a7, b/169636207)
  • setViewModelStore oder setLifecycleOwner wird mit derselben Objekt, das bereits festgelegt wurde, ist nun ein Null-Vorgang (Idf491, b/177825470).
  • Safe-Args fügt jetzt Unterdrückungsanmerkungen zu den richtigen Methoden hinzu wenn Sie Java verwenden. (I8fbc5, b/179463137)

Externe Beiträge

  • Vielen Dank an JvmName für die Pull-Anfrage, mit der die ReferenceType-Argumente jetzt richtig geparst werden können, wenn sie als Teil eines Deeplink-URI gesendet werden. (Nr. 127, b/179166693)
  • Vielen Dank, tatocaster, dass die Pull-Anfrage defaultValue für ein Argument mit app:argType=”float” zugelassen hat und jetzt ganzzahlige Standardwerte unterstützt. (Nr. 117, b/173766247)

Version 2.3.3

Version 2.3.3

27. Januar 2021

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

Fehlerkorrekturen

  • Es gibt keinen Absturz mehr beim Drücken von NavBackStackEntry bevor Lifecycle in CREATED verschoben wird. (Ie3ba3)
  • Problem mit b/171364502 behoben, bei dem das Aufrufen einer mit dem Wert 0 für Animationsressource zu ResourceNotFoundException. (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

  • Es wurde eine Regression in NavigationUI behoben, bei der über ein <activity>-Ziel mit onNavDestinationSelected keine Aktivität zur Aktivität aufgerufen werden konnte. (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 nicht an OnDestinationChangedListener-Instanzen gesendet wurden, wenn launchSingleTop verwendet wurde. (I2c5cb)
  • Ein Problem wurde behoben, bei dem beim Aufrufen eines verschachtelten Navigationsdiagramms keine neue Graph-Instanz im Back-Stack erstellt wurde. (Ifc831)
  • Es wurde ein Problem behoben, bei dem die Verwendung von navigate() mit einem popUpTo, das das letzte Ziel in einem Navigationsdiagramm entfernt hat, nicht sofort das Navigationsdiagramm zerstört und aus dem Back-Stack entfernt hat. (I910a3)
  • Navigation SafeArgs verwendet jetzt die KotlinPoet-Version 1.7.2, 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

  • Standard-Animator-Ressourcen wurden der Navigations-UI hinzugefügt und werden gegenüber den Standard-Animationsressourcen empfohlen. (b/167430145)
  • NavOptions überschreiben jetzt den Hashcode und die Gleichheitsmethode (b/161586466).
  • Bei der Navigation wird jetzt das aktuelle Ziel in die Ausnahme mit der Ausnahme „Kein Ziel mit ID“ aufgenommen, wodurch die Fehlerbehebung für Entwickler verbessert werden sollte. (b/168311416)

Fehlerkorrekturen

  • „Safe Args“ umschließt die Rückgabezeile nicht mehr, auch wenn der generierte Argumentklassenname länger als 100 Zeichen ist. (b/168584987)

Abhängigkeitsänderungen

  • navigation-ui ist jetzt abhängig von DrawerLayout 1.1.1 Achte darauf, dass NavigationUI die Leiste öffnen kann auch wenn Sie LOCK_MODE_LOCKED_CLOSED oder LOCK_MODE_LOCKED_OPEN (b/162253907)
  • „Sichere Args“ hängt jetzt von KotlinPoet 1.6.0 (aosp/1435911) ab
  • Sichere Args sind jetzt abhängig von AGP 4.0.1 (aosp/1442337)

Version 2.3.0

Version 2.3.0

24. Juni 2020

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

Große Ä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 Mit 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 Back-Stack der Navigation zugeordnet ist, können Sie jetzt auf ein SavedStateHandle-Objekt zugreifen, das zum Speichern kleiner Mengen des gespeicherten Zustands geeignet ist, der einem bestimmten Back-Stack-Eintrag zugeordnet werden soll. 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 für Aktion und MIME-Typ 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 Mit NavDeepLinkRequest navigieren.

Bekannte Probleme

  • In der Manifestzusammenführung werden Deeplink-Aktionen und MIME-Typen noch nicht unterstützt. Bis diese Schritte abgeschlossen sind, enthalten die über das <nav-graph>-Element in deinem Manifest generierten <intent-filter>-Elemente weder deinen MIME-Typ noch im <data>-Element deines benutzerdefinierten <action>-Objekts. Du musst deinem Manifest manuell eine entsprechende <intent-filter> hinzufügen.

Version 2.3.0-rc01

10. Juni 2020

androidx.navigation:navigation-*:2.3.0-rc01 wurde 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 ausgegebenen destination is unknown-Ausnahmen enthalten jetzt zusätzliche Debugging-Informationen, mit denen sich der Status von NavController ermitteln lässt. (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 Lifecycle von NavBackStackEntry nach dem Beenden eines Prozesses nicht korrekt 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)
  • Bei Verwendung von singleTop werden die Argumente von NavBackStackEntry jetzt korrekt aktualisiert und die aktualisierten Argumente werden an alle OnDestinationChangeListener-Instanzen gesendet. (b/156545508)

Aktualisierung der Abhängigkeiten

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 unterstützt: app:action und app:mimeType. NavController unterstützt jetzt die Navigation über eine beliebige Kombination dieser Felder über die neue NavDeepLinkRequest-Klasse. (b/136573074, b/135334841)

API-Änderungen

  • Die DSL-Unterstützung von Kotlin für dynamische Navigationsziele wurde erheblich erweitert. (b/148969800)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Deeplink-Intents bei der 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

  • Für dynamische Graph-Includes mit <include-dynamic> müssen Sie app:graphPackage nicht mehr angeben. Es wird ein Standard-String verwendet, indem nach einem Punkt das Suffix moduleName zum applicationId hinzugefügt wird. Wenn du graphPackage anpassen musst, wird jetzt ein ${applicationId}-Platzhalter unterstützt. (b/152696768)
  • In Navigationsdiagramm Kotlin DSL ist jetzt ein defaultArguments Map für Aktionen verfügbar, was die Möglichkeit widerspiegelt, Standardwerte für <action>-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)

Fehlerkorrekturen

  • Aus Navigation 2.2.2: Behebung eines IllegalStateException, wenn Deeplinks zum Startziel der Grafik verwendet werden und mehrere NavHostFragment-Instanzen in deiner Aktivität vorhanden waren. (b/147378752)

Aktualisierung der Abhängigkeiten

Version 2.3.0-alpha04

18. März 2020

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

Neue Funktionen

  • Zusätzliche Unterstützung für Aktivität von Funktionsmodulen und Fragmentziele in Navigation Kotlin DSL. (b/148969800)

API-Änderungen

  • Die DynamicExtras-Klasse verwendet kein Builder-Muster mehr und kann jetzt direkt erstellt werden. (aosp/1253671)
  • Für DynamicActivityNavigator wird jetzt im Konstruktor ein Context anstelle von Activity verwendet. (aosp/1250252)

Fehlerkorrekturen

  • NavigationUI ignoriert leere Labels (d.h. ein Ziel mit android:label=””) nicht mehr und legt den Titel nun korrekt auf einen leeren String fest. (b/148679860)

Aktualisierung der Abhängigkeiten

  • Die Artefakte für dynamische Navigationsfunktionen hängen jetzt von Play Core 1.6.5 ab. (b/149556401)

Version 2.3.0-alpha03

4. März 2020

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

API-Änderungen

  • Anstatt sich auf die konkrete DrawerLayout-Klasse zu verlassen, AppBarConfiguration verwendet jetzt die mit CustomView 1.1.0-alpha02 eingeführte Openable-Oberfläche (die mit DrawerLayout wird ab DrawerLayout 1.1.0-alpha04 implementiert, sodass du benutzerdefinierte Implementierungen von Openable mit NavigationUI verwenden kannst. (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

  • Navigation ist wieder von Core 1.2.0 abhängig und hängt jetzt von Core 1.1.0 ab. So müssen Entwickler nicht zu einer neueren Abhängigkeit wechseln, wenn Navigation keine neuen APIs in Core 1.2.0 benötigt.

Version 2.3.0-alpha02

19. Februar 2020

androidx.navigation:navigation-*:2.3.0-alpha02 wurde 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 Beispiel für einen Anwendungsfall finden Sie unter Ergebnisse zurückgeben. (b/79672220)

API-Änderungen

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

Fehlerkorrekturen

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

Abhängigkeitsänderungen

Version 2.3.0-alpha01

5. Februar 2020

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

Neue Funktionen

  • Das neue navigation-testing-Artefakt stellt eine TestNavHostController-Klasse bereit. Diese Klasse bietet eine Alternative zur Verwendung eines simulierten NavController beim Testen der Navigation, mit dem Sie das aktuelle Ziel festlegen und den Back-Stack nach Navigationsvorgängen überprüfen können. (b/140884273)
  • Mit dem neuen navigation-dynamic-features-fragment (und seiner Transitiv-Abhängigkeit navigation-dynamic-features-runtime) kannst du Ziele oder vollständige Navigationsdiagramme (über <include-dynamic>) aus Funktionsmodulen hinzufügen, um die nahtlose Installation von On-Demand-Funktionsmodulen bei der Navigation zu diesen Zielen zu ermöglichen. Weitere Informationen finden Sie unter Mit Funktionsmodulen navigieren. (b/132170186)

Fehlerkorrekturen

  • In der Navigation 2.2.1: Deeplinks ohne Suchparameter ignorieren jetzt korrekt alle Abfrageparameter. Sie werden nicht an nachgestellte {argument}-Elemente angehängt oder entsprechen nicht dem Deeplink. (b/147447512)
  • Aus Navigation 2.2.1: Die navigation-ui ProGuard-Regeln für DrawerArrowDrawable wurden aktualisiert, um sicherzustellen, dass android.enableJetifier=true nicht 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 wurden freigegeben. Version 2.2.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein IllegalStateException behoben, bei dem Deeplinks zum Startziel der Grafik verwendet werden, wenn in deiner Aktivität mehrere NavHostFragment-Instanzen vorhanden waren. (b/147378752)
  • NavigationUI ignoriert leere Labels (d.h. ein Ziel mit android:label=””) nicht mehr und legt den Titel nun korrekt auf einen leeren String fest. Dies wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860)
  • Die ProGuard-Regeln von navigation-common-ktx behalten jetzt korrekt nur die verwendeten NavArgs-Klassen anstelle aller NavArgs-Instanzen bei. 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 erforderlich ist. (b/147610424)
  • 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.0

Version 2.2.0

22. Januar 2020

androidx.navigation:navigation-*:2.2.0 wurde 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 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.
  • Integration von Lifecycle ViewModel SavedState: SavedStateViewModelFactory wird jetzt standardmäßig bei der Verwendung von by navGraphViewModels() oder des ViewModelProvider-Konstruktors mit einem ViewModelStoreOwner verwendet, der von NavController.getBackStackEntry() oder NavController.getViewModelStoreOwner() zurückgegeben wird.
  • Unterstützung von Suchparametern für Deeplinks: In Deeplinks mit Suchparametern werden jetzt neu angeordnete Suchparameter unterstützt. Argumente, die einen Standardwert haben oder bei denen Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional.
  • Verbesserte Unterstützung für Animationen: NavHostFragment verwendet jetzt FragmentContainerView aus Fragment 1.2.0. Dadurch wurden Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinfügungen an Fragmente behoben.

Version 2.2.0-rc04

18. Dezember 2019

androidx.navigation:navigation-*:2.2.0-rc04 wurde 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 wurde veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

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

Abhängigkeitsänderungen

  • 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 wurde veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.

Abhängigkeitsänderungen

  • 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 wurde ohne Änderungen seit dem 2.2.0-beta01 freigegeben. 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 die zugehörigen abgeleiteten Klassen überschreiben jetzt toString(), um hilfreichere Informationen bei der Fehlerbehebung bereitzustellen. (b/141264986)

Verhaltensänderungen

  • Zusätzliche Suchparameter werden jetzt beim Abgleich von Deeplinks ignoriert, sodass der Abgleich nicht fehlschlägt. (b/141482822)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Suchparameter angegeben wurden. (b/141505755)
  • Die Kotlin-Erweiterung navArgs() für Activity hat jetzt eine bessere Fehlermeldung, wenn keine Extras vorhanden sind. (b/141408999)
  • Von sicheren Args generierte Directions-Java-Klassen enthalten jetzt Standardwerte. (b/141099045)
  • Von sicheren 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

  • Der Aufruf von setViewModelStore() nach dem Aufrufen von setGraph führt jetzt zu einem IllegalStateException. Dies sollte bei der Ersteinrichtung immer vom NavHost festgelegt werden, damit alle NavBackStackEntry-Instanzen einen konsistenten 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 wurde 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

  • Das Hinzufügen eines NavHostFragment zu ViewPager2 schlug mit einem IllegalArgumentException fehl. Dieses Problem wurde behoben. (b/133640271)
  • NavInflater vermeidet nun unnötige Aufrufe von getResourceName(), wodurch die Inflationszeit um bis zu 40 % verkürzt wird. (b/139213740)

Version 2.2.0-alpha01

7. August 2019

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

Neue Funktionen

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

API-Änderungen

  • Aus der Navigation 2.1.0-rc01: Die eingestellte getViewModelStore() API für NavController, die in 2.1.0-alpha02 eingeführt wurde, wurde entfernt. (aosp/1091021).

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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 2.0.0

  • Umfang von ViewModels auf eine Navigationsgrafik: Sie können jetzt ViewModels erstellen, die auf Navigationsebene festgelegt sind. Verwenden Sie dazu den Property-Delegaten by navGraphViewModels() für Kotlin-Nutzer, der die -ktx-Bibliotheken verwendet, oder die getViewModelStoreOwner() API, die NavController hinzugefügt wurde. Weitere Informationen finden Sie unter UI-bezogene Daten zwischen Zielen freigeben.
  • 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 über den URI: Sie können jetzt navigate mit einem Uri verwenden, das die <deepLink>, die Sie einem Ziel hinzugefügt haben, dazu verwendet. Weitere Informationen finden Sie unter Navigation mit URI.
  • 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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Die verworfene getViewModelStore() API für NavController, die mit 2.1.0-alpha02 eingeführt wurde, wurde entfernt. (aosp/1091021).

Version 2.1.0-beta02

19. Juli 2019

androidx.navigation:*:2.1.0-beta02 wurde 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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • NavigationUI animiert jetzt das Entfernen der Nach-oben-Schaltfläche, wenn setupWithNavController() mit Toolbar oder CollapsingToolbarLayout verwendet wird. (b/131403621)

Fehlerkorrekturen

  • Ein Zeitproblem wurde behoben, das auftrat, wenn mehrere NavHostFragments mit demselben Container mit findNavController() verwendet wurden. (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 Artefakt navigation-runtime verschoben. Benutzerdefinierte Navigatoren, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um eine Integration in den Hostbereich des Navigationseditors zu erhalten. (b/133880955)

API-Änderungen

  • Die getViewModelStore() API für NavController wurde zugunsten der neuen Methode getViewModelStoreOwner() eingestellt, die eine ViewModelStoreOwner zurückgibt. (aosp/987010)
  • Die Implementierung von Zielen für unverankerte Fenster, wie 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)

Verhaltensänderungen

  • Die Navigation synchronisiert ihren Status jetzt korrekt mit dem, was auf dem Bildschirm angezeigt wird, wenn ein <dialog>-Ziel verwendet wird. Die Navigation zeigt daher jetzt automatisch <dialog>-Ziele an, wenn Sie zu einem Ziel ohne Dialog und 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 wurde 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 müssen jetzt vor dem Aufruf setLifecycleOwner() aufrufen. (aosp/965409)
  • NavHostController enthält jetzt eine enableOnBackPressed(boolean)-Methode, die die zuvor von setHostOnBackPressedDispatcherOwner() zurückgegebene NavHostOnBackPressedManager-Klasse ersetzt. (aosp/966091)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Back-Stack nach dem Aufrufen über den URI nicht korrekt war. (b/132509387)
  • Deeplinks, die automatisch von NavController verarbeitet werden, werden jetzt nur 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 popBackStack()- und navigateUp()-Vorgänge jetzt 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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Bekannte Probleme

  • NavHostFragment fängt die Schaltfläche „Zurück“ des Systems trotz Verwendung von app:defaultNavHost="false" b/132077777 ab

Neue Funktionen

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

Verhaltensänderungen

  • Die von NavigationUI bereitgestellten Standardanimationen wurden von 400 ms auf 220 ms beschleunigt, um der standardmäßigen Animationsgeschwindigkeit 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 eine hasDeepLink()-Methode hinzugefügt, mit der du prüfen kannst, ob eine bestimmte Uri von diesem Ziel oder – im Fall einer NavGraph – von einem beliebigen Ziel im Navigationsdiagramm 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, wodurch ein Problem bei der bedingten Navigation in Fragment-Lebenszyklusmethoden nach der Rückkehr zu einem Fragment behoben wurde. b/111598096
  • Für sichere Argumente wird ein android:defaultValue=”@null” mit einer nicht angegebenen app:argType jetzt ordnungsgemäß 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 Navigationsgrafikebene beschränkt sind. Verwenden Sie dazu den Attributdelegierung by navGraphViewModels() für Kotlin-Nutzer oder die getViewModelStore() API, die zu NavController hinzugefügt wurde. b/111614463

API-Änderungen

  • Du kannst einem <activity>-Ziel jetzt eine app:targetPackage hinzufügen, um den übereinstimmenden Paketnamen einzuschränken. Sie unterstützt app:targetPackage="${applicationId}" zur Beschränkung des Pakets auf Ihre eigene Anwendungs-ID. b/110975456

Fehlerkorrekturen

  • Die android:name für <activity>-Ziele werden zum Zeitpunkt der Inflation nicht mehr in eine Klasse geparst. Dadurch werden ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert. 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. In dieser Version wird außerdem die Abhängigkeit von androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

API-Änderungen

  • Eine neue Navigation.createNavigateOnClickListener(NavDirections)-Methode wurde als Alternative zur Erstellung eines Klick-Listeners mit einem Ressourcen-ID und Bundle aus. b/127631752
  • FragmentNavigator.instantiateFragment wurde verworfen. Standardeinstellung -Implementierung verwendet jetzt FragmentFactory zur Instanziierung von Fragmenten. b/119054429

Fehlerkorrekturen

  • Navigation sendet keinen Null-Bundle mehr, wenn Argumente angehängt sind an ein Ziel, wodurch ein Problem bei der Verwendung von android:defaultValue="@null" behoben wird. b/128531879
  • „Sichere Args“ ist jetzt von KotlinPoet 1.1.0 abhängig. Behebung eines Problems mit zu langen Paketnamen. b/123654948

Version 2.0.0

Version 2.0.0

14. März 2019

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

Version 2.0.0-rc02

6. März 2019

Navigation 2.0.0-rc02 bietet neue Artefakte mit dem androidx.navigation und ändert seine Abhängigkeiten in die AndroidX-Entsprechungen.

Das Verhalten von 2.0.0-rc02 entspricht dem Verhalten von Navigation 1.0.0-rc02. Es sollten keine Änderungen an Ihrem Code erforderlich sein, um von 1.0.0 auf rc02 zu aktualisieren. und Ihre Abhängigkeiten so zu aktualisieren, neuen Abhängigkeiten.

Ihr Projekt muss zu AndroidX migriert, um 2.X-Versionen von Navigation. Navigation 1.0 (stabil) ist die letzte Version, die den Support Bibliotheksabhängigkeiten alle zukünftigen Entwicklungen über 1.0 hinaus auf AndroidX und bauen auf der stabilen Version 2.0 auf.

Abhängigkeiten vor AndroidX

Für die Versionen vor AndroidX von Navigation sind folgende Abhängigkeiten erforderlich:

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 sichere Argumente den Parameter nach dem classpath in der build.gradle-Datei der obersten Ebene

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

Die Navigation 1.0.0 wurde 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 Fehlerbehebungen.

Fehlerkorrekturen

  • Problem behoben, bei dem popBackStack() ignoriert wurde, wenn die Stammgrafik hatte keine ID b/126251695
  • navigateUp() verarbeitet jetzt korrekt die Navigation zurück zur Aufgabe deiner App Bei Aufruf nach der Verarbeitung eines Deeplinks ohne FLAG_ACTIVITY_NEW_TASK b/126082008
  • Problem mit ActivityNavigator.applyPopAnimationsToPendingTransition behoben Falsche Anwendung der richtigen Pop-Exit-Animation b/126237567
  • Im Kotlin-Code, der von Safe Args generiert wird, werden Kotlin-Keywords jetzt korrekt mit einem Escapezeichen versehen. wie z. B. in und fun im Paketnamen, der mit der Klasse R verknüpft ist. b/126020455

Version 1.0.0-rc01

21. Februar 2019

Dies ist ein Releasekandidat für die stabile Version 1.0.0 von Navigation. Dieses 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

  • Genaue Deeplink-Übereinstimmungen haben jetzt Vorrang vor Deeplinks mit .* oder stimmt überein mit dem Argument. b/123969518

Fehlerkorrekturen

  • popBackStack() und navigateUp geben jetzt beim Hervorheben korrekt false zurück letztes Ziel im Back-Stack an, um eine Regression in 1.0.0-beta01 b/123933201
  • Die Navigation legt den ClassLoader jetzt bei der Wiederherstellung von Instanzstatus gespeichert. Dadurch werden Probleme bei der Verwendung von benutzerdefinierten Klassen in Der Status „Navigator“ wurde gespeichert oder es wurden Argumente an NavDestination gesendet. b/123893858
  • Von Safe Args generierte NavArgs-Klassen stürzen beim Wiederherstellen einer Argument Parcelable[] aus dem gespeicherten Instanzstatus. b/123963545
  • „Safe Args“ bereinigt jetzt unnötige generierte Kotlin-Klassen korrekt. b/124120883

Version 1.0.0-beta01

4. Februar 2019

Dies ist die erste Betaversion von Navigation. die Navigation, Es wird davon ausgegangen, dass die API bis zur nächsten Version stabil bleibt, es sei denn, es wird ein kritisches Problem zu lösen. Diese Version enthält einige Fehlerbehebungen und Verhaltensänderungen.

Verhaltensänderungen

  • Die Navigation stellt nun sicher, dass die Standardwerte der Argumente gleich behandelt werden. während der Laufzeit und durch sichere Argumente. Daraus folgt, dass nur Argumente mit einem app:argType="reference" kann einen Standardwert haben, der auf eine andere Ressource verweist (z. B. @color/colorPrimary). Es wird versucht, eine Referenzstandardeinstellung zu verwenden mit einem anderen app:argType-Wert zu einer Ausnahme führen, beim Parsen der Navigations-XML. b/123551990
  • „Sichere Args“ hängt jetzt von Android-Gradle-Plug-in 3.3.0 ab aosp/888413
  • Sichere Argumente hängen jetzt von Kotlin 1.3.20 ab aosp/888414

Fehlerkorrekturen

  • Sichere Args können jetzt in Bibliotheks- und Funktionsmodulen aller Versionen verwendet werden des Android-Gradle-Plug-ins. b/121304903
  • Regression behoben, die dazu führt, dass ein einzelner popBackStack()-Vorgang alle Kopien eines Ziels aus dem oberen Stapel ziehen, anstatt jeweils nur mit einem Ziel. b/123552990
  • Der Status FragmentNavigator wurde desynchronisiert. Das Problem wurde behoben. durch den Status von NavController. Dies führt zu einem IllegalStateException, wenn und versuchen, den Back-Stack wiederherzustellen. b/123803044
  • Es wurde ein Problem behoben, bei dem der Zurück-Pfeil bei NavigationUI nicht funktionierte werden angezeigt, wenn ProGuard mit Verschleierung verwendet wird. b/123449431
  • Der von Safe Args generierte Code verarbeitet jetzt die Verwendung eines app:argType korrekt. Verweist auf eine statische innere Klasse im Format .OuterClass$InnerClass. b/123736741
  • Der von Safe Args generierte Java-Code verarbeitet globale Aktionen jetzt korrekt und tief verschachtelten Zielen. b/123347762

Version 1.0.0-alpha11

23. Januar 2019

Dies ist eine Hotfix-Version von 1.0.0-alpha10, die ein Problem mit sicheren Args behebt.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem sichere Args die Directions-Klasse nicht importieren konnten. die mit globalen Aktionen verbunden sind. b/123307342

Version 1.0.0-alpha10

23. Januar 2019

Bekannte Probleme

  • Sichere Args kann die mit globalen Aktionen verknüpften Directions-Klassen nicht importieren. b/123307342

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

Neue Funktionen

  • Kotlin-Nutzer können jetzt den by navArgs()-Attribut-Delegaten für die verzögerte Ausführung verwenden. Verweis auf eine für Safe Args generierte NavArgs-Klasse in einem Activity abrufen oder Fragment. b/122603367
  • Mit „Sichere Args“ können Sie jetzt Kotlin-Code generieren, indem Sie die androidx.navigation.safeargs.kotlin-Plug-in. Der Kotlin-Code wurde speziell für Kotlin-Module. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster, das weiterhin verfügbar ist über dem vorherigen androidx.navigation.safeargs-Plug-in. b/110263087

Änderungen im Verhalten

  • Bei übereinstimmenden Deeplinks wird jetzt der Deeplink verwendet, die am besten passenden Argumente. b/118393029
  • Durch den Aufruf von setGraph() auf einem NavController wird jetzt der Back-Stack zurückgesetzt. b/111450672
  • Unbekannte Deeplinks geben keinen IllegalStateException mehr aus, werden aber ignoriert, wodurch Probleme mit verschachtelten oder mehreren NavHostFragments behoben werden. b/121340440

Nicht abwärtskompatible Änderungen

  • Die Methode NavOptions.applyPopAnimationsToPendingTransition() für Das Anwenden von Pop-Animationen auf eine Aktivität wurde nach ActivityNavigator verschoben. b/122413117
  • Sichere Args verhindern jetzt das Duplizieren identischer Klassen für Aktionen ohne Argumente. Der Rückgabetyp für Methoden ohne Argument in generierten NavDirections Klassen ist jetzt NavDirections. b/123233147
  • Sichere Args generierte Directions-Klassen haben keinen öffentlichen Konstruktor mehr. sollten Sie nur mit den generierten statischen Methoden interagieren. b/123031660
  • Sichere Args generierte NavDirections-Klassen haben keinen öffentlichen Namen mehr -Konstruktor sollten nur über die statischen Methoden in den generierten Directions-Klassen. b/122963206
  • Die zurückgegebene Bundle aus NavDirections getArguments() ist jetzt markiert @NonNull statt @Nullable. b/123243957

Fehlerkorrekturen

  • NavDeepLinkBuilder verarbeitet nun mehrere gleichzeitige PendingIntents an dasselbe Ziel mithilfe der von Ihnen übergebenen Argumente. um die Eindeutigkeit zu ermitteln. b/120042732
  • NavController verarbeitet popBackStack()-Vorgänge jetzt korrekt, wenn mithilfe eines verschachtelten NavHostFragment oder eines anderen untergeordneten Fragments mit einem Back Stack. b/122770335
  • NavigationUI legt die Inhaltsbeschreibung der Schaltfläche „Nach oben“ jetzt korrekt fest. b/120395362
  • Von sicheren Args generierte Directions-Klassen verarbeiten jetzt globale Aktionen korrekt. die dieselbe ID wie eine Aktion an einem Ziel haben. b/122962504
  • Sichere Args generierte NavDirections-Klassen haben jetzt korrekt dieselben hashCode()-Werte, wenn equals() „true“ zurückgeben würde. b/123043662
  • FragmentNavigator gibt jetzt eine bessere Fehlermeldung aus, wenn Sie versuchen, Benutzerdefinierte FragmentTransactions auf NavHostFragment ausführen FragmentManager. Sie sollten immer getChildFragmentManager() verwenden. b/112927148

Version 1.0.0-alpha09

18. Dezember 2018

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

Wir haben uns entschlossen, die Weiterentwicklung des android.arch.navigation:navigation-testing Artefakt. Es hat sich zwar bewährt, hilfreich für interne Tests von NavController. Wir empfehlen dringend, alternative Teststrategien, z. B. die Simulation der NavController-Instanz um zu überprüfen, ob die richtigen navigate()-Aufrufe ausgeführt werden. Dieses wird ausführlich in der Single Activity Talk beim AndroidDevSummit 2018 Außerdem werden wir weitere Dokumente zu Tests entwickeln, mit Navigation.

Neue Funktionen

  • MenuItems mit menuCategory="secondary" werden nicht mehr als Antwort angezeigt. Stack in Verbindung mit NavigationUI-Methoden. b/120104424
  • In AppBarConfiguration können Sie jetzt ein Fallback festlegen OnNavigateUpListener -Instanz, die aufgerufen wird, wenn navController.navigateUp() Folgendes zurückgibt: false b/79993862 b/120690961

Nicht abwärtskompatible Änderungen

  • Wenn ein <argument> mit einem argType="reference" verwendet wird, wird die Navigation nicht mehr aktiviert. parst die Referenz und gibt stattdessen die Rohressourcen-ID selbst an. b/111736515
  • onNavDestinationSelected() jetzt standardmäßig zum Startziel Ihrer Navigationsgrafik zurück, damit sie mit den setup-Methoden konsistent sind. Hinzufügen menuCategory="secondary" zu deinem MenuItem, damit der Back-Stack nicht geplatzt wird. aosp/852869
  • Die fromBundle()-Methoden der generierten Args-Klassen verwenden jetzt eine Nicht-Null-Werte Bundle anstelle einer Bundle, für die Nullwerte zulässig sind aosp/845616

Fehlerkorrekturen

  • Argumente werden jetzt korrekt aus Deeplinks als die richtige argType geparst. statt immer als Zeichenfolgen, b/110273284
  • Die Navigation exportiert ihre öffentlichen Ressourcen jetzt korrekt. b/121059552
  • Safe Args ist jetzt mit dem Android-Gradle-Plug-in 3.4 Canary 4 und höher kompatibel. b/119662045

Version 1.0.0-alpha08

6. Dezember 2018

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

Neue Funktionen

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

Nicht abwärtskompatible Änderungen

  • OnNavigatedListener wurde in OnDestinationChangedListener umbenannt. b/118670572
  • OnDestinationChangedListener übergibt jetzt auch die Bundle von Argumenten. aosp/837142
  • Die Attribute app:clearTask und app:launchDocument sowie die zugehörigen zugehörigen wurden entfernt. Verwenden Sie app:popUpTo mit dem Stamm der Grafik, um entfernen Sie alle Ziele aus dem Back Stack. b/119628354
  • ActivityNavigator.Extras verwendet jetzt ein Builder-Muster und bietet folgende Möglichkeit: Intent.FLAG_ACTIVITY_-Flags festlegen aosp/828140
  • NavController.onHandleDeepLink wurde in handleDeepLink umbenannt. aosp/836063
  • Viele Klassen und Methoden, die nicht für abgeleitete Klassen vorgesehen sind, z. B.: NavOptions, NavInflater, NavDeepLinkBuilder und AppBarConfiguration, wurden als final festgelegt. aosp/835681
  • Die verworfene Methode NavHostFragment.setGraph() wurde entfernt aosp/835684
  • Die eingestellte Methode NavigationUI.navigateUp(DrawerLayout, NavController) wurde entfernt. aosp/835684
  • Die Fragmenterstellung wurde in FragmentNavigator verschoben, um das Erstellen von Fragmenten zu erleichtern die Fragmenterstellung an eine FragmentFactory delegieren. b/119054429
  • Der Konstruktor für NavGraphNavigator nimmt keinen Context mehr an aosp/835340
  • NavigatorProvider ist jetzt einer Klasse statt einer Benutzeroberfläche. Die NavigatorProvider, die von getNavigatorProvider() die Funktionsweise nicht geändert. aosp/830660
  • NavDestination.navigate() wurde entfernt. navigate() über Navigator anrufen . aosp/830663
  • Erhebliche Refaktorierung von Navigator, wodurch OnNavigatorNavigatedListener nicht mehr erforderlich ist Stattdessen gibt navigate die NavDestination zurück, zu der der Nutzer navigiert ist.
  • Navigator-Instanzen können keine Pop-Ereignisse mehr an NavController senden. Erwägen Sie mit OnBackPressedCallback, um Taste „Zurück“ abfangen und navController.popBackStack() aufrufen. aosp/833716

Fehlerkorrekturen

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

Sichere Argumente

  • Sichere Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Enum-Typen kann mit dem enum-Literal ohne den Klassennamen einen Standardwert festlegen. (z.B. app:defaultValue="READ") b/111316353
  • Sichere Args unterstützt Arrays aller unterstützten Typen b/111487504
  • Sichere Args ignoriert jetzt Unterordner von Ressourcenverzeichnissen. b/117893516
  • Safe Args fügt gegebenenfalls @Override-Annotationen hinzu b/117145301

Version 1.0.0-alpha07

29. Oktober 2018

Neue Funktionen

Nicht abwärtskompatible Änderungen

  • Das navigation-testing-ktx-Modul ist in den navigation-testing artifact und wird nicht mehr veröffentlicht.
  • Das Artefakt navigation-testing ist jetzt vom Kotlin-Standard abhängig Bibliothek. Die API wurde geändert, um sie mit Kotlin konsistenter zu gestalten aber Sie können ihn weiterhin für Tests verwenden, die in Java geschrieben sind.
  • In Metadatenmanifesten registrierte Navigationsdiagramme werden nicht mehr unterstützt. b/118355937
  • Aktionen können nicht mehr mit <activity> verknüpft werden. Ziele. aosp/785539

Fehlerkorrekturen

  • In Deeplinks werden Suchparameter jetzt korrekt geparst. b/110057514
  • Bei Aktivitätszielen werden jetzt alle Animationen zum Ein- und Ausblenden korrekt angewendet. b/117145284
  • Absturz behoben, der nach Konfigurationsänderungen bei der Verwendung von benutzerdefinierten Navigatoren. b/110763345

Sichere Argumente

  • Sichere Argumente haben jetzt eine feste Abhängigkeit vom Android-Gradle-Plug-in 3.2.1. b/113167627
  • Es können jetzt Routen für innere Klassen generiert werden. b/117407555
  • Ein Problem beim Generieren von Routen zu einem <include>-Element wurde behoben. Diagramm. 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() gibt keine Aufrufe mehr frei, wenn er mit Aufrufen einzelner Ziele 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
  • Directions- und Args-Klassen haben jetzt eine nützliche toString()-Implementierung b/111843389.

Version 1.0.0-alpha05

10. August 2018

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der zu einem falschen Backstack-Verhalten führt. b/111907708
  • Fehlerkorrektur in equals() der generierten Args-Klassen. b/111450897
  • Build-Fehler in sicheren Args beheben. b/109409713
  • Konvertierung von Ressourcenkennungen in Java-Namen korrigieren b/111602491
  • Fehlermeldungen zur Null-Zulässigkeit im Plug-in „Safe Args“ wurden behoben.
  • Fügen Sie fehlende Anmerkungen für die Null-Zulässigkeit hinzu.

Version 1.0.0-alpha04

July 19, 2018

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

API-/Verhaltensänderungen

  • NavHostFragment legt immer das aktuelle Fragment als primäres Navigationsfragment fest, um sicherzustellen, dass untergeordnete Fragmentmanager vor dem äußeren NavController-Element platziert werden. 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 sicheren Args sind jetzt anklickbar b/111534438
  • Die Args-Klassen bestätigen jetzt, dass NonNull-Attribute tatsächlich nicht null sind. b/111451769
  • Zusätzliche NonNull-Annotationen wurden den von NavDirections und Args generierten Klassen b/111455455 b/111455456 hinzugefügt.

Fehlerkorrekturen

  • Ein Problem mit der Schaltfläche "Zurück" des Systems nach einem Deeplink zu einem Fragmentziel wurde behoben b/111515685.

Version 1.0.0-alpha03

12. Juli 2018

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

API-/Verhaltensänderungen

  • Eine NavigationUI.setupWithNavController-Methode für die Toolbar 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 Back Stack leer ist oder die angegebene Ziel-ID sich nicht im Back Stack befindet. b/110893637
  • FragmentNavigator ignoriert nun Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, sodass die Ausnahmen "Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden können" vermieden werden b/110987825.

Sichere Argumente

  • 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. <ph type="x-smartling-placeholder">
      </ph>
    • Beispiel: DemoController.index wird zu setDemoControllerIndex b/79995048
    • Beispiel: action_show_settings wird zu actionShowSettings b/79642240
  • Nicht abwärtskompatible Änderung:Argumente werden jetzt standardmäßig als ungleich null betrachtet. Fügen Sie app:nullable="true" b/79642307 hinzu, um Nullwerte für String- und parzellierbare Argumente zuzulassen.
  • Sie können jetzt app:type="long" mit Standardwerten im Format „123L“ verwenden. b/79563966
  • Ab jetzt werden abparbare Argumente unterstützt, bei denen ein vollständig qualifizierter Klassenname für app:type verwendet wird. 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 Plug-in "Safe Args" kann jetzt auf Feature-Projekte angewendet werden b/110011752

Fehlerkorrekturen

  • Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
  • Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken behoben. b/110178671
  • Probleme bei der Verwendung von setPopUpTo mit dem ersten Ziel im Diagramm b/109909461 behoben
  • Ein Problem wurde behoben, durch das alle app:defaultValue-Werte als Strings b/110710788 übergeben wurden.
  • Aapt2 im Paket mit Android-Gradle-Plug-in 3.2 Beta 01 fügt jetzt Keep-Regeln für jedes android:name-Attribut in den Navigations-XML-Dateien hinzu. b/79874119
  • Ein Speicherleck wurde behoben, das beim Ersetzen des standardmäßigen FragmentNavigator b/110900142 aufgetreten ist.

Version 1.0.0-alpha02

7. Juni 2018

Änderungen im Verhalten

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

  • Navigation URLDecodiert jetzt Argumente, die von Deeplinks-URLs geparst wurden. b/79982454

Fehlerkorrekturen

  • Ein IllegalStateException-Fehler beim Aufrufen von Navigation von Fragment-Lebenszyklusmethoden wurde behoben. b/79632233

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

  • Problem mit IllegalArgumentException bei Verwendung von "defaultNavHost="true" behoben als untergeordnetes Fragment. b/79656847

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

  • Ein IllegalArgumentException beim Zurückkehren zu einer verschachtelten Grafik wurde behoben. b/80453447

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

  • Die Navigation erstellt jetzt den richtigen synthetischen Back-Stack für verschachtelte Grafiken. b/79734195

  • NavigationUI hebt jetzt das richtige Element hervor, wenn ein verschachteltes Diagramm als MenuItem verwendet wird. b/109675998

API-Änderungen

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

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

Version 1.0.0-alpha01

8. Mai 2018

Die Navigation bietet ein Framework für In-App-Entwicklungen. Navigation. Diese erste Version ist 1.0.0-alpha01.