Navigation

Navigation ist ein Framework für die Navigation zwischen „Zielen“ in einer Android-Anwendung, das eine einheitliche API bietet, unabhängig davon, ob Ziele als Fragmente, Aktivitäten oder andere Komponenten implementiert sind.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
11. Dezember 2024 2.8.5 - - 2.9.0-alpha04

Abhängigkeiten deklarieren

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

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

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.4"

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

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

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

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

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.4"

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

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

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

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

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Safe Args

Wenn Sie Ihrem Projekt Safe Args hinzufügen möchten, fügen Sie der build.gradle-Datei auf oberster Ebene die folgende classpath hinzu:

Groovy

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

Kotlin

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

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

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

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Alternativ können Sie Kotlin-Code generieren, der für reine Kotlin-Module geeignet ist. Fügen Sie dazu Folgendes hinzu:

Groovy

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

Kotlin

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

Gemäß der Anleitung Zu AndroidX migrieren muss android.useAndroidX=true in Ihrer gradle.properties-Datei enthalten sein.

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

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

Feedback

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

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.9

Version 2.9.0-alpha04

11. Dezember 2024

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

Neue Funktionen

In der folgenden Tabelle finden Sie die reified und KClass APIs.

reified KClass
composable<TestClass> { } composable(TestClass::class) { }
navigation<NestedGraph>(startDestination = TestClass::class) navigation(route = NestedGraph::class, startDestination = TestClass::class)
dialog<TestClass> {} dialog(TestClass::class) {}
navDeepLink<TestClass>(baseUri) navDeepLink(TestClass::class, baseUri)
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri)
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { }
navController.getBackStackEntry<TestClass>() navController.getBackStackEntry(TestClass::class)
navController.popBackStack<TestClass>(true) navController.popBackStack(TestClass::class, true)
navController.clearBackStack<TestClass>() navController.clearBackStack(TestClass::class)
NavOptions.setPopUpTo<TestClass>() NavOptions.setPopUpTo(TestClass::class)
navOptions { popUpTo<TestClass> {...} } navOptions { popUpTo(TestClass::class) {...} }
NavGraph.setStartDestination<TestClass>() NavGraph.setStartDestination(TestClass::class)
NavGraph.findNode<TestClass>() NavGraph.findNode(TestClass::class)
backStackEntry.toRoute<TestClass>() backStackEntry.toRoute(TestClass::class)
savedStateHandle.toRoute<TestClass>() savedStateHandle.toRoute(TestClass::class)

API-Änderungen

  • Die kotlinspezifische NavGraph.setStartDestination-Überladung für die Typsicherheit ist für Java-Quellen ausgeblendet. (Ic640c, b/364634035)

Fehlerkorrekturen

  • Unter Navigation 2.8.5: Es wurde ein Problem behoben, bei dem NavHost in PredictiveBackHandler eine Ausnahme auslösen konnte, wenn der Rückstapel auf einen Eintrag reduziert wurde und im selben Frame ein Systemrückschritt ausgelöst wurde. (I1a429, b/375343407)
  • Unter Navigation 2.8.5: NavDestination NullPointerException wurde beim Aktualisieren des startDestination eines Diagramms korrigiert. (I99421, b/361560785)

Version 2.9.0-alpha03

13. November 2024

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

Neue Funktionen

  • Die Navigationstypsicherheit unterstützt jetzt Wertklassen als Route oder als Argumenttyp einer Route. (I9344a, b/374347483)

Fehlerkorrekturen

  • Ein ConcurrentModificationException wurde behoben, das auftreten konnte, wenn ein LifecycleObserver, das an ein NavBackStackEntry angehängt ist, eine Änderung am Backstack auslöst, wenn der Host-LifecycleOwner, z. B. die enthaltene Aktivität oder das Fragment, seinen Lebenszyklusstatus ändert. (Ia9494)

Version 2.9.0-alpha02

30. Oktober 2024

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

Externer Beitrag

  • Neue gängige NavController.handleDeepLink(request: NavDeepLinkRequest)-Methode. Viele Grüße Konstantin Tskhovrebov (I3e228)

Version 2.9.0-alpha01

16. Oktober 2024

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

Neue Funktionen

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

Verhaltensänderungen

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

Fehlerkorrekturen

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

Bekannte Probleme

  • Die neuen Lint-Regeln, die in Navigation 2.8.* hinzugefügt wurden, verursachen beim Ausführen von Lint mit dem Android Gradle-Plug-in 8.4 und höher einen Obsolete custom lint check-Fehler. (b/368070326, b/371463741)

Version 2.8

Version 2.8.5

11. Dezember 2024

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das NavHost in PredictiveBackHandler eine Ausnahme auslösen konnte, wenn der Rückstapel auf einen Eintrag reduziert wurde und im selben Frame ein Systemrückschritt ausgelöst wurde. (I1a429, b/375343407)
  • Fehler beim Aktualisieren der startDestination einer Grafik mit NavDestination NullPointerException behoben. (I99421, b/361560785)
  • Ein Problem wurde behoben, durch das bei Verwendung von Navigation Compose und Aufrufen von „navigate“ im selben Frame, in dem die aktuelle Animation endet, eine unerwartete Skalierungsanimation verursacht wurde. (I26cb1, b/353294030)
  • Ein ConcurrentModificationException wurde behoben, das auftreten konnte, wenn ein LifecycleObserver, das an ein NavBackStackEntry angehängt ist, eine Änderung am Backstack auslöst, wenn der HostLifecycleOwner, z. B. die enthaltene Aktivität oder das Fragment, seinen Lebenszyklusstatus ändert. (Ia9494)

Version 2.8.4

13. November 2024

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

Neue Funktionen

Fehlerkorrekturen

Version 2.8.3

16. Oktober 2024

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

Neue Funktionen

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

Fehlerkorrekturen

  • Behoben wurde ein Problem, bei dem die neuen Lint-Regeln, die in Navigation 2.8.* hinzugefügt wurden, beim Ausführen von Lint mit dem Android Gradle-Plug-in 8.4 und höher einen Obsolete custom lint check-Fehler verursachten. (I1be3d, b/368070326, b/371463741)

Bekannte Probleme

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

Version 2.8.2

2. Oktober 2024

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.8.1

18. September 2024

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdate

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

Version 2.8.0

4. September 2024

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

Wichtige Änderungen seit Version 2.7.0

Typsicherheit der Kotlin-DSL für die Navigation

  • Navigation bietet jetzt Typsicherheit für die Kotlin-DSL (von Navigation Compose verwendet) mit Kotlin-Serialisierung, damit Sie Ziele in Ihrem Navigationsgraphen über typsichere Objekte und Datenklassen definieren können:
    // Define a home destination that doesn't take any arguments
    @Serializable
    object Home

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

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

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

Navigation Compose Predictive Back

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

Navigationsfragment – Composeable

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

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

Weitere Änderungen

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

Version 2.8.0-rc01

21. August 2024

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

Fehlerkorrekturen

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

Version 2.8.0-beta07

7. August 2024

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

Bekannte Probleme

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

Fehlerkorrekturen

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

Version 2.8.0-beta06

24. Juli 2024

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

Fehlerkorrekturen

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

Version 2.8.0-beta05

10. Juli 2024

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

Fehlerkorrekturen

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

Version 2.8.0-beta04

26. Juni 2024

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

Fehlerkorrekturen

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

Version 2.8.0-beta03

12. Juni 2024

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.8.0-beta02

29. Mai 2024

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

Fehlerkorrekturen

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

Version 2.8.0-beta01

14. Mai 2024

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.8.0-alpha08

1. Mai 2024

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

Safe Args in Navigation Compose

Bei dieser Funktion wird die Kotlin-Serialisierung verwendet, um Ziele in Ihrem Navigationsgraphen über typsichere Objekte und Datenklassen zu definieren:

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

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

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

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

Neue Funktionen

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

Version 2.8.0-alpha07

17. April 2024

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

Neue Funktionen

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

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

API-Änderungen

  • Die Unterstützung von Safe Args in Navigation Compose mit einem Ansatz, der auf der Kotlin-Serialisierung basiert, wurde fortgesetzt. Diese APIs sind noch nicht fertiggestellt und sind mit der Anmerkung ExperimentalSafeArgsApi gekennzeichnet. Diese Anmerkung wird entfernt, sobald die gesamte API-Oberfläche in einer zukünftigen Version fertig ist. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)

Version 2.8.0-alpha06

3. April 2024

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

API-Änderungen

Fehlerkorrekturen

  • NavHost verwendet jetzt Alignment.TopStart als Standardargument für „contentAlignment“. Dadurch entspricht sie dem Standard für AnimatedContent und einige Fälle mit unerwarteter Skalierung beim Übergang von der Mitte werden behoben. (I09e72, b/330111602)
  • Wenn Sie beim Verwenden von Navigation Compose die Geste für die Vorhersage der Rückwärtsnavigation ausführen, wird die benutzerdefinierte Überleitung jetzt korrekt abgeschlossen, anstatt sofort zu enden.NavHost (I99017, b/327292110)

Version 2.8.0-alpha05

20. März 2024

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.8.0-alpha04

6. März 2024

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.8.0-alpha03

21. Februar 2024

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

API-Änderungen

  • NavBackStackEntry.savedStateHandle ist jetzt als @MainThread gekennzeichnet, da darin Code verwendet wird, der ohnehin im Hauptthread vorhanden sein muss. (Ibb988, b/299523245)

Fehlerkorrekturen

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

Abhängigkeitsupdate

Version 2.8.0-alpha02

7. Februar 2024

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

Neue Funktionen

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

Version 2.8.0-alpha01

24. Januar 2024

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

Fehlerkorrekturen

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

Abhängigkeitsupdate

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

Externer Beitrag

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

Version 2.7.7

Version 2.7.7

7. Februar 2024

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

Fehlerkorrekturen

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

Externer Beitrag

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

Version 2.7.6

Version 2.7.6

13. Dezember 2023

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

Fehlerkorrekturen

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

Version 2.7.5

Version 2.7.5

1. November 2023

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

Leistungsverbesserungen

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem der Rückstapel entfernt wurde, wenn setGraph mehrmals mit dem exakt gleichen Diagramm aufgerufen wurde, nur wenn es in Ihrem Diagramm ein Ziel gab, das eine Aktion enthielt, die zwei Ziele verknüpfte. (Ieaed7)
  • Dialoge, die in schneller Folge aufgerufen und geschlossen wurden, werden nicht mehr in die Liste der NavController.visibleEntries aufgenommen. (I67586, b/287969970)
  • Wenn ein Eintrag entfernt wird und eine Konfigurationsänderung folgt, wird ViewModel des Eintrags jetzt richtig gelöscht, wenn saveState falsch ist. (Idf242, b/298164648)
  • Es wurde ein Problem behoben, bei dem NavController denselben Deeplink mehrmals verarbeiten konnte, wenn der Backstack vor einer Konfigurationsänderung vollständig leer war, oder setGraph nur dann aufgerufen wurde, wenn das Flag FLAG_ACTIVITY_NEW_TASK für den eingehenden Intent festgelegt war. (I73c7f)

Abhängigkeitsupdates

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

Version 2.7.4

Version 2.7.4

4. Oktober 2023

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.7.3

Version 2.7.3

20. September 2023

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

Fehlerkorrekturen

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

Version 2.7.2

Version 2.7.2

6. September 2023

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

Fehlerkorrekturen

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

Abhängigkeitsupdate

  • Navigation Compose hängt jetzt von Compose 1.5.1 ab.

Version 2.7.1

Version 2.7.1

23. August 2023

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

Fehlerkorrekturen

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

Version 2.7.0

Version 2.7.0

9. August 2023

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

Wichtige Änderungen seit Version 2.6.0

Animationen von Accompanist

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

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

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

Fehlerkorrekturen

  • Der NavHost in Navigation Compose fängt jetzt Systemrückrufe auch dann korrekt ab, wenn die Aktivität angehalten und fortgesetzt wurde. (Icb6de, b/279118447)

Abhängigkeitsupdates

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

Version 2.7.0-rc01

26. Juli 2023

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

Fehlerkorrekturen

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

Bekannte Probleme

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

Version 2.7.0-beta02

28. Juni 2023

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

Fehlerkorrekturen

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

Version 2.7.0-beta01

7. Juni 2023

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

Fehlerkorrekturen

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

Version 2.7.0-alpha01

24. Mai 2023

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

Animationen von Accompanist

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

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

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

  • Die Navigation hängt jetzt von „Compose“ 1.5.0-beta01 ab.

Version 2.6.0

Version 2.6.0

7. Juni 2023

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

Wichtige Änderungen an der Navigation seit Version 2.5.0

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

Wichtige Änderungen an Navigation Compose seit Version 2.5.0

  • In der Vorschau eines NavHost-kompositables wird jetzt standardmäßig die startDestination des Navigationsgraphen angezeigt.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route) und NavController.clearBackStack(route) unterstützen jetzt alle Routen mit teilweise oder vollständig ausgefüllten Argumenten. Die Argumente müssen genau mit den Argumenten des Eintrags übereinstimmen.
  • Wenn Sie versuchen, mit der navDeepLink Kotlin DSL eine leere NavDeepLink zu erstellen, wird jetzt eine Lint-Warnung ausgegeben, dass ein Deeplink eine gültige URI, Aktion und/oder einen gültigen MIME-Typ haben muss.

Wichtige Änderungen an der Navigation mit Fragmenten seit Version 2.5.0

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

Wichtige Änderungen an NavigationUI seit Version 2.5.0

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

Version 2.6.0-rc02

24. Mai 2023

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

Fehlerkorrekturen

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

Version 2.6.0-rc01

10. Mai 2023

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

Fehlerkorrekturen

  • Ein Problem bei der Navigation mit Fragmenten wurde behoben, bei dem das Entfernen eines Fragments über „navigate with popUpTo“ im onResume()-Lebenszyklus-Callback zu einer IllegalStateException führte. (I21884, b/279644470)

Version 2.6.0-beta01

19. April 2023

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.6.0-alpha09

5. April 2023

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

Fehlerkorrekturen

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

Version 2.6.0-alpha08

22. März 2023

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.6.0-alpha07

8. März 2023

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

Fehlerkorrekturen

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

Version 2.6.0-alpha06

22. Februar 2023

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Bekannte Probleme

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

Version 2.6.0-alpha05

8. Februar 2023

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.6.0-alpha04

9. November 2022

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdate

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

Version 2.6.0-alpha03

24. Oktober 2022

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.6.0-alpha02

5. Oktober 2022

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

Verhaltensänderungen

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

Fehlerkorrekturen

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

Version 2.6.0-alpha01

7. September 2022

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

Neue Funktionen

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

API-Änderungen

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

Verhaltensänderungen

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

Fehlerkorrekturen

  • Unter Navigation 2.5.2: Bei der dynamischen Navigation wird jetzt richtig versucht, Aktivitätsziele aus anderen Modulen zu installieren, bevor sie aufgerufen werden. (Ia2c16, b/240292838)
  • Navigation 2.5.2: Die Navigation ersetzt jetzt die Fragmentinstanz richtig, wenn sie zum selben Ziel navigiert und das Flag launchSingleTop auf „wahr“ gesetzt wird. (I5a2f1, b/237374580)
  • Unter Navigation 2.5.2: IllegalStateException wurde behoben, das durch die Navigation zu einem doppelt verschachtelten Diagramm verursacht wurde, das ein übergeordnetes Element mit einem neuen eingeblendeten Startziel teilt. (I9f7cb, b/243778589)

Version 2.5

Version 2.5.3

24. Oktober 2022

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

Fehlerkorrekturen

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

Version 2.5.2

7. September 2022

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

Fehlerkorrekturen

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

Abhängigkeitsupdate

Version 2.5.1

27. Juli 2022

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.5.0

29. Juni 2022

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

Wichtige Änderungen seit Version 2.4.0

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

Navigation SafeArgs

  • In Navigation Safe Args wurde die Abhängigkeit von Android Gradle Plugin auf 7.0.4 umgestellt. Die Kompatibilität mit AGP-Versionen vor 7.0 wurde eingestellt.
  • Das Attribut „build.gradle“ wird jetzt anstelle von „applicationId“ unterstützt.

Weitere Änderungen

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

Version 2.5.0-rc02

15. Juni 2022

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

Fehlerkorrekturen

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

Version 2.5.0-rc01

11. Mai 2022

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.5.0-beta01

20. April 2022

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

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

Version 2.5.0-alpha04

6. April 2022

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

API-Änderungen

Fehlerkorrekturen

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

Version 2.5.0-alpha03

23. Februar 2022

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.5.0-alpha02

9. Februar 2022

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

Fehlerkorrekturen

  • Unter Navigation 2.4.1: Die NavHostFragment legt jetzt bei Verwendung von View-Binding mit verschachtelten Diagrammen die OnBackPressedDispatcher richtig fest. (Ifbb51, b/214577959)
  • Navigation 2.4.1: Wenn Sie über mehrere verschachtelte NavGraphs per Deeplink auf eine Seite zugreifen, enthält der Backstack jetzt korrekt Zwischenziele. (I504c0, b/214383060)

Version 2.5.0-alpha01

26. Januar 2022

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

Neue Funktionen

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Zugriff auf eine ViewModel, die über by navGraphViewModels() aus der onCreate() eines Fragments erstellt wurde, mit einer IllegalStateException fehlgeschlagen ist. (I8a14d)
  • NavDeepLinks decodieren Argumente nicht mehr unnötig zweimal. Das bedeutet, dass die richtigen Argumente jetzt an das endgültige Ziel übergeben werden. (I31b0a, b/210711399)

Safe Args

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

Version 2.4.2

Version 2.4.2

6. April 2022

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

Fehlerkorrekturen

Version 2.4.1

Version 2.4.1

9. Februar 2022

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

Fehlerkorrekturen

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

Version 2.4.0

Version 2.4.0

26. Januar 2022

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

Wichtige Änderungen seit Version 2.3.0

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

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

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

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

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

Navigationsrouten und die Kotlin-DSL

In früheren Versionen der Navigation hatte jedes Ziel eine konstante Ganzzahl-ID, die es eindeutig von seinen übergeordneten Zielen unterscheiden und es ermöglichen würde, direkt oder über eine Aktion zu diesem Ziel zu navigate(). Das ist zwar weiterhin gültig und nützlich, insbesondere wenn Sie Ihren Navigationsgraphen in XML definieren und automatisch generierte R.id-Konstanten oder Safe Args verwenden können (mit denen diese Konstanten zur Generierung von Code zur Buildzeit verwendet werden), aber dieses System eindeutiger Ganzzahlen erfasste nicht die semantische Bedeutung und Ausdruckskraft, die für die Unterstützung vollständig dynamischer Graphen erforderlich ist, die programmatisch zur Laufzeit über die Navigation Kotlin DSL erstellt werden.

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

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

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

Das hat einige Auswirkungen auf APIs:

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

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

Navigation – Verfassen

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

Dieser Release bietet Folgendes:

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

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

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

Weitere Informationen finden Sie im Leitfaden zum Erstellen von Navigationselementen.

Mehrere Backstacks

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

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

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

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

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

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

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

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

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

Geändertes Verhalten

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE zu den von createPendingIntent() zurückgegebenen PendingIntent hinzu, damit diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert.
  • Die Navigation hängt jetzt vom Lifecycle 2.3.1 ab und setGraph(), popBackStack(), navigateUp() und navigate(), die Methoden, mit denen die NavBackStackEntry Lifecycle aktualisiert wird, werden jetzt als @MainThread gekennzeichnet. Damit wird die Navigation an die in Lifecycle 2.3.0 eingeführte Erzwingung des Hauptthreads angepasst.
  • Bei Deeplinks wird jetzt geprüft, ob alle erforderlichen Argumente (ohne Standardwerte) in Uri vorhanden sind.
  • Bei der Analyse von NavDeepLink-Argumenten werden Rautezeichen jetzt genauso wie Fragezeichen als Trennzeichen zwischen Pfadsegmenten verwendet, damit ein Argument nicht über das Rautezeichen hinausreicht.
  • Beim Generieren von Aktionen werden Argumente ohne Standardwerte jetzt vor denen mit Standardwerten als Parameter in Kotlin-Code eingefügt, der aus Safe Args generiert wurde.
  • Beim Generieren von Argumenten werden mit Safe Args jetzt Parameter ohne Standardwerte vor Parametern mit Standardwerten eingefügt.
  • Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, wenn Sie applicationIdTextResource verwenden.

Bekannte Probleme

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

Version 2.4.0-rc01

15. Dezember 2021

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

Geändertes Verhalten

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

Fehlerkorrekturen

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

Fehlerkorrekturen für die Navigation und das Verfassen von Nachrichten

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

Fehlerkorrekturen für Safe Args

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

Version 2.4.0-beta02

3. November 2021

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

API-Änderungen

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

Verhaltensänderungen

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

Fehlerkorrekturen

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

Version 2.4.0-beta01

27. Oktober 2021

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.4.0-alpha10

29. September 2021

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.4.0-alpha09

15. September 2021

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

Neue Funktionen

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

API-Änderungen

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

Verhaltensänderungen

  • Beim Generieren von Argumenten werden mit Safe Args jetzt Parameter ohne Standardwerte vor Parametern mit Standardwerten eingefügt. (I89709, b/198493585)

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.4.0-alpha08

1. September 2021

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

Neue Funktionen

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

Verhaltensänderungen

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

Fehlerkorrekturen

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

Externer Beitrag

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

Version 2.4.0-alpha07

18. August 2021

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

Fehlerkorrekturen

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

Version 2.4.0-alpha06

4. August 2021

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

API-Änderungen

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

Verhaltensänderungen

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

Fehlerkorrekturen

  • Wenn das letzte Ziel eines Navigationsgraphen angezeigt wird, wird keine 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 auftrat. (938a0c, b/193805425)
  • Ein Problem wurde behoben, bei dem ein Deeplink zu NavBackStackEntry den Status RESUMED nicht erreichte. (I192c5)
  • Ein Problem wurde behoben, durch das die Verarbeitung der Systemrückwärtsschaltfläche des NavControllers beim Aufrufen eines Dialogfelds nicht aktualisiert wurde. Dies führte möglicherweise dazu, dass der NavController die Rückwärtsschaltfläche abfängt, obwohl kein Rückstapel vorhanden ist, der aufgepoppt werden kann. (aosp/1782668)

Version 2.4.0-alpha05

21. Juli 2021

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

Verhaltensänderungen

  • Bei der Navigationsfunktion „Compose“ wird für NavHost jetzt immer ein Crossfade verwendet, wenn zwischen Zielen gewechselt wird. (I07049, b/172112072)
  • Sie können jetzt Änderungen am Graphen eines NavHost vornehmen. Graphen mit demselben Startziel und denselben Zielen im Graphen werden als gleich betrachtet und der NavController-Backstack wird nicht geleert. (I0b8db, b/175392262)

Fehlerkorrekturen

  • Ein NoSuchElementException wurde behoben, das beim Aufrufen von popBackStack() aus einem LifecycleObserver aufgetreten ist, das an ein NavBackStackEntry angehängt ist. Das Problem wurde durch reentrante Updates des Status des NavControllers verursacht. (I64621)
  • Mit AbstractListDetailFragment können Sie SlidingPaneLayout jetzt vollständig aus Ihrem APK entfernen, wenn AbstractListDetailFragment nicht verwendet wird. (I611ad)
  • NavGraph und NavDestination überschreiben jetzt die Gleichheitsmethode, sodass zwei Objekte mit denselben Werten als gleich betrachtet werden. (I166eb, b/175392262)

Version 2.4.0-alpha04

1. Juli 2021

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

Neue Funktionen

  • Das navigation-fragment-Artefakt enthält jetzt eine vorkonfigurierte Implementierung eines zweispaltigen Layouts über die neue AbstractListDetailFragment. In diesem Fragment wird ein SlidingPaneLayout verwendet, um einen Listenbereich (der von Ihrer Unterklasse bereitgestellt wird) und einen Detailbereich zu verwalten, der eine NavHostFragment als Implementierung verwendet, wie in unserer Beispielimplementierung zu sehen. (Iac4be, b/191276636)
  • Die NavHost des navigation-compose-Artefakts unterstützt jetzt neben composable-Zielen auch dialog-Zielvorhaben. Diese Dialogziele werden jeweils in einem zusammensetzbaren Dialog angezeigt, das über dem aktuellen composable-Ziel schwebt. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

API-Änderungen

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

Verhaltensänderungen

  • NavDeepLinkBuilder fügt jetzt PendingIntent.FLAG_IMMUTABLE zu den von createPendingIntent() zurückgegebenen PendingIntent hinzu, damit diese API bei Ausrichtung auf Android 12 wie erwartet funktioniert. (If8c52)

Fehlerkorrekturen

  • Ein Problem mit <include-dynamic> wurde behoben, bei dem Argumente, die an den Graphen übergeben wurden, nicht korrekt an den dynamisch eingebundenen Graphen übergeben wurden. (I3e115)
  • Ein Fehler bei NullPointerException wurde behoben, der beim Navigieren zu einem Ziel mit einem string[]-Argument mit dem Standardwert @null auftrat. (I1fbe8)
  • ProGuard-Regeln für @Navigator.Name hinzugefügt, um Probleme bei der Verwendung des Vollmodus von R8 3.1 zu beheben (I2add9, b/191654433)
  • SafeArgs schlägt beim Erstellen Ihrer App mit Kotlin-Versionen vor 1.5.0 nicht mehr fehl. (Icd1ff, b/190739257)

Version 2.4.0-alpha03

16. Juni 2021

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das zwei navigate()-Aufrufe erforderlich waren, um zu einem enthaltenen dynamischen Diagramm zu gelangen. (I7785c, b/188859835)
  • Es wurde eine Regression behoben, die in der Navigation 2.4.0-alpha01 aufgetreten ist. Dabei wurde das Symbol „Oben“ von setupActionBarWithNavController() nicht richtig entfernt, wenn Sie sich auf einer Zielseite der obersten Ebene befanden. (I5d443, b/189868637)
  • Ein Fehler beim Aufrufen von IllegalStateException wurde behoben, wenn zuvor der Stammgraph des NavControllers gepoppt wurde.popBackStack() (I2a330, b/190265699)
  • ProGuard-Regeln für by navArgs() werden jetzt richtig angewendet, wenn navigation-common oder Artefakte verwendet werden, die davon abhängen. (I68800, b/190082521)
  • Ein OnDestinationChangedListener, das navigate() zum ersten Mal aufruft, wenn es einen Callback erhält, erhält jetzt korrekt einen zweiten Callback mit dem Ziel, zu dem es weitergeleitet wurde. (Ie5f9e, b/190228815)
  • Safe Args stürzt nicht mehr ab, wenn es mit dynamischen Funktionsmodulen und AGP 7.0 oder höher verwendet wird. (I69518, b/189966576)

Bekanntes Problem

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

Version 2.4.0-alpha02

2. Juni 2021

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

Neue Funktionen

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

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

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

API-Änderungen

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

Fehlerkorrekturen

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

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

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

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

Abhängigkeitsupdate

  • Safe-Args hängt jetzt vom Android Gradle-Plug-in 4.2.0 ab. Sie sollten also keine Warnung mehr erhalten, wenn Sie applicationIdTextResource verwenden. (I6d67b, b/172824579)

Version 2.4.0-alpha01

18. Mai 2021

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

Neue Funktionen

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

Mehrere Backstacks

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

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

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

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

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

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

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

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

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

Navigationsrouten

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

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

Das hat einige Auswirkungen auf APIs:

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

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

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

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

API-Änderungen

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

Safe Args

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

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Safe Args wurde so aktualisiert, dass es von KotlinPoet 1.8.0 abhängt. (#172, b/183990444)

Verhaltensänderungen

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

Kompatibilität von Compose

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

Fehlerkorrekturen

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

Externe Beiträge

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

Version 1.0.0-alpha10

7. April 2021

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

API-Änderungen

  • NavHost akzeptiert jetzt ein Modifier, das an den Composeable-Container übergeben wird, der die Ziel-Composeables umschließt. (I85aca, b/175125483)

Fehlerkorrekturen

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

Version 1.0.0-alpha09

10. März 2021

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

API-Änderungen

  • LocalViewModelStoreOwner.current gibt jetzt eine optionale ViewModelStoreOwner zurück, um besser zu bestimmen, ob eine ViewModelStoreOwner in der aktuellen Komposition verfügbar ist. Bei APIs, für die eine ViewModelStoreOwner erforderlich ist, z. B. viewModel() und NavHost, wird weiterhin eine Ausnahme ausgelöst, wenn keine ViewModelStoreOwner festgelegt ist. (Idf39a)

Fehlerkorrekturen

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

Version 1.0.0-alpha08

24. Februar 2021

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

Neue Funktionen

  • NavHost füllt jetzt LocalSavedStateRegistryOwner CompositionLocal mit der NavBackStackEntry dieses Ziels aus. So wird sichergestellt, dass jeder Status, der direkt in SavedStateRegistry gespeichert wird, zusammen mit dem Ziel gespeichert und wiederhergestellt wird. (I435d7, b/179469431)

Version 1.0.0-alpha07

10. Februar 2021

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

Abhängigkeitsupdates

Version 1.0.0-alpha06

28. Januar 2021

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

API-Änderungen

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

Version 1.0.0-alpha05

13. Januar 2021

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

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

Version 1.0.0-alpha04

16. Dezember 2020

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

  • Aktualisiert für die Kompatibilität mit Compose 1.0.0-alpha09.

Version 1.0.0-alpha03

2. Dezember 2020

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das popBackStack() und navigateUp() nach einer Konfigurationsänderung oder dem Beenden und Neustarten eines Prozesses nicht funktionierten. (Icea47, b/173281473)
  • Das Aufrufen eines verschachtelten Diagramms in Ihrem NavHost funktioniert jetzt ordnungsgemäß. (I0948d, b/173647694)

Version 1.0.0-alpha02

11. November 2020

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

API-Änderungen

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

Version 1.0.0-alpha01

28. Oktober 2020

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

Neue Funktionen

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

Diese erste Version bietet Folgendes:

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

Weitere Informationen finden Sie im Leitfaden zum Erstellen von Navigationselementen.

Version 2.3.5

Version 2.3.5

7. April 2021

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

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

Externer Beitrag

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

Version 2.3.4

Version 2.3.4

10. März 2021

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

Neue Funktionen

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

Fehlerkorrekturen

  • Behebung eines Fehlers, bei dem der Installationsvorgang bei Verwendung der Navigationsunterstützung für dynamische Funktionen hängen blieb (Ib27a7, b/169636207)
  • Wenn setViewModelStore oder setLifecycleOwner mit demselben Objekt aufgerufen wird, das bereits festgelegt wurde, hat das jetzt keine Auswirkungen mehr (Idf491, b/177825470)
  • Safe-Args fügt bei Verwendung von Java jetzt Unterdrückungsanmerkungen zu den entsprechenden Methoden hinzu. (I8fbc5, b/179463137)

Externe Beiträge

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

Version 2.3.3

Version 2.3.3

27. Januar 2021

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

Fehlerkorrekturen

  • Es kommt nicht mehr zu einem Absturz, wenn eine NavBackStackEntry angezeigt wird, bevor ihre Lifecycle zu CREATED verschoben wurde. (Ie3ba3)
  • Behobene Regression durch b/171364502, bei der das Aufrufen einer Aktivität mit einem Animationsressourcenwert von 0 zu einem ResourceNotFoundException führte. (I7aedb, b/176819931)

Version 2.3.2

Version 2.3.2

2. Dezember 2020

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

Fehlerkorrekturen

  • Eine Regression in NavigationUI wurde behoben, bei der bei Verwendung eines <activity>-Ziels mit onNavDestinationSelected nicht zur Aktivität gelangt wurde. (I22e34, b/171364502)
  • Ein Problem wurde behoben, durch das durch Drücken der Taste navigation-dynamic-features-fragment 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)
  • Ein Problem wurde behoben, durch das beim Wechsel zu einem verschachtelten Navigationsgraphen keine neue Graph-Instanz im Backstack erstellt wurde. (Ifc831)
  • Ein Problem wurde behoben, bei dem bei Verwendung von navigate() mit einem popUpTo, durch das das letzte Ziel in einem Navigationsgraphen entfernt wurde, der Navigationsgraph nicht sofort zerstört und aus dem Backstack entfernt wurde. (I910a3)
  • Für Navigation SafeArgs wird jetzt KotlinPoet Version 1.7.2 verwendet, die den expliziten API-Modus von Kotlin unterstützt. (I918b5)
  • NavHostFragment.findNavController(Fragment) prüft jetzt zusätzlich zu den vorhandenen Prüfungen der Fragmenthierarchie und der Ansichtshierarchie des Fragments auch die Stamm-Dekoransicht eines DialogFragments. So können Sie Dialogfragmente testen, die die Navigation mit FragmentScenario und Navigation.setViewNavController() verwenden. (I69e0d)

Version 2.3.1

Version 2.3.1

14. Oktober 2020

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

Neue Funktionen

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

Fehlerkorrekturen

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

Änderungen an Abhängigkeiten

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

Version 2.3.0

Version 2.3.0

24. Juni 2020

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

Wichtige Änderungen seit Version 2.2.0

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

Bekannte Probleme

  • Die Unterstützung für Deeplink-Aktionen und MIME-Typen ist im Manifest Merger noch nicht verfügbar. Bis dahin enthalten alle generierten <intent-filter>-Elemente aus dem <nav-graph>-Element in deinem Manifest weder deinen Mime-Typ im <data>-Element noch deine benutzerdefinierte <action>. Sie müssen Ihrem Manifest manuell eine geeignete <intent-filter> hinzufügen.

Version 2.3.0-rc01

10. Juni 2020

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

Fehlerkorrekturen

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

Version 2.3.0-beta01

20. Mai 2020

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.3.0-alpha06

29. April 2020

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.3.0-alpha05

15. April 2020

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.3.0-alpha04

18. März 2020

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

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

Version 2.3.0-alpha03

4. März 2020

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

API-Änderungen

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

Fehlerkorrekturen

  • Die navigation-common-ktx ProGuard-Regeln behalten jetzt nur die verwendeten NavArgs-Klassen bei, anstatt alle NavArgs-Instanzen. (b/150213558)

Änderungen an Abhängigkeiten

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

Version 2.3.0-alpha02

19. Februar 2020

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

Neue Funktionen

  • Über NavBackStackEntry können Sie jetzt auf eine SavedStateHandle zugreifen, die zum Speichern kleiner Mengen an gespeichertem Status geeignet ist, die mit einem bestimmten Backstack-Eintrag verknüpft werden sollen. Ein Anwendungsfall ist unter Ergebnis zurückgeben beschrieben. (b/79672220)

API-Änderungen

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

Fehlerkorrekturen

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

Änderungen an Abhängigkeiten

Version 2.3.0-alpha01

5. Februar 2020

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

Neue Funktionen

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.2.2

Version 2.2.2

15. April 2020

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.2.1

Version 2.2.1

5. Februar 2020

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

Fehlerkorrekturen

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

Abhängigkeitsupdates

Version 2.2.0

Version 2.2.0

22. Januar 2020

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

Wichtige Änderungen seit Version 2.1.0

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

Version 2.2.0-rc04

18. Dezember 2019

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

Fehlerkorrekturen

  • Die Standard-Einblendungsanimationen von navigation-ui wurden an die angepassten Einblendungsanimationen in Fragment 1.2.0-rc04 angepasst. (b/145769814)

Version 2.2.0-rc03

4. Dezember 2019

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

Fehlerkorrekturen

  • Es wurde ein Problem beim Parsen von Deeplinks behoben, das bei Verwendung von Abfrageparametern und einem Argument als letztem Teil des Pfads auftrat und verhinderte, dass mehr als ein Zeichen des letzten Pfadarguments geparst wurde. (b/144554689)
  • Ein Problem beim Parsen von Deeplinks wurde behoben, bei dem optionale Parameter "@null" statt null erhielten. (b/141613546)
  • NavHostFragment stellt den Graphen jetzt nach einer Konfigurationsänderung wieder richtig wieder her, wenn er mit FragmentContainerView verwendet wird. (b/143752103)

Änderungen an Abhängigkeiten

  • Die Navigation hängt jetzt gegebenenfalls vom Lebenszyklus 2.2.0-rc03, vom Lebenszyklus-ViewModel-Speicherstatus 1.0.0-rc03, von der Aktivität 1.1.0-rc03 und vom Fragment 1.2.0-rc03 ab.

Version 2.2.0-rc02

7. November 2019

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

Änderungen an Abhängigkeiten

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

Version 2.2.0-rc01

23. Oktober 2019

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

Version 2.2.0-beta01

9. Oktober 2019

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

Neue Funktionen

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

Geändertes Verhalten

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Argumente im Pfad eines Deeplinks ignoriert wurden, wenn auch Abfrageparameter angegeben wurden. (b/141505755)
  • Die navArgs()-Kotlin-Erweiterung auf Activity enthält jetzt eine bessere Fehlermeldung, wenn keine Extras vorhanden sind. (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)
  • Wenn Sie ein Toolbar verwenden, wird die Textänderung bei einem Wechsel zwischen zwei Zielen der obersten Ebene nicht mehr von NavigationUI animiert. (b/140848160)

Version 2.2.0-alpha03

18. September 2019

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

Geändertes Verhalten

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

Fehlerkorrekturen

  • Ein ConcurrentModificationException-Problem bei der Verwendung von ViewModel-Instanzen, die an mehrere unterschiedliche ViewModelStore-Instanzen im Navigationsgraphen angehängt sind, wurde behoben. (aosp/1112257)

Version 2.2.0-alpha02

5. September 2019

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

Neue Funktionen

  • Bei Deeplinks mit Abfrageparametern werden jetzt neu angeordnete Abfrageparameter unterstützt. Argumente mit einem Standardwert oder mit dem Attribut „nullable“ sind beim Abgleich von Deeplinks jetzt optional. (b/133273839)
  • Sie können jetzt NavController.getBackStackEntry() aufrufen und dabei die ID eines Ziels oder Navigationsgraphen im Backstack übergeben. Die zurückgegebene NavBackStackEntry enthält ein LifecycleOwner, ein ViewModelStoreOwner (das gleiche, das von NavController.getViewModelStoreOwner() zurückgegeben wird) und ein SavedStateRegistryOwner, die alle von der Navigation gesteuert werden. Außerdem werden die Argumente angegeben, die zum Starten dieses Ziels verwendet wurden. (aosp/1101691, aosp/1101710)

Fehlerkorrekturen

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

Version 2.2.0-alpha01

7. August 2019

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

Neue Funktionen

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

API-Änderungen

Fehlerkorrekturen

  • NavHostFragment verwendet jetzt FragmentContainerView. Dadurch werden Probleme mit der Z-Reihenfolge von Animationen und der Zustellung von Fenster-Inset-Elementen an Fragmente behoben. (b/137310379)

Version 2.1.0

Version 2.1.0

5. September 2019

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

Wichtige Änderungen seit Version 2.0.0

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

Version 2.1.0-rc01

7. August 2019

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

API-Änderungen

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

Version 2.1.0-beta02

19. Juli 2019

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

Fehlerkorrekturen

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

Version 2.1.0-beta01

17. Juli 2019

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

Neue Funktionen

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

Fehlerkorrekturen

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

Version 2.1.0-alpha06

2. Juli 2019

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

Neue Funktionen

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

API-Änderungen

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

Geändertes Verhalten

  • Der Navigationsstatus wird jetzt bei Verwendung eines <dialog>-Ziels korrekt mit dem angezeigten Inhalt synchronisiert. Daher werden <dialog>-Ziele jetzt automatisch eingeblendet, wenn Sie zu einem Ziel ohne Dialogfeld und Aktivität wechseln, z. B. zu einem <fragment>-Ziel. (b/134089818)

Fehlerkorrekturen

  • Bei der Navigation wird jetzt die Animation unterdrückt, die beim Erstellen der Aktivität beim Umgang mit einem Deeplink auftritt. Dadurch wird ein visueller Blitz behoben. (b/130362979)
  • Es wurde ein Fehler behoben, durch den der Navigationsrückstapel nicht synchron war, wenn ein Fragment beim Hinzufügen des ersten Fragments herausgepoppt wurde. (b/133832218)

Version 2.1.0-alpha05

5. Juni 2019

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.1.0-alpha04

16. Mai 2019

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

Fehlerkorrekturen

  • NavHostFragment berücksichtigt app:defaultNavHost jetzt korrekt, wenn die Ereignisse der Rückwärtsschaltfläche des Systems abgefangen werden. Dadurch wurde eine Regression bei der Navigation 2.1.0-alpha03 behoben. b/132077777
  • DialogFragmentNavigator verarbeitet jetzt popBackStack()- und navigateUp()-Vorgänge korrekt. b/132576764
  • Ein IllegalStateException: unknown destination during restore-Problem 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 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Bekannte Probleme

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

Neue Funktionen

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

Geändertes Verhalten

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

API-Änderungen

  • Die createFragmentNavigator()-Methode von NavHostFragment wurde eingestellt und ihre Funktionalität in die neue onCreateNavController()-Methode verschoben, um klarer zu machen, dass dies der richtige Einstiegspunkt zum Hinzufügen benutzerdefinierter Navigationselemente bei der Unterklasse von NavHostFragment ist. b/122802849
  • NavDestination wurde die Methode hasDeepLink() hinzugefügt, mit der Sie prüfen können, ob eine bestimmte Uri von diesem Ziel oder, im Fall einer NavGraph, von einem beliebigen Ziel im Navigationsgraphen verarbeitet werden kann. b/117437718

Fehlerkorrekturen

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

Version 2.1.0-alpha02

3. April 2019

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

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

  • Die android:name für <activity>-Ziele wird beim Inflieren nicht mehr in eine Klasse geparst. Dadurch werden ClassNotFoundExceptions bei der Verwendung dynamischer Funktionen verhindert. b/124538597

Version 2.1.0-alpha01

19. März 2019

Dies ist die erste Alphaversion von Navigation 2.1.0.

Änderungen an Abhängigkeiten

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 2.0.0

Version 2.0.0

14. März 2019

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

Version 2.0.0-rc02

6. März 2019

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

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

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

Abhängigkeiten vor AndroidX

Fügen Sie für die Versionen von Navigation vor AndroidX die folgenden Abhängigkeiten hinzu:

dependencies {
    def nav_version = "1.0.0"

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

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

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

Version 1.0.0

Version 1.0.0

14. März 2019

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

Version 1.0.0-rc02

26. Februar 2019

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

Fehlerkorrekturen

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

Version 1.0.0-rc01

21. Februar 2019

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

Fehlerkorrekturen

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

Version 1.0.0-beta02

12. Februar 2019

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

Neue Funktionen

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

Geändertes Verhalten

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

Fehlerkorrekturen

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

Version 1.0.0-beta01

4. Februar 2019

Dies ist die erste Betaversion der Navigation API. Sofern kein kritisches Problem auftritt, wird sie bis zur nächsten Version voraussichtlich stabil bleiben. Diese Version enthält einige Fehlerkorrekturen und Verhaltensänderungen.

Geändertes Verhalten

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

Fehlerkorrekturen

  • Safe Args können jetzt in Bibliotheks- und Funktionsmodulen in allen Versionen des Android Gradle-Plug-ins verwendet werden. b/121304903
  • Eine Regression behoben, bei der durch einen einzelnen popBackStack()-Vorgang alle Kopien eines Ziels vom Backstack entfernt wurden, anstatt nur eines einzelnen Ziels. b/123552990
  • Ein Problem wurde behoben, durch das der Status von FragmentNavigator nicht mehr mit dem Status von NavController synchronisiert wurde, was beim Versuch, den Backstack wiederherzustellen, zu einer IllegalStateException führte. b/123803044
  • Ein Problem wurde behoben, durch das der zurückgestrichelte Pfeil NavigationUI bei Verwendung von ProGuard mit Verschleierung nicht angezeigt wurde. b/123449431
  • Der von Safe Args generierte Code verarbeitet jetzt korrekt die Verwendung eines app:argType, 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 richtig. b/123347762

Version 1.0.0-alpha11

23. Januar 2019

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

Fehlerkorrekturen

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

Version 1.0.0-alpha10

23. Januar 2019

Bekannte Probleme

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

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

Neue Funktionen

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

Verhaltensänderungen

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

Wichtige Änderungen

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

Fehlerkorrekturen

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

Version 1.0.0-alpha09

18. Dezember 2018

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

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

Neue Funktionen

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

Wichtige Änderungen

  • Wenn du eine <argument> mit einer argType="reference" verwendest, wird die Referenz nicht mehr von Navigation geparst, sondern die Rohressourcen-ID selbst bereitgestellt. b/111736515
  • onNavDestinationSelected() kehrt jetzt standardmäßig zum Startziel Ihres Navigationsdiagramms zurück, was mit den setup-Methoden übereinstimmt. Fügen Sie menuCategory="secondary" zu MenuItem hinzu, um zu verhindern, dass der Rückstapel aufgerufen wird. aosp/852869
  • Die fromBundle()-Methoden der generierten Args-Klassen nehmen jetzt einen nicht nullwertigen Bundle anstelle eines nullable Bundle entgegen. aosp/845616

Fehlerkorrekturen

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

Version 1.0.0-alpha08

6. Dezember 2018

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

Neue Funktionen

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

Wichtige Änderungen

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

Fehlerkorrekturen

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

Safe Args

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

Version 1.0.0-alpha07

29. Oktober 2018

Neue Funktionen

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

Wichtige Änderungen

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

Fehlerkorrekturen

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

Safe Args

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

Version 1.0.0-alpha06

20. September 2018

Neue Funktionen

API-Änderungen

  • Funktionsgefährdende Änderung:Die Navigator-Methode navigate() verwendet jetzt den Parameter Navigator.Extras.
  • Die getGraph()-Methode von NavController ist jetzt NonNull b/112243286

Fehlerkorrekturen

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

Safe Args

  • Klassen für Wegbeschreibungen zu Navigationszielen erweitern jetzt die Klasse „Wegbeschreibung“ des übergeordneten Elements, falls vorhanden b/79871405
  • Die Klassen „Directions“ und „Args“ haben jetzt eine nützliche toString()-Implementierung b/111843389

Version 1.0.0-alpha05

10. August 2018

Fehlerkorrekturen

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

Version 1.0.0-alpha04

July 19, 2018

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

API-/Verhaltensänderungen

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

Safe Args

  • Funktionsgefährdende Änderung:app:type wurde in 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
  • In Args-Klassen wird jetzt bestätigt, dass NonNull-Attribute nicht null sind b/111451769
  • Den von NavDirections und Args generierten Klassen b/111455455 b/111455456 wurden zusätzliche NonNull-Anmerkungen hinzugefügt.

Fehlerkorrekturen

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

Version 1.0.0-alpha03

12. Juli 2018

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

API-/Verhaltensänderungen

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

Safe Args

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

Fehlerkorrekturen

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

Version 1.0.0-alpha02

7. Juni 2018

Verhaltensänderungen

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

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

Fehlerkorrekturen

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

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

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

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

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

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

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

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

API-Änderungen

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

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

Version 1.0.0-alpha01

8. Mai 2018

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