Navigation

Die Navigation ist ein Framework für die Navigation zwischen „Zielen“ in einer Android-App, das eine einheitliche API bietet, unabhängig davon, ob Ziele als Fragmente, Aktivitäten oder andere Komponenten implementiert sind.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
17. April 2024 2.7.7 2.8.0-alpha07

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von Navigation müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

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

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. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.8

Version 2.8.0-alpha07

17. April 2024

androidx.navigation:navigation-*:2.8.0-alpha07 wird freigegeben. 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-Zielen zu deinen Navigations-XML-Dateien hinzufügen kannst. Jedes composable-Ziel muss als @Composable-Methode der obersten Ebene ohne Argument ausgedrückt werden, deren vollständig qualifizierter Name als android:name-Attribut für jedes Ziel verwendet wird. Wenn Sie zu einem dieser Ziele navigieren, wird ein Fragment erstellt, in dem der zusammensetzbare Inhalt angezeigt wird. (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

Version 2.8.0-alpha06

3. April 2024

androidx.navigation:navigation-*:2.8.0-alpha06 wird freigegeben. Version 2.8.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für Safe Args in Navigation Compose mit einem auf Kotlin-Serialisierung basierenden Ansatz hat begonnen. Diese APIs sind noch nicht abgeschlossen und mit der Annotation ExperimentalSafeArgsApi gekennzeichnet. Diese Annotation wird entfernt, sobald die gesamte API-Oberfläche in einem zukünftigen Release fertiggestellt ist. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41cb15}, I24e41

Fehlerkorrekturen

  • NavHost verwendet jetzt Alignment.TopStart als standardmäßiges contentAlignment-Argument. Dies entspricht dem Standardwert für AnimatedContent und behebt einige Instanzen einer unerwarteten Skalierung von der Mitte. (I09e72, b/330111602)
  • Wenn während der Verwendung der Funktion „Schreibassistent“ die Geste „Zurück“ zu sehen ist, wird der benutzerdefinierte Übergang von NavHost jetzt korrekt abgeschlossen und nicht sofort beendet. (I99017, b/327292110)

Version 2.8.0-alpha05

20. März 2024

androidx.navigation:navigation-*:2.8.0-alpha05 wird freigegeben. Version 2.8.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt Argumente direkt in der startDestination-Route an das startDestination-Element von NavGraph übergeben, ohne sich auf defaultValue zu verlassen. Dies gilt auch für verschachtelte NavGraph-startDestinations. (I0e0b5, b/109505019, b/188693139)

API-Änderungen

  • Neue abstrakte CollectionNavType<T>-Klasse, eine Unterklasse von NavType<T> für sammlungsbasierte Argumente wie list, Arrays, Maps, hinzugefügt. (Ic6d63, b/188693139)
  • Alle standardmäßigen 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

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

Version 2.8.0-alpha04

6. März 2024

androidx.navigation:navigation-*:2.8.0-alpha04 wird freigegeben. Version 2.8.0-alpha04 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem NavHost in der Navigation „Schreiben“ den Übergang nicht korrekt anzeigte, wenn die Systemrückseite ohne Geste verwendet wurde. (Iceeae, b/325998468)

Version 2.8.0-alpha03

21. Februar 2024

androidx.navigation:navigation-*:2.8.0-alpha03 wird freigegeben. Version 2.8.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Es wurde ein Problem in der Navigation behoben, bei dem NavGraph ViewModels zu früh auf DESTROYED gesetzt wurde, da die ViewModel des verknüpften Eintrags nicht Teil des gespeicherten Status war. (Ib6bb7, b/317581849)

Abhängigkeitsaktualisierung

Version 2.8.0-alpha02

7. Februar 2024

androidx.navigation:navigation-*:2.8.0-alpha02 wird freigegeben. Version 2.8.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Die Funktion „Navigationserstellung“ unterstützt jetzt die In-App-Funktion „Vorhersagbar“ über die neuen SeekableTransitionState-APIs von „compose-animation“. So können Sie die „Zurück“-Touch-Geste verwenden, um das vorherige Ziel mit der benutzerdefinierten Umstellung zu sehen, bevor Sie sich entscheiden, ob Sie die Transaktion mit der abgeschlossenen Touch-Geste per Commit durchführen oder abbrechen möchten. (I8b8e9)

Version 2.8.0-alpha01

24. Januar 2024

androidx.navigation:navigation-*:2.8.0-alpha01 wird freigegeben. Version 2.8.0-alpha01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit einem BackStackState-Leak wurde behoben, bei dem mehrere saveState-Aufrufe an ein Ziel dazu führten, dass mehrere Status gespeichert wurden, aber nur der erste 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 Ausfüllen des Titels von App-Leisten verwendet wurden. (#636, b/316676794)

Abhängigkeitsaktualisierung

  • Die Funktion „Navigation erstellen“ hängt jetzt davon ab, dass Compose 1.7.0-alpha01 ein Problem behebt, das zu einer unerwarteten Skalierungsanimation führen kann. (b/297258205)

Externer Beitrag

  • Vielen Dank, SimonMarquis. Er hat das Anzeigeproblem für Nicht-String-Argumente behoben, wenn die NavigationUI-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet werden.

Version 2.7.7

Version 2.7.7

7. Februar 2024

androidx.navigation:navigation-*:2.7.7 wird freigegeben. Version 2.7.7 enthält diese Commits.

Fehlerkorrekturen

  • Von Navigation 2.8.0-alpha01 zurückportiert: BackStackState-Leak 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 konnte wiederhergestellt werden. (I598b0, b/309559751)
  • Von Navigation 2.8.0-alpha01 rückportiert: Ein Problem wurde 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

  • Vielen Dank, SimonMarquis. Er hat das Anzeigeproblem für Nicht-String-Argumente behoben, wenn die NavigationUI-Hilfsprogramme zum Ausfüllen des Titels von App-Leisten verwendet werden.

Version 2.7.6

Version 2.7.6

13. Dezember 2023

androidx.navigation:navigation-*:2.7.6 wird freigegeben. Version 2.7.6 enthält diese Commits.

Fehlerkorrekturen

  • Die Funktion NavGraph equals() berücksichtigt jetzt die Knoten des anderen Diagramms korrekt und nicht mehr nur den aufrufenden. Dadurch wird sichergestellt, dass Grafiken 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 wird freigegeben. Version 2.7.5 enthält diese Commits.

Leistungsverbesserungen

  • Die Leistung (sowohl in Bezug auf Zeit als auch in Bezug auf die Anzahl der Zuweisungen) des Vergleichs von zwei Diagrammen wurde erheblich verbessert. Das bedeutet, dass Aufrufe wie setGraph, die das neue Diagramm intern mit dem vorhandenen vergleichen, viel schneller sind und weniger übersprungene Frames zur Folge haben. Vielen Dank, Michał Z für die gründliche Analyse, die zu dieser Verbesserung geführt hat. (I6ad62)
  • NavHost rendert jetzt das Startziel im ersten Kompositionspass, anstatt darauf zu warten, dass der zweite Durchlauf den aktualisierten Status liest. (I439a7, b/304852206)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Back Stack nur dann angezeigt wurde, wenn setGraph mehr als einmal mit genau demselben Diagramm aufgerufen wurde, wenn die Grafik ein Ziel mit einer Aktion enthielt, die zwei Ziele verknüpft hat. (Ieaed7)
  • Dialogfelder, die schnell hintereinander aufgerufen und geschlossen wurden, gelangen nicht mehr in die Liste der NavController.visibleEntries. (I67586, b/287969970)
  • Wenn ein Eintrag per Pop-up und anschließend eine Konfigurationsänderung abgerufen wird, wird der ViewModel des Eintrags jetzt korrekt gelöscht, wenn saveState auf „false“ gesetzt ist. (Idf242, b/298164648)
  • Es wurde ein Problem behoben, bei dem NavController denselben Deeplink mehrmals verarbeiten konnte, wenn der Back-Stack vor einer Konfigurationsänderung vollständig leer war oder setGraph nur dann aufgerufen wurde, wenn für den eingehenden Intent das Flag FLAG_ACTIVITY_NEW_TASK gesetzt war. (I73c7f)

Aktualisierungen von Abhängigkeiten

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

Version 2.7.4

Version 2.7.4

4. Oktober 2023

androidx.navigation:navigation-*:2.7.4 wird freigegeben. Version 2.7.4 enthält diese Commits.

Neue Funktionen

  • Zusätzliche Unterstützung für popUpTo zur Verwendung von Routen mit Argumenten, um das Zurückkehren zu einem bestimmten Eintrag zu ermöglichen, der genau diese Argumente verwendet, passend zur Unterstützung in popBackStack. (I731f4, b/299255572)

Fehlerkorrekturen

  • Problem behoben, bei dem das Unterbrechen einer Navigation mit einer anderen Navigation mit popUpTo dazu führte, dass FragmentNavigator abstürzte. (I3c848, b/301887045)
  • Ein Problem wurde behoben, bei dem durch das Drücken des Systems die currentDestination nicht korrekt aktualisiert wurde, um mit dem angezeigten Fragment übereinzustimmen. (Id0d6c, b/289877514)
  • Der DialogFragment-Lebenszyklus wird jetzt korrekt in den Status RESUMED verschoben, wenn das Dialogfeld darüber geschlossen wird. (I88f0d, b/301811387)

Version 2.7.3

Version 2.7.3

20. September 2023

androidx.navigation:navigation-*:2.7.3 wird freigegeben. Version 2.7.3 enthält diese Commits.

Fehlerkorrekturen

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

Version 2.7.2

Version 2.7.2

6. September 2023

androidx.navigation:navigation-*:2.7.2 wird freigegeben. Version 2.7.2 enthält diese Commits.

Fehlerkorrekturen

  • Die Navigation hängt jetzt vom Lebenszyklus 2.6.2 ab. Dabei wird eine Interaktion zwischen rememberSaveable und der NavHost von Navigation Compose behoben, die dazu führen würde, dass der Status rememberSaveable der Ziele und alle ViewModel-eigenen SavedStateHandle-Instanzen nach dem Beenden und der Neuerstellung des Prozesses nicht ordnungsgemäß wiederhergestellt werden. (b/298059596, b/289436035)
  • Es wurde ein Problem behoben, das beim gleichzeitigen Anzeigen mehrerer Dialogfelder in der Funktion „Navigationsleiste“ angezeigt wurde und bei denen die teilweise verdeckten Dialogfelder (z.B. das oberste Dialogfeld) den Lebenszyklusstatus CREATED und nicht den Status STARTED hatten. (aosp/2728520, b/289257213)
  • Es wurde ein Problem behoben, das beim gleichzeitigen Anzeigen mehrerer Dialogfelder in der Funktion „Navigationsleiste“ angezeigt wurde. Wenn das oberste Dialogfeld geschlossen wurde, blieb das neue oberste Dialogfeld im Lebenszyklusstatus STARTED hängen und wurde nicht korrekt in RESUMED verschoben. (aosp/2629401, b/286371387)
  • Navigation Safe Args instanziiert seine Aufgabe nicht mehr eifrig, wenn sie nicht tatsächlich ausgeführt wird. (I0e385, b/260322841)

Abhängigkeitsaktualisierung

  • Die Funktion „Schreibassistent“ richtet sich jetzt nach der Version 1.5.1.

Version 2.7.1

Version 2.7.1

23. August 2023

androidx.navigation:navigation-*:2.7.1 wird freigegeben. Version 2.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler in der Navigation mit der Funktion "Compose" behoben, bei dem bei Verwendung eines Scaffold ein Fehler für den Versuch, auf Lifecycle.State.DESTROYED-ViewModel zuzugreifen, angezeigt wurde. (I1dc11, b/268422136)

Version 2.7.0

Version 2.7.0

9. August 2023

androidx.navigation:navigation-*:2.7.0 wird freigegeben. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

Animationen des Begleiters

Da AnimatedContent nun stabil ist, können 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 in AnimatedNavHost direkt in NavHost unterstützt wird.

An der Animation der Accompanist Navigation wird es keine weiteren Änderungen geben, diese sowie eine Anleitung zur Migration zurück zu Navigation Compose werden bald offiziell eingestellt. Es sind aber keine weiteren API-Änderungen erforderlich, wenn du bereits die neueste Alphaversion von Accompanist (0.31.2-alpha) verwendest. (b/197140101)

Fehlerkorrekturen

  • NavHost in Navigation Compose fängt jetzt Systemrückaufrufe korrekt ab, auch wenn die Aktivität BEENDET und FORTGEFAHRT WURDE. (Icb6de, b/279118447)

Aktualisierungen von Abhängigkeiten

  • Für die Navigation ist jetzt die Funktion „Schreiben“ 1.5.0 ab 1.1.0 erforderlich.

Version 2.7.0-rc01

26. Juli 2023

androidx.navigation:navigation-*:2.7.0-rc01 wird freigegeben. Version 2.7.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Die Lambdas EnterTransition und ExitTransition, die als Teil von NavHost erstellt wurden, konnten möglicherweise auch dann im Speicher verbleiben, wenn die NavHost aus der Zusammensetzung entfernt wurde. Dieses Problem wurde behoben. (I893d0)

Bekannte Probleme

  • In Navigation 2.6.x gibt es ein Problem, dass beim Navigieren mit einem Pop-Up-To ein IllegalArgumentException ausgelöst werden kann. Diese Ausnahme lässt sich eventuell vermeiden, indem Sie die Grafik ähnlich wie hier umstrukturieren. (b/287133013)

Version 2.7.0-beta02

28. Juni 2023

androidx.navigation:navigation-*:2.7.0-beta02 wird freigegeben. Version 2.7.0-beta02 enthält diese Commits.

Fehlerkorrekturen

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

Version 2.7.0-beta01

7. Juni 2023

androidx.navigation:navigation-*:2.7.0-beta01 wird freigegeben. Version 2.7.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • NavHost in der Funktion „Schreibassistent“ fängt Systemrückaufrufe jetzt auch dann korrekt ab, wenn Activity den Status „STOPPED“ und „RESUMED“ hat. (Icb6de, b/279118447)

Version 2.7.0-alpha01

24. Mai 2023

androidx.navigation:navigation-*:2.7.0-alpha01 wird freigegeben. Version 2.7.0-alpha01 enthält diese Commits.

Animationen des Begleiters

Da AnimatedContent nun stabil ist, können 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 in AnimatedNavHost direkt in NavHost unterstützt wird.

An der Animation der Accompanist Navigation wird es keine weiteren Änderungen geben, diese sowie eine Anleitung zur Migration zurück zu Navigation Compose werden bald offiziell eingestellt. Es sind aber keine weiteren API-Änderungen erforderlich, wenn du bereits die neueste Alphaversion von Accompanist (0.31.2-alpha) verwendest. (b/197140101)

Fehlerkorrekturen

  • Von Navigation 2.6.0-rc02: Ein Problem mit der Navigation in Fragmenten wurde behoben, bei dem das Navigieren mit popUpTo und das Entfernen eines Fragments aus dem Back-Stack ohne Neuerstellung der Ansicht dazu führten, dass das System wieder nicht mehr funktionierte. (Ieb8d4, b/281726455)

Aktualisierungen von Abhängigkeiten

  • Für die Navigation ist jetzt die Funktion „Schreiben“ (1.5.0-beta01) erforderlich.

Version 2.6.0

Version 2.6.0

7. Juni 2023

androidx.navigation:navigation-*:2.6.0 wird freigegeben. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen an Navigation seit Version 2.5.0

  • Die arguments von NavBackStackEntry und die an ein OnDestinationChangedListener übergebenen arguments sind jetzt nur eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen, die an diesen Bundles vorgenommen werden, nicht bei nachfolgenden Zugriffen auf die Instanz arguments oder andere OnDestinationChangedListener berücksichtigt werden.
  • NavDeepLink unterstützt jetzt Standardwerte für Arrays. Dadurch werden wiederholte Abfrageparameter unterstützt, die dem Arraytyp des Arguments zugeordnet werden. NavType enthält außerdem 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 kann sowohl die Serialisierung als auch die Deserialisierung (über parseValue) vollständig in der NavType-Klasse gekapselt werden. StringType überschreibt jetzt diese Methode, um Uri.encode für die angegebene String aufzurufen.

Wichtige Änderungen an „Navigation Compose“ seit Version 2.5.0

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

Wichtige Änderungen an der Navigation mit Fragmenten seit Version 2.5.0

  • NavHostFragment fängt die Zurück-Taste des Systems nicht mehr ab. Dadurch kann das zugrunde liegende FragmentManager das System wieder verarbeiten. Dadurch kann mit Fragment 1.7.0-alpha01 und höher eine In-App-Animation mit Prognose auf Android U-Geräten erstellt werden.
  • Wenn Sie bei der Navigation mit Fragmenten versuchen, manuell ein FragmentTransaction auszuführen, mit dem ein Fragment zum Back-Stack der FragmentManager hinzugefügt wird, wird jetzt ein IllegalArgumentException ausgegeben. Fragmente sollten immer über die navigate() API hinzugefügt werden.
  • Wenn Sie im Aktivitätselement einer Navigations-XML-Datei genau den String ${applicationId} als Platzhalter in den Attributen app:data und app:dataPattern verwenden, wird der Platzhalter beim Inflation automatisch mit dem packageName des Kontexts ausgefüllt.
  • Die FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries navigiert und aufgerufen wird. Das bedeutet, dass das NavBackStackEntry-Lifecycle jetzt darauf wartet, dass die Spezialeffekte für das Eintreten und Beenden des Fragments abgeschlossen sind, bevor die letzten Lifecycle.State verschoben werden.
  • Die DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries navigiert und aufgerufen wird. Das bedeutet, dass das NavBackStackEntry-Lifecycle jetzt darauf wartet, dass das DialogFragment-Lifecycle in die DESTROYED verschoben wird, bevor es zu DESTROYED selbst wechselt.
  • Mit NavHostFragment können Sie das NavController jetzt abrufen, sobald das NavHostFragment mit dem FragmentManager verknüpft ist, und nicht erst nach onCreate().
  • Die Unterstützung der Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab.
  • Navigation Safe Args hängt jetzt von der Android-Gradle-Plug-in-Version 7.3.0 ab. Das bedeutet, dass sie jetzt nur noch mit der Version 7.3.0 und höher kompatibel ist.

Wichtige Änderungen an NavigationUI seit Version 2.5.0

  • Wenn die ID einer Navigationsgrafik an AppBarConfiguration übergeben wird (z. B. über Menu), berücksichtigt NavigationUI jetzt nur das Startziel dieser Navigationsgrafik als Ziel auf oberster Ebene. Es wird nicht mehr jedes Ziel in der Grafik als Ziel auf oberster Ebene markiert. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Dieselben Funktionen stehen Ihnen über die neue isTopLevelDestination-Funktion in AppBarConfiguration für Ihren eigenen Code zur Verfügung.
  • 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 deiner android:label gefunden wurden, in ihre Stringwerte, anstatt die automatisch generierte Ressourcen-Ganzzahl auszugeben.
  • NavigationUI stellt jetzt Logs bereit, wenn keine Navigation über eine ausgewählte MenuItem möglich ist.

Version 2.6.0-rc02

24. Mai 2023

androidx.navigation:navigation-*:2.6.0-rc02 wird freigegeben. Version 2.6.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem mit der Navigation in Fragmenten behoben, bei dem das Navigieren mit popUpTo und das Herausnehmen eines Fragments aus dem Back-Stack ohne Neuerstellung der Ansicht dazu führten, dass das System wieder nicht mehr funktionierte. (Ieb8d4, b/281726455)

Version 2.6.0-rc01

10. Mai 2023

androidx.navigation:navigation-*:2.6.0-rc01 wird freigegeben. Version 2.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

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

Version 2.6.0-beta01

19. April 2023

androidx.navigation:navigation-*:2.6.0-beta01 wird freigegeben. Version 2.6.0-beta01 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

  • Wenn Sie bei der Navigation mit Fragmenten versuchen, manuell ein FragmentTransaction auszuführen, mit dem ein Fragment zum Back-Stack der FragmentManager hinzugefügt wird, wird jetzt ein IllegalArgumentException ausgegeben. 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, wird der resultierende oberste Eintrag im Back-Stack nun konsistent wieder in die RESUMED Lifecycle.State verschoben. (Id8067, b/276495952)

Version 2.6.0-alpha09

5. April 2023

androidx.navigation:navigation-*:2.6.0-alpha09 wird freigegeben. Version 2.6.0-alpha09 enthält diese Commits.

Fehlerkorrekturen

  • Das Problem mit der Prüfung auf ungültige Route wurde behoben: Wenn ein NavDestination NavArgument enthält, die keine Nullwerte zulässig sind, muss die Route dieses Ziels Platzhalter für Argumente enthalten, die genauso benannt sind wie die NavArgument, die keine Nullwerte zulässig sind. (Ic62bf, b/274697949)
  • Deeplink-Navigationen auf der Grundlage von „Action/MimeType“ schlagen jetzt fehl, wenn im Navigationsvorgang eine NavArgument fehlt, die von der NavDestination verlangt wird und mit der Action/MimeType übereinstimmt. (Ibfa17, b/271777424)
  • Wenn NavController einen Graphen mit derselben Route und Zielen wie der vorherige Grafik festlegt, werden die aktuellen Grafikknoten und die Back-Stack-Ziele nun ordnungsgemäß durch neue Instanzen ersetzt. Dadurch wird ein Absturz behoben, wenn onLaunchSingleTop verwendet wird, ohne den Status in Navigation Compose zu speichern. Dadurch wird auch ein Fehler behoben, bei dem beim Aufrufen von 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 wird freigegeben. Version 2.6.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Mit NavHostFragment können Sie das NavController jetzt abrufen, sobald das NavHostFragment mit dem FragmentManager verknüpft ist, und nicht erst nach onCreate(). (Ic6382, b/220186282)

Fehlerkorrekturen

  • Ein NullPointerException wurde korrigiert, wenn ein verschachteltes Diagramm mit einem Argument gesendet wird, das keine Nullwerte zulässt. (6b3581, b/249988437)
  • Wenn das System nach einer Navigation mit popUpTo wieder verwendet wird, wird der Status von NavController auf den richtigen Eintrag aktualisiert. (I3a8ec, b/270447657)
  • In FragmentNavigator werden Einträge jetzt korrekt abgelegt, wenn der Back-Stack über das System oder über popBackStack() per Pop-up geöffnet wird. Dabei spielt es keine Rolle, ob bei der Transaktion Effekte für das Fragment verwendet werden. (I81bdf)
  • Das Hinzufügen von Fragmenten zu FragmentManager der FragmentNavigator, ohne die Navigation zu verwenden, führt nicht mehr zu einem Absturz. (b17204, b/274167493)

Aktualisierungen von Abhängigkeiten

Version 2.6.0-alpha07

8. März 2023

androidx.navigation:navigation-*:2.6.0-alpha07 wird freigegeben. Version 2.6.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Die API-Varianten getBackStackEntry, popBackStack und clearBackStack, die Routen nehmen, verwenden jetzt Routenmuster mit Argumenten, in denen Nullwerte zulässig sind, und Abfrageparameter, bei denen Nullwerte zulässig sind (I22294, b/269302500).
  • Ein Problem wurde behoben, bei dem durch das Aufrufen von clearBackStack() aus dem NavController der gespeicherte Status im Fragmentmanager, der mit dem gelöschten Back-Stack verknüpft ist, nicht gelöscht wurde. (Ic1cce, b/271190202)
  • Eine Regression in 2.6.0-alpha06 wurde behoben, bei der der falsche MenuItem in der BottomNavigationView hervorgehoben wurde, wenn das System wieder zwischen Tabs verwendet wurde. (I634f6, b/270447657)
  • Die Regression in Version 2.6.0-alpha06 wurde behoben, die dazu führte, dass NavBackStackEntry-Werte bei Verwendung von Animation-Werten nicht in den Status WIEDERGEFÜHRT verschoben wurden. (Ib3589, b/269646882)

Version 2.6.0-alpha06

22. Februar 2023

androidx.navigation:navigation-*:2.6.0-alpha06 wird freigegeben. Version 2.6.0-alpha06 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

  • Ein Absturz beim Navigieren bei Verwendung der dynamischen Fragmentnavigation wurde behoben. (I3ee29, b/268360479)
  • Es wurde ein Fehler behoben, bei dem 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, kann der Lebenszyklus von NavBackStackEntry RESUMED nicht erreichen, wenn Animation APIs verwendet werden. (b/269646882)
  • Wenn Sie beim Verwenden der Navigation mit Fragmenten und beim Navigieren mit BottomNavigation 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 DESTROYED nicht mehr, wenn sein Fragment DESTROYED ist . (b/270610768)

Version 2.6.0-alpha05

8. Februar 2023

androidx.navigation:navigation-*:2.6.0-alpha05 wird freigegeben. Version 2.6.0-alpha05 enthält diese Commits.

Neue Funktionen

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) unterstützen jetzt alle 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)
  • Die FragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries navigiert und aufgerufen wird. Das bedeutet, dass das NavBackStackEntry-Lifecycle jetzt darauf wartet, dass die Spezialeffekte für das Eintreten und Beenden des Fragments abgeschlossen sind, bevor die letzten Lifecycle.State verschoben werden. (I3cb19, b/238686802)
  • Die DialogFragmentNavigator verwendet jetzt die Transition APIs, wenn NavBackStackEntries navigiert und aufgerufen wird. Das bedeutet, dass das NavBackStackEntry-Lifecycle jetzt darauf wartet, dass das DialogFragment-Lifecycle in die DESTROYED verschoben wird, bevor es zu DESTROYED selbst wechselt. (I53ee5, b/261213893)

API-Änderungen

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

Fehlerkorrekturen

  • Der Navigatorstatus ist jetzt bei Verwendung der push/popWithTransition APIs inaktiv und der Eintrag wird bereits verarbeitet. (Iadbfa, b/261213893)
  • Wenn Sie launchSingleTop mit einem verschachtelten NavGraph verwenden, werden alle Ziele, die vom ursprünglichen Ziel bis zum zugehörigen startDestination beginnen, nur ordnungsgemäß zum Anfang des Backstacks hinzugefügt. (Id4bea, b/253256629)
  • Bei der Navigation zum selben Ziel wird jetzt die Instanz DialogFragment ordnungsgemäß ersetzt, wobei das Flag launchSingleTop auf „true“ gesetzt ist. (I45b5a, b/149572817)
  • Navigations-SafeArgs verursachen keinen Kompilierungsfehler mehr, wenn Argumente mit genau 19 Zeichen verwendet werden. (Id60bc, b/257110095)

Version 2.6.0-alpha04

9. November 2022

androidx.navigation:navigation-*:2.6.0-alpha04 wird freigegeben. 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 kann sowohl die Serialisierung als auch die Deserialisierung (über parseValue) vollständig in der NavType-Klasse gekapselt werden. StringType überschreibt jetzt diese Methode, um Uri.encode für die angegebene String aufzurufen. (Ie5213, b/247637434)
  • NavigationUI stellt jetzt Logs bereit, wenn keine Navigation über eine ausgewählte MenuItem möglich ist. (I2af5a, b/247730357)

Fehlerkorrekturen

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

Abhängigkeitsaktualisierung

  • Die Unterstützung der Navigation für dynamische Funktionsmodule hängt jetzt von der detaillierten Play Feature Delivery Library ab. Ib4ddc
  • Navigation Safe Args hängt jetzt von der Android-Gradle-Plug-in-Version 7.3.0 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 wird freigegeben. Version 2.6.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Von Navigation 2.5.3: NavHost löst keinen NoSuchElementException mehr aus, wenn kein Ziel zum Schreiben von Crossfade verfügbar ist. Die Komposition wird jetzt übersprungen. (Ieb46e, b/253299416)
  • Aus Navigation 2.5.3: Ein Problem wurde behoben, bei dem der gespeicherte Status der Erstellung (z.B. Nutzungen von rememberSaveable) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back-Stack entfernt wurde. (I64949)

Aktualisierungen von Abhängigkeiten

Version 2.6.0-alpha02

5. Oktober 2022

androidx.navigation:navigation-*:2.6.0-alpha02 wird freigegeben. Version 2.6.0-alpha02 enthält diese Commits.

Änderungen des Verhaltens

  • Wenn die ID einer Navigationsgrafik an AppBarConfiguration übergeben wird (z. B. über Menu), berücksichtigt NavigationUI jetzt nur das Startziel dieser Navigationsgrafik als Ziel auf oberster Ebene. Es wird nicht mehr jedes Ziel in der Grafik als Ziel auf oberster Ebene markiert. Das Verhalten bei der Übergabe der ID eines einzelnen Ziels bleibt unverändert. Dieselben Funktionen stehen Ihnen über die neue isTopLevelDestination-Funktion in AppBarConfiguration für Ihren eigenen Code zur Verfügung. (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 nicht mehr aktualisiert, wenn du zu einem FloatingWindow-Ziel navigierst, z. B. zu einem Dialogfeld. (I4cde8, b/240308330)

Version 2.6.0-alpha01

7. September 2022

androidx.navigation:navigation-*:2.6.0-alpha01 wird freigegeben. 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 deiner 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. Dadurch werden wiederholte Abfrageparameter unterstützt, die dem Arraytyp des Arguments zugeordnet werden. NavType enthält außerdem eine Standardmethode, die überschrieben werden kann, um zwei geparste Werte zu kombinieren. (Id68c3, b/209977108)
  • Wenn Sie im Aktivitätselement einer Navigations-XML-Datei genau den String ${applicationId} als Platzhalter in den Attributen app:data und app:dataPattern verwenden, wird der Platzhalter beim Inflation automatisch mit dem packageName des Kontexts ausgefüllt. (Iaabde, b/234223561)
  • Wenn Sie versuchen, mit der Kotlin-DSL von navDeepLink eine leere NavDeepLink zu erstellen, wird jetzt eine Lint-Warnung ausgegeben, 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 NavDestination-Erweiterungsfunktion 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 des Verhaltens

  • Die arguments von NavBackStackEntry und die an OnDestinationChangedListener übergebenen arguments sind jetzt nur eine Kopie der unveränderlichen Argumente, die beim Aufrufen des Ziels erstellt wurden. Das bedeutet, dass Änderungen, die an diesen Bundles vorgenommen werden, nicht bei nachfolgenden Zugriffen auf die Instanz arguments oder andere OnDestinationChangedListener berücksichtigt werden. (I676f5)

Fehlerkorrekturen

  • Von Navigation 2.5.2: Die dynamische Navigation versucht nun ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor sie aufgerufen werden. (Ia2c16, b/240292838)
  • Von Navigation 2.5.2: Die Navigation ersetzt jetzt ordnungsgemäß die Fragmentinstanz, wenn Sie zum selben Ziel navigieren und das Flag launchSingleTop auf „true“ setzen. (I5a2f1, b/237374580)
  • Von Navigation 2.5.2: Das Problem IllegalStateException wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, in der ein übergeordnetes Element mit einem neuen Startziel geteilt wurde. (I9f7cb, b/243778589)

Version 2.5

Version 2.5.3

24. Oktober 2022

androidx.navigation:navigation-*:2.5.3 wird freigegeben. Version 2.5.3 enthält diese Commits.

Fehlerkorrekturen

  • NavHost“ verursacht keinen NoSuchElementException mehr, wenn kein Ziel für die Nachricht „Crossfade“ verfügbar ist. Die Komposition wird jetzt übersprungen. (Ieb46e, b/253299416)
  • Ein Problem wurde behoben, bei dem der gespeicherte Status der Erstellung (z.B. Verwendungen von rememberSaveable) nicht vergessen und entfernt wurde, wenn ein Ziel aus dem Back-Stack entfernt wurde. (I64949)

Version 2.5.2

7. September 2022

androidx.navigation:navigation-*:2.5.2 wird freigegeben. Version 2.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Die dynamische Navigation versucht nun ordnungsgemäß, Aktivitätsziele aus anderen Modulen zu installieren, bevor sie geöffnet werden. (Ia2c16, b/240292838)
  • Die Fragmentinstanz wird jetzt korrekt ersetzt, wenn Sie zum selben Ziel navigieren und das Flag launchSingleTop auf „true“ setzen. (I5a2f1, b/237374580)
  • Das Problem mit IllegalStateException wurde behoben, das durch das Aufrufen einer doppelt verschachtelten Grafik verursacht wurde, in der ein übergeordnetes Element mit einem neuen Startziel geteilt wurde. (I9f7cb, b/243778589)

Abhängigkeitsaktualisierung

Version 2.5.1

27. Juli 2022

androidx.navigation:navigation-*:2.5.1 wird freigegeben. Version 2.5.1 enthält diese Commits.

Fehlerkorrekturen

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

Aktualisierungen von Abhängigkeiten

Version 2.5.0

29. Juni 2022

androidx.navigation:navigation-*:2.5.0 wird freigegeben. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • CreationExtras-Integration: Navigation bietet jetzt die Möglichkeit, eine zustandslose ViewModelProvider.Factory über die CreationExtras des Lebenszyklus 2.5.0 bereitzustellen.

NavigationssafeArgs

  • Navigation Safe Args hat die Android Gradle Plugin-Abhängigkeit aktualisiert, sodass sie auf 7.0.4 basiert. Dadurch wird die Kompatibilität für AGP-Versionen vor dem 7.0 verringert.
  • Das Attribut „build.gradle“ im Namespace, das anstelle der Anwendungs-ID verwendet werden soll, wird jetzt unterstützt.

Weitere Änderungen

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

Version 2.5.0-rc02

15. Juni 2022

androidx.navigation:navigation-*:2.5.0-rc02 wird freigegeben. Version 2.5.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Das Problem mit einem Absturz behoben, der durch schnelles Wechseln zwischen den unteren Zielen bei Verwendung der Funktion „Navigationserstellung“ NavHost verursacht wurde. (I3979a, b/234054916)
  • Navigation SafeArgs stürzt nicht mehr ab, wenn ein applicationIdSuffix und ein Namespace verwendet werden, wenn kein applicationId vorhanden ist oder wenn sich applicationId und Namespace unterscheiden. (I754b1, b/233119646)
  • NavArgument verfügt jetzt über eine benutzerdefinierte toString()-Funktion, um die internen Werte des Arguments anzuzeigen. (I900a8)

Version 2.5.0-rc01

11. Mai 2022

androidx.navigation:navigation-*:2.5.0-rc01 wird freigegeben. Version 2.5.0-rc01 enthält diese Commits.

Neue Funktionen

  • Eine neue Lint-Regel wurde hinzugefügt, um vor der Platzierung von <deeplink>-Elementen innerhalb von <activity>-Elementen in Ihrer navigation.xml-Datei zu warnen.(Ic15a5, b/178403185)

Fehlerkorrekturen

  • Zusammensetzbare Bereiche in NavHost und DialogHost werden jetzt in der erwarteten Reihenfolge gelöscht, d.h., innere zusammensetzbare Funktionen werden vor äußeren zusammensetzbaren Funktionen entsorgt. (I157e6)
  • Die SafeArgs-Navigationsfunktion verwendet jetzt PathSensitivity.RELATIVE im ArgumentsGenerationTask, um die Cache-Neulokalisierung zu ermöglichen. Das bedeutet, dass der Cache-Eintrag jetzt von einem CI-Build in einem 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 wird freigegeben. Version 2.5.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • DialogNavigator verwendet jetzt popWithTransition, wenn ein dismiss()-Aufruf ausgeführt wird. Dadurch wird eine Race-Bedingung bei Verwendung eines ViewModel innerhalb des dialog-Ziels behoben, die beim Schließen des Dialogfelds entweder durch eine Systemrückgabe oder durch Tippen außerhalb des Dialogfelds zum Beenden ein IllegalStateException verursacht. (Id7376, b/226552301)

Aktualisierungen von Abhängigkeiten

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

Version 2.5.0-alpha04

6. April 2022

androidx.navigation:navigation-*:2.5.0-alpha04 wird freigegeben. 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 sollen. Das bedeutet, dass bei Verwendung des verschachtelten NavHosts das innere NavHost-Element jetzt korrekt heraus animiert werden sollte. (I4ba2b, b/225394514)
  • Der von NavController bereitgestellte visibleEntries StateFlow basiert jetzt auf dem maximalen Lebenszyklusstatus des Eintrags und nicht auf dem aktuellen Lebenszyklusstatus. Das bedeutet, dass die Liste der sichtbaren Gesamtelemente auch dann unverändert bleibt, wenn der Hostlebenszyklus von navController unter „STARTED“ fällt. (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 jetzt URIs mit einem einzelnen Abfrageparameter ohne Wert parsen. (I0efe8, b/148905489)
  • Leere Strings werden in Deeplinks jetzt als gültige Argumente betrachtet. (I70a0d, b/217399862)
  • Navigation Safe Args stürzt bei der Verwendung von Namespaces nicht mehr ab und es ist kein AndroidManifest.xml vorhanden. (I17ccf, b/227229815)

Version 2.5.0-alpha03

23. Februar 2022

androidx.navigation:navigation-*:2.5.0-alpha03 wird freigegeben. Version 2.5.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.5.0-alpha02

9. Februar 2022

androidx.navigation:navigation-*:2.5.0-alpha02 wird freigegeben. Version 2.5.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Von der Navigation 2.4.1: NavHostFragment legt den OnBackPressedDispatcher jetzt korrekt fest, wenn ViewBinding mit verschachtelten Diagrammen verwendet wird. (Ifbb51, b/214577959)
  • Von der Navigation 2.4.1: Wenn Deeplinks über mehrere verschachtelte NavGraphs erstellt werden, enthält der Back-Stack jetzt ordnungsgemäß zwischengeschaltete Startziele. (I504c0, b/214383060)

Version 2.5.0-alpha01

26. Januar 2022

androidx.navigation:navigation-*:2.5.0-alpha01 wird freigegeben. Version 2.5.0-alpha01 enthält diese Commits.

Neue Funktionen

Fehlerkorrekturen

  • Der Zugriff auf ein ViewModel, das über by navGraphViewModels() über die onCreate() eines Fragments erstellt wurde, schlug mit IllegalStateException fehl. Dieses Problem wurde behoben. (I8a14d)
  • NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal, sodass die richtigen Argumente jetzt an das endgültige Ziel übergeben werden. (I31b0a, b/210711399)

Sichere Argumente

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

Version 2.4.2

Version 2.4.2

6. April 2022

androidx.navigation:navigation-*:2.4.2 wird freigegeben. 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 wird freigegeben. 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 enthält der Back Stack jetzt korrekt zwischengeschaltete Startziele. (I504c0, b/214383060)
  • Von Navigation 2.5.0-alpha01 rückportiert: Ein Problem wurde behoben, bei dem der Zugriff auf ein ViewModel, das über by navGraphViewModels() über die onCreate() eines Fragments erstellt wurde, mit einem IllegalStateException fehlgeschlagen ist. (I8a14d)
  • Von der Navigation 2.5.0-alpha01 zurückportiert: NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal, sodass die ordnungsgemäß decodierten Argumente jetzt an Ihr endgültiges Ziel übergeben werden. (I31b0a, b/210711399)
  • Aus Navigation 2.5.0-alpha01 zurückportiert: Safe Args hängt jetzt von der 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, sondern 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 wird freigegeben. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dies hat die Null-Zulässigkeit von Klassen mit generischen Elementen (z. B. NavType-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der -ktx-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die -ktx-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer.
  • Das Artefakt navigation-fragment enthält jetzt eine vordefinierte Implementierung eines Zweifensterlayouts über das neue AbstractListDetailFragment. Dieses Fragment verwendet ein SlidingPaneLayout zum Verwalten eines Listenbereichs, den Ihre Unterklasse bereitstellt, und einem Detailbereich, in dem NavHostFragment als Implementierung verwendet wird, wie in unserer Beispielimplementierung dargestellt.
  • Die Methode currentBackStackEntryAsFlow() für NavController stellt eine Flow bereit, die ausgelöst wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung eines OnDestinationChangedListener verwendet werden.
  • NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren NavBackStackEntry-Instanzen als StateFlow über die experimentelle Eigenschaft visibleEntries abzurufen.
  • Die NavType-Klasse kann jetzt erweitert werden, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie die Navigationsgrafik programmatisch erstellen, z. B. über Navigation Graph Kotlin DSL.
  • Navigation bietet jetzt findStartDestination()- und getHierarchy()-APIs, mit denen benutzerdefinierte NavigationUI implementiert werden kann. findStartDestination() ist eine Erweiterungsfunktion auf NavGraph, mit der das tatsächliche Startziel ermittelt wird, das angezeigt wird, wenn du zur Grafik navigierst, auch wenn startDestination selbst eine verschachtelte NavGraph ist. getHierarchy() ist eine Funktion für 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, für die eine BottomNavigationView erforderlich war, wurden aktualisiert. Stattdessen wird jetzt die in Material 1.4.0, NavigationBarView, eingeführte Basisklasse verwendet. Dadurch können diese Methoden mit dem NavigationRailView verwendet werden.

  • Wenn ein <action>-Element über XML infließt, können Animationsattribute Attribute verwenden, die mithilfe der app:enterAnim="?attr/transitionEnter"-Syntax aus dem Design abgerufen wurden.

  • Safe Args generiert nun eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse. (#122, b/136967621)

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

Navigationsrouten und Kotlin-DSL

In früheren Versionen von Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen gleichgeordneten Zielen identifizieren würde und es Ihnen ermöglicht, dieses Ziel entweder direkt oder über eine Aktion mit navigate() zu identifizieren. Dies ist weiterhin gültig und nützlich, insbesondere in Fällen, in denen Sie Ihre Navigationsgrafik in XML definieren und automatisch generierte R.id-Konstanten oder Safe Args verwenden können, das diese Konstanten zum Generieren von Code während der Build-Erstellung verwendet. Dieses System mit eindeutigen Ganzzahlen erfasst jedoch nicht die semantische Bedeutung und Aussagekraft, die zur Unterstützung vollständig dynamischer Diagramme, die programmatisch zur Laufzeit über die Navigation Kotlin DSL erstellt wurden, erforderlich ist.

Mit dieser Version wird eine neue Option eingeführt, mit der ein Ziel in einer Navigationsgrafik anhand seiner route eindeutig identifiziert werden kann. Eine Route ist eine String, die den eindeutigen Pfad zu einem Ziel definiert. Alle Kotlin-DSL-Methoden, für die eine Ziel-ID verwendet wurde, wurden eingestellt und durch eine entsprechende API ersetzt, die eine Route verwendet.

Jede Route sollte als der „path“-Teil eines Uri behandelt werden, der das Ziel definiert. Beispiel: 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 nimmt. Dazu gehören navigate(), popBackStack(), popUpTo() und getBackStackEntry().

Dies hatte einige API-Auswirkungen:

  • Die Kotlin-Eigenschaft popUpTo der Kotlin-DSL wurde zugunsten von popUpToId eingestellt.
  • Die getStartDestination() API wurde zugunsten von getStartDestinationId() eingestellt.

Anders als bei der Navigation nach ID gelten für das Navigieren nach Routen dieselben Regeln wie für implizite Deeplinks. Sie können also direkt zu einem beliebigen Ziel in einer verschachtelten Grafik navigieren. Dadurch wird sichergestellt, dass diese Routen in Projekten mit mehreren Modulen verwendet werden können, ohne explizit einen extern sichtbaren Deeplink zu jedem Ziel hinzuzufügen.

Navigationserstellung

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

Diese Version bietet Folgendes:

  • Eine zusammensetzbare NavHost-Funktion, mit der Sie Ihre Navigationsgrafik über eine Kotlin-DSL mit composable- und dialog-Zielen erstellen können. Außerdem unterstützt sie optionale Navigatoren, z. B. aus Accompanist Navigation Material.
  • Obligatorische Unterstützung für Übergänge zwischen Zielen. Die Navigationsanimation für Begleitpersonen kann zur Steuerung der Ein- und Ausstiegsübergänge mithilfe von experimentellen Compose-APIs verwendet werden.
  • Geltungsbereich eines Lifecycle zu jedem zusammensetzbaren Ziel. Jedes Ziel erreicht den Status RESUMED erst, wenn eine Übergangsphase abgeschlossen ist, und fällt sofort auf STARTED, wenn ein abspringender Wechsel beginnt. So können Sie alle IllegalStateException- und Multi-Touch-Probleme vermeiden, indem Sie nur einen navigate-Aufruf auslösen, wenn Lifecycle den Wert RESUMED hat.
  • Zugehörigkeit von ViewModel (über die viewModel() API von Lifecycle ViewModel Compose 2.4.0 oder hiltViewModel() von Hilt Navigation Compose 1.0.0 auf Zielebene, wobei ein Bereich bereitgestellt wird, der Konfigurationsänderungen übersteht und auf dem Back-Stack liegt (wenn Ihr zusammensetzbarer Inhalt anderweitig entsorgt wird) und ein Signal in onCleared() des ViewModel, das die dauerhafte Entsorgung und Bereinigung des mit diesem NavBackStackEntry verknüpften Zustands anzeigt.
  • Umfang des Status rememberSaveable auf Zielebene, damit der gesamte zusammensetzbare Status gespeichert und wiederhergestellt wird, wenn Sie zu einem Ziel zurückkehren.
  • Vollständige Unterstützung zum Speichern und Wiederherstellen des Status von NavController und des Status des Ziels nach dem Tod und der Neuerstellung des Prozesses.
  • Automatische Integration mit der Zurück-Schaltfläche des Systems.
  • Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben von Ergebnissen an vorherige Ziele.

  • Erstellen Sie spezifische Hilfsprogramme in rememberNavController() und currentBackStackEntryAsState(), um den Windstatus zuzulassen und die NavController mit zusammensetzbaren Funktionen außerhalb des 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 Navigationshilfe für die Inhaltserstellung.

Mehrere Back-Stacks

NavController ist für die Verwaltung des Back-Stacks der Ziele verantwortlich und fügt dem Back-Stack Ziele hinzu, wenn Sie navigate() zu ihnen hinzufügen, und sie zu entfernen, wenn Sie popBackStack() aufrufen oder die System-Zurück-Schaltfläche auslösen. Die vorhandene NavOptions-Klasse und die Integration in <action>-Elemente in der XML-Navigationsgrafik wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen.

Im Rahmen dieser Änderung wird mit den NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() jetzt der Status der Pop-up-Ziele automatisch gespeichert und wiederhergestellt. Dadurch werden mehrere Back-Stacks ohne Codeänderungen unterstützt. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration in mehrere Back-Stacks.

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

  • In der Navigations-XML-Datei kann das <action>-Element jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwenden, um den Status aller Ziele zu speichern, die über app:popUpTo per Pop-up abgerufen wurden, und den Status wiederherzustellen, der mit dem Ziel verknüpft ist, das als app:destination übergeben wurde:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • In der navOptions Kotlin-DSL können Sie die booleschen Attribute restoreState und 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
      }
    }
    
  • Wenn Sie ein NavOptions-Objekt manuell über den NavOptions.Builder erstellen, können Sie setRestoreState() und die neue Überlastung setPopUpTo() verwenden, für die ein zusätzlicher saveState-Parameter benötigt wird.

    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 Status zu löschen, der mit popBackStack() oder popUpToSaveState gespeichert wurde.

In allen Fällen wird der Status jeder NavBackStackEntry in der NavController gespeichert und wiederhergestellt, einschließlich aller ViewModel-Instanzen, die auf das Navigationsziel beschränkt sind. Die Navigator APIs wurden aktualisiert, damit jeder Navigator den eigenen Status speichern und wiederherstellen kann.

Änderungen des Verhaltens

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE zu der von createPendingIntent() zurückgegebenen PendingIntent hinzu, damit diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist.
  • Die Navigation hängt jetzt vom Lebenszyklus 2.3.1 ab und markiert jetzt setGraph(), popBackStack(), navigateUp() und navigate(), die Methoden, die NavBackStackEntry Lifecycle aktualisieren, als @MainThread, wodurch die Navigation mit der im Lebenszyklus 2.3.0 eingeführten Erzwingung des Hauptthreads ausgerichtet wird.
  • Deeplinks prüfen jetzt, ob alle erforderlichen Argumente (ohne Standardwerte) im Uri vorhanden sind.
  • In NavDeepLink geparste Argumente betrachten das Rautezeichen jetzt auf dieselbe Weise wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten. Dadurch wird verhindert, dass sich ein Argument über das Rautezeichen erstreckt.
  • Beim Generieren von Aktionen werden mit dem von Safe Args generierten Kotlin-Code jetzt Argumente ohne Standardwerte vor denen mit Standardwerten als Parameter platziert.
  • Beim Generieren von Argumenten werden von Safe Args jetzt Parameter ohne Standardwerte vor denen mit Standardwerten platziert.
  • Safe-Args hängt jetzt vom Android-Gradle-Plug-in 4.2.0 ab. Das bedeutet, dass du die Warnung „applicationIdTextResource“ nicht mehr erhalten solltest.

Bekannte Probleme

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

Version 2.4.0-rc01

15. Dezember 2021

androidx.navigation:navigation-*:2.4.0-rc01 wird freigegeben. Version 2.4.0-rc01 enthält diese Commits.

Änderungen des Verhaltens

  • In NavDeepLink geparsten Argumenten werden jetzt Rautezeichen auf dieselbe Weise wie Fragezeichen als Trennzeichen zwischen Argumenten behandelt. (I21309, b/180042703)

Fehlerkorrekturen

  • Es werden keine Argumente mit Werten mehr ignoriert, die mit dem Namen des Platzhalters übereinstimmen. (If8017, b/207389470)
  • NavController stürzt nach der Wiederherstellung von NavController nicht mehr ab, wenn ein verschachteltes Ziel mithilfe von Übergängen per Pop-up aufgerufen wird. (I0f7c9, b/205021623)
  • Die Fehlermeldung bei Verwendung eines ungültigen startDestination-Werts wird jetzt standardmäßig auf die Route des Startziels gesetzt, sofern eine verfügbar ist. (I86b9d, b/208041894)

Fehlerkorrekturen bei der Navigation beim Verfassen

  • Das Problem mit dem potenziellen Absturz, der durch einen schnellen Wechsel zwischen dem Start- und einem anderen Ziel über die Elemente des unteren Navigationsmenüs verursacht wurde, wurde behoben. (Ic8976, b/208887901)
  • Dialogfeldziele werden jetzt korrekt oben auf dem Bildschirm wiederhergestellt, nachdem die Konfiguration geändert wurde oder der Prozess beendet wurde. (I4c0dc, b/207386169)
  • Der Versuch, eine ViewModel aus dem NavBackStackEntry eines Dialogfelds abzurufen, schlug fehl, wenn das Dialogfeld geschlossen wurde. Dieses Problem wurde behoben. (I6b96d, b/206465487)
  • Ein Problem wurde behoben, das bei der Verwendung von activity-Zielen mit der NavHost von Navigation Compose zu unendlichen Neuzusammensetzungen führte. (I8f64c)
  • Ein Speicherleck in der Funktion „Navigation Compose“ wurde behoben, bei dem eine Referenz der alten Aktivität nach einer Konfigurationsänderung oder einem Prozesstod beibehalten wurde. (I4efcb, b/204905432)

Safe Args – Fehlerkorrekturen

  • SafeArgs stürzt nicht mehr ab, wenn versucht wird, benutzerdefinierte Parzellen-Arrays nach dem Beenden des Prozesses wiederherzustellen. (I618e8, b/207315994)
  • Es wurde ein Fehler in sicheren Argumenten behoben, bei denen boolesche Arrays keinen null-Wert hatten. (I8c396, b/174787525)

Version 2.4.0-beta02

3. November 2021

androidx.navigation:navigation-*:2.4.0-beta02 wird freigegeben. Version 2.4.0-beta02 enthält diese Commits.

API-Änderungen

  • Durch die Verarbeitung von expliziten und impliziten Deeplinks wird jetzt automatisch das Flag saveState hinzugefügt, wenn zu einer anderen Grafik navigiert wird. Dadurch wird sichergestellt, dass Code wie NavigationUI.setupWithNavController und Code mit mehreren Back-Stacks wie erwartet funktionieren. (Ic8807)

Änderungen des Verhaltens

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem NavBackStackEntries nach unten in Lifecycle.State.CREATED verschoben wurden, nachdem es nach Lifecycle.State.STARTED verschoben wurde, wenn der NavHost direkt zum setContent() der Aktivität hinzugefügt wurde. (Ia5ac1, b/203536683)
  • Es wurde eine Race-Bedingung behoben, bei der das Dialogfeld nicht tatsächlich geschlossen werden konnte, wenn ein DialogFragment-Ziel aus dem Back-Stack entfernt wurde, bevor das Dialogfeld tatsächlich angezeigt wurde. Dies führte zu einem Absturz, wenn das fehlerhafte Dialogfeld vom Nutzer manuell geschlossen wurde. (I687e5)
  • Ein Problem wurde behoben, bei dem die onNavDestinationSelected API auf NavigationUI true zurückgegeben hat, auch wenn Sie für diese Navigationsgrafik nicht navigate() angegeben haben. Es verwendet jetzt dieselbe Logik, die intern von setupWithNavController verwendet wird, um nur die MenuItem auszuwählen, die dem aktuellen Ziel unter Verwendung des hierarchy des Ziels zugeordnet sind. (I2b053)

Version 2.4.0-beta01

27. Oktober 2021

androidx.navigation:navigation-*:2.4.0-beta01 wird freigegeben. Version 2.4.0-beta01 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Die visibleEntries API ist jetzt experimentell. (I93f6f)

Fehlerkorrekturen

  • ViewModels werden nicht mehr gelöscht, wenn Übergänge durch das Wechseln zwischen denselben Bildschirmen unterbrochen werden (Id52d8, b/200817333).
  • NavDeepLink-Argumente, für die Nullwerte zulässig sind, erfordern beim Hinzufügen von Deeplinks zu NavDestinations keinen Standardwert mehr. (I5aad4, b/201320030)
  • NavBackStackEntries, die jetzt verschiedene Lebenszyklen haben, gelten nicht mehr als gleich. Das bedeutet, dass NavHost alle Ziele ordnungsgemäß neu zusammenstellt, wenn die Navigation mit singleTop ausgeführt wird und wenn die unteren Menüelemente neu ausgewählt werden. (I1b351, b/196997433)
  • Ein Problem mit AbstractListDetailFragment wurde behoben, bei dem die Attribute layout_width und layout_weight im von onCreateListPaneView() zurückgegebenen Listenbereich falsch verarbeitet oder ignoriert wurden. f5fbf3
  • Der visuelle Status der Dialogziele bleibt jetzt korrekt mit dem Status von DialogFragmentNavigator synchron. Das bedeutet, dass durch manuelles Aufrufen der asynchronen dismiss() API für DialogFragment jetzt alle Dialogfeldziele über dem jetzt geschlossenen Dialogfeld ordnungsgemäß gelöscht werden. Dies hat keine Auswirkungen auf Fälle, in denen Sie das Dialogfeld mit popUpTo oder popBackStack() schließen. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener enthält jetzt klarere Fehlermeldungen für onDestinationChanged(). (Ie742d)

Version 2.4.0-alpha10

29. September 2021

androidx.navigation:navigation-*:2.4.0-alpha10 wird freigegeben. Version 2.4.0-alpha10 enthält diese Commits.

Neue Funktionen

  • NavController bietet jetzt die Möglichkeit, eine Liste aller sichtbaren NavBackStackEntry-Instanzen über den visibleEntries-StateFlow (Ia964e) abzurufen
  • rememberNavController() verwendet jetzt einen optionalen Satz von Navigator-Instanzen, die dem zurückgegebenen NavController hinzugefügt werden, um optionale Navigatoren, z. B. aus Accompanist Navigation Material, besser zu unterstützen. (I4619e)

Fehlerkorrekturen

  • Die dynamische Navigation stürzt nicht mehr ab, wenn die Aktivität neu erstellt wird. (Ifa6a3, b/197942869)
  • Es wurde ein Problem mit der Systemschaltfläche „Zurück“ behoben, das nur nach einem Pop-up zu einem zusammensetzbaren Ziel mit einem NavHost-Element aufgetreten ist. (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 wird freigegeben. Version 2.4.0-alpha09 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Die Kotlin-DSL-Funktion navArgument ist jetzt Teil von navigation-common anstelle von navigation-compose. Damit diese Funktion weiterhin verwendet werden kann, müssen Importe aktualisiert werden. (I1d095)

Änderungen des Verhaltens

  • Beim Generieren von Argumenten werden von Safe Args jetzt Parameter ohne Standardwerte vor denen mit Standardwerten platziert. (I89709, b/198493585)

Fehlerkorrekturen

  • Wenn Sie Navigation Compose verwenden, ist NavGraphs erst DESTROYED, wenn alle untergeordneten Elemente DESTROYED sind. (I86552, b/198741720)
  • NavDeepLink-Argumente, in denen Nullwerte zulässig sind, erfordern keinen Standardwert mehr. (Ia14ef, b/198689811)
  • Wenn Sie setGraph() mit einem neuen Diagramm aufrufen, werden jetzt zusätzlich zum vorherigen Pop-up des Back-Stacks auch alle gespeicherten Back-Stacks gelöscht. (I97f96)
  • Es wurde ein Problem behoben, bei dem OnDestinationChangedListener-Instanzen und der currentBackStackEntryFlow bei der Verwendung von launchSingleTop nicht benachrichtigt wurden. (Iaaebc)

Aktualisierungen von Abhängigkeiten

Version 2.4.0-alpha08

1. September 2021

androidx.navigation:navigation-*:2.4.0-alpha08 wird freigegeben. Version 2.4.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Die NavType-Klasse kann jetzt erweitert werden, um benutzerdefinierte NavTypes zu erstellen. Benutzerdefinierte Typen werden nur unterstützt, wenn Sie die Navigationsgrafik programmatisch erstellen, z. B. über Navigation Graph Kotlin DSL. (I78440, b/196871885)

Änderungen des Verhaltens

  • Beim Generieren von Aktionen werden mit dem von Safe Args generierten Kotlin-Code jetzt Argumente ohne Standardwerte vor denen mit Standardwerten als Parameter platziert. (Idb697, b/188855904)
  • Deeplinks prüfen jetzt, ob alle erforderlichen Argumente (ohne Standardwerte) im Uri vorhanden sind. (#204, b/185527157)

Fehlerkorrekturen

  • Die Verwendung von getBackStackEntry und previousBackStackEntry innerhalb von composable() in Verbindung mit remember() führt nicht mehr zu einer Ausnahme, weil sich kein Ziel im Back-Stack befindet. (I75138, b/194313238)
  • Die Funktion „Navigation Compose“ wird jetzt korrekt neu zusammengesetzt, wenn Backstack-Argumente geändert und launchSingleTop=true verwendet werden. (Iebd69, b/186392337)
  • Es gibt kein ArrayIndexOutOfBoundsException mehr, wenn setGraph mit einem Diagramm mit 13 oder 29 Zielen aufgerufen wird. (I1a9f1, b/195171984)
  • Der SafeArgs-Java-Generator sollte beim Generieren von Args-Klassen keine Lint-Warnungen mehr auslösen. (I1a666, b/185843837)

Externer Beitrag

  • Vielen Dank an ospixd, dass Sie mithilfe von Deeplinks prüfen, ob alle erforderlichen Argumente (ohne Standardwert) in der Uri vorhanden sind. (#204, b/185527157)

Version 2.4.0-alpha07

18. August 2021

androidx.navigation:navigation-*:2.4.0-alpha07 wird freigegeben. Version 2.4.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Die Funktion „Navigation Compose“ speichert jetzt den Status nach Konfigurationsänderungen und beim Ändern von Grafiken bei Verwendung der Multi-Back-Stack-Funktion ordnungsgemäß. (If5a3d, b/195141957)
  • Wenn beim Verwenden der Navigation zum Schreiben mit mehreren Back-Stacks derselbe Tab noch einmal ausgewählt wird, wird kein leerer Bildschirm mehr angezeigt. (I860dc, b/194925622)
  • NavHost überwacht jetzt Änderungen an Lifecycle.State von NavBackStackEntry-Werten. Das bedeutet, dass die Verwendung eines NavHost in einem Fragment jetzt ordnungsgemäß neu zusammengesetzt wird, wenn sich der Lebenszyklus ändert, anstatt einen leeren Bildschirm zu erhalten. (I4eb85, b/195864489)
  • Ein Problem wurde behoben, bei dem das Schließen eines DialogFragment-Objekts nach der Neuerstellung der Aktivität (z.B. nach einer Konfigurationsänderung) der Status NavController nicht korrekt aktualisiert wurde. (Icd72b)
  • Ein Problem wurde behoben, bei dem durch das Pop-up eines Dialogfeldziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Back-Stack vorhanden ist. (If3b34)
  • Safe-args generiert jetzt automatisch eine toSavedStateHandle-Methode für Argumente, mit denen Sie Ihren ViewModel-Code testen können. (If1e2d, b/193353880)

Version 2.4.0-alpha06

4. August 2021

androidx.navigation:navigation-*:2.4.0-alpha06 wird freigegeben. 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 des Verhaltens

  • Beim Navigieren mit Animationen (z. B. Crossfade) erreicht die Lifecycle des neuen Ziels nur noch den RESUMED, wenn die Animation abgeschlossen ist. (If0543, b/172112072, b/194301889)
  • Mit der Funktion NavHost für Navigation Compose wird die Grafik jetzt als Teil der ersten Komposition festgelegt. (Ieb7be)

Fehlerkorrekturen

  • Wenn das letzte Ziel eines Navigationsdiagramms aufgerufen wird, wird kein ClassCastException mehr ausgegeben. (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 aufgetreten ist. (938a0c, b/193805425)
  • Es wurde ein Problem in „Navigation Compose“ behoben, bei dem ein mit Deeplink verknüpftes NavBackStackEntry den Status RESUMED nicht erreichte. (I192c5)
  • Ein Problem wurde behoben, bei dem durch das Pop-up eines Dialogfeldziels die Verarbeitung der Zurück-Schaltfläche des NavController-Systems nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Zurück-Schaltfläche abgefangen hat, obwohl kein Back-Stack vorhanden ist, der angezeigt werden kann. (aosp/1782668)

Version 2.4.0-alpha05

21. Juli 2021

androidx.navigation:navigation-*:2.4.0-alpha05 wird freigegeben. Version 2.4.0-alpha05 enthält diese Commits.

Änderungen des Verhaltens

  • In NavHost von Navigation Compose werden jetzt beim Navigieren durch Ziele immer Überblendungen verwendet. (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 werden als gleich angesehen und der Back-Stack NavController wird nicht gelöscht. (I0b8db, b/175392262)

Fehlerkorrekturen

  • Ein NoSuchElementException wurde behoben, wenn popBackStack() aus einem LifecycleObserver aufgerufen wurde, das an eine NavBackStackEntry angehängt ist, was durch erneute Aktualisierungen des NavController-Status verursacht wurde. (I64621)
  • AbstractListDetailFragment lässt jetzt zu, dass SlidingPaneLayout vollständig aus deinem APK entfernt wird, wenn AbstractListDetailFragment nicht verwendet wird. (I611ad)
  • NavGraph und NavDestination überschreiben jetzt die Gleichheitsmethode, sodass 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 wird freigegeben. Version 2.4.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Das Artefakt navigation-fragment enthält jetzt eine vordefinierte Implementierung eines Zweifensterlayouts über das neue AbstractListDetailFragment. Dieses Fragment verwendet ein SlidingPaneLayout zum Verwalten eines Listenbereichs, den Ihre Unterklasse bereitstellt, und einem Detailbereich, in dem NavHostFragment als Implementierung verwendet wird, wie in unserer Beispielimplementierung dargestellt. (Iac4be, b/191276636)
  • NavHost des navigation-compose-Artefakts unterstützt jetzt zusätzlich zu composable-Zielen dialog-Ziele. Diese Dialogziele werden jeweils in einer zusammensetzbaren Dialog über dem aktuellen composable-Ziel angezeigt. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

API-Änderungen

  • Die Funktion add in NavigatorState wurde in push umbenannt. Alle aktuellen Aufrufe von add() müssen in push() geändert werden. (Ie89fc, b/172112072)
  • Benutzerdefinierte Navigator-Instanzen können jetzt mit den APIs pushWithTransaction und popWithTransition auf NavigatorState ein Ziel asynchron per Push oder Pop übertragen. Beachten Sie, dass diese APIs noch von keinem der enthaltenen Navigatoren verwendet werden. (Ic4d7c, b/172112072)

Änderungen des Verhaltens

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE zu der von createPendingIntent() zurückgegebenen PendingIntent hinzu, damit diese API wie erwartet funktioniert, wenn sie auf Android 12 ausgerichtet ist. (If8c52)

Fehlerkorrekturen

  • Ein Problem mit <include-dynamic> wurde behoben, bei dem an die Grafik übergebene Argumente nicht korrekt an die dynamisch eingefügte Grafik übergeben wurden. (I3e115)
  • Ein NullPointerException beim Aufrufen eines Ziels mit einem string[]-Argument mit dem Standardwert @null wurde behoben. I1fbe8
  • Fügen Sie ProGuard-Regeln für @Navigator.Name hinzu, um Probleme bei der Verwendung des vollständigen Modus von R8 3.1 zu beheben. (I2add9, b/191654433)
  • SafeArgs scheitert nicht mehr, wenn Sie Ihre Anwendung mit Kotlin-Versionen vor dem 1.5.0 erstellen. (Icd1ff, b/190739257)

Version 2.4.0-alpha03

16. Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha03 wird freigegeben. Version 2.4.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem zwei navigate()-Aufrufe erforderlich waren, um zu einem enthaltenen dynamischen Diagramm zu wechseln. (I7785c, b/188859835)
  • Es wurde eine Regression behoben, die in der Navigation 2.4.0-alpha01 eingeführt wurde, bei der setupActionBarWithNavController() das Aufwärtspfeil-Symbol nicht ordnungsgemäß entfernt hat, wenn Sie sich an einem Ziel auf oberster Ebene befinden. (I5d443, b/189868637)
  • Ein IllegalStateException wurde korrigiert, wenn popBackStack() aufgerufen wurde, nachdem die Stammgrafik von NavController zuvor per Pop-up abgerufen wurde. (I2a330, b/190265699)
  • Die ProGuard-Regeln für by navArgs() werden jetzt korrekt angewendet, wenn navigation-common oder davon abhängige Artefakte verwendet werden. (I68800, b/190082521)
  • Ein OnDestinationChangedListener, das navigate() beim ersten Empfang eines Callbacks aufruft, erhält jetzt ordnungsgemäß einen zweiten Callback mit dem Ziel, zu dem es navigiert ist. (Ie5f9e, b/190228815)
  • Safe Args stürzt nicht mehr ab, wenn er mit dynamischen Funktionsmodulen und AGP 7.0 oder höher verwendet wird. (I69518, b/189966576)

Bekanntes Problem

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

Version 2.4.0-alpha02

2. Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha02 wird freigegeben. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Routen werden jetzt für Aktivitäts-, Fragment- und Dialogziele sowie in der gesamten DynamicNavigation Kotlin-DSL unterstützt. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI hat vorübergehend experimentelle APIs hinzugefügt, mit denen das Speichern Ihres Status deaktiviert werden kann. Obwohl das Speichern des Status immer richtig ist, gibt es immer noch verworfene Bibliotheken (d. h. beibehaltene Fragmente), die beim Speichern des Status nicht unterstützt werden können. Dies gibt Apps die Möglichkeit, nach und nach von nicht unterstützten APIs zu konvertieren. (Idf93c)
  • Navigation bietet jetzt findDestination()- und getHierarchy()-APIs, mit denen benutzerdefinierte NavigationUI implementiert werden kann. findDestination() ist eine Erweiterungsfunktion für NavGraph, mit der ein Ziel in der Grafik ermittelt wird. 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, für die ein BottomNavigationView verwendet wurde, wurden aktualisiert. Stattdessen wird die in Material 1.4.0, NavigationBarView, eingeführte Basisklasse verwendet. Dadurch können diese Methoden mit dem NavigationRailView verwendet werden. (Ib0b36, b/182938895)

  • Wenn ein <action>-Element über XML infließt, können Animationsattribute Attribute verwenden, die mithilfe der app:enterAnim="?attr/transitionEnter"-Syntax aus dem Design abgerufen wurden. (I07bc1, b/178291654)

API-Änderungen

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

Fehlerkorrekturen

  • DialogFragmentNavigator verwendet jetzt die NavigatorState.pop() API, um NavController zu informieren, wenn ein Dialogfeld geschlossen wird. Dazu wird auf die Schaltfläche „Zurück“ des Systems oder außerhalb davon geklickt. Dadurch wird sichergestellt, dass der NavController-Status immer mit dem Status des Navigators synchron ist. (I2ead9)
  • Die Navigation gibt kein ConcurrentModificationException mehr zurück, wenn die Liste von OnDestinationChangedListeners mit einem onDestinationChanged-Callback bearbeitet wird. (Ib1707, b/188860458)

  • Safe Args stürzt nicht mehr ab, wenn Richtungsattribute in Kotlin generiert werden sollen. (Id2416, b/188564435)

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

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

Abhängigkeitsaktualisierung

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

Version 2.4.0-alpha01

18. Mai 2021

androidx.navigation:navigation-*:2.4.0-alpha01 wird freigegeben. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Die Methode currentBackStackEntryAsFlow() für NavController stellt eine Flow bereit, die ausgelöst wird, wenn sich der aktuelle NavBackStackEntry ändert. Dieser Ablauf kann als Alternative zur manuellen Verwaltung eines OnDestinationChangedListener verwendet werden. (I19c4a, #89, b/163947280)

Mehrere Back-Stacks

NavController ist für die Verwaltung des Back-Stacks der Ziele verantwortlich und fügt dem Back-Stack Ziele hinzu, wenn Sie navigate() zu ihnen hinzufügen, und sie zu entfernen, wenn Sie popBackStack() aufrufen oder die System-Zurück-Schaltfläche auslösen. Die vorhandene NavOptions-Klasse und die Integration in <action>-Einträge in der XML-Navigationsgrafik wurden erweitert, um das Speichern und Wiederherstellen des Back-Stacks zu unterstützen. (b/80029773)

Im Rahmen dieser Änderung wird mit den NavigationUI-Methoden von onNavDestinationSelected(), BottomNavigationView.setupWithNavController() und NavigationView.setupWithNavController() jetzt der Status der Pop-up-Ziele automatisch gespeichert und wiederhergestellt. Dadurch werden mehrere Back-Stacks ohne Codeänderungen unterstützt. Wenn Sie die Navigation mit Fragmenten verwenden, ist dies die empfohlene Methode für die Integration in mehrere Back-Stacks. (Ie07ca)

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

  • In der Navigations-XML-Datei kann das <action>-Element jetzt die booleschen Attribute app:popUpToSaveState und app:restoreState verwenden, um den Status aller Ziele zu speichern, die über app:popUpTo per Pop-up abgerufen wurden, und den Status wiederherzustellen, der mit dem Ziel verknüpft ist, das als app:destination übergeben wurde:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • In der navOptions Kotlin-DSL können Sie die booleschen Attribute restoreState und 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
      }
    }
    
  • Wenn Sie ein NavOptions-Objekt manuell über den NavOptions.Builder erstellen, können Sie setRestoreState() und die neue Überlastung setPopUpTo() verwenden, für die ein zusätzlicher saveState-Parameter benötigt wird.

    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 wird der Status jeder NavBackStackEntry in der NavController gespeichert und wiederhergestellt, einschließlich aller ViewModel-Instanzen, die auf das Navigationsziel beschränkt sind. Die Navigator APIs wurden aktualisiert, damit jeder Navigator den eigenen Status speichern und wiederherstellen kann.

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

Navigationsrouten

Eine Route ist eine String, die ein Ziel eindeutig identifiziert. Dieses Konzept, das bisher nur bei der Funktion Navigation Compose verwendet wurde, wurde inzwischen zu einem Teil der zentralen Navigations-APIs entwickelt. Dies ist eine Alternative zur Verwendung von Ganzzahl-IDs, wenn Sie das Diagramm über die Navigations-Kotlin-DSL erstellen. (b/172823546)

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

Dies hatte einige API-Auswirkungen:

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

Für Entwickler, die von früheren Versionen von „Navigation Compose“ auf „Navigation Compose“ 2.4.0-alpha01 aktualisieren, sind die folgenden Importe für Erweiterungsmethoden nicht mehr erforderlich und sollten entfernt werden:

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 die Eigenschaft route auf NavDestination ersetzt, sodass Sie navBackStackEntry.destination.route direkt aufrufen können.

API-Änderungen

  • Alle Navigationsartefakte wurden in Kotlin neu geschrieben. Dies hat die Null-Zulässigkeit von Klassen mit generischen Elementen (z. B. NavType-Unterklassen) verbessert. Alle Kotlin-Erweiterungsfunktionen, die früher Teil der -ktx-Artefakte waren, wurden in ihre jeweiligen Hauptartefakte verschoben. Die -ktx-Artefakte werden weiterhin veröffentlicht, sind aber komplett leer. (b/184292145)
  • NavDeepLinkBuilder unterstützt jetzt das Hinzufügen mehrerer einzelner Ziele zum generierten Back-Stack. (I3ee0d, b/147913689)
  • Werkseinstellungen für DynamicNavHostFragment hinzufügen (Icd515, b/175222619)
  • Die eindeutige ID eines NavBackStackEntry wird jetzt im Rahmen der zugehörigen öffentlichen API bereitgestellt. (Ie033a)
  • Die Felder name und argument sowie die destruktiven Funktionen von NamedNavArgument sind jetzt öffentlich. (Nr. 174, b/181320559)
  • Es wurde eine neue NavBackStackEntry#provideToCompositionLocals-Erweiterung eingeführt, mit der NavBackStackEntry den relevanten Kompositions-Lokalen zur Verfügung gestellt wird. (#175, b/187229439)

Sichere Argumente

  • Safe Args generiert nun eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Sichere Args wurden aktualisiert und hängen von KotlinPoet 1.8.0 ab. (Nr. 172, b/183990444)

Änderungen des Verhaltens

  • Die Navigation hängt jetzt vom Lebenszyklus 2.3.1 ab und markiert jetzt setGraph(), popBackStack(), navigateUp() und navigate(), die Methoden, die NavBackStackEntry Lifecycle aktualisieren, als @MainThread, wodurch die Navigation mit der im Lebenszyklus 2.3.0 eingeführten Erzwingung des Hauptthreads ausgerichtet wird. (b/171125856)
  • Beim Parsen von Enum-Argumenten aus Deeplinks wird jetzt nicht mehr zwischen Groß- und Kleinschreibung unterschieden. So kann ein Deeplink wie http://www.example.com/red auch dann mit einem www.example.com/{color}-Deeplink übereinstimmen, wenn die Enumeration den Wert RED hat. (#152, b/135857840)

Kompatibilität der Funktion „Compose“

  • androidx.navigation:navigation-compose:2.4.0-alpha01 ist nur mit dem Tool „Compose“ ab Version 1.0.0-beta07 kompatibel.

Fehlerkorrekturen

  • Platzhalter für nachgestellte Argumente haben Vorrang vor Deeplinks mit genau übereinstimmendem Suffix. Das Problem wurde behoben. (#153, b/184072811)
  • NavHostFragment unterstützt jetzt benutzerdefinierte Navigatoren, die denselben @Navigator.Name("dialog") wie die Standard-DialogFragmentNavigator verwenden. (Ib1c2c, b/175979140)
  • Das Verhalten von NavigatorProvider#addNavigator wurde verbessert, damit kein wiederholter Aufruf mit derselben Instanz zu Problemen führt. (#176, b/187443146)

Externe Unterstützung

  • Vielen Dank, simonschiller hat die Unterstützung für Safe Args entwickelt, die eine fromSavedStateHandle()-Methode für jede NavArgs-Klasse generieren. (#122, b/136967621)
  • Bradleycorn hat dafür gesorgt, dass beim Parsen von Enum-Argumenten aus Deeplinks die Groß-/Kleinschreibung nicht berücksichtigt wird. (#152, b/135857840)
  • Vielen Dank, dass osipxd das Problem behoben hat, bei dem nachgestellte Argumentplatzhalter Vorrang vor Deeplinks mit exakt übereinstimmendem Suffix haben. (#153, b/184072811)
  • Vielen Dank, dass tatocaster Safe Args so aktualisiert hat, dass sie von KotlinPoet 1.8.0 abhängig sind. (Nr. 172, b/183990444)
  • Vielen Dank, jossiwolf, dass die Felder name und argument sowie die zerstörerischen Funktionen von NamedNavArgument öffentlich gemacht wurden. (Nr. 174, b/181320559)
  • Vielen Dank, jossiwolf, für die Einführung der neuen NavBackStackEntry#provideToCompositionLocals-Erweiterung, mit der NavBackStackEntry den entsprechenden lokalen Kompositionen zur Verfügung gestellt wird. (#175, b/187229439)
  • Vielen Dank, jossiwolf hat das Verhalten von NavigatorProvider#addNavigator verbessert, damit es keine Probleme mehr verursacht, wenn es wiederholt mit derselben Instanz aufgerufen wird. (#176, b/187443146)

Version 1.0.0-alpha10

7. April 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 wird freigegeben. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • NavHost funktioniert jetzt auch dann, wenn kein OnBackPressedDispatcherOwner gefunden wird, wie bei der Vorschau von NavHost. (I7d8b4)
  • Die Funktion „Schreibassistent“ hängt jetzt von der Navigation 2.3.5 ab. Dadurch wird ein Problem bei der Verwendung von BackHandler in einem NavHost-Ziel behoben. (I7e63b, b/182284739)

Version 1.0.0-alpha09

10. März 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 wird freigegeben. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • LocalViewModelStoreOwner.current gibt jetzt eine ViewModelStoreOwner zurück, bei der Nullwerte zulässig sind, um besser feststellen zu können, ob eine ViewModelStoreOwner in der aktuellen Zusammensetzung verfügbar ist. APIs, die ein ViewModelStoreOwner erfordern, z. B. viewModel() und NavHost, geben trotzdem eine Ausnahme aus, wenn ViewModelStoreOwner nicht festgelegt ist. (Idf39a)

Fehlerkorrekturen

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

Version 1.0.0-alpha08

24. Februar 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 wird freigegeben. Version 1.0.0-alpha08 enthält diese Commits.

Neue Funktionen

  • NavHost füllt nun das CompositionLocal-Element von LocalSavedStateRegistryOwner mit NavBackStackEntry dieses Ziels aus, um sicherzustellen, dass jeder Bundesstaat, der direkt in SavedStateRegistry gespeichert ist, 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 wird freigegeben. Version 1.0.0-alpha07 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

Version 1.0.0-alpha06

28. Januar 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 wird freigegeben. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • Eine getBackStackEntry(route: String)-Erweiterungsmethode für NavController hinzugefügt, die die verknüpfte NavBackStackEntry zurückgibt. (If8931)

Version 1.0.0-alpha05

13. Januar 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 wird freigegeben. Version 1.0.0-alpha05 enthält diese Commits.

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

Version 1.0.0-alpha04

16. Dezember 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 wird freigegeben. Version 1.0.0-alpha04 enthält diese Commits.

  • Für Kompatibilität mit „Compose“ (1.0.0-alpha09) aktualisiert.

Version 1.0.0-alpha03

2. Dezember 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 wird freigegeben. Version 1.0.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem popBackStack() und navigateUp() nach einer Konfigurationsänderung oder nach dem Tod und der Neuerstellung nicht funktionierten. (Icea47, b/173281473)
  • Das Navigieren zu verschachtelten Diagrammen auf Ihrem NavHost funktioniert jetzt ordnungsgemäß. (I0948d, b/173647694)

Version 1.0.0-alpha02

11. November 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 wird freigegeben. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • Das Schreiben der Navigation unterstützt jetzt NavOptions zur Verwendung von popUpTo- und startSingleTop-Vorgängen (If96c3, b/171468994).
  • Es wurde eine Navigationsfunktion hinzugefügt, die eine Route anstelle einer ID verwendet, mit der Sie verschachtelte Grafiken in der Navigation Compose-DSL erstellen können. (I1661d)
  • In der Liste der Parameter für einen NavHost (Ie620e) steht nun "startDestination" vor der Route.
  • Sie können jetzt außerhalb einer zusammensetzbaren NavHost-Funktion ein Diagramm mit der Route als Startziel erstellen. (Iceb75)

Version 1.0.0-alpha01

28. Oktober 2020

android.navigation:navigation-compose:1.0.0-alpha01 wird freigegeben. 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. Dabei werden @Composable-Funktionen als Ziele in Ihrer Anwendung verwendet.

Diese erste Version bietet Folgendes:

  • Eine zusammensetzbare NavHost-Funktion, mit der Sie eine Navigationsgrafik über eine Kotlin-DSL erstellen können
  • Bereich des Lebenszyklus, ViewModel und des gespeicherten Status auf Zielebene.
  • Automatische Integration mit der Zurück-Schaltfläche des Systems.
  • Unterstützung für das Übergeben von Argumenten, das Anhängen von Deeplinks an Ziele und das Zurückgeben von Ergebnissen an vorherige Ziele.
  • Erstellen Sie spezifische Hilfsprogramme in rememberNavController() und currentBackStackEntryAsState(), um den Windstatus zuzulassen und die NavController mit zusammensetzbaren Funktionen außerhalb des NavHost zu verbinden (z. B. eine untere Navigationsleiste).

Weitere Informationen finden Sie in der Navigationshilfe für die Inhaltserstellung.

Version 2.3.5

Version 2.3.5

7. April 2021

androidx.navigation:navigation-*:2.3.5 wird freigegeben. Version 2.3.5 enthält diese Commits.

Neue Funktionen

  • Wenn Sie mit einem NavDeepLinkRequest oder Uri navigieren, können Sie jetzt auf den Uri-, Aktions- und MIME-Typ im resultierenden Ziel zugreifen. Dazu rufen Sie den Intent über KEY_DEEP_LINK_INTENT aus Argumenten ab, was der Funktionalität entspricht, die bereits für externe Deeplinks verfügbar ist. (I975c3, b/181521877)

Fehlerkorrekturen

  • OnBackPressedCallbacks wurde einem Disponenten mit der Rolle NavBackStackEntry als LifecycleOwner hinzugefügt, fängt jetzt korrekt ab, nachdem der Aktivitätslebenszyklus STOPPED ist, dann STARTED (Iff94f, b/182284739)
  • Beim Parsen von Deeplink-Domains wird jetzt die Groß-/Kleinschreibung nicht mehr berücksichtigt, sodass www.example.com sowohl mit www.example.com als auch mit www.Example.com übereinstimmt. Bei Namen von Suchparametern wird nach wie vor die Groß-/Kleinschreibung beachtet. (#144, b/153829033)
  • Ein NullPointerException wurde behoben, das auftreten konnte, wenn ein Ziel mehrere Standardargumente hat, die keine Nullwerte zulassen, und Sie zu diesem Ziel navigieren, während nur eine Teilmenge dieser Argumente überschrieben wird. (aosp/1644827)

Aktualisierungen von Abhängigkeiten

  • Das Navigation Safe Args Gradle-Plug-in hängt jetzt vom Kotlin-Gradle-Plug-in 1.4.31 ab. (aosp/1661058, b/181156413)

Externer Beitrag

  • Vielen Dank bentrengrove für die Pull-Anfrage, bei der die Groß-/Kleinschreibung der Deeplink-Domain nicht berücksichtigt wird. (#144, b/153829033)

Version 2.3.4

Version 2.3.4

10. März 2021

androidx.navigation:navigation-*:2.3.4 wird freigegeben. 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. Unterstützt sowohl den ganzzahligen Rohwert als auch Hexadezimalwerte mit dem Präfix 0x. (#127, b/179166693)
  • Die android:defaultValue für ein Argument mit app:argType="float" unterstützt jetzt ganzzahlige Standardwerte, sodass Sie android:defaultValue="0" statt 0.0 verwenden können. (#117, b/173766247)

Fehlerkorrekturen

  • Probleme mit hängen gebliebenem Installationsfortschritt bei Nutzung der Navigation-Unterstützung für dynamische Funktionen wurden behoben. (Ib27a7, b/169636207)
  • Der Aufruf von setViewModelStore oder setLifecycleOwner mit demselben Objekt, das bereits festgelegt wurde, ist jetzt ein Nullbefehl (Idf491, b/177825470).
  • SafeArgs fügt bei Verwendung von Java nun Unterdrücken-Annotationen für die richtigen Methoden hinzu. (I8fbc5, b/179463137)

Externe Unterstützung

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

Version 2.3.3

Version 2.3.3

27. Januar 2021

androidx.navigation:navigation-*:2.3.3 wird freigegeben. Version 2.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Es kommt nicht mehr zu einem Absturz, wenn ein NavBackStackEntry per Pop-up aufgerufen wird, bevor seine Lifecycle in CREATED verschoben wird. (Ie3ba3)
  • Die durch b/171364502 verursachte Regression wurde behoben, bei der das Aufrufen einer Aktivität mit dem Animationsressourcenwert 0 zu ResourceNotFoundException geführt hat. (I7aedb, b/176819931)

Version 2.3.2

Version 2.3.2

2. Dezember 2020

androidx.navigation:navigation-*:2.3.2 wird freigegeben. Version 2.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression in NavigationUI wurde behoben, bei der bei Verwendung eines <activity>-Ziels mit onNavDestinationSelected die Aktivität nicht aufgerufen werden konnte. (I22e34, b/171364502)
  • Es wurde ein Problem behoben, bei dem navigation-dynamic-features-fragment dazu führte, dass das neu installierte Ziel mehrmals aufgerufen wurde. (aosp/1486056, b/169636207)
  • Ein Problem wurde behoben, bei dem Standardargumente bei Verwendung von launchSingleTop nicht an OnDestinationChangedListener-Instanzen gesendet wurden. (I2c5cb)
  • Beim Wechseln zu einer verschachtelten Navigationsgrafik wurde keine neue Grafikinstanz im Back-Stack erstellt. Dieses Problem wurde behoben. (Ifc831)
  • Ein Problem wurde behoben, bei dem die Navigationsgrafik bei der Verwendung von navigate() mit einem popUpTo, durch das das letzte Ziel in einer Navigationsgrafik entfernt wurde, nicht sofort zerstört und aus dem Back Stack entfernt wurde. (I910a3)
  • Navigation SafeArgs verwendet jetzt KotlinPoet Version 1.7.2, die Unterstützung für den expliziten API-Modus von Kotlin bietet. (I918b5)
  • NavHostFragment.findNavController(Fragment) prüft jetzt neben den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die Stammdekor-Ansicht eines DialogFragment-Elements. Auf diese Weise können Sie Dialogfragmente, die die Navigation verwenden, mit FragmentScenario und Navigation.setViewNavController() testen. (I69e0d)

Version 2.3.1

Version 2.3.1

14. Oktober 2020

androidx.navigation:navigation-*:2.3.1 wird freigegeben. 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 überschreibt jetzt den Hashcode und die Gleichheitsmethoden (b/161586466).
  • In der Navigation ist jetzt das aktuelle Ziel in der Ausnahme „= Ausnahme“ („Kein Ziel mit ID“) enthalten, wodurch das Debugging für Entwickler verbessert werden sollte. (b/168311416)

Fehlerkorrekturen

  • Sichere Argumente fassen die Rückgabezeile nicht mehr um, auch wenn der generierte Argumentklassenname mehr als 100 Zeichen umfasst. (b/168584987)

Änderungen bei Abhängigkeiten

  • navigation-ui hängt jetzt von DrawerLayout 1.1.1 ab, damit NavigationUI die Leiste auch dann öffnen kann, wenn LOCK_MODE_LOCKED_CLOSED oder LOCK_MODE_LOCKED_OPEN verwendet wird. (b/162253907)
  • Safe Args hängt jetzt von KotlinPoet 1.6.0 (aosp/1435911) ab.
  • Safe Args hängt jetzt von AGP 4.0.1 (aosp/1442337) ab.

Version 2.3.0

Version 2.3.0

24. Juni 2020

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

Wichtige Änderungen seit Version 2.2.0

  • Einbindung 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 wird automatisch nach Bedarf durchgeführt. Weitere Informationen findest du unter Mit Funktionsmodulen navigieren.
  • Navigationstests: Das Artefakt navigation-testing bietet eine TestNavHostController, mit der Sie das aktuelle Ziel festlegen und den Back Stack nach Navigationsvorgängen überprüfen können. Weitere Informationen finden Sie unter Testnavigation.
  • Ergebnis zurückgeben: Über die NavBackStackEntry, die jedem Ziel im Back-Stack Navigation zugewiesen ist, können Sie jetzt auf eine SavedStateHandle zugreifen, die sich zum Speichern kleiner Mengen an gespeicherten Statusangaben eignet, die mit einem bestimmten Back-Stack-Eintrag verknüpft sein sollen. Weitere Informationen finden Sie unter Ergebnisse 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 Aktions- und MIME-Typ in Deeplinks: Deeplinks wurden so erweitert, dass neben den bisher verfügbaren app:uri auch app:action und app:mimeType unterstützt werden. NavController unterstützt jetzt über die neue NavDeepLinkRequest-Klasse das Navigieren in einer beliebigen Kombination dieser Felder. Weitere Informationen finden Sie unter NavDeepLinkRequest verwenden.

Bekannte Probleme

  • In Manifest Merger werden Deeplink-Aktionen und MIME-Typen noch nicht unterstützt. Bis dahin enthalten generierte <intent-filter>-Elemente aus dem <nav-graph>-Element in deinem Manifest nicht deinen MIME-Typ im <data>-Element oder im benutzerdefinierten <action>. Du musst deinem Manifest manuell eine geeignete <intent-filter> hinzufügen.

Version 2.3.0-rc01

10. Juni 2020

androidx.navigation:navigation-*:2.3.0-rc01 wird freigegeben. Version 2.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein NullPointerException wurde behoben, wenn eine Instanz eines Ziels ohne Argumente durch eine andere Instanz mit Argumenten durch singleTop ersetzt wurde. (b/158006669)
  • Alle von NavController ausgelösten destination is unknown-Ausnahmen enthalten jetzt zusätzliche Debugging-Informationen, mit denen der Status von NavController ermittelt werden kann. (b/157764916)

Version 2.3.0-beta01

20. Mai 2020

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

Fehlerkorrekturen

  • Das Problem, dass Lifecycle des NavBackStackEntry nach dem Beenden des Prozesses nicht richtig aktualisiert wurde, wurde behoben. (b/155218371)
  • OnDestinationChangedListener-Instanzen, die vor dem Aufruf von setGraph() registriert wurden, werden nach dem Beenden des Prozesses korrekt an das wiederhergestellte Ziel gesendet. (b/155218371)
  • Bei der Verwendung von singleTop werden die Argumente von NavBackStackEntry jetzt korrekt aktualisiert und die aktualisierten Argumente werden an alle OnDestinationChangeListener-Instanzen gesendet. (b/156545508)

Aktualisierungen von Abhängigkeiten

Version 2.3.0-alpha06

29. April 2020

androidx.navigation:navigation-*:2.3.0-alpha06 wird freigegeben. (Version 2.3.0-alpha06 enthält diese Commits.)

Neue Funktionen

  • Deeplink wurde erweitert, um zusätzlich zu den bisher verfügbaren app:uri app:action und app:mimeType zu unterstützen. NavController unterstützt jetzt das Navigieren in einer beliebigen Kombination dieser Felder mithilfe der neuen NavDeepLinkRequest-Klasse. (b/136573074 und b/135334841)

API-Änderungen

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Deeplink-Intents bei Verwendung eines verschachtelten Startziels ignoriert wurden. (b/154532067)

Version 2.3.0-alpha05

15. April 2020

androidx.navigation:navigation-*:2.3.0-alpha05 wird freigegeben. Version 2.3.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Für dynamische Graphen mit <include-dynamic> muss app:graphPackage nicht mehr angegeben werden. Es wird ein Standardwert verwendet, indem das Suffix moduleName nach einem Punkt an die applicationId angehängt wird. Wenn du graphPackage anpassen musst, wird jetzt ein ${applicationId}-Platzhalter unterstützt. (b/152696768)
  • Die DSL für Navigationsdiagramme in Kotlin bietet jetzt einen defaultArguments Map für Aktionen, was die Fähigkeit widerspiegelt, Standardwerte für <action>-Elemente in Navigations-XML-Dateien festzulegen. (b/150345605)

Fehlerkorrekturen

  • Ab Navigation 2.2.2: Ein IllegalStateException wurde korrigiert, wenn ein Deeplink zum Startziel Ihrer Grafik angezeigt wurde, wenn Ihre Aktivität mehrere NavHostFragment-Instanzen enthält. (b/147378752)

Aktualisierungen von Abhängigkeiten

Version 2.3.0-alpha04

18. März 2020

androidx.navigation:navigation-*:2.3.0-alpha04 wird freigegeben. Version 2.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • In der Navigation Kotlin-DSL werden jetzt Feature-Modul-Aktivitäten und Fragmentziele unterstützt. (b/148969800)

API-Änderungen

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

Fehlerkorrekturen

  • NavigationUI ignoriert keine leeren Labels mehr (d.h. ein Ziel mit android:label=””) und legt jetzt korrekt für den Titel einen leeren String fest. (b/148679860)

Aktualisierungen von Abhängigkeiten

  • Die Artefakte der dynamischen Navigationsfunktionen hängen jetzt vom Play Core-1.6.5 ab. (b/149556401)

Version 2.3.0-alpha03

4. März 2020

androidx.navigation:navigation-*:2.3.0-alpha03 wird freigegeben. Version 2.3.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Die ProGuard-Regeln für navigation-common-ktx behalten jetzt nur noch die verwendeten NavArgs-Klassen bei und nicht alle NavArgs-Instanzen. (b/150213558)

Abhängigkeitsänderungen

  • Navigation hat seine Abhängigkeit vom Core-1.2.0 zurückgesetzt und hängt jetzt von Core 1.1.0 ab, um Entwickler nicht zu einer neueren Abhängigkeit zu zwingen, wenn Navigation nicht von neuen APIs im Core 1.2.0 abhängig ist.

Version 2.3.0-alpha02

19. Februar 2020

androidx.navigation:navigation-*:2.3.0-alpha02 wird freigegeben. 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 eines gespeicherten Status eignet, der mit einem bestimmten Back-Stack-Eintrag verknüpft sein sollte. Ein Anwendungsbeispiel finden Sie unter Ergebnis zurückgeben. (b/79672220)

API-Änderungen

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

Fehlerkorrekturen

  • Beim Starten der App in Ihrem eigenen Aufgabenstack übergibt navigateUp() jetzt die Argumente des aktuellen Ziels und KEY_DEEP_LINK_INTENT an das vorherige Ziel. (b/147456890)

Abhängigkeitsänderungen

Version 2.3.0-alpha01

5. Februar 2020

androidx.navigation:navigation-*:2.3.0-alpha01 wird freigegeben. 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. Damit können Sie das aktuelle Ziel festlegen und den Back Stack nach Navigationsvorgängen überprüfen. (b/140884273)
  • Mit dem neuen navigation-dynamic-features-fragment (und seiner vorübergehenden Abhängigkeit navigation-dynamic-features-runtime) kannst du Ziele oder vollständige Navigationsdiagramme (über <include-dynamic>) aus Funktionsmodulen einbinden und so beim Aufrufen dieser Ziele On-Demand-Funktionsmodule nahtlos installieren. Weitere Informationen findest du unter Mit Funktionsmodulen navigieren. (b/132170186)

Fehlerkorrekturen

  • Von der Navigation 2.2.1: Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt und hängen sie nicht an nachgestellte {argument}-Elemente an oder stimmen nicht mit dem Deeplink überein. (b/147447512)
  • Von 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)
  • Aus der Navigation 2.2.1: Das Modul navigation-common-ktx hat jetzt einen eindeutigen Manifest-Paketnamen und nicht denselben Manifest-Paketnamen wie navigation-runtime-ktx. (aosp/1141947)

Aktualisierungen von Abhängigkeiten

Version 2.2.2

Version 2.2.2

15. April 2020

androidx.navigation:navigation-*:2.2.2 werden freigegeben. Version 2.2.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein IllegalStateException behoben, der bei Deeplinks zum Startziel der Grafik auftrat, wenn in deiner Aktivität mehrere NavHostFragment-Instanzen vorhanden waren. (b/147378752)
  • NavigationUI ignoriert keine leeren Labels mehr (d.h. ein Ziel mit android:label=””) und legt jetzt korrekt für den Titel einen leeren String fest. Dies wurde bereits in Navigation 2.3.0-alpha04 veröffentlicht. (b/148679860)
  • Die ProGuard-Regeln für navigation-common-ktx behalten jetzt nur noch die verwendeten NavArgs-Klassen bei und nicht alle NavArgs-Instanzen. Dies wurde bereits in Navigation 2.3.0-alpha03 veröffentlicht. (b/150213558

Aktualisierungen von Abhängigkeiten

Version 2.2.1

Version 2.2.1

5. Februar 2020

androidx.navigation:navigation-*:2.2.1 wird freigegeben. Version 2.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Deeplinks ohne Suchparameter ignorieren jetzt Suchparameter korrekt und hängen sie nicht an die {argument}-Elemente am Ende an oder stimmen nicht mit dem Deeplink überein. (b/147447512)
  • Die navigation-ui ProGuard-Regeln für DrawerArrowDrawable wurden aktualisiert, damit android.enableJetifier=true nicht mehr benötigt wird. (b/147610424)
  • Das Modul „navigation-common-ktx“ hat jetzt einen eindeutigen Manifestpaketnamen und hat nicht mehr denselben Manifestpaketnamen wie „navigation-runtime-ktx“. (aosp/1141947)

Aktualisierungen von Abhängigkeiten

Version 2.2.0

Version 2.2.0

22. Januar 2020

androidx.navigation:navigation-*:2.2.0 wird freigegeben. 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 Navigationsdiagramms im Back Stack übergeben. Der zurückgegebene NavBackStackEntry enthält neben den Argumenten für den Start des Ziels einen navigationsbasierten LifecycleOwner, ViewModelStoreOwner (der von NavController.getViewModelStoreOwner() zurückgegeben wird) und SavedStateRegistryOwner.
  • Lebenszyklus-ViewModel-Integration: SavedStateViewModelFactory ist jetzt die standardmäßige Factory, die verwendet wird, wenn by navGraphViewModels() oder der ViewModelProvider-Konstruktor mit einem ViewModelStoreOwner zurückgegeben wird, der von NavController.getBackStackEntry() oder NavController.getViewModelStoreOwner() zurückgegeben wird.
  • Unterstützung von Suchparametern für Deeplinks: Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente mit einem Standardwert oder Nullwerten sind beim Abgleich von Deeplinks jetzt optional.
  • Verbesserte Unterstützung für Animationen: NavHostFragment verwendet jetzt FragmentContainerView aus Fragment 1.2.0. Damit werden Probleme bei der Z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben.

Version 2.2.0-rc04

18. Dezember 2019

androidx.navigation:navigation-*:2.2.0-rc04 wird freigegeben. Version 2.2.0-rc04 enthält diese Commits.

Fehlerkorrekturen

  • Die von navigation-ui verwendeten Standardanimationen zum Ausblenden wurden so angepasst, dass sie den angepassten Ausblendanimationen in Fragment 1.2.0-rc04 entsprechen. (b/145769814)

Version 2.2.0-rc03

4. Dezember 2019

androidx.navigation:navigation-*:2.2.0-rc03 wird freigegeben. 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, bei dem nicht mehr als ein Zeichen des endgültigen Pfadarguments geparst werden konnte. (b/144554689)
  • Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter "@null" statt null erhalten haben. (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, Lifecycle ViewModel SavedState 1.0.0-rc03, Aktivität 1.1.0-rc03 und Fragment 1.2.0-rc03 ab, sofern zutreffend.

Version 2.2.0-rc02

7. November 2019

androidx.navigation:navigation-*:2.2.0-rc02 wird freigegeben. 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 2.2.0-beta01 veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.

Version 2.2.0-beta01

9. Oktober 2019

androidx.navigation:navigation-*:2.2.0-beta01 wird freigegeben. Version 2.2.0-beta01 enthält diese Commits.

Neue Funktionen

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

Änderungen des Verhaltens

  • Zusätzliche Abfrageparameter werden jetzt ignoriert, wenn Deeplinks abgeglichen werden. Ein Fehler führt nicht mehr dazu. (b/141482822)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Suchparameter angegeben wurden. (b/141505755)
  • Die Kotlin-Erweiterung navArgs() auf Activity gibt jetzt eine bessere Fehlermeldung, wenn es keine Extras gibt. (b/141408999)
  • Von Safe Args generierte Directions-Java-Klassen enthalten jetzt Standardwerte. (b/141099045)
  • Von Safe Args generierte Args-Java-Klassen enthalten jetzt Standardwerte. (b/140123727)
  • Bei Verwendung von Toolbar animiert NavigationUI die Textänderung beim Wechseln zwischen zwei Zielen auf oberster Ebene nicht mehr. (b/140848160)

Version 2.2.0-alpha03

18. September 2019

androidx.navigation:navigation-*:2.2.0-alpha03 wird freigegeben. Version 2.2.0-alpha03 enthält diese Commits.

Änderungen des Verhaltens

  • Der Aufruf von setViewModelStore() nach dem Aufrufen von setGraph führt jetzt zu einem IllegalStateException. Dieser sollte bei der Ersteinrichtung immer durch 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 in Bezug auf Navigationsgrafiken angehängt sind. (aosp/1112257)

Version 2.2.0-alpha02

5. September 2019

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

Neue Funktionen

  • Deeplinks mit Abfrageparametern unterstützen jetzt neu angeordnete Abfrageparameter. Argumente, die einen Standardwert haben oder Nullwerte zulässig sind, sind jetzt beim Abgleich von Deeplinks optional. (b/133273839)
  • Sie können jetzt NavController.getBackStackEntry() aufrufen und die ID eines Ziel- oder Navigationsdiagramms auf dem Back-Stack übergeben. Der zurückgegebene NavBackStackEntry enthält neben den Argumenten für den Start des Ziels einen navigationsbasierten LifecycleOwner, ViewModelStoreOwner (der von NavController.getViewModelStoreOwner() zurückgegeben wird) und SavedStateRegistryOwner. (aosp/1101691, aosp/1101710)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Hinzufügen einer NavHostFragment zu ViewPager2 mit einer IllegalArgumentException fehlgeschlagen ist. (b/133640271)
  • NavInflater vermeidet jetzt, unnötigerweise getResourceName() anzurufen, wodurch die Inflationszeit um bis zu 40 % beschleunigt wird. (b/139213740)

Version 2.2.0-alpha01

7. August 2019

androidx.navigation:navigation-*:2.2.0-alpha01 wird freigegeben. 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 ViewModelStoreOwner verwendet wird, der von NavController.getViewModelStoreOwner() zurückgegeben wird. (b/135716331)

API-Änderungen

Fehlerkorrekturen

  • NavHostFragment verwendet jetzt FragmentContainerView. Dadurch werden Probleme mit der Z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben. (b/137310379)

Version 2.1.0

Version 2.1.0

5. September 2019

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

Wichtige Änderungen seit Version 2.0.0

  • Zuordnen von ViewModels zu Navigationsdiagrammen: Sie können jetzt ViewModels erstellen, die den Geltungsbereich auf Navigationsgrafikebene mit dem by navGraphViewModels()-Attribut-Delegaten für Kotlin-Nutzer mithilfe der -ktx-Bibliotheken oder mit der getViewModelStoreOwner() API definieren, 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 ein DialogFragment angezeigt wird, wenn Sie navigate dafür auswählen. NavHostFragment unterstützt standardmäßig Dialogziele. Weitere Informationen finden Sie unter Ziel aus einem DialogFragment erstellen.
  • Über URI navigieren: Sie können jetzt navigate mit einem Uri verwenden, das die <deepLink> verwendet, die Sie einem Ziel hinzugefügt haben, um dorthin zu navigieren. Weitere Informationen zur Navigation mit URI
  • NavHostController: APIs, die speziell zum Erstellen einer benutzerdefinierten NavHost verwendet wurden, wurden in NavHostController verschoben. Dadurch können Implementierungen ihre NavController mit dem Hosting-Gerät LifecycleOwner, OnBackPressedDispatcher und ViewModelStore verbinden.

Version 2.1.0-rc01

7. August 2019

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

API-Änderungen

  • Das veraltete getViewModelStore() API in NavController, das in 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 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

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

Version 2.1.0-beta01

17. Juli 2019

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

Neue Funktionen

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

Fehlerkorrekturen

  • Zeitproblem bei Verwendung mehrerer NavHostFragments mit demselben Container mit findNavController() wurde behoben. (b/136021571)

Version 2.1.0-alpha06

2. Juli 2019

androidx.navigation:*:2.1.0-alpha06 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Das von NavHostFragment verwendete Attribut app:navGraph wurde jetzt in das Artefakt navigation-runtime verschoben. Benutzerdefinierte navigatoren, die über XML hinzugefügt werden können, sollten dieses Attribut verwenden, um die Integration in das Host-Steuerfeld des Navigationseditors zu ermöglichen. (b/133880955)

API-Änderungen

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

Änderungen des Verhaltens

  • Die Navigation stimmt jetzt korrekt mit dem überein, was auf dem Bildschirm angezeigt wird, wenn ein <dialog>-Ziel verwendet wird. Daher werden bei der Navigation jetzt automatisch <dialog>-Ziele angezeigt, wenn Sie zu einem Ziel ohne Dialog und ohne Aktivität, wie einem <fragment>-Ziel, navigieren. (b/134089818)

Fehlerkorrekturen

  • Bei der Navigation wird jetzt die Animation unterdrückt, die bei der Neuerstellung der Aktivität bei der Verarbeitung eines Deeplinks stattfindet, sodass ein visuelles Flash behoben wird. (b/130362979)
  • Ein Fehler wurde behoben, bei dem der Back-Stack Navigation nicht synchronisiert war, wenn ein Fragment per Pop-up geöffnet wurde, während das ursprüngliche Fragment hinzugefügt wurde. (b/133832218)

Version 2.1.0-alpha05

5. Juni 2019

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

API-Änderungen

  • Host-APIs unter 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. Jetzt müssen Sie 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 Navigieren über URI nicht korrekt war. (b/132509387)
  • Von NavController automatisch verarbeitete Deeplinks werden jetzt nur einmal ausgelöst. (b/132754763)

Version 2.1.0-alpha04

16. Mai 2019

androidx.navigation:*:2.1.0-alpha04 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • NavHostFragment respektiert app:defaultNavHost korrekt, wenn es die Systemereignisse für die Zurück-Schaltfläche abfängt. Damit wird eine Regression in der Navigation 2.1.0-alpha03 behoben. b/132077777
  • DialogFragmentNavigator verarbeitet jetzt popBackStack()- und navigateUp()-Vorgänge korrekt. b/132576764
  • Das Problem IllegalStateException: unknown destination during restore beim wiederholten Wechseln zwischen verschachtelten Diagrammen wurde behoben. b/131733658

Version 2.1.0-alpha03

7. Mai 2019

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

Bekannte Probleme

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

Neue Funktionen

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

Änderungen des Verhaltens

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

API-Änderungen

  • Die createFragmentNavigator()-Methode von NavHostFragment wurde eingestellt und ihre Funktionalität wurde in die neue onCreateNavController()-Methode verschoben, um deutlicher zu machen, dass dies der richtige Einstiegspunkt für das Hinzufügen benutzerdefinierter Navigatoren ist, wenn NavHostFragment Unterklassen erstellt werden. b/122802849
  • NavDestination wurde eine hasDeepLink()-Methode hinzugefügt, mit der Sie prüfen können, ob eine bestimmte Uri von diesem Ziel oder, im Fall von 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 mit OnBackPressedDispatcher ab. Dadurch wird ein Problem behoben, das beim Ausführen der bedingten Navigation in Fragment-Lebenszyklusmethoden nach der Rückkehr zu einem Fragment aufgetreten ist. b/111598096
  • Für sichere Args wird ein android:defaultValue=”@null” mit einer nicht angegebenen app:argType jetzt korrekt als string-Argument abgeleitet. b/129629192

Version 2.1.0-alpha02

3. April 2019

androidx.navigation:*:2.1.0-alpha02 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Sie können jetzt ViewModels erstellen, die auf Navigationsdiagrammebene bereichsbezogen sind. Dazu verwenden Sie den Property-Delegaten by navGraphViewModels() für Kotlin-Nutzer oder die getViewModelStore() API, die NavController hinzugefügt wurde. b/111614463

API-Änderungen

  • Du kannst jetzt einem <activity>-Ziel ein 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 wird zum Zeitpunkt der Inflation nicht mehr in eine Klasse geparst, wodurch bei Verwendung von dynamischen Funktionen ClassNotFoundExceptions verhindert werden. b/124538597

Version 2.1.0-alpha01

19. März 2019

Dies ist die erste Alphaversion von Navigation 2.1.0.

Abhängigkeitsänderungen

  • Die Navigation hängt jetzt von androidx.core:core:1.0.1 und androidx.fragment:fragment:1.1.0-alpha05 ab. In dieser Version wird auch die Abhängigkeit von androidx.legacy:legacy-support-core-utils:1.0.0 aufgehoben. b/128632612

API-Änderungen

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

Fehlerkorrekturen

  • Die Navigation sendet keinen Null-Bundle mehr, wenn Argumente an ein Ziel angehängt sind. Dadurch wird ein Problem bei der Verwendung von android:defaultValue="@null" behoben. b/128531879
  • Safe Args hängt jetzt von KotlinPoet 1.1.0 ab, das ein Problem mit extrem langen Paketnamen behebt. b/123654948

Version 2.0.0

Version 2.0.0

14. März 2019

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

Version 2.0.0-rc02

6. März 2019

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

Das Verhalten von 2.0.0-rc02 ist mit dem Verhalten von Navigation 1.0.0-rc02 identisch. Es sollten keine Änderungen an Ihrem Code erforderlich sein, um von 1.0.0-rc02 zu aktualisieren. Abgesehen von der Aktualisierung der Abhängigkeiten, die den neuen Abhängigkeiten entsprechen, sind keine Änderungen erforderlich.

Ihr Projekt muss zu Android X migriert sein, um Navigation 2.X verwenden zu können. Navigation 1.0 (stabile Version) ist die letzte Version, in der die Abhängigkeiten der Supportbibliothek verwendet werden. Alle zukünftigen Entwicklungen nach Version 1.0 basieren auf AndroidX und basieren auf der stabilen Version 2.0.

Abhängigkeiten vor AndroidX

Beziehen Sie für Vor-AndroidX-Versionen von Navigation die folgenden Abhängigkeiten ein:

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 folgenden Klassenpfad in die Datei oberster build.gradle-Datei hinzu

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" wird ohne Änderungen gegenüber 1.0.0-rc02 veröffentlicht.

Version 1.0.0-rc02

26. Februar 2019

Dies ist der zweite Release-Kandidaten für die stabile Version 1.0.0 von Navigation. Diese Version enthält eine Reihe von Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem popBackStack() ignoriert wurde, wenn die Stammgrafik keine ID b/126251695 hatte.
  • navigateUp() kann jetzt korrekt zur Aufgabe Ihrer App zurückkehren, wenn es nach der Verarbeitung eines Deeplinks ohne FLAG_ACTIVITY_NEW_TASK b/126082008 aufgerufen wird.
  • Es wurde ein Problem behoben, bei dem ActivityNavigator.applyPopAnimationsToPendingTransition nicht die richtige Pop-Exit-Animation b/126237567 angewendet hat.
  • Von Safe Args generierter Kotlin-Code maskiert Kotlin-Schlüsselwörter wie in und fun korrekt im Paketnamen, der der R-Klasse zugeordnet 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. Diese Version enthält eine Fehlerkorrektur.

Fehlerkorrekturen

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

Version 1.0.0-beta02

12. Februar 2019

Diese Version enthält eine Reihe kleinerer Verbesserungen und wichtige Fehlerbehebungen.

Neue Funktionen

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

Änderungen des Verhaltens

  • Genaue Deeplink-Übereinstimmungen werden jetzt gegenüber Deeplinks mit .*- oder Argumentübereinstimmungen priorisiert. b/123969518

Fehlerkorrekturen

  • popBackStack() und navigateUp geben jetzt korrekt false zurück, wenn das letzte Ziel im Back-Stack abgelegt wird. Damit wird eine Regression behoben, die in 1.0.0-beta01 eingeführt wurde. b/123933201
  • In der Navigation wird ClassLoader jetzt bei der Wiederherstellung des Status der gespeicherten Instanz korrekt festgelegt. Dadurch werden Probleme bei der Verwendung benutzerdefinierter Klassen im gespeicherten Status Navigator oder in Argumenten vermieden, die an eine NavDestination gesendet werden. b/123893858
  • Von Safe Args generierte NavArgs-Klassen stürzen nicht mehr ab, wenn ein Parcelable[]-Argument aus dem Status der gespeicherten Instanz wiederhergestellt wird. b/123963545
  • Safe Args bereinigt jetzt nicht mehr benötigte Kotlin-Klassen ordnungsgemäß. b/124120883

Version 1.0.0-beta01

4. Februar 2019

Dies ist die erste Betaversion von Navigation. Für die Zukunft wird erwartet, dass die Navigation API bis zur nächsten Version stabil bleibt, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.

Änderungen des Verhaltens

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

Fehlerkorrekturen

  • Safe Args können jetzt in Bibliotheks- und Funktionsmodulen aller Versionen des Android-Gradle-Plug-ins verwendet werden. b/121304903
  • Eine Regression wurde behoben, bei der ein einzelner popBackStack()-Vorgang dazu geführt hat, dass alle Kopien eines Ziels aus dem Back Stack oben auf dem Back-Stack verschoben werden und nicht nur ein einziges Ziel. b/123552990
  • Ein Problem wurde behoben, bei dem der Status FragmentNavigator mit dem Status der NavController desynchronisiert wurde, was beim Versuch, den Back-Stack wiederherzustellen, zu einem IllegalStateException führte. b/123803044
  • Ein Problem wurde behoben, bei dem der Zurückpfeil für NavigationUI bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431
  • Der von Safe Args generierte Code verarbeitet jetzt ein app:argType korrekt, das auf eine statische innere Klasse im Format .OuterClass$InnerClass verweist. b/123736741
  • Der von Safe Args generierte Java-Code verarbeitet jetzt globale Aktionen und tief verschachtelte Ziele ordnungsgemäß. b/123347762

Version 1.0.0-alpha11

23. Januar 2019

Dies ist ein Hotfix-Release von 1.0.0-alpha10, der ein Problem mit sicheren Args behebt.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Safe Args die mit globalen Aktionen verknüpfte Directions-Klasse nicht importieren konnte. b/123307342

Version 1.0.0-alpha10

23. Januar 2019

Bekannte Probleme

  • Safe Args kann die mit globalen Aktionen verknüpfte Directions-Klasse nicht importieren. b/123307342

Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.

Neue Funktionen

  • Kotlin-Nutzer können jetzt den by navArgs()-Property-Delegaten verwenden, um verzögert einen Verweis auf eine Safe Args-generierte NavArgs-Klasse in einem Activity- oder Fragment-Element abzurufen. b/122603367
  • Mit Safe Args können Sie jetzt mit dem Plug-in androidx.navigation.safeargs.kotlin Kotlin-Code generieren. Der Kotlin-Code wurde speziell für Kotlin-Module erstellt. Dabei werden Standardargumente und unveränderliche Klassen über das Builder-Muster verwendet, das weiterhin über das vorherige androidx.navigation.safeargs-Plug-in verfügbar ist. b/110263087

Änderungen des Verhaltens

  • Übereinstimmende Deeplinks werden jetzt nach dem Deeplink mit den meisten übereinstimmenden Argumenten gewichtet. b/118393029
  • Durch das Aufrufen von setGraph() in einem NavController wird jetzt der Back Stack zurückgesetzt. b/111450672
  • Unbekannte Deeplinks lösen kein IllegalStateException mehr aus, werden aber ignoriert, um Probleme mit verschachtelten oder mehreren NavHostFragments zu beheben. b/121340440

Wichtige Änderungen

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

Fehlerkorrekturen

  • NavDeepLinkBuilder verarbeitet jetzt mehrere gleichzeitige PendingIntents für dasselbe Ziel korrekt. Dazu werden die von Ihnen übergebenen Argumente zur Bestimmung der Eindeutigkeit verwendet. b/120042732
  • NavController verarbeitet jetzt popBackStack()-Vorgänge korrekt, wenn ein verschachteltes NavHostFragment oder andere untergeordnete Fragmente mit einem Back-Stack verwendet werden. b/122770335
  • Mit NavigationUI wird die Inhaltsbeschreibung der Schaltfläche „Nach oben“ jetzt korrekt festgelegt. b/120395362
  • Von Safe Args generierte Directions-Klassen verarbeiten jetzt globale Aktionen, die dieselbe ID wie eine Aktion für ein Ziel haben. b/122962504
  • Safe Args-generierte NavDirections-Klassen haben jetzt korrekt gleiche hashCode()-Werte, wenn equals() „true“ zurückgeben würde. b/123043662
  • FragmentNavigator gibt jetzt eine bessere Fehlermeldung aus, wenn Sie versuchen, benutzerdefinierte FragmentTransactions für die FragmentManager der NavHostFragment zu erstellen. Du solltest immer getChildFragmentManager() verwenden. b/112927148

Version 1.0.0-alpha09

18. Dezember 2018

Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.

Wir haben uns entschlossen, die Entwicklung des Artefakts android.arch.navigation:navigation-testing nicht fortzusetzen. Obwohl sich diese Methode für interne Tests von NavController als hilfreich erwiesen hat, empfehlen wir dringend alternative Teststrategien, z. B. das Mockieren der NavController-Instanz, um zu prüfen, ob die richtigen navigate()-Aufrufe ausgeführt werden. Dieser Ansatz wird im Single Activity Talk beim AndroidDevSummit 2018 ausführlich erläutert. Außerdem arbeiten wir an zusätzlichen Dokumentationen speziell zu Tests mit Navigation.

Neue Funktionen

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

Wichtige Änderungen

  • Wenn ein <argument> mit einem argType="reference" verwendet wird, parst Navigation nicht mehr die Referenz, sondern stellt die Rohressourcen-ID selbst bereit. b/111736515
  • onNavDestinationSelected() kehrt jetzt standardmäßig zum Startziel des Navigationsdiagramms zurück, sodass sie den setup-Methoden entsprechen. Fügen Sie menuCategory="secondary" zu MenuItem hinzu, damit der Back-Stack nicht überschritten wird. aosp/852869
  • Die fromBundle()-Methoden generierter Args-Klassen verwenden jetzt eine Nicht-Null-Bundle anstelle einer Bundle-aosp/845616, in der Nullwerte zulässig sind.

Fehlerkorrekturen

  • Argumente werden jetzt korrekt aus Deeplinks als korrekte argType und nicht immer als Strings b/110273284 geparst
  • Die Navigation exportiert jetzt die öffentlichen Ressourcen 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

Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.

Neue Funktionen

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

Wichtige Änderungen

  • OnNavigatedListener wurde in OnDestinationChangedListener b/118670572 umbenannt.
  • OnDestinationChangedListener übergibt jetzt auch das Bundle der Argumente aosp/837142.
  • Die Attribute app:clearTask und app:launchDocument sowie die zugehörigen Methoden wurden entfernt. Verwenden Sie app:popUpTo mit dem Stamm des Diagramms, um alle Ziele aus dem Back-Stack zu entfernen. b/119628354
  • ActivityNavigator.Extras verwendet jetzt ein Builder-Muster und bietet die Möglichkeit, beliebige Intent.FLAG_ACTIVITY_-Flags aosp/828140 festzulegen.
  • NavController.onHandleDeepLink wurde in handleDeepLink aosp/836063 umbenannt.
  • Viele Klassen und Methoden, die nicht für Unterklassen vorgesehen sind, wie NavOptions, NavInflater, NavDeepLinkBuilder und AppBarConfiguration, wurden in final aosp/835681 geändert.
  • Die verworfene Methode NavHostFragment.setGraph() wurde entfernt: aosp/835684
  • Die verworfene Methode NavigationUI.navigateUp(DrawerLayout, NavController) wurde entfernt. aosp/835684
  • Die Fragmenterstellung wurde nach FragmentNavigator verschoben. Damit ist es einfacher, die Fragmenterstellung an ein FragmentFactory zu delegieren. b/119054429
  • Im Konstruktor für NavGraphNavigator wird kein Context aosp/835340 mehr benötigt.
  • NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle. Die Funktionalität des von getNavigatorProvider() zurückgegebenen NavigatorProvider-Objekts hat sich nicht geändert. aosp/830660
  • NavDestination.navigate() wurde entfernt. Rufen Sie stattdessen navigate() im Navigator auf. aosp/830663
  • Erhebliche Refaktorierung von Navigator, wodurch OnNavigatorNavigatedListener nicht mehr benötigt wird und stattdessen navigate die aufgerufene NavDestination zurückgibt.
  • Navigator-Instanzen können keine Pop-Ereignisse mehr an die NavController senden. Sie können ein OnBackPressedCallback verwenden, um das Drücken der Zurück-Schaltfläche abzufangen und navController.popBackStack() aufzurufen. aosp/833716

Fehlerkorrekturen

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

Sichere Argumente

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

Version 1.0.0-alpha07

29. Oktober 2018

Neue Funktionen

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

Wichtige Änderungen

  • Das Modul navigation-testing-ktx wurde in navigation-testing artifact eingeklappt und wird nicht mehr veröffentlicht.
  • Das Artefakt navigation-testing ist jetzt von der Kotlin-Standardbibliothek abhängig. Die API wurde geändert, um die Kotlin-Konventionen besser zu unterstützen. Sie kann jedoch weiterhin für Tests verwendet werden, die in Java geschrieben wurden.
  • Navigationsdiagramme, die im Metadatenmanifest registriert sind, werden nicht mehr unterstützt. b/118355937
  • Aktionen können nicht mehr an <activity>-Ziele angehängt werden. aosp/785539

Fehlerkorrekturen

  • Deeplinks parsen Abfrageparameter jetzt korrekt. b/110057514
  • Aktivitätsziele wenden jetzt alle Animationen zum Ein- und Beenden korrekt an. b/117145284
  • Ein Absturz wurde behoben, der nach Konfigurationsänderungen bei der Verwendung benutzerdefinierter Navigatoren auftrat. b/110763345

Sichere Argumente

  • Sichere Argumente sind jetzt fest vom Android Gradle-Plug-in 3.2.1 abhängig. b/113167627
  • Für innere Klassen können jetzt Wegbeschreibungen generiert werden. b/117407555
  • Ein Problem beim Generieren von Wegbeschreibungen in eine <include>-Grafik wurde behoben. b/116542123

Version 1.0.0-alpha06

20. September 2018

Neue Funktionen

API-Änderungen

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

Fehlerkorrekturen

  • NavigationUI.setupWithNavController() gibt keine Aufrufe mehr ab, wenn sie mit Aufrufen von einzelnen Zielen verwendet wird b/111961977
  • Navigator onSaveState() wird jetzt nur einmal aufgerufen b/112627079

Sichere Argumente

  • Die Directions-Klassen für Navigationsziele erweitern jetzt die Directions-Klasse der übergeordneten Klasse, wenn diese vorhanden ist b/79871405.
  • Die Directions- und Args-Klassen verfügen jetzt über eine nützliche toString()-Implementierung b/111843389.

Version 1.0.0-alpha05

10. August 2018

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der zu einem falschen Backstack-Verhalten geführt hat. b/111907708
  • Ein Fehler in equals() der generierten Args-Klassen wurde behoben. b/111450897
  • Build-Fehler in Safe Args beheben. b/109409713
  • Konvertierung von Ressourcenkennungen in Java-Namen b/111602491 korrigieren
  • Fehlermeldungen bezüglich Null-Zulässigkeit im Safe Args-Plug-in beheben
  • Fügen Sie fehlende Anmerkungen zur Null-Zulässigkeit hinzu.

Version 1.0.0-alpha04

July 19, 2018

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

Änderungen bei APIs und des Verhaltens

  • NavHostFragment legt das aktuelle Fragment immer als primäres Navigationsfragment fest, sodass die untergeordneten Fragmentmanager per Pop-up vor dem äußeren NavController-Element übertragen werden b/111345778.

Sichere Argumente

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

Fehlerkorrekturen

  • Ein Problem mit der Systemschaltfläche „Zurück“ nach Deeplink zu einem Fragmentziel b/111515685 wurde behoben.

Version 1.0.0-alpha03

12. Juli 2018

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

Änderungen bei APIs und des Verhaltens

  • Eine NavigationUI.setupWithNavController-Methode für die Toolbar wurde hinzugefügt: b/109868820
  • Die Methode „NavigationUI.setupWithNavController“ für das CollapsingToolbarLayout wurde hinzugefügt: b/110887183
  • popBackStack() gibt jetzt „false“ zurück, wenn der Back Stack leer ist oder wenn sich die angegebene Ziel-ID nicht im Back Stack befindet b/110893637
  • FragmentNavigator ignoriert jetzt Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, und vermeidet Ausnahmen vom Typ „Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden“ b/110987825

Sichere Argumente

  • Wichtige Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den jeweiligen NavDirections-Methodennamen durch die Camel-Case-Schreibweise ersetzt.
    • Beispiel: DemoController.index wird zu setDemoControllerIndex b/79995048.
    • Beispiel: action_show_settings wird zu actionShowSettings b/79642240
  • Wichtige Ä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 parcelable-Argumente zuzulassen.
  • Sie können jetzt app:type="long" mit Standardwerten im Format „123L“ verwenden b/79563966
  • Argumente vom Typ „Parcelable“ werden jetzt unterstützt. Dabei wird ein voll qualifizierter Klassenname für app:type verwendet. Der einzige unterstützte Standardwert ist "@null" b/79563966
  • Args-Klassen implementieren jetzt equals() und hashCode() b/79642246
  • Das SafeArgs-Plug-in kann jetzt auf Bibliotheksprojekte b/80036553 angewendet werden.
  • Das Plug-in „Safe Args“ kann jetzt auf Featureprojekte b/110011752 angewendet werden.

Fehlerkorrekturen

  • Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
  • Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken wurden behoben. b/110178671
  • Probleme bei der Verwendung von setPopUpTo mit dem ersten Ziel in der Grafik b/109909461 behoben
  • Problem behoben, bei dem alle app:defaultValue-Werte als Strings b/110710788 übergeben wurden
  • Mit aapt2 im Bundle mit Android Gradle-Plug-in 3.2 Beta 01 werden jetzt für jedes android:name-Attribut in Navigations-XML-Dateien Keep-Regeln hinzugefügt (b/79874119).
  • Speicherleck beim Ersetzen des Standard-FragmentNavigators b/110900142 behoben

Version 1.0.0-alpha02

7. Juni 2018

Änderungen des Verhaltens

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

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

Fehlerkorrekturen

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

  • Die Navigation hängt jetzt von der Supportbibliothek 27.1.1 ab, um Flackern bei der Verwendung von Animationen zu beheben. b/80160903

  • Ein IllegalArgumentException wurde behoben, wenn defaultNavHost="true" als untergeordnetes Fragment verwendet wurde. b/79656847

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

  • Ein IllegalArgumentException beim Zurückkehren zu einem verschachtelten Diagramm wurde behoben. b/80453447

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

  • Durch die Navigation wird jetzt der richtige synthetische Back-Stack für verschachtelte Grafiken erstellt. b/79734195

  • Über NavigationUI wird jetzt das richtige Element hervorgehoben, 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 zum Erstellen der In-App-Navigation. Dieser erste Release ist 1.0.0-alpha01.