ניווט

‫Navigation הוא פריימוורק לניווט בין 'יעדים' באפליקציית Android, שמספק API עקבי בין אם היעדים מיושמים כ-Fragments, כ-Activities או כרכיבים אחרים.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫28 בינואר 2026 2.9.7 - - -

הצהרה על יחסי תלות

כדי להוסיף תלות ב-Navigation, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

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.9.7"

  // 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.9.7"

  // 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

כדי להוסיף Safe Args לפרויקט, צריך לכלול את classpath הבא בקובץ build.gradle ברמה העליונה:

Groovy

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

Kotlin

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

בנוסף, צריך להחיל אחד משני הפלאגינים הזמינים.

כדי ליצור קוד בשפת Java שמתאים למודולים של Java או למודולים מעורבים של Java ו-Kotlin, מוסיפים את השורה הבאה לקובץ build.gradle של האפליקציה או המודול:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

לחלופין, כדי ליצור קוד Kotlin שמתאים למודולים של Kotlin בלבד, מוסיפים:

Groovy

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

Kotlin

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

צריך להוסיף את android.useAndroidX=true לקובץ gradle.properties, בהתאם למאמר מעבר ל-AndroidX.

מידע על שימוש בתוספי Kotlin זמין במסמכי התיעוד של ktx.

מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גרסה 2.9

גרסה 2.9.7

‫28 בינואר 2026

androidx.navigation:navigation-*:2.9.7 מופץ. גרסה 2.9.7 מכילה את השמירות האלה.

תיקוני באגים

  • בניווט SafeArgs אין יותר בעיות של שמירת הגדרות במטמון כשמשתמשים בו עם שירותי Google. ‫(I57cda, ‏ b/458071608)
  • תוקן הבונה של הבדיקה SavedStateHandle בבדיקת הניווט שלא פענח את List<String>. (I26aac,b/454180135)

גרסה 2.9.6

‫5 בנובמבר 2025

androidx.navigation:navigation-*:2.9.6 מופץ. גרסה 2.9.6 מכילה את השמירות האלה.

תיקוני באגים

  • התוסף Navigation SafeArgs הועבר לממשקי ה-API המודרניים של Android Gradle Plugin, וכך אמורה להיות לו תאימות לכל הגרסאות של AGP 8.4.2 ואילך. בעקבות השינויים האלה, ספריית הפלט של קבצים שנוצרו על ידי התוסף השתנתה למיקום ברירת המחדל שסופק על ידי AGP. (Ie09d6, I7c431, b/203559535, b/293920476, b/269532448, b/443261197)
  • התוסף Navigation SafeArgs לא יצריך יותר הגדרה של המאפיין useAndroidX כשמשתמשים בו עם AGP בגרסה 9.0.0-alpha04 ואילך. (I6c3a4, ‏ b/444746731, ‏ b/443106400)

גרסה 2.9.5

‫24 בספטמבר 2025

androidx.navigation:navigation-*:2.9.5 מופץ. גרסה 2.9.5 מכילה את השמירות האלה.

תיקוני באגים

  • הספרייה Navigation Safe Args יכולה עכשיו לטפל בתמיכה של AGP 9.0 ב-Kotlin מובנה. (I1d9d76)

עדכון תלות

  • הפלאגין Navigation Safe Args תלוי עכשיו בגרסה 8.4.2 של Android Gradle Plugin. ‫(b/431847270, I5932a)

גרסה 2.9.4

‫10 בספטמבר 2025

androidx.navigation:navigation-*:2.9.4 מופץ. גרסה 2.9.4 מכילה את השמירות האלה.

תיקוני באגים

  • מניעת קריסה כשאירוע של חזרה עם חיזוי מועבר באמצע הפריים אחרי שהגורם המטפל הושבת במעבר NavHost. ‫(I5667c, ‏ b/384186542)

גרסה 2.9.3

‫30 ביולי 2025

androidx.navigation:navigation-*:2.9.3 מופץ. גרסה 2.9.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה שגיאה ב-NavController שגרמה ל-ConcurrentModificationException כשנעשה שימוש ב-OnDestinationChangedListeners. (If7406, ‏ b/417784831)
  • תוקנה שגיאה שהתרחשה כשמשתמשים ב-navigate(uri, navOptions,navigationExtras), שבה התוספים לא נלקחים בחשבון. (I67fb7, ‏ b/430336813)

גרסה 2.9.2

‫16 ביולי 2025

androidx.navigation:navigation-*:2.9.2 מופץ. גרסה 2.9.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שההזנה לא חזרה לפעולה כשתיבת הדו-שיח שמעל ההזנה נסגרה (Idb20e, b/418746335)
  • תוקנה השגיאה MissingFieldException בבדיקה של SavedStateHandle עם מסלולים בטוחים לסוגים בזמן השימוש ב-NavTypes בהתאמה אישית. (I2f843, b/421002511)

גרסה 2.9.1

‫2 ביולי 2025

androidx.navigation:navigation-*:2.9.1 מופץ. גרסה 2.9.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שאובייקטים מסוג NavEntries שנוצרו באמצעות single top לא עברו אף פעם את השלב CREATED ב-Lifecycle.State שלהם. ‫(I043ba, ‏ b/421095236)

גרסה 2.9.0

‫7 במאי 2025

androidx.navigation:navigation-*:2.9.0 מופץ. גרסה 2.9.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.8.0

  • פעולות של Navigation Safe Args נוצרות עכשיו עם ההערה @CheckResult כדי לוודא שהן בשימוש.

ממשק SupportingPane

  • מעכשיו, רכיבי Custom Navigator יכולים לסמן את היעדים שלהם ככאלה שמטמיעים את הממשק SupportingPane, שמציין ל-NavController שהיעדים האלה יוצגו לצד יעדים אחרים. לדוגמה, באמצעות הממשק הזה אפשר RESUMED כמה יעדים בו-זמנית.

Compose Kotlin Multiplatform

  • בניווט יש עכשיו פונקציה חדשה משותפת NavController.handleDeepLink() שמקבלת NavDeepLinkRequest במקום Intent. כך פלטפורמות שאינן Android יוכלו לטפל בקישורי עומק בצורה תקינה. תודה, קונסטנטין צ'וברובוב!
  • בניווט יש עכשיו NavUri, פונקציית מנתח חדשה משותפת שהיא API תואם ל-URI של Android בפלטפורמות אחרות. כך אפשר ליצור URI באופן שלא תלוי בפלטפורמה. תודה, קונסטנטין צ'וברובוב!

פונקציות בטוחות לשימוש

  • ממשקי ה-API הבטוחים מבחינת טיפוס, שבעבר הייתה אליהם גישה רק דרך שיטות reified, כלומר: ל-composable<YourScreen> יש עכשיו גרסאות לא מוחשיות שמקבלות ישירות מופע של KClass.
  • בטיחות סוג הניווט תומכת עכשיו במחלקות ערכים כנתיב או כסוג הארגומנט של נתיב.

גרסה ‎2.9.0-rc01

‫23 באפריל 2025

androidx.navigation:navigation-*:2.9.0-rc01 מופץ. גרסה ‎2.9.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • הוסרו כל היעדים של פלטפורמות שאינן Android מ-Jetpack Navigation, כי היעדים האלה לא פועלים בפועל. במקום זאת, מסופקים עכשיו קובצי stub לפלטפורמות שונות.(I2877d)

גרסה ‎2.9.0-beta01

‫9 באפריל 2025

androidx.navigation:navigation-*:2.9.0-beta01 מופץ. גרסה ‎2.9.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • ממשק ה-API המשותף של parseStringAsNavUri השתנה לפונקציית factory של NavUri שמקבלת מחרוזת. ‫(I4db6e, ‏ b/403616316)

עדכונים של תלות

  • הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)

גרסה ‎2.9.0-alpha09

‫26 במרץ 2025

androidx.navigation:navigation-*:2.9.0-alpha09 מופץ. גרסה ‎2.9.0-alpha09 מכילה את השמירות האלה.

תכונות חדשות

  • מודול navigation-testing תומך עכשיו במחשבים, ב-Linux, ב-macOS וב-iOS, בנוסף ל-Android. ‫(I2b770, ‏ b/398265336)
  • מעכשיו אפשר להשתמש ב-NavType במחשב, ב-Linux, ב-macOS וב-iOS, בנוסף ל-Android. (I297d8)

גרסה ‎2.9.0-alpha08

‫12 במרץ 2025

androidx.navigation:navigation-*:2.9.0-alpha08 מופץ. גרסה ‎2.9.0-alpha08 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך ניווט 2.8.9: תוקנה רגרסיה שנמצאה בניווט 2.8.8, שדרשה שקישור עומק יתאים בדיוק לכל השדות של בקשת קישור עומק או של Intent כדי להיחשב כהתאמה. כתוצאה מכך, קישורי עומק שהכילו התאמות חלקיות לשדות ולא הכילו התאמות אחרות לא פעלו יותר. ‫(Ie5e36, ‏ b/399826566)

External Contribution

  • פונקציית ניתוח נפוצה חדשה ליצירת NavUri. תודה, קונסטנטין צ'וברובוב! (If0a6a)

גרסה ‎2.9.0-alpha07

‫26 בפברואר 2025

androidx.navigation:navigation-*:2.9.0-alpha07 מופץ. גרסה ‎2.9.0-alpha07 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה ניסיון להשתמש ב-saveState עם חלון קופץ לא כולל היה גורם ל-savedState ריק, שיכול היה לגרום לקריסה בשחזור. (I9f3e8, b/395091644)
  • מגרסה Navigation 2.8.8: תוקנה בעיה בהתאמה של NavDeepLink, שבה קישור עומק ובקשה לקישור עומק צריכים להיות זהים בדיוק ב-URI, בפעולה וב-MIME. אם רק שדה אחד או שניים תואמים, אי אפשר יותר לבצע התאמה. ‫(I3b029, ‏ b/395712033)
  • Navigation 2.8.8: תוקן באג שבו מסלולים עם נתיבים של תווים כלליים לא תואמים לקישור עמוק שנוסף (I7ea92, ‏ b/389970341)

External Contribution

  • מחלקים את ממשקי ה-API של navigation-common,‏ navigation-runtime ו-navigation-compose לפלטפורמה המשותפת. תודה, קונסטנטין צ'וברובוב! (I1e626, ‏ Ica76f, ‏ Idf479)

בעיות מוכרות

  • בגלל העבודה לטיפול בבעיה b/395712033, קישורי עומק נדרשים באופן שגוי לכלול את כל אותם השדות כמו בקשת קישור העומק ו/או Intent. קישורי ה-Deeplink צריכים להתאים רק לשדות שהם מכילים, וצריך להתעלם מהשדות שלא נכללים בהם. הבעיה הזו תוקנה בגרסה מאוחרת יותר כחלק מ-b/399826566.

גרסה ‎2.9.0-alpha06

‫12 בפברואר 2025

androidx.navigation:navigation-*:2.9.0-alpha06 מופץ. גרסה ‎2.9.0-alpha06 מכילה את השמירות האלה.

תכונות חדשות

  • פעולות של Navigation Safe Args נוצרות עכשיו עם ההערה @CheckResult כדי לוודא שהן בשימוש. ‫(I14d4c, ‏ b/356323084)

תיקוני באגים

  • תוקנה שגיאה ב-NavController שבה המערכת ניסתה לשחזר באופן שגוי את מצבי ה-backStack למערך, כשבעצם הם נשמרו ברשימה. (Idfb9b)
  • מתוך Navigation 2.8.7: ‏Navigation Safe Args מספקת עכשיו תמיכה ביעדים שניתנים להרכבה. (I35320, b/362791955)

גרסה ‎2.9.0-alpha05

‫29 בינואר 2025

androidx.navigation:navigation-*:2.9.0-alpha05 מופץ. גרסה ‎2.9.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשנעשה שימוש ב-Navigation Compose. ‫(I480f4, ‏ b/353294030)
  • מתוך Navigation 2.8.6: תוויות NavDestination שסופקו באמצעות XML ינותחו באמצעות NavType.get כדי לוודא שהלוגיקה המותאמת אישית של NavType נשמרת. (I7ec2f, b/388100796)
  • מ-Navigation 2.8.6: כשמנווטים לפעילות עם dataPattern, ‏ActivityNavigator ינסה עכשיו לקודד את ערך הארגומנט באמצעות NavType של הארגומנט. ‫(I16376, ‏ b/383616432)
  • מתוך Navigation 2.8.5: תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשמשתמשים ב-Navigation Compose ומפעילים navigate באותו פריים שבו האנימציה הנוכחית מסתיימת. ‫(I26cb1, ‏ b/353294030)

גרסה ‎2.9.0-alpha04

‫11 בדצמבר 2024

androidx.navigation:navigation-*:2.9.0-alpha04 מופץ. גרסה ‎2.9.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

בטבלה הבאה מפורטים ממשקי ה-API של reified ו-KClass.

מוחשי 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

  • העומס העודף הספציפי ל-Kotlin‏ NavGraph.setStartDestination לצורך בטיחות סוגים מוסתר ממקורות Java. ‫(Ic640c, ‏ b/364634035)

תיקוני באגים

  • מתוך Navigation 2.8.5: תוקנה בעיה שבה NavHost יכול להפעיל חריגה בתוך PredictiveBackHandler אם מחסנית החזרה (back stack) נשלפת עד לרשומה אחת ומופעלת חזרה למערכת באותו פריים. (I1a429, ‏ b/375343407)
  • מתוך ניווט 2.8.5: תוקנה הבעיה NavDestination NullPointerException בעדכון של startDestination בתרשים. (I99421, ‏ b/361560785)

External Contribution

  • מתוך Navigation 2.8.5: בטיחות סוג הניווט תומכת עכשיו ב-List<Enum> כסוג ארגומנט של מסלול בלי לדרוש NavType מותאם אישית. תודה Csaba Kozák! ‫(GH-725, ‏ b/375559962)

גרסה ‎2.9.0-alpha03

‫13 בנובמבר 2024

androidx.navigation:navigation-*:2.9.0-alpha03 מופץ. גרסה ‎2.9.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • בטיחות סוג הניווט תומכת עכשיו במחלקות ערכים כנתיב או כסוג הארגומנט של נתיב. ‫(I9344a, ‏ b/374347483)

תיקוני באגים

  • תוקנה בעיה ConcurrentModificationException שיכולה להתרחש כשLifecycleObserver שמצורף לNavBackStackEntry מפעיל שינוי במצבור הפעולות הקודמות כשמארח LifecycleOwner כמו Activity או Fragment שמכילים אותו משנה את מצב מחזור החיים שלו. (Ia9494)

גרסה ‎2.9.0-alpha02

‫30 באוקטובר 2024

androidx.navigation:navigation-*:2.9.0-alpha02 מופץ. גרסה ‎2.9.0-alpha02 מכילה את השמירות האלה.

External Contribution

  • ‫method חדש מסוג NavController.handleDeepLink(request: NavDeepLinkRequest). תודה, קונסטנטין צ'וברובוב! (I3e228)

גרסה ‎2.9.0-alpha01

‫16 באוקטובר 2024

androidx.navigation:navigation-*:2.9.0-alpha01 מופץ. גרסה ‎2.9.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • מעכשיו, רכיבי Custom Navigator יכולים לסמן את היעדים שלהם ככאלה שמטמיעים את ממשק SupportingPane, שמציין ל-NavController שהיעדים האלה יוצגו לצד יעדים אחרים. לדוגמה, באמצעות הממשק הזה אפשר RESUMED כמה יעדים בו-זמנית. (Id5559)
  • מתוך ניווט 2.8.3: נוספו בדיקות חדשות של lint למודולים navigation-common,‏ navigation-runtime ו-navigation-compose כדי לעזור לזהות מסלולים בטוחים מבחינת טיפוס שלא נוסף להם הערה בצורה נכונה עם @Serializable. הבדיקה הזו מתבצעת על כל הפונקציות של התוספים NavGraphBuilder ו-NavDeepLinkBuilder. (I4a259, ‏ I95402, ‏ Ie601a, ‏ Id8c6e, ‏ I28bda, ‏ b/362725816)
  • בקטע Navigation 2.8.3: נוספו בדיקות חדשות של lint למודולים navigation-common,‏ navigation-runtime ו-navigation-compose כדי לעזור לזהות מסלולים בטוחים מבחינת טיפוס עם ארגומנטים של Enum שלא נוסף להם הערה בצורה נכונה עם @Keep. הבדיקה הזו מתבצעת על כל הפונקציות של התוספים NavGraphBuilder ו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

שינויים בהתנהגות

  • ניסיון להשתמש בNavController שכבר DESTROYED יגרום עכשיו לIllegalStateException. ‫(I520da, ‏ b/369616172)

תיקוני באגים

  • עדכון של חריג מסוג Enum class not found כדי להציע שימוש בהערה @Keep במקרה של מחיקה של Enum class בגרסאות מצומצמות. (I90e79, b/358137294)

בעיות מוכרות

  • יש בעיה בכללי lint החדשים שנוספו בגרסה Navigation 2.8.* שגורמת לשגיאה Obsolete custom lint check כשמנסים להריץ lint עם Android Gradle Plugin בגרסה 8.4 ואילך. (b/368070326, ‏ b/371463741)

גרסה 2.8

גרסה 2.8.9

‫12 במרץ 2025

androidx.navigation:navigation-*:2.8.9 מופץ. גרסה 2.8.9 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה שנמצאה ב-Navigation 2.8.8, שדרשה שקישור עומק יתאים בדיוק לכל השדות של בקשת קישור עומק או של Intent כדי להיחשב כהתאמה. כתוצאה מכך, קישורי עומק שהכילו התאמות חלקיות לשדות ולא הכילו התאמות אחרות לא פעלו יותר. ‫(Ie5e36, ‏ b/399826566)

גרסה 2.8.8

‫26 בפברואר 2025

androidx.navigation:navigation-*:2.8.8 מופץ. גרסה 2.8.8 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג שבו מסלולים עם נתיבים של תו כללי לחיפוש לא תואמים לקישור עומק שנוסף. (I7ea92, ‏ b/389970341)
  • תוקנה בעיה בהתאמה של NavDeepLink, שבה קישור עומק ובקשה לקישור עומק צריכים להיות זהים בדיוק ב-URI, בפעולה וב-MIME. אם רק שדה אחד או שניים תואמים, אי אפשר יותר לבצע התאמה. (I3227f, b/395712033)

בעיות מוכרות

  • בגלל העבודה לטיפול בבעיה b/395712033, קישורי עומק נדרשים באופן שגוי לכלול את כל אותם השדות כמו בקשת קישור העומק ו/או Intent. קישורי ה-Deeplink צריכים להתאים רק לשדות שהם מכילים, והמערכת צריכה להתעלם מהשדות שלא נכללים בהם. הבעיה הזו תוקנה בגרסה מאוחרת יותר כחלק מ-b/399826566.

גרסה 2.8.7

‫12 בפברואר 2025

androidx.navigation:navigation-*:2.8.7 מופץ. גרסה 2.8.7 מכילה את השמירות האלה.

תיקוני באגים

  • התכונה Navigation Safe Args תומכת עכשיו ביעדים שניתן להרכיב. (I35320, b/362791955)

גרסה 2.8.6

‫29 בינואר 2025

androidx.navigation:navigation-*:2.8.6 מופץ. גרסה 2.8.6 מכילה את השמירות האלה.

תיקוני באגים

  • תוויות NavDestination שמועברות באמצעות XML ינותחו באמצעות NavType.get כדי לוודא שהלוגיקה המותאמת אישית של NavType נשמרת. (Id366d, b/388100796)
  • כשעוברים לפעילות עם dataPattern, ActivityNavigator ינסה עכשיו לקודד את ערך הארגומנט באמצעות NavType של הארגומנט. (I1a71d, b/383616432)

גרסה 2.8.5

‫11 בדצמבר 2024

androidx.navigation:navigation-*:2.8.5 מופץ. גרסה 2.8.5 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה NavHost יכול להחזיר חריגה בתוך PredictiveBackHandler אם מחסנית החזרה (back stack) מוקפצת עד לרשומה אחת ומופעלת חזרה למערכת באותו פריים. (I1a429, ‏ b/375343407)
  • תוקנה בעיה שגרמה לNavDestination NullPointerException כשמעדכנים startDestination של תרשים. (I99421, ‏ b/361560785)
  • תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשמשתמשים ב-Navigation Compose ומפעילים את הפונקציה navigate באותו פריים שבו האנימציה הנוכחית מסתיימת. ‫(I26cb1, ‏ b/353294030)
  • תוקנה בעיה ConcurrentModificationException שיכולה להתרחש כשLifecycleObserver שמצורף לNavBackStackEntry מפעיל שינוי במצבור הפעולות הקודמות כשמארח LifecycleOwner כמו Activity או Fragment שמכילים אותו משנה את מצב מחזור החיים שלו. (Ia9494)

External Contribution

  • בבטיחות של סוג הניווט יש עכשיו תמיכה ב-List<Enum> כסוג ארגומנט של מסלול בלי לדרוש NavType מותאם אישית. תודה Csaba Kozák! ‫(GH-725, ‏ b/375559962)

גרסה 2.8.4

‫13 בנובמבר 2024

androidx.navigation:navigation-*:2.8.4 מופץ. גרסה 2.8.4 מכילה את השמירות האלה.

תכונות חדשות

תיקוני באגים

גרסה 2.8.3

‫16 באוקטובר 2024

androidx.navigation:navigation-*:2.8.3 מופץ. גרסה 2.8.3 מכילה את השמירות האלה.

תכונות חדשות

  • נוספו בדיקות חדשות של lint למודולים navigation-common,‏ navigation-runtime ו-navigation-compose כדי לזהות מסלולים בטוחים מבחינת סוגים שלא נוסף להם הערה בצורה נכונה עם @Serializable. הבדיקה הזו מתבצעת על כל הפונקציות של התוספים NavGraphBuilder ו-NavDeepLinkBuilder. (I4a259, ‏ I95402, ‏ Ie601a, ‏ Id8c6e, ‏ I28bda, ‏ b/362725816)
  • נוספו בדיקות חדשות של Lint למודולים navigation-common,‏ navigation-runtime ו-navigation-compose כדי לעזור לזהות מסלולים בטוחים מבחינת סוגים עם ארגומנטים של Enum שלא נוסף להם הערה בצורה נכונה באמצעות @Keep. הבדיקה הזו מתבצעת על כל הפונקציות של התוספים NavGraphBuilder ו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

תיקוני באגים

  • תוקנה בעיה שבה כללי lint חדשים שנוספו בגרסה Navigation 2.8.* גרמו לשגיאה Obsolete custom lint check כשניסו להפעיל lint עם Android Gradle Plugin בגרסה 8.4 ואילך. (I1be3d, ‏ b/368070326, ‏ b/371463741)

בעיות מוכרות

  • בניסיון להריץ lint עם Lint 16 ‏ (AGP 8.7) ואילך, יופיע שגיאת בדיקת lint מותאמת אישית שהוצאה משימוש. (b/371926651)

גרסה 2.8.2

‫2 באוקטובר 2024

androidx.navigation:navigation-*:2.8.2 מופץ. גרסה 2.8.2 מכילה את השמירות האלה.

תכונות חדשות

  • התכונה 'בטיחות סוגי הניווט' תומכת עכשיו במחלקות שניתנות לסריאליזציה, שכוללות Double,‏ Double?,‏ DoubleArray,‏ DoubleArray?,‏ List<Double> ו-List<Double>?, בלי לדרוש NavType בהתאמה אישית. (I570eb, ‏ Ibc4c0, ‏ I37461, ‏ I5bed4, ‏ b/359245753)

תיקוני באגים

  • שיפרנו את הודעת השגיאה שמוצגת כשלא ניתן למפות ארגומנט של מסלול ל-NavType ב-Navigation. הודעת השגיאה החדשה תכיל את שם הארגומנט, את השם המלא של הארגומנט ואת השם המלא של המסלול. (Id8416, ‏ b/346264232)

גרסה 2.8.1

‫18 בספטמבר 2024

androidx.navigation:navigation-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף כלל חדש של lint כדי להבטיח שימוש בפונקציה popBackStack שמקבלת סוג מחלקה מוחשי כשמנסים להשתמש ב-popBackStack באמצעות ממשקי API בטוחים לסוגים. ‫(Ief161, ‏ b/358095343)

תיקוני באגים

  • כדי לנווט, צריך להעביר ל-NavGraph של startDestination את המסלול שמכיל את הערכים של כל הארגומנטים הנדרשים, כולל ארגומנטים שלא ניתן להגדיר אותם כ-nullable ואין להם ערך ברירת מחדל. ‫(I18e74, ‏ b/362594265)
  • ב-Navigation safe args נוספה תמיכה במחרוזות שאינן ניתנות לאיפוס, כך שערכי null ינותחו ויאוחסנו בחבילה כמו שהם. זה שונה מההתנהגות הקיימת, שבה ערכי null מנותחים לאובייקט null. השינוי הזה חל רק על סוגי מחרוזות שלא יכולים להכיל ערך null. מחרוזות שאפשר להגדיר להן ערך null לא משתנות. (I08b4a, ‏ b/348936238)
  • אי אפשר יותר להשתמש בקישור עומק כדי להגיע אל NavDestination, אלא אם קישור העומק נוסף ליעד באופן מפורש. זה גם אומר שאפשר לנווט למסלול של יעד רק באמצעות פונקציית הניווט העמוסה מדי שמקבלת מסלול מחרוזת. העדכון הזה מתקן נקודת חולשה שאיפשרה ליצור קישור עומק ליעד שמוגן באופן פוטנציאלי. (Ie30e6)

עדכון תלות

  • התלות של Navigation Safe Args היא עכשיו ב-Kotlin 1.9.24, ולא ב-Kotlin 2.X, כדי שלא לכפות על המפתחים לבצע עדכון. (a4129a)
  • הניווט ב-Compose תלוי עכשיו ב-Compose 1.7.2.

גרסה 2.8.0

‫4 בספטמבר 2024

androidx.navigation:navigation-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.7.0

Navigation Kotlin DSL Type-Safety

  • הניווט מספק עכשיו בטיחות סוגים עבור Kotlin DSL (שמשמש את Navigation Compose) באמצעות Kotlin Serialization, כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים מסוגים ומחלקות נתונים:
    // 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)
        }
    }

מידע נוסף זמין בפוסט הזה בבלוג בנושא Navigation Compose meet Type Safety.

ניווט Compose Predictive Back

  • ‫Navigation Compose תומך עכשיו בתכונה 'חזרה לאחור באפליקציה עם חיזוי' באמצעות ממשקי ה-API החדשים SeekableTransitionState מ-compose-animation. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית שלכם, לפני שתחליטו אם לאשר את העסקה באמצעות התנועה שהושלמה או לבטל אותה.

רכיב הניתן להרכבה של מקטע ניווט

  • נוסף ארטיפקט navigation-fragment-compose חדש שכולל חלופה ComposableNavHostFragment ל-NavHostFragment, שמאפשרת להוסיף יעד שאפשר להרכיב לקובצי ה-XML של הניווט. כל יעד composable צריך להיות מוגדר כשיטת @Composable ברמה העליונה, ללא ארגומנטים, ששמו המלא משמש כמאפיין android:name בכל יעד. כשעוברים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי.
  // 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" />

שינויים אחרים

  • ‫Navigation Compose מסתמך עכשיו על Compose 1.7.0.
  • הניווט מספק עכשיו מחלקה חדשה CollectionNavType<T>, מחלקת משנה של NavType<T> לארגומנטים מבוססי-אוסף כמו רשימה, מערכים, מפות. כל מערכי ברירת המחדל NavType (‏IntArrayType, ‏LongArrayType, ‏FloatArrayType, ‏BoolArrayType ו-StringArrayType) יורדים עכשיו מהמחלקה החדשה הזו.
  • NavType כולל עכשיו תמיכה מובנית ברשימות של Int,‏ String,‏ Boolean,‏ Float ו-Long.

גרסה 2.8.0-rc01

‫21 באוגוסט 2024

androidx.navigation:navigation-*:2.8.0-rc01 מופץ. גרסה ‎2.8.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן קריסת הניווט כשמעבירים מחלקות Enum ברמה העליונה כארגומנטים בטוחים מבחינת סוג. (I0ba76, ‏ b/358137294)
  • ‫Navigation 2.8 פועל עכשיו בצורה תקינה עם SDK 34 ולא יוחלף ל-SDK 35 עד לגרסה 2.9, יחד עם שאר ספריות AndroidX. (b/358798728)

גרסה ‎2.8.0-beta07

‫7 באוגוסט 2024

androidx.navigation:navigation-*:2.8.0-beta07 מופץ. גרסה ‎2.8.0-beta07 מכילה את השמירות האלה.

בעיות מוכרות

  • בגלל b/358137294, יש תמיכה מובנית רק ב-Enums שמוטמעים בכיתה אחרת. תמיכה ב-Enums ברמה העליונה תתווסף במהדורה הבאה.

תיקוני באגים

  • כשמנווטים ליעדים כפולים או משותפים, הניווט ייתן עדיפות להגעה ליעד התואם הקרוב ביותר מהמיקום הנוכחי בתרשים. ‫(Ic89a4, ‏ b/352006850)
  • נוסף NavType.EnumType חדש לניווט בארגומנטים בטוחים. המשמעות היא שסוגי Enum כבר לא דורשים NavType מותאמים אישית. שימו לב שהשם המלא של Enum חייב להיות שם ברירת המחדל.SerialName ‫(I66d22, ‏ b/346475493)
  • בניווט ב-safe args נוספה תמיכה מובנית בסוגי ארגומנטים שניתן להגדיר כ-nullable,כולל Int?, ‏ Long?, ‏ Float?, ‏ Boolean? ו-Enum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • הפונקציה NavGraph של startDestination תשתמש עכשיו בערכי ברירת המחדל של הארגומנט אם המסלול startDestination שמועבר אל NavGraph שווה בדיוק ל-startDestination.route. (I13762, b/354046047)

גרסה ‎2.8.0-beta06

‫24 ביולי 2024

androidx.navigation:navigation-*:2.8.0-beta06 מופץ. גרסה ‎2.8.0-beta06 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה בדיקות ה-lint של WrongStartDestinationType לא בדקו אובייקטים נלווים בסוג המחלקה שהועבר, ולכן ה-lint לא הצליח לזהות את השגיאה. (I92b09)

גרסה ‎2.8.0-beta05

‫10 ביולי 2024

androidx.navigation:navigation-*:2.8.0-beta05 מופץ. גרסה ‎2.8.0-beta05 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה קריסה בניווט singleTop כשמסלולים מקוננים NavGraphs חולקים את אותו מסלול startDestination. (I17b94, ‏ b/294408596)

גרסה ‎2.8.0-beta04

‫26 ביוני 2024

androidx.navigation:navigation-*:2.8.0-beta04 מופץ. גרסה ‎2.8.0-beta04 מכילה את השמירות האלה.

תיקוני באגים

  • הניווט תומך עכשיו בניווט עם מחרוזות ריקות בארגומנטים של נתיבים. (Ic5dbd, ‏ b/339481310)
  • שיפור הודעת השגיאה עבור סדרות מותאמות אישית שהוגדרו ישירות בשדות של מחלקות באמצעות @Serializable(with =...), כדי להבהיר שזו תכונה שלא נתמכת כרגע. (I052b0, b/341319151)
  • SavedStateHandleFactory עכשיו אפשר להשתמש ב-test api בבדיקות שאינן בדיקות של Android, אבל נדרשת תמיכה של Robolectric בניתוח ארגומנטים באמצעות Bundles. (I76cdc, ‏ b/340966212)
  • תוקנה קריסה שנגרמה משחזור מצב כשממשיכים להשתמש באפליקציה אחרי שהתהליך הסתיים, עם שימוש בניווט בטוח-סוג ב-Compose. (Ia8f38, b/341801005)
  • תוקנה בעיה ב-Navigation Compose שבה אחרי ביטול של תנועת החזרה החזויה, NavBackStackEntry שהמשתמש חוזר אליה אף פעם לא חוזר למצב מחזור החיים RESUMED. בנוסף, כך מוודאים שהאנימציה של היעד שאליו חוזרים תפעל בצורה תקינה ולא תופיע פתאום במקום אחרי תנועת ההטלה. (I97a0c, b/346608857)
  • כשמשתמשים ב'חזרה עם חיזוי' עם Navigation Compose, ליעד שמוסר מהמערך יש עכשיו את סדר ה-Z הנכון, והוא מונפש בצורה נכונה מעל היעד הנכנס. ‫(I2077b, ‏ b/345993681)

גרסה ‎2.8.0-beta03

‫12 ביוני 2024

androidx.navigation:navigation-*:2.8.0-beta03 מופץ. גרסה ‎2.8.0-beta03 מכילה את השמירות האלה.

שינויים ב-API

  • ל-CollectionNavType יש שיטת abstract חדשה emptyCollection(). אפשר לשנות את ההתנהגות הזו כדי לטפל באוסף ריק שמועבר כארגומנט. (Ie4d84, b/341723133)

תיקוני באגים

  • הוספנו מסמכים בנושא NavType.serializeAsValue ו-serializeAsValues כדי להדגיש שפלט סופי צריך להיות מקודד ב-URI. (Ida6bd, b/344943214)
  • תוקנה קריסה שהתרחשה כשבוצעה קריאה ל-toRoute<T> עם ארגומנט CollectionNavType מסוג null. כשמנווטים עם null CollectionNavType, ארגומנט הפלט יהיה ערך ברירת המחדל שהוגדר במחלקה Serializable, או ערך ההחזרה של emptyCollection() אם לא הוגדר ערך ברירת מחדל. (I84158, ‏ Id630f, ‏ b/342672856)

גרסה ‎2.8.0-beta02

‫29 במאי 2024

androidx.navigation:navigation-*:2.8.0-beta02 מופץ. גרסה ‎2.8.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה קריסה של ClassCastException במהלך שימוש ב-NavBackStackEntry.toRoute עם NavType מותאם אישית שניתן להגדיר כ-nullable. ‫(I1c29b, ‏ b/342239473)
  • תוקנו בעיות בשחזור של מצב מחסנית החזרה ב-Navigation שנגרמו כשניסו לשחזר רשומה במחסנית החזרה שלא ניתן להגיע אליה באמצעות מזהה מהיעד הנוכחי. מכיוון שהמסלולים מגובים במזהים, גם יעדים שנבנו באמצעות מסלולים הושפעו. בנוסף, תוקנה קריסה שנגרמה כתוצאה מקריאה ל-clearBackStack() שהייתה לה אותה בעיה בסיסית. ‫(I423c3, ‏ b/339908057)

גרסה ‎2.8.0-beta01

‫14 במאי 2024

androidx.navigation:navigation-*:2.8.0-beta01 מופץ. גרסה ‎2.8.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • SavedStateHandle.toRoute() מקבלת עכשיו פרמטר typeMap לסוגים של ארגומנטים בהתאמה אישית. (Ie39fb, ‏ b/339026523)
  • הוספנו ל-navigation-testing API לבדיקה כדי ליצור SavedStateHandle מאובייקט Kotlin Serializable. (Id4867, ‏ b/339080702)

תיקוני באגים

  • נוספו מסמכים עם פרמטרים חסרים לפונקציות של Navigation Kotlin DSL. (I26a36)

גרסה ‎2.8.0-alpha08

‫1 במאי 2024

androidx.navigation:navigation-*:2.8.0-alpha08 מופץ. גרסה ‎2.8.0-alpha08 מכילה את השמירות האלה.

Safe Args ב-Navigation Compose

הפונקציונליות הזו משתמשת בסריאליזציה של Kotlin כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים מסוג וסיווגי נתונים:

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

מידע נוסף זמין בפוסט הזה בבלוג בנושא Navigation Compose meet Type Safety.

תכונות חדשות

  • ארטיפקט navigation-fragment-compose מספק עכשיו קומפוזיציה LocalFragment מקומית לשיטות שאפשר להגדיר בתוך ComposableFragment. (If35e5)
  • NavType כולל עכשיו תמיכה מובנית ברשימות של Int,‏ String,‏ Boolean,‏ Float ו-Long. (I4b6dd, ‏ Ia914c, ‏ b/188693139)

גרסה ‎2.8.0-alpha07

‫17 באפריל 2024

androidx.navigation:navigation-*:2.8.0-alpha07 מופץ. גרסה ‎2.8.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף ארטיפקט navigation-fragment-compose חדש שכולל חלופה ל-ComposableNavHostFragment NavHostFragment, שמאפשרת להוסיף יעדים composable לקובצי ה-XML של הניווט. כל יעד composable צריך להיות מוגדר כשיטת @Composable ברמה העליונה, ללא ארגומנטים, ששמו המלא משמש כמאפיין android:name בכל יעד. כשעוברים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי. (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

  • המשכנו לתמוך ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Kotlin Serialization. ממשקי ה-API האלה לא סיימו את הפיתוח ומסומנים בהערה ExperimentalSafeArgsApi. ההערה הזו תוסר כשהממשק כולו יהיה מוכן בגרסה עתידית. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)

גרסה ‎2.8.0-alpha06

‫3 באפריל 2024

androidx.navigation:navigation-*:2.8.0-alpha06 מופץ. גרסה ‎2.8.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

תיקוני באגים

  • NavHost משתמש עכשיו ב-Alignment.TopStart כארגומנט ברירת המחדל של contentAlignment. כך הוא תואם לברירת המחדל של AnimatedContent ומתקן מקרים מסוימים של מעבר לא צפוי ממרכז המעבר. ‫(I09e72, ‏ b/330111602)
  • כשמשתמשים ב-Navigation Compose ומבצעים את תנועת החזרה החזויה, המעבר המותאם אישית NavHost יושלם עכשיו בצורה נכונה במקום להסתיים באופן מיידי. (I99017, ‏ b/327292110)

גרסה ‎2.8.0-alpha05

‫20 במרץ 2024

androidx.navigation:navigation-*:2.8.0-alpha05 מופץ. גרסה ‎2.8.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר להעביר ארגומנטים ל-NavGraph של startDestination ישירות במסלול startDestination בלי להסתמך על defaultValue. הדבר נכון גם לגבי NavGraph startDestinations מוטמעים. (I0e0b5, ‏ b/109505019, ‏ b/188693139)

שינויים ב-API

  • נוספה מחלקה מופשטת חדשה CollectionNavType<T>, מחלקת משנה של NavType<T> לארגומנטים מבוססי-אוסף כמו רשימה, מערכים, מפות. ‫(Ic6d63, ‏ b/188693139)
  • כל מערכי ברירת המחדל NavType (IntArrayType,‏ LongArrayType,‏ FloatArrayType,‏ BoolArrayType ו-StringArrayType) הם עכשיו מסוג CollectionNavType (Idcf79,‏ b/188693139)
  • NavType מספק עכשיו API חדש ופתוח של valueEquals שקובע אם שני ערכים מאותו סוג שווים זה לזה. (I6cb97, ‏ b/327229511)

תיקוני באגים

  • פרמטרים של שאילתות בקישורי עומק מאפשרים עכשיו ערכים בפורמט של סוגריים מסולסלים סביב שם הארגומנט (כלומר {argName}) כערכים תקינים ל-NavTypes מבוסס מחרוזת. התיקון הזה פותר בעיה שבה ערך כזה נחשב לא חוקי (או כערך חסר) בכל הסוגים. (I18302, ‏ b/327274038)
  • פונקציות NavController שתומכות במסלולים כמו navigate או popBackStack יכולות עכשיו להתאים באופן תקין למסלולים שמולאו בארגומנטים של מערך NavTypes. ‪(Iea805, b/327229511)

גרסה ‎2.8.0-alpha04

‫6 במרץ 2024

androidx.navigation:navigation-*:2.8.0-alpha04 מופץ. גרסה ‎2.8.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר לציין את SizeTranform למעברים ב-Navigation Compose על ידי הגדרתם כחלק מההפעלה של הפונקציות composable או navigation. (I91062, b/296912651)

תיקוני באגים

  • תוקנה בעיה שבה המעבר בין המסכים לא הוצג בצורה תקינה כשמשתמשים באפשרות 'חזרה' של המערכת בלי להשתמש בתנועה.NavHost ‫(Iceeae, ‏ b/325998468)

גרסה ‎2.8.0-alpha03

‫21 בפברואר 2024

androidx.navigation:navigation-*:2.8.0-alpha03 מופץ. גרסה ‎2.8.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הקובץ NavBackStackEntry.savedStateHandle מסומן עכשיו כ-@MainThread כי הוא משתמש בקוד שנדרש בכל מקרה בשרשור הראשי. (Ibb988, b/299523245)

תיקוני באגים

  • תוקנה בעיה ב-Navigation שגרמה לכך ש-NavGraphViewModelsDESTROYED נמחקו מזיכרון המטמון מוקדם מדי כי ViewModel של הרשומה המשויכת לא היה חלק מהמצב השמור. (Ib6bb7, b/317581849)

עדכון תלות

גרסה ‎2.8.0-alpha02

‫7 בפברואר 2024

androidx.navigation:navigation-*:2.8.0-alpha02 מופץ. גרסה ‎2.8.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • ‫Navigation Compose תומך עכשיו בתכונה 'חזרה לאחור באפליקציה עם חיזוי' באמצעות ממשקי ה-API החדשים SeekableTransitionState מ-compose-animation. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית שלכם, לפני שתחליטו אם לאשר את העסקה באמצעות התנועה שהושלמה או לבטל אותה. (I8b8e9)

גרסה ‎2.8.0-alpha01

‫24 בינואר 2024

androidx.navigation:navigation-*:2.8.0-alpha01 מופץ. גרסה ‎2.8.0-alpha01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן דליפת BackStackState שבה כמה קריאות של saveState ביעד מסוים גרמו לשמירה של כמה מצבים, אבל רק הראשון שוחזר. (I598b0, b/309559751)
  • תוקנה בעיה שבה ארגומנטים שהם לא מחרוזות לא הוצגו כמו שצריך כשנעשה שימוש ב-NavigationUI helpers כדי לאכלס את הכותרת של סרגלי האפליקציות. (מספר 636, b/316676794)

עדכון תלות

  • הספרייה Navigation Compose תלויה עכשיו ב-Compose 1.7.0-alpha01, ומתקנת בעיה שיכולה לגרום לאנימציית שינוי גודל לא צפויה. (b/297258205)

External Contribution

  • תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שהם לא מחרוזות, כשמשתמשים ב-helpers של NavigationUI כדי לאכלס את הכותרת של סרגלי האפליקציות.

גרסה 2.7.7

גרסה 2.7.7

‫7 בפברואר 2024

androidx.navigation:navigation-*:2.7.7 מופץ. גרסה 2.7.7 מכילה את השמירות האלה.

תיקוני באגים

  • הועבר מגרסה קודמת של Navigation 2.8.0-alpha01: תוקנה דליפת BackStackState שבה כמה קריאות של saveState() ב-NavBackStackEntry יחיד יובילו לשמירה של כמה מצבים, אבל רק את המצב השמור הראשון יהיה אפשר לשחזר. (I598b0, b/309559751)
  • הועבר מגרסה קודמת מ-Navigation 2.8.0-alpha01: תוקנה בעיה שבה ארגומנטים שהם לא מחרוזות לא הוצגו בצורה תקינה כשמשתמשים ב-NavigationUI helpers כדי לאכלס את הכותרת של סרגלי האפליקציות. (מספר 636, b/316676794)

External Contribution

  • תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שהם לא מחרוזות, כשמשתמשים ב-helpers של NavigationUI כדי לאכלס את הכותרת של סרגלי האפליקציות.

גרסה 2.7.6

גרסה 2.7.6

‫13 בדצמבר 2023

androidx.navigation:navigation-*:2.7.6 מופץ. גרסה 2.7.6 מכילה את השמירות האלה.

תיקוני באגים

  • הפונקציה NavGraph equals() מתייחסת עכשיו בצורה נכונה לצמתים של הגרף השני במקום רק לגרף שקורא לה. כך, גרפים עם צמתים בעלי מזהים שונים לא ייחשבו יותר כשווים (I401cb,‏ b/311414915)

גרסה 2.7.5

גרסה 2.7.5

‫1 בנובמבר 2023

androidx.navigation:navigation-*:2.7.5 מופץ. גרסה 2.7.5 מכילה את השמירות האלה.

שיפורים בביצועים

  • שיפרנו משמעותית את הביצועים (גם מבחינת זמן וגם מבחינת מספר ההקצאות) של השוואה בין שני תרשימים. המשמעות היא שקריאות כמו setGraph שמשוות באופן פנימי את הגרף החדש לגרף הקיים, מהירות הרבה יותר וגורמות לפחות פריימים שנדלגים. תודה ל-Michał Z על הניתוח המעמיק שהוביל לשיפור הזה. (I6ad62)
  • NavHost יציג עכשיו את יעד ההתחלה במעבר ההרכבה הראשון, במקום לחכות למעבר השני כדי לקרוא את המצב המעודכן. ‫(I439a7, ‏ b/304852206)

תיקוני באגים

  • תוקנה בעיה שבה מחסנית החזרה (back stack) הייתה נמחקת אם קראתם ל-setGraph יותר מפעם אחת עם אותו גרף בדיוק, רק אם היה בגרף יעד שהכיל פעולה שמקשרת בין שני יעדים. (Ieaed7)
  • תיבות דו-שיח שנווטו אליהן ונסגרו ברצף מהיר לא יופיעו יותר ברשימת NavController.visibleEntries. (I67586, ‏ b/287969970)
  • כשמבצעים פעולת pop לרשומה ואחריה שינוי בהגדרה, הערך של ViewModel ברשומה יימחק בצורה תקינה אם הערך של saveState הוא false. ‫(Idf242, ‏ b/298164648)
  • תוקנה בעיה שבה הפונקציה NavController יכלה לטפל באותו קישור עמוק יותר מפעם אחת אם המחסנית האחורית הייתה ריקה לחלוטין לפני שינוי בהגדרה או קריאה לפונקציה setGraph רק כשהדגל FLAG_ACTIVITY_NEW_TASK הוגדר ב-Intent הנכנס. (I73c7f)

עדכונים של תלות

  • הניווט באמצעות Fragments תלוי עכשיו ב-Fragment 1.6.2, וכך נפתרה בעיה שבה מופעי ViewModel של מקטעים (fragments) מוטבעים לא נוקו כשבוצעה קריאה ל-clearBackStack.

גרסה 2.7.4

גרסה 2.7.4

‫4 באוקטובר 2023

androidx.navigation:navigation-*:2.7.4 מופץ. גרסה 2.7.4 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו תמיכה ב-popUpTo כדי להשתמש בנתיבים עם ארגומנטים, וכך לאפשר חזרה לרשומה ספציפית שמשתמשת בארגומנטים האלה בדיוק, בהתאם לתמיכה שקיימת ב-popBackStack. (I731f4, b/299255572)

תיקוני באגים

  • תוקנה בעיה שבה הפסקת ניווט באמצעות ניווט אחר עם popUpTo גורמת לקריסה של FragmentNavigator. (I3c848, b/301887045)
  • תוקנה בעיה שבה לחיצה על לחצן החזרה במערכת גרמה לכך שהלחצן currentDestination לא עודכן בצורה נכונה בהתאם ל-Fragment שמוצג. ‫(Id0d6c, ‏ b/289877514)
  • מחזור החיים של DialogFragment יעבור עכשיו למצב RESUMED כשתבטלו את תיבת הדו-שיח שמעליו. (I88f0d, b/301811387)

גרסה 2.7.3

גרסה 2.7.3

‫20 בספטמבר 2023

androidx.navigation:navigation-*:2.7.3 מופץ. גרסה 2.7.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה ב-Navigation with Fragments שגרמה לכך שהרשימה visibleEntries הכילה רשומות שגויות. ‫(I5caa9, ‏ b/288520638)
  • תוקנה בעיה שגרמה לכך שיעד של חלון צף (למשל Dialogs, Bottomsheets וכו') אף פעם לא מקבל קריאה חוזרת (callback) של מחזור החיים RESUMED. (I3b866, b/287505132)

גרסה 2.7.2

גרסה 2.7.2

‫6 בספטמבר 2023

androidx.navigation:navigation-*:2.7.2 מופץ. גרסה 2.7.2 מכילה את השמירות האלה.

תיקוני באגים

  • הניווט תלוי עכשיו ב-Lifecycle 2.6.2, וזה פותר אינטראקציה בין rememberSaveable לבין NavHost של Navigation Compose שגרמה לכך שהמצב rememberSaveable של היעדים וכל המופעים של ViewModel בבעלות SavedStateHandle לא שוחזרו כראוי אחרי שהתהליך הסתיים והתחיל מחדש. (b/298059596, b/289436035)
  • תוקנה בעיה שבה כשמוצגות כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית, תיבות הדו-שיח שמוסתרות חלקית (למשל, לא תיבת הדו-שיח העליונה ביותר) היו במצב מחזור החיים CREATED ולא במצב STARTED. (aosp/2728520, b/289257213)
  • תוקנה בעיה שקרתה כשמוצגות כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית. במקרה כזה, כשסוגרים את תיבת הדו-שיח העליונה, תיבת הדו-שיח העליונה החדשה נתקעת במצב מחזור החיים STARTED במקום לעבור למצב RESUMED כמו שצריך. ‫(aosp/2629401, ‏ b/286371387)
  • הארגומנטים הבטוחים של Navigation לא יוצרים יותר מופע של המשימה באופן מיידי אם היא לא מבוצעת בפועל. (I0e385, b/260322841)

עדכון תלות

  • הספרייה Navigation Compose תלויה עכשיו ב-Compose 1.5.1.

גרסה 2.7.1

גרסה 2.7.1

‫23 באוגוסט 2023

androidx.navigation:navigation-*:2.7.1 מופץ. גרסה 2.7.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנו בעיות בניווט בכלי הכתיבה, שבהן היה אפשר לקבל שגיאה כשניסיתם לגשת אל Lifecycle.State.DESTROYED ViewModel באמצעות Scaffold. (I1dc11, b/268422136)

גרסה 2.7.0

גרסה 2.7.0

‫9 באוגוסט 2023

androidx.navigation:navigation-*:2.7.0 מופץ. גרסה 2.7.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.6.0

אנימציות מ-Accompanist

עכשיו, כש-AnimatedContent יציב, יכולנו להעביר את הקוד מ-Accompanist Navigation Animation בחזרה אל Navigation Compose עצמו.

כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהייתה ב-AnimatedNavHost נתמכת ישירות ב-NavHost.

לא יבוצעו שינויים נוספים ב-Accompanist Navigation Animation, ובקרוב נצא משימוש באופן רשמי, יחד עם הנחיות להעברה חזרה אל Navigation Compose עצמו, אבל זה יהיה ההיפך ממדריך ההעברה ללא צורך בשינויים נוספים ב-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist‏ (0.31.2-alpha). (b/197140101)

תיקוני באגים

  • ‫NavHost ב-Navigation Compose מיירט עכשיו בצורה נכונה קריאות למערכת 'הקודם' גם אחרי שהפעילות הופסקה והופעלה מחדש. (Icb6de, ‏ b/279118447)

עדכונים של תלות

  • הניווט תלוי עכשיו ב-Compose 1.5.0 במקום ב-1.1.0.

גרסה ‎2.7.0-rc01

‫26 ביולי 2023

androidx.navigation:navigation-*:2.7.0-rc01 מופץ. גרסה ‎2.7.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה פונקציות ה-lambda‏ EnterTransition ו-ExitTransition שנוצרו כחלק מ-NavHost עלולות להישאר בזיכרון גם אחרי ש-NavHost מוסר מהקומפוזיציה. (I893d0)

בעיות מוכרות

  • יש בעיה בגרסה 2.6.x של Navigation, שלפיה כשמנווטים באמצעות popUpTo, יכול להיות שתיגרם IllegalArgumentException. יכול להיות שאפשר להימנע מהחריגה הזו על ידי שינוי המבנה של הגרף, בדומה להמלצה שמופיעה כאן. (b/287133013)

גרסה ‎2.7.0-beta02

‫28 ביוני 2023

androidx.navigation:navigation-*:2.7.0-beta02 מופץ. גרסה ‎2.7.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • ל-Navigation Compose יש עכשיו את סדר ה-Z הנכון למעברים מותאמים אישית שמשתמשים בניווט עם האפשרות popUpTo.(/Ib1c3a, b/285153947)

גרסה ‎2.7.0-beta01

‫7 ביוני 2023

androidx.navigation:navigation-*:2.7.0-beta01 מופץ. גרסה ‎2.7.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • NavHost ב-Navigation Compose, המערכת מיירטת עכשיו בצורה נכונה קריאות חזרה של המערכת גם אחרי ש-Activity עבר STOPPED ו-RESUMED. (Icb6de, ‏ b/279118447)

גרסה ‎2.7.0-alpha01

‫24 במאי 2023

androidx.navigation:navigation-*:2.7.0-alpha01 מופץ. גרסה ‎2.7.0-alpha01 מכילה את השמירות האלה.

אנימציות מ-Accompanist

עכשיו, כש-AnimatedContent יציב, יכולנו להעביר את הקוד מ-Accompanist Navigation Animation בחזרה אל Navigation Compose עצמו.

כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהייתה ב-AnimatedNavHost נתמכת ישירות ב-NavHost.

לא יבוצעו שינויים נוספים ב-Accompanist Navigation Animation, ובקרוב נצא משימוש באופן רשמי, יחד עם הנחיות להעברה חזרה אל Navigation Compose עצמו, אבל זה יהיה ההיפך ממדריך ההעברה ללא צורך בשינויים נוספים ב-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist‏ (0.31.2-alpha). (b/197140101)

תיקוני באגים

  • Navigation 2.6.0-rc02: תוקנה בעיה ב-Navigation ב-Fragments שבה ניווט באמצעות popUpTo והסרת fragment מה-back stack בלי ליצור מחדש את התצוגה שלו גרמו להפסקת הפעולה של המערכת. (Ieb8d4, b/281726455)

עדכונים של תלות

  • הניווט תלוי עכשיו בלחצן 'כתיבה' 1.5.0-beta01.

גרסה 2.6.0

גרסה 2.6.0

‫7 ביוני 2023

androidx.navigation:navigation-*:2.6.0 מופץ. גרסה 2.6.0 מכילה את השמירות האלה.

שינויים חשובים בניווט מאז גרסה 2.5.0

  • הערכים של NavBackStackEntry ושל arguments שמועברים אל OnDestinationChangedListener הם עכשיו רק עותק של הארגומנטים הבלתי ניתנים לשינוי שנוצרו כשעברתם אל היעד.arguments המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישות הבאות ל-arguments או למופעים אחרים של OnDestinationChangedListener.
  • NavDeepLink תומך עכשיו בערכי ברירת מחדל למערכים, מה שמאפשר תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט. הפונקציה NavType כוללת עכשיו גם שיטת ברירת מחדל שאפשר לבטל כדי לשלב שני ערכים מנותחים.
  • מחלקות משנה מותאמות אישית של NavType יכולות עכשיו לבטל את serializeAsValue כדי לבצע סריאליזציה של ערך למחרוזת, וכך לאפשר גם סריאליזציה וגם דה-סריאליזציה (באמצעות parseValue) שיהיו כלולות במלואן במחלקה NavType. ‫StringType מחליף עכשיו את ה-method הזה כדי לקרוא ל-Uri.encode ב-String הנתון.

שינויים חשובים ב-Navigation Compose מאז גרסה 2.5.0

  • כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם NavHost, הוא יציג עכשיו את startDestination של NavGraph כברירת מחדל.
  • NavController.popBackStack(route),‏ NavController.getBackStackEntry(route) ו-NavController.clearBackStack(route) תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. שימו לב שהארגומנטים צריכים להיות זהים לארגומנטים של הרשומה.
  • ניסיון ליצור NavDeepLink ריק באמצעות navDeepLink Kotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך לכלול uri, פעולה או mimetype כדי להיות תקין.

שינויים חשובים בניווט באמצעות Fragments מאז גרסה 2.5.0

  • האפליקציה NavHostFragment כבר לא מיירטת את לחצן החזרה של המערכת. כך אפשר למערכת FragmentManager הבסיסית לטפל בחזרה למסך הקודם. כך, Fragment 1.7.0-alpha01 ואילך יכולים לספק אנימציה של חזרה עם חיזוי באפליקציות במכשירי Android U.
  • כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית פעולת FragmentTransaction שמוסיפה Fragment ל-back stack של FragmentManager יגרום עכשיו להפעלת IllegalArgumentException. תמיד צריך להוסיף פרגמנטים באמצעות navigate() API.
  • כשמשתמשים במחרוזת המדויקת ${applicationId} כמציין המיקום במאפיינים app:data ו-app:dataPattern ברכיב הפעילות של קובץ XML של ניווט, מציין המיקום יתמלא באופן אוטומטי ב-packageName של ההקשר בזמן הניפוח.
  • FragmentNavigator עכשיו משתמש ב-APIs של מעברים כשמנווטים ופותחים חלונות קופצים NavBackStackEntries. כלומר, NavBackStackEntry Lifecycle ימתין עכשיו עד שהאפקטים המיוחדים של הכניסה והיציאה של הפריט יסתיימו לפני שיעבור למיקום הסופי שלו Lifecycle.State.
  • DialogFragmentNavigator עכשיו משתמש ב-APIs של מעברים כשמנווטים ופותחים חלונות קופצים NavBackStackEntries. המשמעות היא שהמערכת NavBackStackEntry Lifecycle תחכה עכשיו עד שDialogFragment Lifecycle יעבור לDESTROYED לפני שהיא עצמה תעבור לDESTROYED.
  • ב-NavHostFragment אפשר עכשיו לאחזר את NavController ברגע ש-NavHostFragment מצורף ל-FragmentManager, ולא רק אחרי onCreate().
  • התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספרייה המפורטת של Play Feature Delivery.
  • התלות של Navigation Safe Args היא עכשיו בגרסה 7.3.0 של Android Gradle Plugin. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ואילך.

שינויים חשובים ב-NavigationUI מאז גרסה 2.5.0

  • כשמעבירים את המזהה של תרשים ניווט אל AppBarConfiguration (למשל באמצעות Menu), NavigationUI מתייחסת עכשיו רק ליעד ההתחלה של תרשים הניווט הזה כיעד ברמה העליונה, במקום לסמן באופן שגוי כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא משתנה. אותה פונקציונליות זמינה בקוד שלכם באמצעות הפונקציה החדשה isTopLevelDestination ב-AppBarConfiguration.
  • השילובים של setupWithNavController ב-NavigationUI לעבודה עם סרגל האפליקציות העליון ינתחו עכשיו ערכי R.string של ארגומנטים מסוג ReferenceType שנמצאים ב-android:label לערכי המחרוזת שלהם, במקום להפיק את מספר השלם של המשאב שנוצר אוטומטית.
  • NavigationUI מספק עכשיו יומנים כשהוא לא מצליח לנווט דרך MenuItem שנבחר.

גרסה ‎2.6.0-rc02

‫24 במאי 2023

androidx.navigation:navigation-*:2.6.0-rc02 מופץ. גרסה ‎2.6.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה בניווט ב-Fragments שבה ניווט באמצעות popUpTo והוצאת Fragment מה-back stack בלי ליצור מחדש את התצוגה שלו גרמו להפסקת הפעולה של המערכת. (Ieb8d4, ‏ b/281726455)

גרסה ‎2.6.0-rc01

‫10 במאי 2023

androidx.navigation:navigation-*:2.6.0-rc01 מופץ. גרסה ‎2.6.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה בניווט עם מקטעים שבה הסרת מקטע באמצעות navigate עם popUpTo בקריאת החזרה של מחזור החיים onResume() שלו גרמה ל-IllegalStateException. (I21884, ‏ b/279644470)

גרסה ‎2.6.0-beta01

‫19 באפריל 2023

androidx.navigation:navigation-*:2.6.0-beta01 מופץ. גרסה ‎2.6.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • NavBackStackEntry מספקת עכשיו הטמעה מותאמת אישית של toString. (Iff00b)

תיקוני באגים

  • כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית פעולת FragmentTransaction שמוסיפה Fragment ל-back stack של FragmentManager יגרום עכשיו להפעלת IllegalArgumentException. תמיד צריך להוסיף פרגמנטים באמצעות navigate() API. (I6d38e)
  • אם יש navigate שמוסיף רשומה וpopBackStack שמסיר אותה באותו פריים, הרשומה העליונה שמתקבלת בסטאק הקודם תחזור עכשיו באופן עקבי אל RESUMED Lifecycle.State. (Id8067, ‏ b/276495952)

גרסה ‎2.6.0-alpha09

‫5 באפריל 2023

androidx.navigation:navigation-*:2.6.0-alpha09 מופץ. גרסה ‎2.6.0-alpha09 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנו בדיקות של מסלול לא תקין, כך שאם NavDestination מכיל NavArgument שלא יכול להיות null, המסלול של היעד הזה חייב להכיל placeholders לארגומנטים ששמם זהה ל-NavArgument שלא יכול להיות null. (Ic62bf, ‏ b/274697949)
  • ניווטים לקישורים עמוקים שמבוססים על Action/MimeType ייכשלו מעכשיו אם בפעולת הניווט חסר NavArgument שאי אפשר להגדיר כ-null, שנדרש על ידי NavDestination שאליו Action/MimeType תואם. ‫(Ibfa17, ‏ b/271777424)
  • כש-NavController מגדיר גרף עם אותו מסלול ויעדים כמו הגרף הקודם, הוא מחליף עכשיו כמו שצריך את הצמתים הנוכחיים בגרף ואת היעדים במחסנית האחורית במופעים חדשים. תוקן קריסה שהתרחשה כשמשתמשים ב-onLaunchSingleTop בלי לשמור את המצב ב-Navigation Compose. בנוסף, תוקנה שגיאה שבה ניווט ליעדים שמשויכים לגרף הבסיסי יוצר מחסנית חזרה שגויה. (I5bc58, ‏ b/275258161, ‏ b/275407804)

גרסה ‎2.6.0-alpha08

‫22 במרץ 2023

androidx.navigation:navigation-*:2.6.0-alpha08 מופץ. גרסה ‎2.6.0-alpha08 מכילה את השמירות האלה.

תכונות חדשות

  • ב-NavHostFragment אפשר עכשיו לאחזר את NavController ברגע ש-NavHostFragment מצורף ל-FragmentManager, ולא רק אחרי onCreate(). ‫(Ic6382, ‏ b/220186282)

תיקוני באגים

  • תוקנה בעיה NullPointerException כשפותחים גרף מקונן שכולל ארגומנט שלא יכול להיות null. ‫(6b3581, ‏ b/249988437)
  • כשמשתמשים בלחצן 'הקודם' של המערכת אחרי ניווט באמצעות popUpTo, המצב של NavController יקפוץ אל הרשומה הנכונה. ‫(I3a8ec, ‏ b/270447657)
  • FragmentNavigator יציג עכשיו כניסות בצורה תקינה כשמבצעים פעולת pop במחסנית האחורית באמצעות המערכת או popBackStack(), וגם אם העסקה משתמשת באפקטים בשביל הפריט. (I81bdf)
  • הוספת פרגמנטים ל-FragmentNavigator's FragmentManager בלי להשתמש בניווט לא תגרום יותר לקריסה. ‫(b17204, ‏ b/274167493)

עדכונים של תלות

גרסה ‎2.6.0-alpha07

‫8 במרץ 2023

androidx.navigation:navigation-*:2.6.0-alpha07 מופץ. גרסה ‎2.6.0-alpha07 מכילה את השמירות האלה.

תיקוני באגים

  • הגרסאות של ממשקי ה-API‏ getBackStackEntry, popBackStack ו-clearBackStack שמקבלות מסלולים מקבלות עכשיו תבניות של מסלולים עם ארגומנטים שניתן להגדיר כ-nullable ופרמטרים של שאילתות שניתן להגדיר כ-nullable (I22294,‏ b/269302500)
  • נפתרה בעיה שבה קריאה ל-clearBackStack() מ-NavController לא ניקתה את המצב השמור במנהל הרכיבים שמשויך למחסנית החזרה שנוקתה. (Ic1cce, b/271190202)
  • תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה להדגשה של MenuItem שגוי ב-BottomNavigationView כשמשתמשים בחזרה למערכת בין כרטיסיות. (I634f6, b/270447657)
  • תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה לכך שאי אפשר היה להעביר את NavBackStackEntry למצב RESUMED כשמשתמשים ב-Animation. ‫(Ib3589, ‏ b/269646882)

גרסה ‎2.6.0-alpha06

‫22 בפברואר 2023

androidx.navigation:navigation-*:2.6.0-alpha06 מופץ. גרסה ‎2.6.0-alpha06 מכילה את השמירות האלה.

תכונות חדשות

  • כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם NavHost, הוא יציג עכשיו את startDestination של NavGraph כברירת מחדל. (I2b89f)

שינויים ב-API

  • כל העומסים העודפים של NavController navigate מסומנים עכשיו ב-@MainThread כדי להבטיח שהם יופעלו בשרשור הראשי. (I2c0b0, ‏ b/263427111)

תיקוני באגים

  • תוקנה קריסה שמתרחשת כשמנסים לנווט בזמן השימוש בניווט דינמי של מקטעים. (I3ee29, b/268360479)
  • תוקן באג שבו ניווט לקטע אחר באמצעות לחצן החזרה של המערכת לא מעדכן את הסרגל התחתון לפריט הנבחר הנכון (If559f, ‏ b/269044426)

בעיות מוכרות

  • כשמשתמשים ב-Navigation עם Fragments, מחזור החיים של NavBackStackEntryRESUMED לא מגיע אל Animation APIs. (b/269646882)
  • כשמשתמשים ב-Navigation עם Fragments ומנווטים באמצעות BottomNavigation, אם מנסים לשחזר את היסטוריית החזרה עם כמה רשומות, ה-BottomMenuItem לא מתעדכן בצורה נכונה. (b/270447657)
  • כשמשתמשים ב-Navigation עם Fragments, אחרי שמשחזרים את המצב, הפונקציה NavBackStackEntry Lifecycle לא מקבלת את הערך DESTROYED כשה-fragment שלה הוא DESTROYED . (b/270610768)

גרסה ‎2.6.0-alpha05

‫8 בפברואר 2023

androidx.navigation:navigation-*:2.6.0-alpha05 מופץ. גרסה ‎2.6.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • NavController.popBackStack(route),‏ NavController.getBackStackEntry(route) ו-NavController.clearBackStack(route) תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. שימו לב שהארגומנטים צריכים להיות זהים לארגומנטים של הרשומה. (Iebd28, ‏ Ic678c, ‏ I3b37b, ‏ b/257514373)
  • FragmentNavigator עכשיו משתמש ב-APIs של מעברים כשמנווטים ופותחים חלונות קופצים NavBackStackEntries. כלומר, NavBackStackEntry Lifecycle ימתין עכשיו עד שהאפקטים המיוחדים של הכניסה והיציאה של הפריט יסתיימו לפני שיעבור למיקום הסופי שלו Lifecycle.State. (I3cb19, ‏ b/238686802)
  • DialogFragmentNavigator עכשיו משתמש ב-APIs של מעברים כשמנווטים ופותחים חלונות קופצים NavBackStackEntries. המשמעות היא שהקמפיין NavBackStackEntry Lifecycle ימתין עכשיו עד שהקמפיין DialogFragment Lifecycle יעבור למצב DESTROYED לפני שהוא עצמו יעבור למצב DESTROYED. ‫(I53ee5, ‏ b/261213893)

שינויים ב-API

  • NavigatorState מספקת עכשיו את prepareForTransition API כדי לאפשר ל-Navigator להעביר NavBackStackEntries ל-Lifecycle.State ביניים. (I42c21, b/238686802)
  • עכשיו אפשר לגשת למצבור הפעולות הקודמות שמשויך לנכס NavGraphNavigator או לנכס ComposeNavigator דרך נכס backstack. ‫ComposeNavigator גם חושף עכשיו את הקריאה החוזרת onTransitionComplete() כדי לסמן NavBackStackEntry שהפעיל ניווט או פעולת popBackStack כהשלמה. (I02062, ‏ I718db, ‏ b/257519195)

תיקוני באגים

  • מצב Navigator לא יבצע פעולה אם משתמשים ב-API‏ push/popWithTransition והערך כבר מטופל. (Iadbfa, ‏ b/261213893)
  • כשמשתמשים ב-launchSingleTop עם NavGraph מקונן, כל היעדים שמתחילים מהיעד המקורי ועד startDestination שלו יתווספו רק לחלק העליון של היסטוריית החזרה. (Id4bea, b/253256629)
  • הניווט יחליף עכשיו את המופע DialogFragment בצורה תקינה כשמנווטים לאותו יעד עם הדגל launchSingleTop שהוגדר כ-true. (I45b5a, ‏ b/149572817)
  • השימוש ב-SafeArgs של Navigation לא יגרום יותר לשגיאת קומפילציה כשמשתמשים בארגומנטים באורך של 19 תווים בדיוק. (Id60bc, ‏ b/257110095)

גרסה ‎2.6.0-alpha04

9 בנובמבר 2022

androidx.navigation:navigation-*:2.6.0-alpha04 מופץ. גרסה ‎2.6.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • מחלקות משנה מותאמות אישית של NavType יכולות עכשיו לבטל את serializeAsValue כדי לבצע סריאליזציה של ערך למחרוזת, וכך לאפשר גם סריאליזציה וגם דה-סריאליזציה (באמצעות parseValue) שיהיו כלולות במלואן במחלקה NavType. ‫StringType מחליף עכשיו את ה-method הזה כדי לקרוא ל-Uri.encode ב-String הנתון. ‫(Ie5213, ‏ b/247637434)
  • NavigationUI מספק עכשיו יומנים כשהוא לא מצליח לנווט דרך MenuItem שנבחר. ‫(I2af5a, ‏ b/247730357)

תיקוני באגים

  • קישורי עומק לניווט עוברים עכשיו ניתוח עצלני במקום ניתוח במהלך אתחול הגרף, מה שיכול לשפר את ביצועי האפליקציה בהפעלה. (Iab0ab)
  • תוקנה קריסה שנגרמה מניווט למעלה אחרי קישור עומק ליעד עם ארגומנטים של ברירת מחדל מסוג null. (I51c24, b/243183636)

עדכון תלות

  • התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספרייה המפורטת של Play Feature Delivery. (Ib4ddc)
  • התלות של Navigation Safe Args היא עכשיו בגרסה 7.3.0 של Android Gradle Plugin. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ומעלה. (I47e49)

גרסה ‎2.6.0-alpha03

24 באוקטובר 2022

androidx.navigation:navigation-*:2.6.0-alpha03 מופץ. גרסה ‎2.6.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך ניווט 2.5.3: NavHost לא יגרום יותר לNoSuchElementException כשאין יעד זמין ליצירת Crossfade. הוא פשוט ידלג על הקומפוזיציה. (Ieb46e, ‏ b/253299416)
  • מתוך ניווט 2.5.3: תוקנה בעיה שבה מצב הטיוטה השמורה (למשל, שימושים ב-rememberSaveable) לא נשכח ולא הוסר כשחלון היעד נסגר. (I64949)

עדכונים של תלות

גרסה ‎2.6.0-alpha02

‫5 באוקטובר 2022

androidx.navigation:navigation-*:2.6.0-alpha02 מופץ. גרסה ‎2.6.0-alpha02 מכילה את השמירות האלה.

שינויים בהתנהגות

  • כשמעבירים את המזהה של תרשים ניווט אל AppBarConfiguration (למשל באמצעות Menu), NavigationUI מתייחסת עכשיו רק ליעד ההתחלה של תרשים הניווט הזה כיעד ברמה העליונה, במקום לסמן באופן שגוי כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא משתנה. אותה פונקציונליות זמינה בקוד שלכם באמצעות הפונקציה החדשה isTopLevelDestination ב-AppBarConfiguration. ‫(Ie936e, ‏ b/238496771)

תיקוני באגים

  • הרכיב navigation:navigation-fragment תלוי עכשיו בגרסה 1.5.2 של Fragment. (I00ba4)
  • פריט התפריט שנבחר לא יעודכן יותר כשעוברים ליעד FloatingWindow כמו תיבת דו-שיח. ‫(I4cde8, b/240308330)

גרסה ‎2.6.0-alpha01

‫7 בספטמבר 2022

androidx.navigation:navigation-*:2.6.0-alpha01 מופץ. גרסה ‎2.6.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • השילובים של setupWithNavController ב-NavigationUI לעבודה עם סרגל האפליקציות העליון ינתחו עכשיו ערכי R.string של ארגומנטים מסוג ReferenceType שנמצאים ב-android:label לערכי המחרוזת שלהם, במקום להפיק את מספר השלם של המשאב שנוצר אוטומטית. (I5f803, b/167959935)
  • NavDeepLink תומך עכשיו בערכי ברירת מחדל למערכים, מה שמאפשר תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט. הפונקציה NavType כוללת עכשיו גם שיטת ברירת מחדל שאפשר לבטל כדי לשלב שני ערכים מנותחים. (Id68c3, ‏ b/209977108)
  • כשמשתמשים במחרוזת המדויקת ${applicationId} כמציין המיקום במאפיינים app:data ו-app:dataPattern ברכיב הפעילות של קובץ XML של ניווט, מציין המיקום יתמלא באופן אוטומטי ב-packageName של ההקשר בזמן הניפוח. (Iaabde, ‏ b/234223561)
  • ניסיון ליצור NavDeepLink ריק באמצעות navDeepLink Kotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך לכלול uri, פעולה או mimetype כדי להיות תקין. (I08d2f, b/154038883)

שינויים ב-API

  • נוספה פונקציית תוסף חדשה, NavDestination, לניתוח תוויות דינמיות עם ארגומנטים בצורה android:label="{arg}" למחרוזת. תומכת בארגומנטים מסוג ReferenceType על ידי ניתוח של ערכים מסוג R.string לערכי המחרוזת שלהם. (I07d89, b/236269380)

שינויים בהתנהגות

  • הערכים arguments של NavBackStackEntry והערך arguments שמועבר אל OnDestinationChangedListener הם עכשיו רק עותק של הארגומנטים הבלתי ניתנים לשינוי שנוצרו כשעברתם ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישות הבאות ל-arguments או למופעים אחרים של OnDestinationChangedListener. (I676f5)

תיקוני באגים

  • מתוך ניווט 2.5.2: ניווט דינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. ‫(Ia2c16, ‏ b/240292838)
  • מ-Navigation 2.5.2: מעכשיו, הניווט יחליף את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו יעד ומגדירים את הדגל launchSingleTop כ-true. (I5a2f1, b/237374580)
  • מתוך ניווט 2.5.2: תוקן באג IllegalStateException שנגרם מניווט לתרשים עם קינון כפול שמשותף עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)

גרסה 2.5

גרסה 2.5.3

24 באוקטובר 2022

androidx.navigation:navigation-*:2.5.3 מופץ. גרסה 2.5.3 מכילה את השמירות האלה.

תיקוני באגים

  • NavHost לא יגרום יותר לNoSuchElementException כשאין יעד זמין לחיבור של Crossfade. הוא פשוט ידלג על הקומפוזיציה. (Ieb46e, ‏ b/253299416)
  • תוקנה בעיה שבה מצב הטיוטה השמור (למשל, שימושים ב-rememberSaveable) לא נשכח ולא הוסר כשיעד הוצא מהמחסנית האחורית. (I64949)

גרסה 2.5.2

‫7 בספטמבר 2022

androidx.navigation:navigation-*:2.5.2 מופץ. גרסה 2.5.2 מכילה את השמירות האלה.

תיקוני באגים

  • הניווט הדינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. ‫(Ia2c16, ‏ b/240292838)
  • הניווט יחליף עכשיו את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו יעד ומגדירים את הדגל launchSingleTop כ-true. (I5a2f1, b/237374580)
  • תוקן באג IllegalStateException שנגרם מניווט לגרף עם קינון כפול שחולק הורה עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)

עדכון תלות

גרסה 2.5.1

‫27 ביולי 2022

androidx.navigation:navigation-*:2.5.1 מופץ. גרסה 2.5.1 מכילה את השמירות האלה.

תיקוני באגים

  • Navigation Safe Args לא יציג יותר אזהרות לגבי הוצאה משימוש בכיתות שנוצרו כשמשתמשים בסוגים של ארגומנטים בהתאמה אישית שנשמרים ב-Bundle. (Id86ed, ‏ b/237725966)

עדכונים של תלות

גרסה 2.5.0

29 ביוני 2022

androidx.navigation:navigation-*:2.5.0 מופץ. גרסה 2.5.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.4.0

  • CreationExtras Integration – ל-Navigation יש עכשיו אפשרות לספק ViewModelProvider.Factory ללא מצב דרך CreationExtras של Lifecycle 2.5.0.

Navigation SafeArgs

  • Navigation Safe Args שדרג את התלות Android Gradle Plugin כדי להסתמך על 7.0.4, וכך ביטל את התאימות לגרסאות AGP שקדמו ל-7.0.
  • נוספה תמיכה במאפיין build.gradle של מרחב השמות, שאפשר להשתמש בו במקום במאפיין applicationId.

שינויים אחרים

  • ממשק ה-API‏ visibleEntries כבר לא ניסיוני, והוא מספק פונקציה לאחזור כל הרשומות שהיעד שלהן גלוי כרגע בהתאם ל-NavController.

גרסה ‎2.5.0-rc02

‫15 ביוני 2022

androidx.navigation:navigation-*:2.5.0-rc02 מופץ. גרסה ‎2.5.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן קריסה שנגרמה כתוצאה ממעבר מהיר בין יעדים בתחתית המסך כשמשתמשים ב-Navigation Compose NavHost. ‫(I3979a, ‏ b/234054916)
  • Navigation SafeArgs לא יקרוס יותר כשמשתמשים ב-applicationIdSuffix ובמרחב שמות ללא applicationId, או כש-applicationId ומרחב השמות שונים. (I754b1, ‏ b/233119646)
  • ל-NavArgument יש עכשיו פונקציית toString() מותאמת אישית להצגת הערכים הפנימיים של הארגומנט. (I900a8)

גרסה ‎2.5.0-rc01

‫11 במאי 2022

androidx.navigation:navigation-*:2.5.0-rc01 מופץ. גרסה ‎2.5.0-rc01 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף כלל חדש של Lint כדי להזהיר מפני הצבת רכיבי <deeplink> בתוך רכיבי <activity> בקובץ navigation.xml.(Ic15a5, ‏ b/178403185)

תיקוני באגים

  • היקפים שניתן להרכיב ב-NavHost וב-DialogHost מושמדים עכשיו בסדר הצפוי, כלומר, רכיבים פנימיים מושמדים לפני רכיבים חיצוניים. (I157e6)
  • הפונקציה Navigation SafeArgs משתמשת עכשיו ב-PathSensitivity.RELATIVE ב-ArgumentsGenerationTask כדי לאפשר העברה של המטמון. המשמעות היא שעכשיו אפשר לעשות שימוש חוזר בערך במטמון מ-CI build ל-local build. (I5f67c, ‏ b/173420454)
  • כלל ה-lint‏ UnrememberedGetBackStackEntryDetector עודכן כדי לוודא שהקריאה ל-remember שמקיפה את הקריאה ל-getBackStackEntry() מעבירה גם אובייקט NavBackStackEntry כמפתח.(Ib7081, b/227382831)

גרסה ‎2.5.0-beta01

‫20 באפריל 2022

androidx.navigation:navigation-*:2.5.0-beta01 מופץ. גרסה ‎2.5.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • DialogNavigator משתמש עכשיו ב-popWithTransition כשמבצעים שיחה ב-dismiss(). התיקון הזה פותר מצב של תחרות (race condition) כשמשתמשים ב-ViewModel ביעד dialog, שגורם ל-IllegalStateException כשסוגרים את תיבת הדו-שיח באמצעות לחצן החזרה של המערכת או הקשה מחוץ לתיבת הדו-שיח כדי לצאת. (Id7376, ‏ b/226552301)

עדכונים של תלות

  • הניווט תלוי עכשיו ב-Lifecycle 2.5.0-beta01, ומתקן IllegalStateException כשמטמיעים NavHost בתוך NavHost אחר בכרטיסיית ניווט תחתונה לא ראשית כשמשתמשים בכמה מחסניות חזרה.

גרסה ‎2.5.0-alpha04

‫6 באפריל 2022

androidx.navigation:navigation-*:2.5.0-alpha04 מופץ. גרסה ‎2.5.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • התכונה visibleEntries כבר לא ניסיונית. (I4829f, ‏ b/225394514)

תיקוני באגים

  • הקומפוננטה NavHost תלויה עכשיו ב-visibleEntries מ-NavController כדי לקבוע אילו רשומות להוסיף לקומפוזיציה. כלומר, כשמשתמשים ב-NavHost מוטמע, האנימציה של NavHost הפנימי תפעל עכשיו כמו שצריך. ‫(I4ba2b, ‏ b/225394514)
  • הערך visibleEntries StateFlow שמופיע ב-NavController מבוסס עכשיו על מצב מחזור החיים המקסימלי של הרשומה במקום על מצב מחזור החיים הנוכחי. המשמעות היא שגם אם מחזור החיים של המארח navController ירד מתחת ל-STARTED, רשימת הרשומות הגלויות תישאר ללא שינוי. (I9e2a8, b/225394514)
  • מעכשיו אפשר להשתמש ב-SavedStateViewFactory עם CreationExtras גם אם הוא אותחל באמצעות SavedStateRegistryOwner. אם מספקים תוספים, המערכת מתעלמת מהארגומנטים שמוגדרים בהפעלה. ‫(I6c43b, b/224844583)
  • NavDeepLink יכול עכשיו לנתח כתובות URI עם פרמטר שאילתה יחיד ללא ערך. (I0efe8, b/148905489)
  • מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, ‏ b/217399862)
  • האפליקציה Navigation Safe Args לא תקרוס יותר כשמשתמשים במרחבי שמות ולא קיים AndroidManifest.xml. (I17ccf, ‏ b/227229815)

גרסה ‎2.5.0-alpha03

23 בפברואר 2022

androidx.navigation:navigation-*:2.5.0-alpha03 מופץ. גרסה ‎2.5.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • עכשיו אפשר להעביר את CreationExtras אל by navGraphViewModels כדי ליצור ViewModel. (I29217, b/217618359)

תיקוני באגים

  • NavDeepLinks תומך עכשיו בצורה תקינה בתווי שורה חדשה מקודדים שמוטמעים בנתיבים או בכתובות URI של קישורי עומק. (I513d1, b/217815060)
  • מעכשיו, CreationExtras יפעל בצורה תקינה כשמשתמשים בו עם NavBackStackEntries כדי ליצור ViewModels. ‫(I69161, ‏ b/217617710)
  • הספרייה Navigation Safe Args תומכת עכשיו בשימוש במרחב השמות שמוגדר ב-build.gradle במקום בחבילה ב-AndroidManifest. ‫(I659ef, ‏ b/217414933)

גרסה ‎2.5.0-alpha02

‫9 בפברואר 2022

androidx.navigation:navigation-*:2.5.0-alpha02 מופץ. גרסה ‎2.5.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך Navigation 2.4.1: ה-NavHostFragment יגדיר עכשיו את OnBackPressedDispatcher בצורה תקינה כשמשתמשים ב-viewbinding עם גרפים מקוננים. (Ifbb51, ‏ b/214577959)
  • מתוך ניווט 2.4.1: כשמשתמשים בקישור עמוק דרך כמה NavGraphs מוטמעים, עכשיו מחסנית החזרה כוללת כמו שצריך את יעדי ההתחלה הביניים. ‪(I504c0, b/214383060)

גרסה ‎2.5.0-alpha01

‫26 בינואר 2022

androidx.navigation:navigation-*:2.5.0-alpha01 מופץ. גרסה ‎2.5.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

תיקוני באגים

  • תוקנה בעיה שבה גישה ל-ViewModel שנוצר באמצעות by navGraphViewModels() מ-onCreate() של Fragment נכשלה עם IllegalStateException. (I8a14d)
  • NavDeepLinks כבר לא יפענח את הארגומנטים פעמיים ללא צורך, כלומר הארגומנטים הנכונים מועברים עכשיו ליעד הסופי. ‫(I31b0a, ‏ b/210711399)

Safe Args

  • הפלאגין Safe Args תלוי עכשיו בגרסה 7.0.4 של Android Gradle Plugin. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות Android Studio שקודמות לגרסה 7.0, אבל עכשיו הוא תואם ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)

גרסה 2.4.2

גרסה 2.4.2

‫6 באפריל 2022

androidx.navigation:navigation-*:2.4.2 מופץ. גרסה 2.4.2 מכילה את השמירות האלה.

תיקוני באגים

  • הוספנו תמיכה ב-NavDeepLinks בקידוד של תווי שורה חדשה שמוטמעים בנתיבים או במזהי URI של קישורי עומק. השינוי הזה הועבר מ-Navigation 2.5.0-alpha03. (I513d1, b/217815060)
  • הועבר מגרסה קודמת של Navigation 2.5.0-alpha03: מעכשיו, Navigation SafeArgs תומך בשימוש במרחב השמות שמוגדר ב-build.gradle במקום בחבילה ב-AndroidManifest. ‫(I659ef, ‏ b/217414933)
  • בוצע backport מ-Navigation 2.5.0-alpha04: Navigation Safe Args לא יקרוס יותר כשמשתמשים במרחבי שמות ולא קיים AndroidManifest.xml. (I17ccf, ‏ b/227229815)
  • הועבר מגרסה קודמת של Navigation 2.5.0-alpha04: מחרוזת ריקה נחשבת עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, ‏ b/217399862)

גרסה 2.4.1

גרסה 2.4.1

‫9 בפברואר 2022

androidx.navigation:navigation-*:2.4.1 מופץ. גרסה 2.4.1 מכילה את השמירות האלה.

תיקוני באגים

  • הקומפיילר NavHostFragment יגדיר עכשיו את OnBackPressedDispatcher בצורה נכונה כשמשתמשים ב-viewbinding עם תרשימים מקוננים. (Ifbb51, ‏ b/214577959)
  • כשמשתמשים בקישורי עומק דרך כמה רכיבי NavGraph מוטמעים, עכשיו מחסנית החזרה כוללת כמו שצריך את יעדי ההתחלה הביניים. ‪(I504c0, b/214383060)
  • הועבר מגרסה קודמת מ-Navigation 2.5.0-alpha01: תוקנה בעיה שבה גישה ל-ViewModel שנוצר באמצעות by navGraphViewModels() מ-onCreate() של Fragment נכשלה עם IllegalStateException. (I8a14d)
  • הועבר מגרסה קודמת של Navigation 2.5.0-alpha01: NavDeepLinks לא מפענח יותר ארגומנטים פעמיים ללא צורך, כלומר הארגומנטים המפוענחים כראוי מועברים עכשיו ליעד הסופי. ‫(I31b0a, ‏ b/210711399)
  • הועבר מגרסה קודמת של Navigation 2.5.0-alpha01: Safe Args תלוי עכשיו בגרסה 7.0.4 של Android Gradle Plugin. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות Android Studio שקודמות לגרסה 7.0, אבל עכשיו הוא תואם ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)

גרסה 2.4.0

גרסה 2.4.0

‫26 בינואר 2022

androidx.navigation:navigation-*:2.4.0 מופץ. גרסה 2.4.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.3.0

  • כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר ערך null למחלקות באמצעות גנריקה (כמו מחלקות משנה של NavType). כל פונקציות ההרחבה של Kotlin שהיו חלק מפריטי ה--ktx הועברו לפריטי ה-Artifacts הראשיים שלהן. פריטי ה--ktx ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין.
  • ארטיפקט navigation-fragment מכיל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעות AbstractListDetailFragment החדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayout כדי לנהל חלונית רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית פרטים, שנעשה בה שימוש ב-NavHostFragment כהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה.
  • השיטה currentBackStackEntryAsFlow() ב-NavController מספקת Flow שמופעל בכל פעם ש-NavBackStackEntry הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני של OnDestinationChangedListener.
  • החל מגרסה 2.5.0, NavController מאפשר לאחזר רשימה של כל המופעים הגלויים של NavBackStackEntry בתור StateFlow באמצעות המאפיין הניסיוני visibleEntries.
  • עכשיו אפשר להרחיב את המחלקה NavType כדי ליצור NavTypes מותאמים אישית. אפשר להשתמש בסוגים מותאמים אישית רק כשיוצרים את גרף הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL.
  • ‫Navigation כולל עכשיו ממשקי API‏ findStartDestination() ו-getHierarchy() שאפשר להשתמש בהם כדי להטמיע NavigationUI בהתאמה אישית. ‫findStartDestination() היא פונקציית הרחבה של NavGraph שתאתר את יעד ההתחלה בפועל שיוצג כשמנווטים לגרף, גם אם startDestination היא בעצמה NavGraph מקוננת. ‫getHierarchy() היא פונקציה ב-NavDestination שאפשר להשתמש בה כדי לוודא שיעד נתון נמצא בהיררכיה של יעד אחר.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI methods שהשתמשו ב-BottomNavigationView עודכנו כך שהם משתמשים במקום זאת במחלקת העל שהוצגה ב-Material 1.4.0, ‏ NavigationBarView. כך אפשר להשתמש ב-methods האלה עם NavigationRailView.

  • כשמנפחים רכיב <action> באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנמשכים מהעיצוב באמצעות התחביר app:enterAnim="?attr/transitionEnter".

  • הספרייה Safe Args יוצרת עכשיו שיטה fromSavedStateHandle() לכל מחלקה NavArgs. (מס' 122, b/136967621)

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

מסלולי ניווט ו-Kotlin DSL

בגרסאות קודמות של Navigation, לכל יעד היה מזהה מספר שלם קבוע שזיהה אותו באופן ייחודי מבין היעדים האחים שלו, ואפשר navigate() ליעד הזה ישירות או באמצעות פעולה. השיטה הזו עדיין תקפה ושימושית, במיוחד במקרים שבהם מגדירים את גרף הניווט ב-XML ואפשר להשתמש בקבועי R.id שנוצרו אוטומטית או ב-Safe Args (שמשתמש בקבועים האלה כדי ליצור קוד בזמן הבנייה). עם זאת, המערכת הזו של מספרים שלמים ייחודיים לא הצליחה לתעד את המשמעות הסמנטית ואת היכולת הבעה שנדרשות כדי לתמוך בגרפים דינמיים לחלוטין שנבנים באופן פרוגרמטי בזמן הריצה באמצעות Navigation Kotlin DSL.

בגרסה הזו מוצגת אפשרות חדשה לזיהוי ייחודי של יעד בתרשים ניווט לפי המסלול שלו. מסלול הוא String שמגדיר את הנתיב הייחודי ליעד. כל השיטות של Kotlin DSL שקיבלו מזהה יעד הוצאו משימוש והוחלפו ב-API מקביל שמקבל נתיב.

כל מסלול צריך להיחשב כחלק 'הנתיב' של Uri שמגדיר את היעד הזה, למשל: ‫home, profile/{userId}, profile/{userId}/friends וכו'. כשזהות היעד משויכת לחלק ספציפי בתוכן, הארגומנטים הדינמיים האלה צריכים להיות חלק מהנתיב, בהתאם לאותם כללים של קישורים עמוקים משתמעים.

לכל ממשקי NavController API שבעבר קיבלו רק מזהה, יש עכשיו עומס יתר שמקבל מסלול String. הם כוללים את navigate(),‏ popBackStack(),‏ popUpTo() ו-getBackStackEntry().

היו לכך השלכות על ה-API:

  • המאפיין popUpTo Kotlin ב-Kotlin DSL יצא משימוש, ועכשיו משתמשים במקומו במאפיין popUpToId.
  • הוצאנו משימוש את ממשק ה-API ‏getStartDestination(), ועכשיו אנחנו ממליצים להשתמש ב-getStartDestinationId().

בניגוד לניווט לפי מזהה, ניווט לפי נתיב פועל לפי אותם כללים כמו קישורי עומק מרומזים, כך שאפשר לנווט ישירות לכל יעד בכל גרף מקונן, ולוודא שאפשר להשתמש בנתיבים האלה בפרויקטים מרובי מודולים בלי להוסיף באופן מפורש קישור עומק גלוי חיצוני לכל יעד.

Navigation Compose

ארטיפקט navigation-compose מספק שילוב בין רכיב הניווט לבין Jetpack Compose. היא משתמשת בפונקציות @Composable כיעדים באפליקציה.

בגרסה הזו:

  • רכיב NavHost שאפשר להרכיב ממנו גרף ניווט באמצעות Kotlin DSL, עם יעדי composable ו-dialog, ותמיכה ברכיבי Navigators אופציונליים, כמו אלה מ-Accompanist Navigation Material.
  • חובה לתמוך בהחלפה הדרגתית בין יעדים. אפשר להשתמש ב-Accompanist Navigation Animation כדי לשלוט במעברי הכניסה והיציאה באמצעות ממשקי Compose API ניסיוניים.
  • הגדרת היקף של Lifecycle לכל יעד שאפשר להרכיב. כל יעד מגיע למצב RESUMED רק כשכל המעברים הנכנסים מסתיימים, ויורד מיד למצב STARTED כשכל המעברים היוצאים מתחילים. כך אפשר להימנע מכל הבעיות שקשורות ל-IllegalStateException ולמגע מרובה, כי קריאה ל-navigate מופעלת רק כש-Lifecycle הוא RESUMED.
  • הגדרת ההיקף של ViewModel (באמצעות API‏ viewModel() של Lifecycle ViewModel Compose‏ 2.4.0 או hiltViewModel() של Hilt Navigation Compose‏ 1.0.0 ברמת היעד, כדי לספק היקף ששומר על הנתונים גם אחרי שינויים בהגדרות וגם כשהמסך נמצא בערימת החזרה (כשתוכן ה-Composable מושמד בדרך אחרת), וגם אות ב-onCleared() של ViewModel שמציין את ההשמדה הקבועה ואת ניקוי המצב שמשויך ל-NavBackStackEntry.
  • הגדרת היקף של מצב rememberSaveable ברמת היעד, כדי לוודא שכל המצב שניתן להרכבה נשמר ומשוחזר באופן אוטומטי כשחוזרים ליעד.
  • תמיכה מלאה בשמירה ובשחזור של מצב NavController ושל מצב היעד שלו אחרי סיום התהליך ויצירה מחדש.
  • שילוב אוטומטי עם כפתור 'הקודם' במערכת.
  • תמיכה בהעברת ארגומנטים, בצירוף קישורי עומק ליעדים ובהחזרת תוצאה ליעדים קודמים.

  • כדי לאפשר העברה של מצב וחיבור של NavController לרכיבים שאפשר להשתמש בהם מחוץ ל-NavHost (כמו סרגל ניווט תחתון), צריך ליצור פונקציות עזר ספציפיות ב-rememberNavController() וב-currentBackStackEntryAsState().

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

מידע נוסף זמין במדריך בנושא Compose Navigation.

Multiple back stacks

ה-NavController אחראי לניהול ערימת החזרה של היעדים, להוספת יעדים לערימת החזרה כשמבצעים navigate() אליהם ולהסרתם כשמפעילים את popBackStack() או את לחצן החזרה של המערכת. ההרחבה של המחלקה הקיימת NavOptions והשילוב שלה ברכיבי <action> ב-XML של גרף הניווט מאפשרים לשמור ולשחזר את היסטוריית הפעולות.

כחלק מהשינוי הזה, השיטות NavigationUI של onNavDestinationSelected(), ‏ BottomNavigationView.setupWithNavController() ו-NavigationView.setupWithNavController() שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוסרו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה מחסניות של היסטוריית חזרה.

ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:

  • ב-XML של הניווט, הרכיב <action> יכול עכשיו להשתמש במאפייני הבוליאני app:popUpToSaveState ו-app:restoreState כדי לשמור את המצב של כל היעדים שהוצגו באמצעות app:popUpTo ולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • ב-navOptions Kotlin DSL, אפשר להוסיף את הנכס הבוליאני restoreState ואת הנכס הבוליאני saveState ב-popUpTo builder:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • כשיוצרים אובייקט NavOptions באופן ידני באמצעות NavOptions.Builder, אפשר להשתמש ב-setRestoreState() וב-overload החדש כדי setPopUpTo() שדורש פרמטר נוסף של saveState.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • עכשיו אפשר לכלול פרמטר נוסף, saveState, בקריאות פרוגרמטיות אל popBackStack().

  • אתם יכולים להשתמש בשיטה clearBackStack() כדי לנקות כל מצב שנשמר באמצעות popBackStack() או popUpToSaveState.

בכל המקרים, NavController ישמור וישחזר את המצב של כל NavBackStackEntry, כולל מופעים של ViewModel שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator עודכנו כדי לאפשר לכל Navigator לתמוך בשמירה ובשחזור של המצב שלו.

שינויים בהתנהגות

  • NavDeepLinkBuilder מוסיף עכשיו את PendingIntent.FLAG_IMMUTABLE ל-PendingIntent שמוחזר על ידי createPendingIntent(), כדי לוודא שממשק ה-API הזה פועל כמצופה כשמטרגטים את Android 12.
  • הניווט תלוי עכשיו במחזור החיים 2.3.1, ועכשיו מסומנים setGraph(), popBackStack(), navigateUp() ו-navigate(), השיטות שמעדכנות את NavBackStackEntry Lifecycle, בתור @MainThread, כך שהניווט תואם לאכיפה של השרשור הראשי שהוצגה במחזור החיים 2.3.0.
  • קישורי העומק מאמתים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-Uri.
  • NavDeepLink כשמנתחים ארגומנטים, סימני סולמית נחשבים עכשיו כמו סימני שאלה כמפריד בין מקטעי נתיב, וכך מונעים מארגומנט להשתרע על פני סימן הסולמית.
  • כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args ממקם עכשיו ארגומנטים ללא ערכי ברירת מחדל לפני אלה עם ערכי ברירת מחדל כפרמטרים.
  • כשיוצרים ארגומנטים, Safe Args ממקם עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל.
  • הספרייה Safe-Args תלויה עכשיו ב-Android Gradle Plugin 4.2.0. המשמעות היא שהאזהרה על שימוש ב-applicationIdTextResource לא תוצג יותר.

בעיות מוכרות

  • תוקן בNavigation 2.5.0-alpha01: גישה אל ViewModel שנוצר באמצעות by navGraphViewModels() מ-onCreate() של Fragment תיכשל עם IllegalStateException. (b/213504272)
  • תוקן ב-Navigation 2.5.0-alpha01: ‏ Safe Args 2.4.0 לא תואם ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (b/213086135)
  • קישור עומק עם כמה תרשימי ניווט מקוננים לא יוצר נכון את מחסנית החזרה המלאה. (b/214383060)

גרסה ‎2.4.0-rc01

15 בדצמבר 2021

androidx.navigation:navigation-*:2.4.0-rc01 מופץ. גרסה ‎2.4.0-rc01 מכילה את השמירות האלה.

שינויים בהתנהגות

  • NavDeepLink ארגומנטים שנותחו מתייחסים עכשיו לסימני סולמית באותו אופן שבו הם מתייחסים לסימני שאלה, כמפריד בין ארגומנטים. (I21309, b/180042703)

תיקוני באגים

  • מעכשיו, קישורים עמוקים לא יתעלמו יותר מארגומנטים עם ערכים שזהים לשם של הפלייסהולדר. (If8017, b/207389470)
  • אחרי ש-NavController ישוחזר, הוא לא יקרוס יותר כשפותחים יעד מקונן באמצעות מעברים.NavController (I0f7c9, b/205021623)
  • אם משתמשים בערך לא תקין של startDestination, הודעת השגיאה תהיה ברירת המחדל של המסלול ליעד ההתחלה, אם יש כזה. (I86b9d, b/208041894)

תיקוני באגים ב-Navigation Compose

  • תוקנה קריסה פוטנציאלית שנגרמה כתוצאה ממעבר מהיר בין יעד ההתחלה ליעד אחר באמצעות פריטים בתפריט הניווט התחתון. ‫(Ic8976, ‏ b/208887901)
  • תיבות דו-שיח של יעד משוחזרות עכשיו בצורה תקינה בחלק העליון של המסך אחרי שינויים בהגדרות או אחרי שהתהליך הסתיים. (I4c0dc, b/207386169)
  • תוקנה בעיה שגרמה לכך שניסיון לאחזר ViewModel מ-NavBackStackEntry של תיבת דו-שיח נכשל כשהתיבה נסגרה. (I6b96d, b/206465487)
  • תוקנה בעיה שקרתה כשמשתמשים בactivity יעדים עם NavHost של Navigation Compose, שגרמה להרכבות חוזרות אינסופיות. (I8f64c)
  • תוקנה דליפה ב-Navigation Compose שבה נשמרת הפניה לפעילות הישנה אחרי שינוי בהגדרות או סיום התהליך. (I4efcb, ‏ b/204905432)

תיקוני באגים ב-Safe Args

  • SafeArgs לא קורס יותר כשמנסים לשחזר מערכים מותאמים אישית של parcelable אחרי שהתהליך הסתיים. (I618e8, b/207315994)
  • תוקן באג ב-safe args שלא אפשר למערכים בוליאניים לקבל ערך null. (I8c396, ‏ b/174787525)

גרסה ‎2.4.0-beta02

‫3 בנובמבר 2021

androidx.navigation:navigation-*:2.4.0-beta02 מופץ. גרסה ‎2.4.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • כשמטפלים בקישורים עמוקים מפורשים ומשתמעים, נוסף עכשיו אוטומטית הדגל saveState כשעוברים לגרף אחר. כך קוד כמו NavigationUI.setupWithNavController וקוד שמשתמש בכמה מחסניות חזרה פועלים כמצופה. (Ic8807)

שינויים בהתנהגות

  • תבניות של קישורי עומק עוברות עכשיו קומפילציה עצלה ב-NavDeepLink במקום במהלך הניפוח. השינוי הזה אמור לשפר את זמן הניפוח של תרשימי ניווט שכוללים קישורי עומק. (b8d257, ‏ b/184149935)

תיקוני באגים

  • תוקנה בעיה שבה רכיבי NavBackStackEntry נדחפו למטה אל Lifecycle.State.CREATED אחרי מעבר אל Lifecycle.State.STARTED כש-NavHost נוסף ישירות אל setContent() של הפעילות. ‫(Ia5ac1, ‏ b/203536683)
  • תוקן מצב race condition שבו הסרת יעד של DialogFragment ממחסנית החזרה לפני שהתיבה הוצגה בפועל לא גרמה לסגירת התיבה, וכתוצאה מכך התרחשה קריסה כשהמשתמש סגר את התיבה באופן ידני. (I687e5)
  • תוקנה בעיה שבה onNavDestinationSelected API ב-NavigationUI החזיר true גם אם לא navigate() בפועל לגרף הניווט הזה. היא פועלת עכשיו לפי אותה לוגיקה שמשמשת את setupWithNavController באופן פנימי, כדי לבחור רק את MenuItem שמשויך ליעד הנוכחי באמצעות hierarchy של היעד. (I2b053)

גרסה ‎2.4.0-beta01

‫27 באוקטובר 2021

androidx.navigation:navigation-*:2.4.0-beta01 מופץ. גרסה ‎2.4.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר להשתמש ב-by navGraphViewModel עם מסלול כחלופה לשימוש במזהה, כדי לתמוך טוב יותר בשימוש ב-Navigation Kotlin DSL עם Fragments. (I901e3, ‏ b/201446416)

שינויים ב-API

  • ה-API של visibleEntries הוא עכשיו ניסיוני. (I93f6f)

תיקוני באגים

  • מודלים של תצוגות לא יושמדו יותר כשמעברים מופרעים על ידי ניווט הלוך ושוב בין אותם מסכים (Id52d8, ‏ b/200817333)
  • כשמוסיפים קישורי עומק ל-NavDestination, אין יותר צורך בערך ברירת מחדל לארגומנטים מסוג Nullable NavDeepLink. (I5aad4, ‏ b/201320030)
  • ‫NavBackStackEntries עם מחזורי חיים שונים לא נחשבים יותר שווים. המשמעות היא שרכיב NavHost יבצע קומפוזיציה מחדש של כל היעדים בצורה תקינה כשמבצעים ניווט באמצעות singleTop וכשבוחרים מחדש פריטים בתפריט התחתון. (I1b351, b/196997433)
  • תוקנה בעיה ב-AbstractListDetailFragment שגרמה לטיפול שגוי במאפיינים layout_width ו-layout_weight בחלונית הרשימה שהוחזרה על ידי onCreateListPaneView() או להתעלמות מהם. (f5fbf3)
  • המצב החזותי של יעדים בתיבת דו-שיח נשאר עכשיו מסונכרן עם המצב של DialogFragmentNavigator. המשמעות היא שקריאה ידנית ל-API האסינכרוני dismiss() עבור DialogFragment מנקה עכשיו כמו שצריך את כל יעדי הדיאלוג שמעל הדיאלוג שנסגר. השינוי הזה לא משפיע על מקרים שבהם משתמשים ב-popUpTo או ב-popBackStack() כדי לסגור את תיבת הדו-שיח. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener יש עכשיו הודעות שגיאה ברורות יותר ב-onDestinationChanged(). (Ie742d)

גרסה ‎2.4.0-alpha10

‫29 בספטמבר 2021

androidx.navigation:navigation-*:2.4.0-alpha10 מופץ. גרסה ‎2.4.0-alpha10 מכילה את השמירות האלה.

תכונות חדשות

  • ה-NavController כולל עכשיו אפשרות לאחזר רשימה של כל המופעים הגלויים של NavBackStackEntry באמצעות StateFlow‏ (Ia964e)visibleEntries
  • rememberNavController() now takes a optional set of Navigator instances that will be added to the returned NavController to better support optional Navigators such as those from Accompanist Navigation Material. (I4619e)

תיקוני באגים

  • הניווט הדינמי לא יקרוס יותר כשהפעילות נוצרת מחדש. (Ifa6a3, ‏ b/197942869)
  • תוקנה בעיה בכפתור 'הקודם' של המערכת שמתרחשת רק אחרי שחוזרים ליעד שניתן להגדרה ומכיל NavHost. (3ed148, ‏ b/195668143)
  • ‫SafeArgs יוצר עכשיו את הארגומנטים של fromBundle() ושל fromSavedStateHandle() בסדר הפרמטרים הנכון. (I824a8, ‏ b/200059831)

גרסה ‎2.4.0-alpha09

‫15 בספטמבר 2021

androidx.navigation:navigation-*:2.4.0-alpha09 מופץ. גרסה ‎2.4.0-alpha09 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר להשתמש בשיטה clearBackStack() כדי לנקות כל מצב שנשמר באמצעות popBackStack() או popUpToSaveState. (I80a0f)
  • מעכשיו אפשר להעביר רשימה של ארגומנטים או קישורי עומק לבונה של גרף הניווט המקונן, והם יתווספו אוטומטית לגרף שיתקבל. (I8a470, b/182545357)

שינויים ב-API

  • הפונקציה navArgument Kotlin DSL היא עכשיו חלק מ-navigation-common במקום מ-navigation-compose. כדי להמשיך להשתמש בפונקציה הזו, צריך לעדכן את הייבוא. (I1d095)

שינויים בהתנהגות

  • כשיוצרים ארגומנטים, Safe Args ממקם עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל. (I89709, ‏ b/198493585)

תיקוני באגים

  • כשמשתמשים ב-Navigation Compose, ‏ NavGraphs יהיו DESTROYED רק אחרי שכל הצאצאים שלהם יהיו DESTROYED. (I86552, ‏ b/198741720)
  • לא צריך יותר להגדיר ערך ברירת מחדל לארגומנטים מסוג NavDeepLink שאפשר להגדיר להם ערך null. ‫(Ia14ef, ‏ b/198689811)
  • קריאה ל-setGraph() עם גרף חדש תנקה עכשיו גם את כל ערימות החזרה שנשמרו, בנוסף להתנהגות הקודמת של הוצאת ערימת החזרה. (I97f96)
  • תוקנה בעיה שבה לא נשלחה הודעה למופעים של OnDestinationChangedListener ול-currentBackStackEntryFlow כשנעשה שימוש ב-launchSingleTop. (Iaaebc)

עדכונים של תלות

גרסה ‎2.4.0-alpha08

‫1 בספטמבר 2021

androidx.navigation:navigation-*:2.4.0-alpha08 מופץ. גרסה ‎2.4.0-alpha08 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר להרחיב את המחלקה NavType כדי ליצור NavTypes מותאמים אישית. אפשר להשתמש בסוגים מותאמים אישית רק כשיוצרים את גרף הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. ‫(I78440, ‏ b/196871885)

שינויים בהתנהגות

  • כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args ממקם עכשיו ארגומנטים ללא ערכי ברירת מחדל לפני אלה עם ערכי ברירת מחדל כפרמטרים. ‫(Idb697, ‏ b/188855904)
  • קישורי העומק מאמתים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-Uri. (#204, b/185527157)

תיקוני באגים

  • השימוש ב-getBackStackEntry וב-previousBackStackEntry בתוך composable(), בשילוב עם remember(), לא יגרום יותר לחריגה כי אין יעד במחסנית האחורית. (I75138, b/194313238)
  • ‫Navigation Compose מבצע עכשיו קומפוזיציה מחדש בצורה תקינה כשמשנים את הארגומנטים של מחסנית החזרה ומשתמשים ב-launchSingleTop=true. (Iebd69, ‏ b/186392337)
  • לא יוצג יותר ArrayIndexOutOfBoundsException כשמתקשרים אל setGraph עם גרף שכולל 13 או 29 יעדים. ‫(I1a9f1, ‏ b/195171984)
  • מחולל ה-Java של SafeArgs לא אמור יותר לגרום לאזהרות של lint כשיוצרים מחלקות Args. (I1a666, b/185843837)

External Contribution

  • תודה ל-ospixd על כך שקישורי העומק מוודאים שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-Uri. (#204, b/185527157)

גרסה ‎2.4.0-alpha07

‫18 באוגוסט 2021

androidx.navigation:navigation-*:2.4.0-alpha07 מופץ. גרסה ‎2.4.0-alpha07 מכילה את השמירות האלה.

תיקוני באגים

  • ‫Navigation Compose שומר עכשיו את המצב בצורה תקינה אחרי שינויים בהגדרות וכשמחליפים גרפים בזמן השימוש בתכונה multiple back stack. ‫(If5a3d, b/195141957)
  • כשמשתמשים ב-Navigation Compose עם כמה מחסניות חזרה, בחירה מחדש של אותה כרטיסייה לא תוביל יותר למסך ריק. (I860dc, b/194925622)
  • NavHost עכשיו מתבצע מעקב אחרי שינויים ב-Lifecycle.State של רכיבי NavBackStackEntry, מה שאומר שאם משתמשים ב-NavHost במקטע, הוא יורכב מחדש בצורה תקינה ככל שמחזור החיים משתנה, במקום להציג מסך ריק. ‫(I4eb85, ‏ b/195864489)
  • תוקנה בעיה שגרמה לכך שסגירה של DialogFragment לא עדכנה את הסטטוס של NavController בצורה נכונה אחרי יצירה מחדש של הפעילות (כלומר, אחרי שינוי בהגדרה). (Icd72b)
  • תוקנה בעיה שבה כשמוציאים יעד של תיבת דו-שיח מהמחסנית, הטיפול בלחצן 'הקודם' במערכת של NavController לא מתעדכן, ולכן יכול להיות ש-NavController מיירט את לחצן 'הקודם' למרות שאין לו מחסנית חזרה להוציא ממנה. ‫(If3b34)
  • הספרייה Safe-args יוצרת עכשיו באופן אוטומטי שיטה לארגומנטים שאפשר להשתמש בה כדי לבדוק את הקוד של ViewModel.toSavedStateHandle (If1e2d, b/193353880)

גרסה ‎2.4.0-alpha06

‫4 באוגוסט 2021

androidx.navigation:navigation-*:2.4.0-alpha06 מופץ. גרסה ‎2.4.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • השמות של ה-methods‏ requireSlidingPaneLayout() ו-requireDetailPaneNavHostFragment() ב-AbstractListDetailFragment השתנו ל-getSlidingPaneLayout() ו-getDetailPaneNavHostFragment(), בהתאמה. (I34a08)

שינויים בהתנהגות

  • כשמנווטים עם אנימציות (כמו Crossfade), היעד החדש של Lifecycle יגיע עכשיו רק ל-RESUMED כשהאנימציה תושלם. (If0543, ‏ b/172112072, ‏ b/194301889)
  • ה-Compose של Navigation‏ NavHost מגדיר עכשיו את הגרף כחלק מהקומפוזיציה הראשונה. (Ieb7be)

תיקוני באגים

  • הסרת היעד האחרון מגרף ניווט כבר לא גורמת לשגיאה ClassCastException. (If0543, ‏ b/172112072, ‏ b/194301889)
  • תוקנה בעיה NullPointerException שהתרחשה כשמוסיפים קישור עומק בלי Uri ועוברים דרך מסלול או קישור עומק. (938a0c, ‏ b/193805425)
  • תוקנה בעיה ב-Navigation Compose שבה קישור עומק NavBackStackEntry לא הגיע למצב RESUMED. (I192c5)
  • תוקנה הבעיה שבה הוצאה של יעד מתיבת דו-שיח לא עדכנה את הטיפול של NavController בלחצן 'הקודם' במערכת, ולכן יכול להיות ש-NavController ייעץ ללחצן 'הקודם' למרות שאין לו מחסנית חזרה להוציא ממנה. (aosp/1782668)

גרסה ‎2.4.0-alpha05

21 ביולי 2021

androidx.navigation:navigation-*:2.4.0-alpha05 מופץ. גרסה ‎2.4.0-alpha05 מכילה את השמירות האלה.

שינויים בהתנהגות

  • הקומפוננטה NavHost של Navigation Compose תמיד משתמשת עכשיו בהעברה הדרגתית כשעוברים בין יעדים. (I07049, ‏ b/172112072)
  • עכשיו אפשר לבצע שינויים בתרשים של NavHost. גרפים עם אותו startDestination ויעדים בגרף ייחשבו שווים ולא ינקו את NavController back stack. (I0b8db, b/175392262)

תיקוני באגים

  • תוקנה בעיה שגרמה ל-NoSuchElementException כשמתקשרים אל popBackStack() מתוך LifecycleObserver שמצורף אל NavBackStackEntry, בגלל עדכונים חוזרים למצב של NavController. (I64621)
  • AbstractListDetailFragment מאפשרת עכשיו להסיר לגמרי את SlidingPaneLayout מה-APK כשלא נעשה בו שימוש.AbstractListDetailFragment (I611ad)
  • השיטות NavGraph ו-NavDestination מחליפות עכשיו את שיטת השוויון, כך ששני אובייקטים עם אותם ערכים ייחשבו שווים. ‫(I166eb, ‏ b/175392262)

גרסה ‎2.4.0-alpha04

‫1 ביולי 2021

androidx.navigation:navigation-*:2.4.0-alpha04 מופץ. גרסה ‎2.4.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • ארטיפקט navigation-fragment מכיל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעות AbstractListDetailFragment החדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayout כדי לנהל חלונית רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית פרטים, שנעשה בה שימוש ב-NavHostFragment כהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה. ‫(Iac4be, ‏ b/191276636)
  • הארטיפקט NavHost של navigation-compose תומך עכשיו ב-dialog יעדים בנוסף ל-composable יעדים. כל אחד מהיעדים של תיבות הדו-שיח יוצג בתוך Dialog שאפשר להרכיב, מעל היעד הנוכחי של composable. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

שינויים ב-API

  • הפונקציה add ב-NavigatorState נקראת עכשיו push. כל הקריאות הנוכחיות אל add() יצטרכו להשתנות ל-push(). (Ie89fc, b/172112072)
  • עכשיו אפשר להשתמש בממשקי ה-API‏ pushWithTransaction ו-popWithTransition ב-NavigatorState כדי להעביר או להוציא יעד באופן אסינכרוני במכונות Navigator בהתאמה אישית. חשוב לציין שממשקי ה-API האלה עדיין לא נמצאים בשימוש באף אחד מהרכיבים לניווט שכלולים. (Ic4d7c, b/172112072)

שינויים בהתנהגות

  • NavDeepLinkBuilder מוסיף עכשיו את PendingIntent.FLAG_IMMUTABLE ל-PendingIntent שמוחזר על ידי createPendingIntent(), כדי לוודא שממשק ה-API הזה פועל כמצופה כשמטרגטים את Android 12. (If8c52)

תיקוני באגים

  • תוקנה בעיה ב-<include-dynamic> שבה ארגומנטים שהועברו לתרשים לא הועברו בצורה נכונה לתרשים שנכלל באופן דינמי. (I3e115)
  • תוקן באג NullPointerException בניווט ליעד באמצעות ארגומנט string[] עם ערך ברירת מחדל של @null. (I1fbe8)
  • הוספת כללי ProGuard ל-@Navigator.Name, לפתרון בעיות בשימוש במצב מלא של R8 3.1. ‫(I2add9, ‏ b/191654433)
  • הגרסה של SafeArgs לא תיכשל יותר כשמבצעים build של האפליקציה עם גרסאות שקודמות לגרסה Kotlin.1.5.0 (Icd1ff, ‏ b/190739257)

גרסה ‎2.4.0-alpha03

‫16 ביוני 2021

androidx.navigation:navigation-*:2.4.0-alpha03 מופץ. גרסה ‎2.4.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה נדרשו שתי קריאות ל-navigate() כדי לנווט לגרף דינמי שכלול. ‫(I7785c, b/188859835)
  • תוקנה רגרסיה שהוצגה בגרסה Navigation 2.4.0-alpha01 שבה setupActionBarWithNavController() לא הסיר את סמל החזרה לרמה הקודמת בצורה תקינה כשנמצאים ביעד ברמה העליונה. ‫(I5d443, ‏ b/189868637)
  • תוקנה בעיה שגרמה ל-IllegalStateException כשקוראים ל-popBackStack() אחרי שמוציאים את גרף הבסיס של NavController. (I2a330, b/190265699)
  • כללי ProGuard עבור by navArgs() חלים עכשיו כמו שצריך כשמשתמשים ב-navigation-common או בארטיפקטים שתלויים בו. ‫(I68800, ‏ b/190082521)
  • OnDestinationChangedListener שקורא navigate() בפעם הראשונה שהוא מקבל קריאה חוזרת, מקבל עכשיו קריאה חוזרת שנייה עם היעד שאליו הוא ניווט. (Ie5f9e, b/190228815)
  • Safe Args לא קורס יותר כשמשתמשים בו עם מודולים של תכונות דינמיות ו-AGP 7.0 ואילך. (I69518, ‏ b/189966576)

בעיה ידועה

  • השימוש ב-Gradle 6.7.0 יגרום ל-Safe Args להיכשל עם שגיאה Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ בגלל תלות בגרסה ישנה יותר של Kotlin. כדי לפתור את הבעיה, צריך לעדכן לגרסה Gradle 7.0. (b/190739257)

גרסה ‎2.4.0-alpha02

‫2 ביוני 2021

androidx.navigation:navigation-*:2.4.0-alpha02 מופץ. גרסה ‎2.4.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • יש עכשיו תמיכה במסלולים ליעדים מסוג Activity, ‏ Fragment ו-Dialog, וגם בכל ה-DSL של Kotlin ל-DynamicNavigation. (Ib5544, ‏ Ia617b, ‏ I22f96, ‏ b/188914648, ‏ b/188901565)
  • NavigationUI הוסיף באופן זמני ממשקי API ניסיוניים כדי לאפשר ביטול של שמירת המצב. למרות ששמירת המצב תמיד היא ההתנהגות הנכונה, עדיין יש שימושים בספריות שהוצאו משימוש (כלומר, retained fragments), שלא ניתן לתמוך בהם כששומרים את המצב. לכן, יש כאן הזדמנות לאפליקציות לעבור בהדרגה מכל ממשקי API שלא נתמכים. (Idf93c)
  • ‫Navigation כולל עכשיו ממשקי API‏ findDestination() ו-getHierarchy() שאפשר להשתמש בהם כדי להטמיע NavigationUI בהתאמה אישית. ‫findDestination() היא פונקציית הרחבה של NavGraph שתאתר יעד בגרף. ‫getHierarchy() היא פונקציה ב-NavDestination שאפשר להשתמש בה כדי לוודא שיעד נתון נמצא בהיררכיה של יעד אחר.(I2932f, ‏ b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • השיטות של NavigationUI שקיבלו BottomNavigationView עודכנו כך שיקבלו במקום זאת את מחלקת העל שלהן, שהוצגה ב-Material 1.4.0, NavigationBarView. כך אפשר להשתמש ב-methods האלה עם NavigationRailView. (Ib0b36, b/182938895)

  • כשמבצעים ניפוח של רכיב <action> באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנמשכים מהעיצוב באמצעות התחביר app:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)

שינויים ב-API

  • הוצאנו משימוש ב-Kotlin DSL את ה-builders שמשתמשים במזהה, ועכשיו צריך להחליף אותם ב-builders שמשתמשים בנתיבים (I85b42,‏ b/188816479) (I9f58f,‏ b/188816479)

תיקוני באגים

  • DialogFragmentNavigator משתמש עכשיו ב-API של NavigatorState.pop() כדי לעדכן את NavController כשתיבת דו-שיח נסגרת בלחיצה על לחצן החזרה של המערכת או בלחיצה מחוץ לתיבה, וכך לוודא שהמצב של NavController תמיד מסונכרן עם המצב של Navigator. (I2ead9)
  • הניווט לא נותן יותר ConcurrentModificationException כשמשתמשים במניפולציה של רשימת OnDestinationChangedListeners מתוך קריאה חוזרת של onDestinationChanged. (Ib1707, ‏ b/188860458)

  • Safe Args לא קורס יותר כשמנסים ליצור מאפייני כיוון ב-Kotlin. (Id2416, ‏ b/188564435)

  • השיטה setId ב-NavDestination מסומנת עכשיו בצורה תקינה באמצעות @IdRes, ולכן היא מקבלת רק מזהי משאבים. (I69b80)

  • הפרמטר int של findNode הוא עכשיו resId במקום resid. (I7711d)

עדכון תלות

  • הספרייה Safe-Args תלויה עכשיו ב-Android Gradle Plugin 4.2.0. המשמעות היא שהאזהרה על שימוש ב-applicationIdTextResource לא תוצג יותר. (I6d67b, b/172824579)

גרסה ‎2.4.0-alpha01

‫18 במאי 2021

androidx.navigation:navigation-*:2.4.0-alpha01 מופץ. גרסה ‎2.4.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • השיטה currentBackStackEntryAsFlow() ב-NavController מספקת Flow שמופעל בכל פעם ש-NavBackStackEntry הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני של OnDestinationChangedListener. (I19c4a, ‏ ‎#89, ‏ b/163947280)

Multiple back stacks

ה-NavController אחראי לניהול ערימת החזרה של היעדים, להוספת יעדים לערימת החזרה כשמבצעים navigate() אליהם ולהסרתם כשמפעילים את popBackStack() או את לחצן החזרה של המערכת. המחלקות הקיימות NavOptions והשילוב שלהן ברשומות <action> בקובץ ה-XML של תרשים הניווט הורחבו כדי לתמוך בשמירה ובשחזור של ערימת החזרה. (b/80029773)

כחלק מהשינוי הזה, השיטות NavigationUI של onNavDestinationSelected(), ‏ BottomNavigationView.setupWithNavController() ו-NavigationView.setupWithNavController() שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוסרו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה מחסניות של היסטוריית חזרה. (Ie07ca)

ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:

  • ב-XML של הניווט, הרכיב <action> יכול עכשיו להשתמש במאפייני הבוליאני app:popUpToSaveState ו-app:restoreState כדי לשמור את המצב של כל היעדים שהוצגו באמצעות app:popUpTo ולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • ב-navOptions Kotlin DSL, אפשר להוסיף את הנכס הבוליאני restoreState ואת הנכס הבוליאני saveState ב-popUpTo builder:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • כשיוצרים אובייקט NavOptions באופן ידני באמצעות NavOptions.Builder, אפשר להשתמש ב-setRestoreState() וב-overload החדש כדי setPopUpTo() שדורש פרמטר נוסף של saveState.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • עכשיו אפשר לכלול פרמטר נוסף, saveState, בקריאות פרוגרמטיות אל popBackStack().

בכל המקרים, NavController ישמור וישחזר את המצב של כל NavBackStackEntry, כולל מופעים של ViewModel שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator עודכנו כדי לאפשר לכל Navigator לתמוך בשמירה ובשחזור של המצב שלו.

ה-ComposeNavigator שמשמש ליעדי composable ב-Navigation Compose, וגם ה-FragmentNavigator וה-DynamicFragmentNavigator שמשמשים ליעדי <fragment> ב-Navigation עם Fragments, עודכנו כך שישתמשו בממשקי ה-API החדשים של Navigator ויתמכו בשמירה ובשחזור של מצב.

מסלולי ניווט

מסלול הוא String שמזהה יעד באופן ייחודי. בעבר, נעשה שימוש במושג הזה רק ב-Navigation Compose, אבל עכשיו הוא הפך לחלק מממשקי ה-API העיקריים של Navigation. האפשרות הזו מספקת חלופה לשימוש במזהים מספריים כשיוצרים את הגרף באמצעות Navigation Kotlin DSL. (b/172823546)

לכל ממשקי ה-API שבעבר קיבלו רק מזהה יש עכשיו עומס יתר שמקבל נתיב String. הם כוללים את navigate(),‏ popBackStack(),‏ popUpTo() ו-getBackStackEntry().

היו לכך השלכות על ה-API:

  • המאפיין popUpTo kotlin ב-Kotlin DSL יצא משימוש, ועכשיו צריך להשתמש במאפיין popUpToId. (I59c73, ‏ b/172823546)
  • הוצאנו משימוש את ממשק ה-API ‏getStartDestination(), ועכשיו אנחנו ממליצים להשתמש ב-getStartDestinationId(). ‫(I0887f, ‏ b/172823546)

למפתחים שמשדרגים מגרסאות קודמות של Navigation Compose לגרסה 2.4.0-alpha01 של Navigation Compose, המשמעות היא שהייבוא הבא של שיטות הרחבה כבר לא נחוץ וצריך להסיר אותו:

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

הארגומנט KEY_ROUTE הוחלף בנכס route ב-NavDestination, כך שאפשר לקרוא ל-navBackStackEntry.destination.route ישירות.

שינויים ב-API

  • כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר ערך null למחלקות באמצעות גנריקה (כמו מחלקות משנה של NavType). כל פונקציות ההרחבה של Kotlin שהיו חלק מפריטי ה--ktx הועברו לפריטי ה-Artifacts הראשיים שלהן. פריטי ה--ktx ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. (b/184292145)
  • NavDeepLinkBuilder תומך עכשיו בהוספה של כמה יעדים שונים למערך הפעולות הקודמות שנוצר. (I3ee0d, b/147913689)
  • הוספת פונקציות factory ל-DynamicNavHostFragment (Icd515, ‏ b/175222619)
  • המזהה הייחודי של NavBackStackEntry מוצג עכשיו כחלק מה-API הציבורי שלו. (Ie033a)
  • השדות name ו-argument ופונקציות הפירוק של NamedNavArgument הם עכשיו ציבוריים. (#174, b/181320559)
  • הוספנו תוסף חדש NavBackStackEntry#provideToCompositionLocals שמספק את NavBackStackEntry ללוקאלים הרלוונטיים של הקומפוזיציה. (‎#175, b/187229439)

Safe Args

  • הספרייה Safe Args יוצרת עכשיו שיטה fromSavedStateHandle() לכל מחלקה NavArgs. ‫(#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • עדכנו את Safe Args כך שיסתמך על KotlinPoet 1.8.0. (‎#172, b/183990444)

שינויים בהתנהגות

  • הניווט תלוי עכשיו במחזור החיים 2.3.1, ועכשיו מסומנים setGraph(), popBackStack(), navigateUp() ו-navigate(), השיטות שמעדכנות את NavBackStackEntry Lifecycle, בתור @MainThread, כך שהניווט תואם לאכיפה של השרשור הראשי שהוצגה במחזור החיים 2.3.0. (b/171125856)
  • ניתוח של ארגומנטים מסוג Enum מקישורי עומק הוא עכשיו לא תלוי רישיות, כך שקישור עומק כמו http://www.example.com/red יכול להתאים לקישור עומק www.example.com/{color} גם אם הערך של ה-Enum הוא RED. (מס' 152, b/135857840)

תאימות של Compose

  • androidx.navigation:navigation-compose:2.4.0-alpha01 תואם רק ל-Compose מגרסה 1.0.0-beta07 ואילך.

תיקוני באגים

  • תוקנה בעיה שבה מצייני מיקום של ארגומנטים מסוג trailing קיבלו עדיפות על פני קישורי עומק עם סיומת תואמת מדויקת. (#153, b/184072811)
  • NavHostFragment תומך עכשיו ב-Navigators מותאמים אישית שמשתמשים באותו @Navigator.Name("dialog") כמו ברירת המחדל DialogFragmentNavigator. (Ib1c2c, b/175979140)
  • שופרה ההתנהגות של NavigatorProvider#addNavigator כדי לוודא שקריאה חוזרת לאותו מופע לא תגרום לבעיות. (מס' 176, b/187443146)

פריטי תוכן שהוספת

  • תודה ל-simonschiller על הוספת תמיכה ב-Safe Args, שיוצרת שיטה fromSavedStateHandle() לכל מחלקה NavArgs. ‫(#122, b/136967621)
  • תודה ל-Bradleycorn על כך שדאג שפענוח ארגומנטים של Enum מקישורי עומק לא יהיה תלוי באותיות רישיות. (#152, b/135857840)
  • תודה ל-osipxd על תיקון בעיה שבה מצייני מיקום של ארגומנטים מסוג trailing קיבלו עדיפות על פני קישורי עומק עם סיומת מדויקת תואמת. (#153, b/184072811)
  • תודה ל-tatocaster על העדכון של Safe Args כך שיסתמך על KotlinPoet 1.8.0. (‎#172, b/183990444)
  • תודה ל-jossiwolf על שהפך את השדות name ו-argument ואת פונקציות הפירוק של NamedNavArgument לציבוריים. (‎#174, b/181320559)
  • תודה ל-jossiwolf על השקת תוסף NavBackStackEntry#provideToCompositionLocals חדש שמספק את NavBackStackEntry ללוקאלים הרלוונטיים של הקומפוזיציה. (‎#175, b/187229439)
  • תודה ל-jossiwolf על שיפור ההתנהגות של NavigatorProvider#addNavigator כדי לוודא שקריאה חוזרת לאותו מופע לא גורמת לבעיות. (מס' 176, b/187443146)

גרסה ‎1.0.0-alpha10

‫7 באפריל 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 מופץ. גרסה ‎1.0.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • NavHost מקבל עכשיו Modifier, שמועבר לקונטיינר הניתן להרכבה שעוטף את הרכיבים הניתנים להרכבה של היעד. (I85aca, ‏ b/175125483)

תיקוני באגים

  • NavHost פועל עכשיו גם אם לא נמצא OnBackPressedDispatcherOwner, כמו במקרה של תצוגה מקדימה של NavHost. (I7d8b4)
  • ‫Navigation Compose תלוי עכשיו ב-Navigation 2.3.5, וכך נפתרה בעיה שהתרחשה כשמשתמשים ב-BackHandler בתוך יעד NavHost. (I7e63b, b/182284739)

גרסה ‎1.0.0-alpha09

‫10 במרץ 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 מופץ. גרסה ‎1.0.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • LocalViewModelStoreOwner.current מחזירה עכשיו ViewModelStoreOwner שניתן לאכלוס בערך null, כדי לקבוע בצורה טובה יותר אם ViewModelStoreOwner זמין בהרכב הנוכחי. ממשקי API שנדרש בשבילם ViewModelStoreOwner, כמו viewModel() ו-NavHost, עדיין מחזירים חריגה אם לא מוגדר ViewModelStoreOwner. (Idf39a)

תיקוני באגים

  • ‫Navigation Compose תלוי עכשיו ב-Navigation 2.3.4 שכולל את התיקון לניסיון להגדיר את אותו אובייקט ViewModelStore אחרי שהגרף הוגדר. (I65c24, ‏ b/177825470)

גרסה ‎1.0.0-alpha08

24 בפברואר 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 מופץ. גרסה ‎1.0.0-alpha08 מכילה את השמירות האלה.

תכונות חדשות

  • NavHost מאכלס עכשיו את LocalSavedStateRegistryOwner CompositionLocal עם NavBackStackEntry של היעד הזה, וכך מוודא שכל מצב שנשמר ישירות ב-SavedStateRegistry יישמר וישוחזר לצד היעד. (I435d7, b/179469431)

גרסה ‎1.0.0-alpha07

10 בפברואר 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 מופץ. גרסה ‎1.0.0-alpha07 מכילה את השמירות האלה.

עדכונים של תלות

גרסה ‎1.0.0-alpha06

‫28 בינואר 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 מופץ. גרסה ‎1.0.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה method להרחבת getBackStackEntry(route: String) ב-NavController שמחזירה את NavBackStackEntry המשויך. (If8931)

גרסה ‎1.0.0-alpha05

‫13 בינואר 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 מופץ. גרסה ‎1.0.0-alpha05 מכילה את השמירות האלה.

העדכון תלוי ב-Compose 1.0.0-alpha10.

גרסה ‎1.0.0-alpha04

‫16 בדצמבר 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 מופץ. גרסה ‎1.0.0-alpha04 מכילה את השמירות האלה.

  • העדכון בוצע כדי שתהיה תאימות ל-Compose 1.0.0-alpha09.

גרסה ‎1.0.0-alpha03

‫2 בדצמבר 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 מופץ. גרסה ‎1.0.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה הבעיה שבה התגים popBackStack() ו-navigateUp() לא פעלו אחרי שינוי בהגדרה או אחרי שהתהליך הסתיים והתחיל מחדש. (Icea47, ‏ b/173281473)
  • הניווט לגרף מקונן בתוך NavHost פועל עכשיו בצורה תקינה. ‫(I0948d, ‏ b/173647694)

גרסה ‎1.0.0-alpha02

‫11 בנובמבר 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 מופץ. גרסה ‎1.0.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • הניווט ב-Compose תומך עכשיו ב-NavOptions לשימוש בפעולות popUpTo ו-launchSingleTop (If96c3, ‏ b/171468994)
  • נוספה פונקציית ניווט שמקבלת מסלול במקום מזהה, ומאפשרת ליצור גרפים מקוננים ב-Navigation Compose DSL. (I1661d)
  • הפרמטר startDestination מופיע עכשיו לפני הפרמטר route ברשימת הפרמטרים של NavHost ‏ (Ie620e)
  • מעכשיו אפשר ליצור תרשים באמצעות המסלול כיעד התחלתי מחוץ לרכיב NavHost. (Iceb75)

גרסה ‎1.0.0-alpha01

‫28 באוקטובר 2020

android.navigation:navigation-compose:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

ארטיפקט navigation-compose מספק שילוב בין רכיב הניווט לבין Jetpack Compose. היא משתמשת בפונקציות @Composable כיעדים באפליקציה.

הגרסה הראשונה הזו כוללת:

  • NavHost composable שמאפשר ליצור את גרף הניווט באמצעות Kotlin DSL.
  • הגדרת היקף של מחזור החיים, ViewModel ומצב שמור ברמת היעד.
  • שילוב אוטומטי עם כפתור 'הקודם' במערכת.
  • תמיכה בהעברת ארגומנטים, בצירוף קישורי עומק ליעדים ובהחזרת תוצאה ליעדים קודמים.
  • כדי לאפשר העברה של מצב וחיבור של NavController לרכיבים שאפשר להשתמש בהם מחוץ ל-NavHost (כמו סרגל ניווט תחתון), צריך ליצור פונקציות עזר ספציפיות ב-rememberNavController() וב-currentBackStackEntryAsState().

מידע נוסף זמין במדריך בנושא Compose Navigation.

גרסה 2.3.5

גרסה 2.3.5

‫7 באפריל 2021

androidx.navigation:navigation-*:2.3.5 מופץ. גרסה 2.3.5 מכילה את השמירות האלה.

תכונות חדשות

  • כשמנווטים באמצעות NavDeepLinkRequest או Uri, עכשיו אפשר לגשת אל Uri, הפעולה וסוג ה-MIME ביעד שמתקבל על ידי קבלת הכוונה מהארגומנטים באמצעות KEY_DEEP_LINK_INTENT, בדומה לפונקציונליות שכבר זמינה לקישור עמוק חיצוני. (I975c3, ‏ b/181521877)

תיקוני באגים

  • OnBackPressedCallbacks נוסף ל-dispatcher עם NavBackStackEntry בתור LifecycleOwner, ועכשיו הוא מיירט כמו שצריך את הפעולה 'חזרה' אחרי שמחזור החיים של הפעילות הוא STOPPED, ואז STARTED (Iff94f,‏ b/182284739)
  • ניתוח הדומיין של קישור העומק לא תלוי יותר באותיות רישיות או קטנות, ולכן www.example.com תואם גם ל-www.example.com וגם ל-www.Example.com. חשוב לזכור שבשמות של פרמטרים של שאילתות יש הבחנה בין אותיות רישיות לרגילות. (מס' 144, b/153829033)
  • תוקנה בעיה NullPointerException שיכולה להתרחש כשליעד יש כמה ארגומנטים שברירת המחדל שלהם לא יכולה להיות null, ואתם עוברים ליעד הזה תוך כדי החלפה של קבוצת משנה של הארגומנטים האלה. (aosp/1644827)

עדכונים של תלות

  • הפלאגין Navigation Safe Args Gradle תלוי עכשיו בפלאגין Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)

External Contribution

  • תודה bentrengrove על בקשת המיזוג שגורמת לניתוח של דומיין קישור עומק להיות לא תלוי באותיות רישיות. (מס' 144, b/153829033)

גרסה 2.3.4

גרסה 2.3.4

‫10 במרץ 2021

androidx.navigation:navigation-*:2.3.4 מופץ. גרסה 2.3.4 מכילה את השמירות האלה.

תכונות חדשות

  • אפשר עכשיו לנתח ארגומנטים של ReferenceType בצורה תקינה כשהם נשלחים כחלק מ-URI של קישור עמוק. הפונקציה תומכת גם בערך השלם הגולמי וגם בערכים הקסדצימליים עם הקידומת 0x. (#127, b/179166693)
  • הפונקציה android:defaultValue של ארגומנט עם app:argType="float" תומכת עכשיו בערכי ברירת מחדל של מספרים שלמים, כך שאפשר להשתמש ב-android:defaultValue="0" במקום ב-0.0. (#117, b/173766247)

תיקוני באגים

  • תיקון התקדמות התקנה תקועה כשמשתמשים בתמיכה של Navigation בתכונות דינמיות. (Ib27a7, ‏ b/169636207)
  • התקשרות אל setViewModelStore או אל setLifecycleOwner עם אותו אובייקט שכבר הוגדר תהיה עכשיו פעולה ללא תוצאה (Idf491, ‏ b/177825470)
  • הספרייה Safe-Args מוסיפה עכשיו הערות suppress לשיטות המתאימות כשמשתמשים ב-Java. ‫(I8fbc5, b/179463137)

פריטי תוכן שהוספת

  • תודה JvmName על בקשת המיזוג. עכשיו אפשר לנתח את הארגומנטים של ReferenceType בצורה תקינה כשהם נשלחים כחלק ממזהה URI של קישור עומק. (#127, b/179166693)
  • תודה tatocaster על בקשת המיזוג שמאפשרת ל-defaultValue עבור ארגומנט עם app:argType=”float” לתמוך עכשיו בערכי ברירת מחדל של מספרים שלמים. (#117, b/173766247)

גרסה 2.3.3

גרסה 2.3.3

‫27 בינואר 2021

androidx.navigation:navigation-*:2.3.3 מופץ. גרסה 2.3.3 מכילה את השמירות האלה.

תיקוני באגים

  • אין יותר קריסה כשפותחים חלון קופץ של NavBackStackEntry לפני ש-Lifecycle שלו מועבר אל CREATED. (Ie3ba3)
  • תוקנה רגרסיה שנגרמה בגלל b/171364502, שבה ניווט לפעילות עם ערך משאב אנימציה של 0 גרם ל-ResourceNotFoundException. (I7aedb, ‏ b/176819931)

גרסה 2.3.2

גרסה 2.3.2

‫2 בדצמבר 2020

androidx.navigation:navigation-*:2.3.2 מופץ. גרסה 2.3.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה ב-NavigationUI שבה ניסיון להשתמש ביעד <activity> עם onNavDestinationSelected נכשל בניסיון לנווט אל הפעילות. (I22e34, b/171364502)
  • תוקנה בעיה שבה לחיצה על navigation-dynamic-features-fragment הייתה גורמת למעבר ליעד שהותקן לאחרונה מספר פעמים. (aosp/1486056, b/169636207)
  • תוקנה הבעיה שבה ארגומנטים שמוגדרים כברירת מחדל לא נשלחו למופעים של OnDestinationChangedListener כשנעשה שימוש ב-launchSingleTop. (I2c5cb)
  • תוקנה בעיה שבה ניווט לתרשים ניווט מקונן לא יצר מופע תרשים חדש במחסנית הקודמת. (Ifc831)
  • תוקנה הבעיה שבה שימוש ב-navigate() עם popUpTo שהסיר את היעד האחרון בתרשים ניווט לא גרם להרס מיידי של תרשים הניווט עצמו ולהסרה שלו ממחסנית החזרה. (I910a3)
  • ‫Navigation SafeArgs משתמש עכשיו ב-KotlinPoet בגרסה 1.7.2, שמוסיפה תמיכה במצב API מפורש של Kotlin. (I918b5)
  • NavHostFragment.findNavController(Fragment) בודק עכשיו גם את תצוגת העיצוב של רכיב DialogFragment, בנוסף לבדיקות הקיימות של היררכיית Fragment והיררכיית התצוגה של Fragment. כך תוכלו לבדוק קטעי דיאלוג שמשתמשים ב-Navigation עם FragmentScenario ו-Navigation.setViewNavController(). (I69e0d)

גרסה 2.3.1

גרסה 2.3.1

‫14 באוקטובר 2020

androidx.navigation:navigation-*:2.3.1 מופץ. גרסה 2.3.1 מכילה את השמירות האלה.

תכונות חדשות

  • משאבי ברירת המחדל של Animator נוספו לממשק המשתמש של Navigation, ומומלץ להשתמש בהם במקום במשאבי האנימציה שמוגדרים כברירת מחדל. (b/167430145)
  • ‫NavOptions מחליף עכשיו את השיטות hashcode ו-equals (b/161586466)
  • הניווט כולל עכשיו את היעד הנוכחי ב-IllegalArgumentException 'אין יעד עם מזהה', מה שאמור לשפר את חוויית הניפוי באגים של המפתחים. (b/168311416)

תיקוני באגים

  • התוסף Safe Args לא יכלול יותר את השורה של ההחזרה, גם אם שם מחלקת הארגומנט שנוצר ארוך מ-100 תווים. (b/168584987)

שינויים בתלות

  • navigation-ui תלוי עכשיו ב-DrawerLayout 1.1.1, וכך NavigationUI יכול לפתוח את חלונית ההזזה גם כשמשתמשים ב-LOCK_MODE_LOCKED_CLOSED או ב-LOCK_MODE_LOCKED_OPEN. (b/162253907)
  • ‫Safe Args תלוי עכשיו ב-KotlinPoet 1.6.0‏ (aosp/1435911)
  • ‫Safe Args תלוי עכשיו ב-AGP 4.0.1 ‏ (aosp/1442337)

גרסה 2.3.0

גרסה 2.3.0

‫24 ביוני 2020

androidx.navigation:navigation-*:2.3.0 מופץ. גרסה 2.3.0 מכילה את השמירות האלה.

שינויים משמעותיים מאז גרסה 2.2.0

  • שילוב של מודול תכונות: ארטיפקטים של navigation-dynamic-features-runtime ו-navigation-dynamic-features-fragment מאפשרים לנווט ליעדים שמוגדרים במודולים של תכונות, ומטפלים אוטומטית בהתקנה של מודולים של תכונות לפי הצורך. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות.
  • בדיקת ניווט: ארטיפקט navigation-testing מספק TestNavHostController שמאפשר להגדיר את היעד הנוכחי ולאמת את מחסנית החזרה אחרי פעולות ניווט. מידע נוסף מופיע במאמר בנושא בדיקת הניווט.
  • החזרת תוצאה: האובייקט NavBackStackEntry שמשויך לכל יעד במחסנית הקודמת של הניווט מאפשר עכשיו גישה אל SavedStateHandle שמתאים לאחסון כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במחסנית הקודמת. מידע נוסף זמין במאמר החזרת תוצאה ליעד הקודם.
  • תמיכה ב-NavigationUI Openable: כל השימושים ב-DrawerLayout ב-NavigationUI הוחלפו בממשק הגנרי יותר Openable שנוסף ב-CustomView 1.1.0 ומיושם על ידי DrawerLayout ב-DrawerLayout 1.1.0.
  • תמיכה בפעולה ובסוג MIME בקישורי עומק: הרחבנו את התמיכה בקישורי עומק כך שתכלול את app:action ו-app:mimeType בנוסף ל-app:uri שהיה זמין קודם. ‫NavController תומך עכשיו בניווט באמצעות כל שילוב של השדות האלה דרך המחלקה החדשה NavDeepLinkRequest. מידע נוסף מופיע במאמר בנושא ניווט באמצעות NavDeepLinkRequest.

בעיות מוכרות

  • התמיכה בפעולות של קישורי עומק ובסוגי MIME עדיין לא זמינה ב-Manifest Merger. עד שהעבודה הזו תושלם, כל <intent-filter> אלמנט שנוצר<nav-graph> מהאלמנט <nav-graph> במניפסט לא יכלול את סוג ה-MIME באלמנט <data> או את <action> המותאם אישית. צריך להוסיף באופן ידני <intent-filter> מתאים למניפסט.

גרסה ‎2.3.0-rc01

‫10 ביוני 2020

androidx.navigation:navigation-*:2.3.0-rc01 מופץ. גרסה ‎2.3.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שקרתה כשמחליפים מופע של יעד ללא ארגומנטים במופע אחר עם ארגומנטים באמצעות singleTop.NullPointerException (b/158006669)
  • לכל destination is unknown החריגים שמוחזרים על ידי NavController יש עכשיו מידע נוסף לניפוי באגים, שיעזור לקבוע את המצב של NavController. (b/157764916)

גרסה ‎2.3.0-beta01

20 במאי 2020

androidx.navigation:navigation-*:2.3.0-beta01 מופצים. גרסה ‎2.3.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה Lifecycle של NavBackStackEntry לא עודכן כראוי אחרי שהתהליך הסתיים. (b/155218371)
  • OnDestinationChangedListener instances שנרשמו לפני הקריאה ל-setGraph() נשלחות עכשיו כמו שצריך ליעד המשוחזר אחרי סיום התהליך. (b/155218371)
  • כשמשתמשים ב-singleTop, הארגומנטים של NavBackStackEntry מתעדכנים עכשיו בצורה נכונה, והארגומנטים המעודכנים נשלחים לכל המופעים של OnDestinationChangeListener. (b/156545508)

עדכונים של תלות

גרסה ‎2.3.0-alpha06

29 באפריל 2020

androidx.navigation:navigation-*:2.3.0-alpha06 מופץ. (גרסה ‎2.3.0-alpha06 מכילה את השמירות האלה).

תכונות חדשות

  • הרחבנו את התמיכה בקישורי עומק ל-app:action ול-app:mimeType, בנוסף ל-app:uri שהיה זמין קודם. המחלקות החדשות NavDeepLinkRequest מאפשרות ל-NavController לתמוך בניווט בכל שילוב של השדות האלה. (b/136573074, b/135334841)

שינויים ב-API

  • הרחבנו מאוד את התמיכה ב-Kotlin DSL ליעדי ניווט דינמיים. (b/148969800)

תיקוני באגים

  • תוקנה הבעיה שבה מערכת התעלמה מ-Intents של קישורי עומק כשנעשה שימוש ביעד התחלה מוטמע. (b/154532067)

גרסה ‎2.3.0-alpha05

15 באפריל 2020

androidx.navigation:navigation-*:2.3.0-alpha05 מופץ. גרסה ‎2.3.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • בגרפים דינמיים שכוללים שימוש ב-<include-dynamic>, כבר לא צריך לציין את app:graphPackage, והמערכת תשתמש בברירת מחדל על ידי הוספת הסיומת moduleName ל-applicationId אחרי נקודה. אם אתם צריכים להתאים אישית את graphPackage, אפשר להשתמש עכשיו ב-placeholder של ${applicationId}. (b/152696768)
  • ‫Kotlin DSL של Navigation Graph חושף עכשיו defaultArguments Map לפעולות, ומשקף את היכולת להגדיר ערכי ברירת מחדל באלמנטים <action> בקובצי XML של Navigation. (b/150345605)

תיקוני באגים

  • Navigation 2.2.2: תוקן IllegalStateException כשמבצעים קישור עומק ליעד ההתחלתי של הגרף כשקיימים כמה מופעים של NavHostFragment בפעילות. (b/147378752)

עדכונים של תלות

גרסה ‎2.3.0-alpha04

‫18 במרץ 2020

androidx.navigation:navigation-*:2.3.0-alpha04 מופץ. גרסה ‎2.3.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו תמיכה בפעילות של מודול תכונות ובמקטעי יעד ב-Navigation Kotlin DSL. (b/148969800)

שינויים ב-API

  • המחלקות DynamicExtras כבר לא משתמשות בתבנית builder, ועכשיו אפשר ליצור אותן ישירות. (aosp/1253671)
  • DynamicActivityNavigator מקבל עכשיו Context ב-constructor שלו במקום Activity. (aosp/1250252)

תיקוני באגים

  • NavigationUI כבר לא מתעלם מתוויות ריקות (כלומר, יעד עם android:label=””) ועכשיו מגדיר את הכותרת כמחרוזת ריקה. (b/148679860)

עדכונים של תלות

  • הארטיפקטים של תכונות דינמיות לניווט מסתמכים עכשיו על Play Core 1.6.5. (b/149556401)

גרסה ‎2.3.0-alpha03

4 במרץ 2020

androidx.navigation:navigation-*:2.3.0-alpha03 מופץ. גרסה ‎2.3.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • במקום להסתמך על המחלקה הקונקרטית DrawerLayout,‏ AppBarConfiguration משתמש עכשיו בממשק Openable שהוצג ב-CustomView 1.1.0-alpha02 (ש-DrawerLayout מטמיע החל מ-DrawerLayout 1.1.0-alpha04), וכך מאפשר לכם להשתמש בהטמעות מותאמות אישית של Openable עם NavigationUI. (b/129030452)

תיקוני באגים

  • כללי navigation-common-ktx ProGuard שומרים עכשיו רק את המחלקות NavArgs שנעשה בהן שימוש, ולא את כל המופעים NavArgs. (b/150213558)

שינויים בתלות

  • התלות של Navigation ב-Core 1.2.0 בוטלה, ועכשיו היא תלויה ב-Core 1.1.0. זאת כדי שלא לחייב מפתחים לעבור לתלות חדשה יותר אם Navigation לא תלוי באף ממשק API חדש ב-Core 1.2.0.

גרסה ‎2.3.0-alpha02

‫19 בפברואר 2020

androidx.navigation:navigation-*:2.3.0-alpha02 מופץ. גרסה ‎2.3.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • ה-NavBackStackEntry מאפשר עכשיו גישה אל SavedStateHandle שמתאים לאחסון של כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במחסנית החזרה. במאמר החזרת תוצאה מופיע תרחיש לדוגמה. (b/79672220)

שינויים ב-API

  • נוספו שיטות נוחות של getCurrentBackStackEntry() ושל getPreviousBackStackEntry() כדי להקל על אחזור של NavBackStackEntry ליעדים הנוכחיים והקודמים. (b/79672220)

תיקוני באגים

  • navigateUp() מעביר עכשיו את הארגומנטים של היעד הנוכחי ואת KEY_DEEP_LINK_INTENT ליעד הקודם כשמפעילים את האפליקציה במצבור המשימות שלכם. (b/147456890)

שינויים בתלות

גרסה ‎2.3.0-alpha01

‫5 בפברואר 2020

androidx.navigation:navigation-*:2.3.0-alpha01 מופץ. גרסה ‎2.3.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • ארטיפקט navigation-testing החדש מספק מחלקה TestNavHostController. המחלקות האלה מספקות חלופה לשימוש ב-mock‏ NavController כשבודקים ניווט, ומאפשרות להגדיר את היעד הנוכחי ולאמת את מחסנית החזרה אחרי פעולות ניווט. (b/140884273)
  • הספרייה החדשה navigation-dynamic-features-fragment (והתלות הטרנזיטיבית שלה, navigation-dynamic-features-runtime) מאפשרת לכם לכלול יעדים או גרפים שלמים של ניווט (באמצעות <include-dynamic>) ממודולים של תכונות, וכך להתקין בצורה חלקה מודולים של תכונות לפי דרישה כשמנווטים ליעדים האלה. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות. (b/132170186)

תיקוני באגים

  • מתוך ניווט 2.2.1: קישורי עומק ללא פרמטרים של שאילתה מתעלמים עכשיו מפרמטרים של שאילתה, במקום לצרף אותם לרכיבי {argument} בסוף או לא להתאים לקישור העומק. (b/147447512)
  • מתוך Navigation 2.2.1: The navigation-ui ProGuard rules for DrawerArrowDrawable have been updated to ensure that android.enableJetifier=true is not required. (b/147610424)
  • מתוך Navigation 2.2.1: למודול navigation-common-ktx יש עכשיו שם חבילה ייחודי במניפסט, במקום לחלוק את אותו שם חבילה במניפסט עם navigation-runtime-ktx. (aosp/1141947)

עדכונים של תלות

גרסה 2.2.2

גרסה 2.2.2

15 באפריל 2020

androidx.navigation:navigation-*:2.2.2 מופצים. גרסה 2.2.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג IllegalStateException שקשור לקישורי עומק ליעד ההתחלה של הגרף כשיש כמה מופעים של NavHostFragment בפעילות. (b/147378752)
  • NavigationUI כבר לא מתעלם מתוויות ריקות (כלומר, יעד עם android:label=””) ועכשיו מגדיר את הכותרת כמחרוזת ריקה. הגרסה הזו פורסמה בעבר ב-Navigation 2.3.0-alpha04. (b/148679860)
  • כללי navigation-common-ktx ProGuard שומרים עכשיו רק את המחלקות NavArgs שנעשה בהן שימוש, ולא את כל המופעים NavArgs. הגרסה הזו פורסמה בעבר ב-Navigation 2.3.0-alpha03. (b/150213558

עדכונים של תלות

גרסה 2.2.1

גרסה 2.2.1

‫5 בפברואר 2020

androidx.navigation:navigation-*:2.2.1 מופץ. גרסה 2.2.1 מכילה את השמירות האלה.

תיקוני באגים

  • קישורי עומק ללא פרמטרים של שאילתה מתעלמים עכשיו מפרמטרים של שאילתה, במקום לצרף אותם לרכיבי {argument} או לא להתאים לקישור העומק. (b/147447512)
  • הכללים של navigation-ui ProGuard עבור DrawerArrowDrawable עודכנו כדי לוודא שandroid.enableJetifier=true לא נדרש. (b/147610424)
  • למודול navigation-common-ktx יש עכשיו שם חבילה ייחודי במניפסט, במקום לחלוק את אותו שם חבילה במניפסט עם navigation-runtime-ktx. (aosp/1141947)

עדכונים של תלות

גרסה 2.2.0

גרסה 2.2.0

‫22 בינואר 2020

androidx.navigation:navigation-*:2.2.0 מופץ. גרסה 2.2.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 2.1.0

  • NavBackStackEntry: עכשיו אפשר לקרוא ל-NavController.getBackStackEntry() ולהעביר את המזהה של יעד או של תרשים ניווט במחסנית הקודמת. הערך שמוחזר NavBackStackEntry מספק LifecycleOwner מונחה-ניווט, ViewModelStoreOwner (זהה לערך שמוחזר על ידי NavController.getViewModelStoreOwner()) וSavedStateRegistryOwner, בנוסף לארגומנטים ששימשו להפעלת היעד הזה.
  • שילוב של Lifecycle ViewModel SavedState: SavedStateViewModelFactory הוא עכשיו המפעל שמשמש כברירת מחדל כשמשתמשים ב-by navGraphViewModels() או בבונה ViewModelProvider עם ViewModelStoreOwner שמוחזר על ידי NavController.getBackStackEntry() או NavController.getViewModelStoreOwner().
  • תמיכה בפרמטרים של שאילתות לקישורי עומק: קישורי עומק עם פרמטרים של שאילתות תומכים עכשיו בפרמטרים של שאילתות שסודרו מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שהם ניתנים לביטול הם עכשיו אופציונליים כשמבצעים התאמה לקישורי עומק.
  • שיפור התמיכה באנימציות: מעכשיו, NavHostFragment משתמש ב-FragmentContainerView מ-Fragment 1.2.0, כדי לפתור בעיות בסדר האנימציות (z-ordering) ולשלוח את שולי החלון (window insets) ל-Fragments.

גרסה ‎2.2.0-rc04

‫18 בדצמבר 2019

androidx.navigation:navigation-*:2.2.0-rc04 מופץ. גרסה ‎2.2.0-rc04 מכילה את השמירות האלה.

תיקוני באגים

  • התאמנו את אנימציות המעבר המוגדרות כברירת מחדל שמשמשות את navigation-ui כך שיתאימו לאנימציות המעבר המותאמות ב-Fragment 1.2.0-rc04. (b/145769814)

גרסה ‎2.2.0-rc03

4 בדצמבר 2019

androidx.navigation:navigation-*:2.2.0-rc03 מופץ. גרסה ‎2.2.0-rc03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה בניתוח של קישור עמוק כשמשתמשים בפרמטרים של שאילתה ובארגומנט כחלק האחרון של הנתיב, שגרמה לכך שלא ניתן היה לנתח יותר מתו אחד של הארגומנט הסופי של הנתיב. (b/144554689)
  • תוקנה בעיה בניתוח של קישורי עומק שבה פרמטרים אופציונליים קיבלו את הערך "@null" במקום null. (b/141613546)
  • NavHostFragment עכשיו משחזר את הגרף בצורה נכונה אחרי שינוי בהגדרות, כשמשתמשים בו עם FragmentContainerView. (b/143752103)

שינויים בתלות

  • הניווט תלוי עכשיו ב-Lifecycle 2.2.0-rc03, ב-Lifecycle ViewModel SavedState 1.0.0-rc03, ב-Activity 1.1.0-rc03 וב-Fragment 1.2.0-rc03, במקומות המתאימים.

גרסה ‎2.2.0-rc02

‫7 בנובמבר 2019

androidx.navigation:navigation-*:2.2.0-rc02 מופץ. גרסה ‎2.2.0-rc02 מכילה את השמירות האלה.

שינויים בתלות

  • הניווט תלוי עכשיו ב-androidx.lifecycle 2.2.0-rc02.

גרסה ‎2.2.0-rc01

‫23 באוקטובר 2019

הגרסה androidx.navigation:navigation-*:2.2.0-rc01 הופצה ללא שינויים מאז 2.2.0-beta01. גרסה ‎2.2.0-rc01 מכילה את השמירות האלה.

גרסה ‎2.2.0-beta01

‫9 באוקטובר 2019

androidx.navigation:navigation-*:2.2.0-beta01 מופץ. גרסה ‎2.2.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • NavDestination ותתי המחלקות שלו מחליפים עכשיו את toString() כדי לספק מידע מועיל יותר במהלך ניפוי הבאגים. (b/141264986)

שינויים בהתנהגות

  • עכשיו המערכת מתעלמת מפרמטרים נוספים של שאילתה כשמתאימים קישורי עומק, במקום לגרום לכשל בהתאמה. (b/141482822)

תיקוני באגים

  • נפתרה בעיה שגרמה להתעלמות מארגומנטים בנתיב של קישור עומק אם צוינו גם פרמטרים של שאילתה. (b/141505755)
  • הודעת השגיאה בתוסף navArgs() Kotlin ב-Activity משופרת עכשיו, אם אין תוספים. (b/141408999)
  • מחלקות Java שנוצרו על ידי Safe Args מכילות עכשיו ערכי ברירת מחדל.Directions (b/141099045)
  • מחלקות Java שנוצרו על ידי Safe Args מכילות עכשיו ערכי ברירת מחדל.Args (b/140123727)
  • כשמשתמשים ב-Toolbar, NavigationUI כבר לא מפעיל אנימציה לשינוי הטקסט כשעוברים בין שני יעדים ברמה העליונה. (b/140848160)

גרסה ‎2.2.0-alpha03

‫18 בספטמבר 2019

androidx.navigation:navigation-*:2.2.0-alpha03 מופץ. גרסה ‎2.2.0-alpha03 מכילה את השמירות האלה.

שינויים בהתנהגות

  • חיוג אל setViewModelStore() אחרי חיוג אל setGraph מוביל עכשיו לIllegalStateException. ההגדרה הזו צריכה להתבצע תמיד על ידי NavHost כחלק מההגדרה הראשונית, כדי להבטיח שלכל המופעים של NavBackStackEntry יהיה אחסון עקבי למופעים של ViewModel. (aosp/1111821)

תיקוני באגים

  • תוקנה בעיה ConcurrentModificationException כשמשתמשים במכונות ViewModel שמצורפות לכמה מכונות ViewModelStore שונות עם היקף של תרשים ניווט. (aosp/1112257)

גרסה ‎2.2.0-alpha02

5 בספטמבר 2019

androidx.navigation:navigation-*:2.2.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • קישורי עומק עם פרמטרים של שאילתה תומכים עכשיו בפרמטרים של שאילתה שסודרו מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שהם יכולים להיות null הם עכשיו אופציונליים כשמבצעים התאמה של קישורי עומק. (b/133273839)
  • עכשיו אפשר להתקשר אל NavController.getBackStackEntry() ולהעביר את המזהה של יעד או של גרף ניווט במחסנית האחורית. הערך שמוחזר NavBackStackEntry מספק LifecycleOwner מונחה-ניווט, ViewModelStoreOwner (זהה לערך שמוחזר על ידי NavController.getViewModelStoreOwner()) וSavedStateRegistryOwner, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. (aosp/1101691, aosp/1101710)

תיקוני באגים

  • תוקנה בעיה שבה הוספה של NavHostFragment אל ViewPager2 נכשלה עם IllegalArgumentException. (b/133640271)
  • NavInflater עכשיו לא קורא ל-getResourceName() שלא לצורך, וכך מקצר את זמן הניפוח בעד 40%. (b/139213740)

גרסה ‎2.2.0-alpha01

‫7 באוגוסט 2019

androidx.navigation:navigation-*:2.2.0-alpha01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • SavedStateViewModelFactory היא עכשיו ברירת המחדל של המפעל שמשמש כשמשתמשים ב-by navGraphViewModels() או ב-constructor של ViewModelProvider עם ViewModelStoreOwner שמוחזר על ידי NavController.getViewModelStoreOwner(). (b/135716331)

שינויים ב-API

תיקוני באגים

  • NavHostFragment משתמש עכשיו ב-FragmentContainerView, וכך פותר בעיות של אנימציה בסדר Z ושליחת חלונות ל-Fragments. (b/137310379)

גרסה 2.1.0

גרסה 2.1.0

5 בספטמבר 2019

androidx.navigation:navigation-*:2.1.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים חשובים מאז גרסה 2.0.0

  • הגדרת היקף של ViewModels לתרשים ניווט: עכשיו אפשר ליצור ViewModels שההיקף שלהם מוגדר ברמת תרשים הניווט באמצעות נציג המאפיין by navGraphViewModels() למשתמשי Kotlin שמשתמשים בספריות -ktx, או באמצעות ה-API‏ getViewModelStoreOwner() שנוסף ל-NavController. מידע נוסף זמין במאמר בנושא שיתוף נתונים שקשורים לממשק המשתמש בין יעדים.
  • יעדים לתיבת דו-שיח: עכשיו אפשר ליצור <dialog> יעדים שיוצג בהם DialogFragment כשnavigate אליהם. NavHostFragment תומך ביעדים של תיבות דו-שיח כברירת מחדל. מידע נוסף זמין במאמר יצירת יעד מ-DialogFragment.
  • ניווט באמצעות URI: עכשיו אפשר navigate באמצעות Uri, שמשתמש ב<deepLink> שהוספתם ליעד כדי לנווט אליו. מידע נוסף מופיע במאמר בנושא ניווט באמצעות URI.
  • NavHostController: ממשקי ה-API שמשמשים ליצירת NavHost בהתאמה אישית הועברו אל NavHostController, וכך אפשר להטמיע חיבור של NavController אל המארח LifecycleOwner,‏ OnBackPressedDispatcher ו-ViewModelStore.

גרסה ‎2.1.0-rc01

‫7 באוגוסט 2019

androidx.navigation:navigation-*:2.1.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים ב-API

  • הסרנו את ממשק ה-API ‏getViewModelStore() שהוצא משימוש ב-NavController, שהושק ב-2.1.0-alpha02. (aosp/1091021)

גרסה ‎2.1.0-beta02

‫19 ביולי 2019

androidx.navigation:*:2.1.0-beta02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • הוסרה תלות לא מכוונת ב-jacoco שהתווספה ב-2.1.0-beta01. (b/137782950)

גרסה ‎2.1.0-beta01

‫17 ביולי 2019

androidx.navigation:*:2.1.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • כשמשתמשים ב-NavigationUI עם Toolbar או CollapsingToolbarLayout, עכשיו יש אנימציה להסרה של הלחצן 'למעלה' ב-NavigationUI.setupWithNavController() (b/131403621)

תיקוני באגים

  • תוקנה בעיה בתזמון כשמשתמשים בכמה רכיבי NavHostFragment עם אותו מאגר באמצעות findNavController(). (b/136021571)

גרסה ‎2.1.0-alpha06

‫2 ביולי 2019

androidx.navigation:*:2.1.0-alpha06 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • המאפיין app:navGraph שבו נעשה שימוש ב-NavHostFragment הועבר עכשיו אל ארטיפקט navigation-runtime. כדי להוסיף רכיבי ניווט מותאמים אישית באמצעות XML, צריך להשתמש במאפיין הזה כדי לשלב אותם בחלונית Host (מארח) בכלי לעריכת ניווט. (b/133880955)

שינויים ב-API

  • הוצאנו משימוש את getViewModelStore() API ב-NavController, ועכשיו אפשר להשתמש בשיטה החדשה getViewModelStoreOwner() שמחזירה ViewModelStoreOwner. (aosp/987010)
  • ההטמעה של יעדים בחלון צף, כמו יעדי <dialog>, עברה הכללה לממשק סמן, FloatingWindow, שכל יעדי <dialog> מטמיעים עכשיו. השיטות של NavigationUI לאינטראקציה עם סרגל האפליקציות העליון מתעלמות עכשיו מיעדי FloatingWindow. (b/133600763)

שינויים בהתנהגות

  • הניווט שומר עכשיו את המצב שלו בסנכרון עם מה שמוצג במסך כשמשתמשים ביעד <dialog>. כתוצאה מכך, עכשיו כשמנווטים ליעד שלא מופיע בתיבת דו-שיח ושאינו פעילות, כמו יעד <fragment>, מופיע אוטומטית חלון קופץ עם היעד ב'ניווט'.<dialog> (b/134089818)

תיקוני באגים

  • הניווט מדכא עכשיו את האנימציה שמתרחשת כשיוצרים מחדש את הפעילות בזמן טיפול בקישור עומק, וכך נמנעת הבהוב ויזואלי. (b/130362979)
  • תוקן באג שגרם לכך שמחסנית הניווט לא הייתה מסונכרנת כשמבטלים את ההוספה של Fragment בתור ה-Fragment הראשוני. (b/133832218)

גרסה ‎2.1.0-alpha05

‫5 ביוני 2019

androidx.navigation:*:2.1.0-alpha05 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים ב-API

  • ממשקי API שקשורים למארח ב-NavController קיבלו שם חדש והועברו למחלקה משנית חדשה של NavController, ‏ NavHostController. (aosp/966091)
  • השיטה NavController setHostOnBackPressedDispatcherOwner() הוחלפה בשיטה setOnBackPressedDispatcher() של NavHostController, ועכשיו צריך להפעיל את השיטה setLifecycleOwner() לפני שמפעילים אותה. (aosp/965409)
  • NavHostController מכיל עכשיו את השיטה enableOnBackPressed(boolean) שמחליפה את המחלקה NavHostOnBackPressedManager שהוחזרה קודם על ידי setHostOnBackPressedDispatcherOwner(). (aosp/966091)

תיקוני באגים

  • תוקנה בעיה שבה מחסנית החזרה לא הייתה נכונה אחרי ניווט באמצעות URI. (b/132509387)
  • קישורי עומק שמטופלים אוטומטית על ידי NavController מופעלים עכשיו רק פעם אחת. (b/132754763)

גרסה ‎2.1.0-alpha04

‫16 במאי 2019

androidx.navigation:*:2.1.0-alpha04 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

גרסה ‎2.1.0-alpha03

‫7 במאי 2019

androidx.navigation:*:2.1.0-alpha03 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

בעיות מוכרות

  • ‫NavHostFragment ממשיך ליירט את לחצן 'הקודם' במערכת למרות השימוש ב-app:defaultNavHost="false" b/132077777

תכונות חדשות

  • עכשיו אפשר ליצור יעדים של <dialog> שיוצג בהם DialogFragment כשnavigate אליהם. ‫NavHostFragment תומך ביעדים של תיבות דו-שיח כברירת מחדל. b/80267254
  • בנוסף לקריאה לפונקציה navigate עם מזהה משאב או מופע NavDirections, עכשיו אפשר לנווט באמצעות Uri, שמשתמש ב-<deepLink> שהוספתם ליעד כדי לנווט ליעד הנכון. b/110412864

שינויים בהתנהגות

  • האנימציות שמוגדרות כברירת מחדל ב-NavigationUI הואצו מ-400ms ל-220ms כדי להתאים למהירות האנימציה שמוגדרת כברירת מחדל בפעילויות ובקטעים. b/130055522

שינויים ב-API

  • השיטה createFragmentNavigator() של NavHostFragment הוצאה משימוש, והפונקציונליות שלה הועברה לשיטה החדשה onCreateNavController() כדי להבהיר שזו נקודת הכניסה הנכונה להוספת רכיבי ניווט בהתאמה אישית כשיוצרים מחלקת משנה של NavHostFragment. b/122802849
  • נוספה שיטת hasDeepLink() ל-NavDestination כדי לאפשר לכם לבדוק אם אפשר לטפל ב-Uri נתון ביעד הזה, או במקרה של NavGraph, בכל יעד בתרשים הניווט. b/117437718

תיקוני באגים

  • ארגומנטים שמוגדרים כברירת מחדל מועברים עכשיו בצורה תקינה למופעים של OnDestinationChangedListener. b/130630686
  • NavHostFragment מיירטת עכשיו אירועי חזרה של המערכת באמצעות OnBackPressedDispatcher, וכך פותרת בעיה שמתרחשת כשמבצעים ניווט מותנה בשיטות מחזור החיים של Fragment כשחוזרים אל Fragment. b/111598096
  • ב-Safe Args, ארגומנט android:defaultValue=”@null” עם app:argType לא מוגדר מוסק עכשיו בצורה נכונה כארגומנט string. b/129629192

גרסה ‎2.1.0-alpha02

‫3 באפריל 2019

androidx.navigation:*:2.1.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • מעכשיו אפשר ליצור ViewModels בהיקף של גרף ניווט באמצעות נציג המאפיין by navGraphViewModels() למשתמשי Kotlin או באמצעות ה-API‏ getViewModelStore() שנוסף ל-NavController. b/111614463

שינויים ב-API

  • עכשיו אפשר להוסיף app:targetPackage ליעד <activity> כדי להגביל את שם החבילה התואם. הוא תומך ב-app:targetPackage="${applicationId}" כדי להגביל את החבילה למזהה האפליקציה שלכם. b/110975456

תיקוני באגים

  • ה-android:name של יעדי <activity> כבר לא מנותח ל-Class בזמן הניפוח, וכך נמנעות שגיאות ClassNotFoundException כשמשתמשים בתכונות דינמיות. b/124538597

גרסה ‎2.1.0-alpha01

‫19 במרץ 2019

זו גרסת האלפא הראשונה של Navigation 2.1.0.

שינויים בתלות

  • הניווט תלוי עכשיו ב-androidx.core:core:1.0.1 וב-androidx.fragment:fragment:1.1.0-alpha05. בגרסה הזו הוסרה גם התלות ב-androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

שינויים ב-API

  • נוספה שיטה חדשה Navigation.createNavigateOnClickListener(NavDirections) כחלופה ליצירת מאזין קליקים עם מזהה משאב וחבילה. b/127631752
  • המאפיין FragmentNavigator.instantiateFragment הוצא משימוש. ההטמעה שמוגדרת כברירת מחדל משתמשת עכשיו ב-FragmentFactory כדי ליצור מופעים של Fragments. b/119054429

תיקוני באגים

  • הניווט לא שולח יותר ערך null‏ Bundle כשיש ארגומנטים שמצורפים ליעד, וכך נפתרה בעיה בשימוש ב-android:defaultValue="@null". b/128531879
  • הספרייה Safe Args תלויה עכשיו ב-KotlinPoet 1.1.0, וזה פותר בעיה שקשורה לשמות חבילות ארוכים במיוחד. b/123654948

גרסה 2.0.0

גרסה 2.0.0

‫14 במרץ 2019

הניווט 2.0.0 יוצא ללא שינויים מהגרסה 2.0.0-rc02.

גרסה 2.0.0-rc02

‫6 במרץ 2019

‫Navigation 2.0.0-rc02 מספקת ארטיפקטים חדשים עם מזהה הקבוצה androidx.navigation, ומשנה את התלות שלה למקבילות של AndroidX.

ההתנהגות של גרסה 2.0.0-rc02 זהה להתנהגות של Navigation 1.0.0-rc02, ולא צריך לבצע שינויים בקוד כדי לעדכן מגרסה 1.0.0-rc02, מלבד עדכון התלויות כך שיתאימו לתלויות החדשות.

כדי להשתמש בגרסאות 2.X של Navigation, צריך להעביר את הפרויקט ל-AndroidX. ‫Navigation 1.0 stable תהיה הגרסה האחרונה שמשתמשת בתלות של Support Library. כל הפיתוחים העתידיים מעבר לגרסה 1.0 יתבססו על AndroidX ועל גרסה 2.0 stable.

תלויות ב-Pre-AndroidX

בגרסאות של Navigation לפני AndroidX, צריך לכלול את יחסי התלות הבאים:

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
}

בקטע Safe args, מוסיפים את classpath הבא בקובץ build.gradle ברמה העליונה

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

גרסה 1.0.0

גרסה 1.0.0

‫14 במרץ 2019

הניווט 1.0.0 יוצא ללא שינויים מהגרסה 1.0.0-rc02.

גרסה ‎1.0.0-rc02

‫26 בפברואר 2019

זו הגרסה השנייה המועמדת להפצה של גרסה 1.0.0 היציבה של Navigation. הגרסה הזו כוללת מספר תיקוני באגים.

תיקוני באגים

  • תוקנה בעיה שבה המערכת התעלמה מהתג popBackStack() אם לגרף הבסיסי לא היה מזהה b/126251695
  • navigateUp() עכשיו יש טיפול נכון בניווט חזרה למשימה של האפליקציה כשמתבצעת קריאה אחרי טיפול בקישור עומק ללא FLAG_ACTIVITY_NEW_TASK b/126082008
  • תוקנה בעיה שבה לא הופעלה האנימציה הנכונה ליציאה מהחלון הקופץ ActivityNavigator.applyPopAnimationsToPendingTransition b/126237567
  • קוד Kotlin שנוצר על ידי Safe Args כולל עכשיו escape של מילות מפתח ב-Kotlin כמו in ו-fun בשם החבילה שמשויך למחלקה R.b/126020455

גרסה ‎1.0.0-rc01

21 בפברואר 2019

זוהי גרסה מועמדת להפצה של גרסה יציבה 1.0.0 של Navigation. הגרסה הזו כוללת תיקון באגים.

תיקוני באגים

  • תוקנה בעיה שקרתה כשמשתמשים ב-Fragments ובפעולות ניווט של singleTopb/124294805

גרסה ‎1.0.0-beta02

‫12 בפברואר 2019

הגרסה הזו כוללת מספר שיפורים קלים ותיקוני באגים חשובים.

תכונות חדשות

  • עכשיו אפשר להשתמש ב-0 כandroid:defaultValue לארגומנטים של reference. b/124248602

שינויים בהתנהגות

  • קישורי עומק שתואמים בדיוק מקבלים עכשיו עדיפות על פני קישורי עומק עם התאמות של .* או ארגומנטים. b/123969518

תיקוני באגים

  • הפונקציות popBackStack() ו-navigateUp מחזירות עכשיו את הערך false בצורה נכונה כשמוציאים את היעד האחרון ממחסנית החזרה, וכך מתקנים רגרסיה שהוצגה בגרסה 1.0.0-beta01. b/123933201
  • הניווט מגדיר עכשיו את ClassLoader בצורה נכונה במהלך השחזור של מצב מופע שנשמר, וכך נמנעות בעיות בשימוש במחלקות מותאמות אישית במצב שנשמר של Navigator או בארגומנטים שנשלחים אל NavDestination. b/123893858
  • הכיתות NavArgs שנוצרו על ידי Safe Args לא גורמות יותר לקריסה כשמשחזרים ארגומנט Parcelable[] ממצב מופע שנשמר. b/123963545
  • ‫Safe Args מנקה עכשיו כמו שצריך מחלקות Kotlin מיותרות שנוצרו. b/124120883

גרסה ‎1.0.0-beta01

4 בפברואר 2019

זוהי גרסת הבטא הראשונה של Navigation. מעכשיו, ה-API של Navigation צפוי להישאר יציב עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים ושינויים בהתנהגות.

שינויים בהתנהגות

  • הניווט מבטיח עכשיו שערכי ברירת המחדל של הארגומנטים יטופלו באופן זהה בזמן הריצה ובאמצעות Safe Args. כתוצאה מכך, רק לארגומנטים עם app:argType="reference" יכול להיות ערך ברירת מחדל שמפנה למשאב אחר (לדוגמה, @color/colorPrimary). ניסיון להשתמש בערך ברירת מחדל של הפניה עם app:argType שונה יוביל לחריגה בניתוח של ה-XML של הניווט. b/123551990
  • התלות של Safe Args היא עכשיו ב-Android Gradle Plugin 3.3.0 aosp/888413
  • ‫Safe Args תלוי עכשיו ב-Kotlin 1.3.20 aosp/888414

תיקוני באגים

  • מעכשיו אפשר להשתמש ב-Safe Args במודולים של ספריות ותכונות בכל הגרסאות של פלאגין Android Gradle. b/121304903
  • תוקנה רגרסיה שגרמה להוצאה של כל העותקים של יעד מסוים מראש מחסנית החזרה, במקום רק יעד אחד בכל פעם, במהלך פעולה אחת של popBackStack(). b/123552990
  • תוקנה בעיה שבה המצב של FragmentNavigator לא היה מסונכרן עם המצב של NavController, מה שגרם ל-IllegalStateException כשניסו לשחזר את היסטוריית הפעולות.b/123803044
  • תוקנה בעיה שבה החץ אחורה NavigationUI לא הופיע כשמשתמשים ב-ProGuard עם טשטוש. b/123449431
  • הקוד שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בשימוש ב-app:argType שמצביע על מחלקה פנימית סטטית בפורמט .OuterClass$InnerClass. b/123736741
  • קוד ה-Java שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בפעולות גלובליות וביעדים מוטמעים עמוק. b/123347762

גרסה ‎1.0.0-alpha11

‫23 בינואר 2019

זוהי גרסת תיקון חם של 1.0.0-alpha10 שמתקנת בעיה ב-Safe Args.

תיקוני באגים

  • תוקנה הבעיה שבה לא ניתן היה לייבא את המחלקה Directions שמשויכת לפעולות גלובליות באמצעות Safe Args. b/123307342

גרסה ‎1.0.0-alpha10

‫23 בינואר 2019

בעיות מוכרות

  • הייבוא של המחלקה Directions שמשויכת לפעולות כלליות נכשל ב-Safe Args. b/123307342

הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים שעלולים לגרום לכשל שבהמשך.

תכונות חדשות

  • משתמשי Kotlin יכולים עכשיו להשתמש בנציג המאפיין by navArgs() כדי לקבל באופן עצלני הפניה למחלקה NavArgs שנוצרה על ידי Safe Args ב-Activity או ב-Fragment. b/122603367
  • הספרייה Safe Args מאפשרת עכשיו ליצור קוד Kotlin באמצעות הפלאגין androidx.navigation.safeargs.kotlin. קוד Kotlin נוצר במיוחד למודולים של Kotlin בלבד, באמצעות ארגומנטים שמוגדרים כברירת מחדל ומחלקות שלא ניתן לשנות, במקום תבנית ה-builder שעדיין זמינה דרך הפלאגין הקודם androidx.navigation.safeargs.b/110263087

שינויים בהתנהגות

  • קישורי עומק תואמים מוטים עכשיו לטובת קישור העומק עם הכי הרבה ארגומנטים תואמים. b/118393029
  • מעכשיו, כשמתקשרים אל setGraph() בNavController, מחסנית החזרה מאופסת. b/111450672
  • קישורי עומק לא ידועים לא גורמים יותר לשגיאה IllegalStateException, אלא מתעלמים מהם. כך נפתרות בעיות שקשורות לקישורי עומק מוטמעים או מרובים מסוג NavHostFragment. b/121340440

שינויי תוכנה שעלולים לגרום לכשלים

  • השיטה NavOptions.applyPopAnimationsToPendingTransition() להחלת אנימציות קופצות על פעילות הועברה אל ActivityNavigator. b/122413117
  • הספרייה Safe Args לא משכפלת יותר מחלקות זהות לפעולות ללא ארגומנטים. סוג ההחזרה של שיטות ללא ארגומנטים במחלקות NavDirections שנוצרו הוא עכשיו NavDirections. b/123233147
  • למחלקות Directions שנוצרו על ידי Safe Args אין יותר בנאי ציבורי – צריך להשתמש רק בשיטות סטטיות שנוצרו. b/123031660
  • למחלקות NavDirections שנוצרו על ידי Safe Args אין יותר בנאי public – צריך ליצור אותן רק באמצעות השיטות הסטטיות במחלקות Directions שנוצרו. b/122963206
  • הערך Bundle שמוחזר מהערך NavDirections' getArguments() מסומן עכשיו כ-@NonNull ולא כ-@Nullable. b/123243957

תיקוני באגים

  • NavDeepLinkBuilder עכשיו המערכת מטפלת נכון בכמה PendingIntent בו-זמניים לאותו יעד, באמצעות הארגומנטים שמעבירים כדי לקבוע את הייחודיות.NavDeepLinkBuilderb/120042732
  • NavController מטפל עכשיו בצורה נכונה בפעולות popBackStack() כשמשתמשים ב-NavHostFragment מוטמע או ב-Fragments אחרים של צאצא עם מחסנית חזרה. ‫b/122770335
  • NavigationUI now correctly sets the content description of the Up button. b/120395362
  • מחלקות Directions שנוצרו על ידי Safe Args מטפלות עכשיו בצורה נכונה בפעולות גלובליות עם אותו מזהה כמו פעולה ביעד. b/122962504
  • מחלקות NavDirections שנוצרו על ידי Safe Args כוללות עכשיו ערכים שווים של hashCode() כש-equals() מחזירה true. b/123043662
  • FragmentNavigator מוצגת עכשיו הודעת שגיאה טובה יותר אם מנסים לבצע התאמה אישית של FragmentTransactions ב-NavHostFragment's FragmentManager. תמיד צריך להשתמש ב-getChildFragmentManager(). b/112927148

גרסה ‎1.0.0-alpha09

‫18 בדצמבר 2018

הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים שעלולים לגרום לכשל שבהמשך.

החלטנו שלא להמשיך בפיתוח של ארטיפקט android.arch.navigation:navigation-testing. התכונה הזו הוכחה כמועילה לבדיקות פנימיות של NavController, אבל אנחנו ממליצים מאוד להשתמש בשיטות בדיקה חלופיות, כמו יצירת מוקאפ של מופע NavController כדי לוודא שמתבצעות הקריאות הנכונות ל-navigate(). הגישה הזו מוסברת בפירוט בהרצאה בנושא Single Activity בכנס AndroidDevSummit 2018. אנחנו עובדים על תיעוד נוסף שמתמקד בבדיקות באמצעות Navigation.

תכונות חדשות

  • השימוש ב-MenuItem עם menuCategory="secondary" לא יציג יותר את היסטוריית הפעולות כשמשתמשים בשיטות NavigationUI. b/120104424
  • מעכשיו אפשר להגדיר ב-AppBarConfiguration מופע OnNavigateUpListener של חזרה למצב הקודם, שיופעל כש-navController.navigateUp() יחזיר false. b/79993862 b/120690961

שינויי תוכנה שעלולים לגרום לכשלים

  • כשמשתמשים ב-<argument> עם argType="reference", הניתוח של ההפניה כבר לא מתבצע על ידי Navigation, אלא מסופק מזהה המשאב הגולמי עצמו. b/111736515
  • onNavDestinationSelected() עכשיו, כברירת מחדל, חוזרים ליעד ההתחלה של גרף הניווט, כך שהם עקביים עם השיטות setup. כדי למנוע את הפעלת ה-back stack, צריך להוסיף את menuCategory="secondary" אל MenuItem. aosp/852869
  • השיטות fromBundle() של מחלקות Args שנוצרו מקבלות עכשיו Bundle שאינו null במקום Bundle שניתן להיות null aosp/845616

תיקוני באגים

  • הארגומנטים מנותחים עכשיו בצורה תקינה מקישורי עומק כערך הנכון argType במקום תמיד כמחרוזות b/110273284
  • הניווט מייצא עכשיו בצורה נכונה את המשאבים הציבוריים שלו b/121059552
  • ‫Safe Args תואם עכשיו ל-Android Gradle Plugin 3.4 Canary 4 ומעלה b/119662045

גרסה ‎1.0.0-alpha08

‫6 בדצמבר 2018

הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים שעלולים לגרום לכשל שבהמשך.

תכונות חדשות

  • אם משתמשים בתוויות של יעדים עם שיטות , המערכת תחליף באופן אוטומטי מקרים של  ב- עם הארגומנט הנכון b/80267266NavigationUI{argName}android:label
  • הניווט תלוי עכשיו בספריית התמיכה 28.0.0 b/120293333

שינויי תוכנה שעלולים לגרום לכשלים

  • השם של OnNavigatedListener שונה ל-OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener מעביר עכשיו גם את Bundle של הארגומנטים aosp/837142
  • הוסרו התכונות app:clearTask ו-app:launchDocument והשיטות שמשויכות אליהן. אפשר להשתמש ב-app:popUpTo עם השורש של הגרף כדי להסיר את כל היעדים ממחסנית החזרה. b/119628354
  • ActivityNavigator.Extras משתמש עכשיו בתבנית Builder ומוסיף את האפשרות להגדיר כל דגל Intent.FLAG_ACTIVITY_ aosp/828140
  • השם של NavController.onHandleDeepLink שונה ל-handleDeepLink aosp/836063
  • הרבה מחלקות ושיטות שלא מיועדות ליצירת מחלקות משנה, כמו NavOptions,‏ NavInflater,‏ NavDeepLinkBuilder ו-AppBarConfiguration, הפכו ל-final aosp/835681
  • השיטה NavHostFragment.setGraph() שהוצאה משימוש הוסרה aosp/835684
  • הוצאנו משימוש את השיטה NavigationUI.navigateUp(DrawerLayout, NavController). aosp/835684
  • העברנו את יצירת הפרגמנטים אל FragmentNavigator, כדי שיהיה קל יותר להקצות את יצירת הפרגמנטים ל-FragmentFactory. b/119054429
  • ה-constructor של NavGraphNavigator לא מקבל יותר Context aosp/835340
  • NavigatorProvider הוא עכשיו מחלקה ולא ממשק. הפונקציה NavigatorProvider שמוחזרת על ידי getNavigatorProvider() לא השתנתה. aosp/830660
  • NavDestination.navigate() הוסר. במקום זאת, מתקשרים אל navigate() ב-Navigator. aosp/830663
  • בוצע רפקטורינג משמעותי של Navigator, כך שלא נדרש יותר OnNavigatorNavigatedListener, ובמקום זאת navigate מחזיר את NavDestination שאליו בוצעה הניווט.
  • אי אפשר יותר לשלוח מופעים של Navigator לאירועים קופצים ב-NavController. מומלץ להשתמש ב-OnBackPressedCallback כדי ליירט לחיצות על לחצן החזרה ולהתקשר אל navController.popBackStack(). aosp/833716

תיקוני באגים

  • popUpTo פועל עכשיו באופן עקבי כשהיעד הוא רכיב <navigation> b/116831650
  • תוקנו מספר באגים שגרמו ל-IllegalArgumentException בשימוש בתרשימים מקוננים b/118713731 b/113611083 b/113346925 b/113305559
  • המאפיין dataPattern של יעדי <activity> יאכלס עכשיו ארגומנטים מארגומנטים שאינם מחרוזת על ידי קריאה ל-toString() b/120161365

Safe Args

  • ‫Safe Args תומך באובייקטים שניתנים לסריאליזציה, כולל ערכי Enum. אפשר להגדיר ערך ברירת מחדל לטיפוסים בני מנייה (enum) באמצעות ערך מילולי של enum ללא שם המחלקה (לדוגמה, app:defaultValue="READ") b/111316353
  • ‫Safe Args תומך במערכים מכל הסוגים הנתמכים b/111487504
  • התכונה Safe Args מתעלמת עכשיו מתיקיות משנה של ספריות משאבים b/117893516
  • ‫Safe Args מוסיף הערות @Override במקומות המתאימים b/117145301

גרסה ‎1.0.0-alpha07

‫29 באוקטובר 2018

תכונות חדשות

  • מחלקת AppBarConfiguration חדשה מאפשרת לכם להתאים אישית את היעדים שמוגדרים כיעדים ברמה העליונה. פרטים נוספים זמינים בתיעוד המעודכן b/117333663
  • עכשיו אפשר להעביר ארגומנטים ליעד ההתחלה של הגרף b/110300470
  • קישורי עומק תומכים עכשיו בסכימות בהתאמה אישית עם נקודות, מקפים וסימני פלוס. b/112806402

שינויי תוכנה שעלולים לגרום לכשלים

  • המודול navigation-testing-ktx שולב בnavigation-testing artifact ולא יפורסם יותר.
  • לארטיפקט navigation-testing יש עכשיו תלות בספרייה הרגילה של Kotlin. ממשק ה-API שונה כדי שיהיה עקבי יותר עם המוסכמות של Kotlin, אבל אפשר להמשיך להשתמש בו לבדיקות שנכתבו ב-Java.
  • אין יותר תמיכה בתרשימי ניווט רשומים של מניפסט מטא-נתונים. b/118355937
  • אי אפשר יותר לצרף פעולות ליעדים מסוג <activity>. aosp/785539

תיקוני באגים

  • קישורי עומק מנתחים עכשיו פרמטרים של שאילתות בצורה נכונה. b/110057514
  • עכשיו אנימציות הכניסה והיציאה מוחלות בצורה נכונה על יעדי פעילות. b/117145284
  • תוקנה קריסה שמתרחשת אחרי שינויים בהגדרות כשמשתמשים ב-Navigators בהתאמה אישית. b/110763345

Safe Args

  • ל-Safe Args יש עכשיו תלות קבועה ב-Android Gradle Plugin 3.2.1. b/113167627
  • מעכשיו אפשר ליצור הוראות הגעה לכיתות פנימיות. b/117407555
  • תוקנה בעיה שקשורה ליצירת מסלולים לגרף <include>. b/116542123

גרסה ‎1.0.0-alpha06

‫20 בספטמבר 2018

תכונות חדשות

  • יש עכשיו תמיכה במעברים של רכיבים משותפים ליעדים של Fragment ו-Activity‏ b/79665225. מידע נוסף זמין במאמר Implement navigation with the Navigation Architecture Component (הטמעת ניווט באמצעות רכיב ארכיטקטורת הניווט) באתר למפתחים.
  • בחירה של פריט ב-NavigationView תגרום עכשיו לסגירה של כל גיליון תחתון שמכיל אותו b/112158843

שינויים ב-API

  • שינוי שעלול לגרום לבעיות: השיטה navigate() של Navigator כוללת עכשיו פרמטר Navigator.Extras.
  • השיטה getGraph() של NavController היא עכשיו NonNull b/112243286

תיקוני באגים

  • NavigationUI.setupWithNavController() לא עוד דליפות של נתונים אם משתמשים בה עם נתונים מיעדים ספציפיים b/111961977
  • הפונקציה Navigator onSaveState() מופעלת עכשיו רק פעם אחת b/112627079

Safe Args

  • מחלקות של יעד בניווט מרחיבות עכשיו את מחלקת ההנחיות של ההורה אם היא קיימת b/79871405
  • במחלקות Directions ו-Args יש עכשיו הטמעה שימושית toString() b/111843389

גרסה ‎1.0.0-alpha05

‫10 באוגוסט 2018

תיקוני באגים

  • תוקן באג שגרם להתנהגות שגויה של מחסנית החזרה. b/111907708
  • תוקן באג ב-equals() של מחלקות Generated Args. b/111450897
  • תוקנה בעיה שגרמה לכשל ב-build ב-Safe Args. b/109409713
  • תיקון המרה ממזהי משאבים לשמות Java b/111602491
  • תיקון הודעות שגיאה לגבי אפשרות ה-null בתקע Safe Args.
  • הוספת הערות לגבי אפשרות לערך null.

גרסה ‎1.0.0-alpha04

‫19 ביולי 2018

‫Navigation 1.0.0-alpha04 ותוסף ה-Safe Args gradle המשויך מכילים מספר שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.

שינויים ב-API / בהתנהגות

  • הרכיב NavHostFragment תמיד יגדיר את המקטע הנוכחי כמקטע הניווט הראשי, וכך יבטיח שמנהלי המקטעים המשניים יוסרו לפני שהרכיב NavController החיצוני יוסר b/111345778

Safe Args

  • שינוי שעלול לגרום לכשלים: השם app:type שונה ל-app:argType כדי למנוע התנגשויות עם ספריות אחרות כמו ConstraintLayout 2.0.0-alpha1 b/111110548
  • הודעות שגיאה מ-Safe Args ניתנות עכשיו ללחיצה b/111534438
  • מחלקות Args מאשרות עכשיו שמאפייני NonNull הם לא null b/111451769
  • נוספו הערות נוספות של NonNull למחלקות שנוצרו של NavDirections ו-Args b/111455455 b/111455456

תיקוני באגים

  • תוקנה בעיה בכפתור 'הקודם' במערכת אחרי קישור עומק ליעד של fragment ‏b/111515685

גרסה ‎1.0.0-alpha03

‫12 ביולי 2018

‫Navigation 1.0.0-alpha03 ותוסף ה-Safe Args gradle המשויך מכילים מספר שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.

שינויים ב-API / בהתנהגות

  • נוספה שיטה NavigationUI.setupWithNavController ל-Toolbar‏ b/109868820
  • נוספה שיטה NavigationUI.setupWithNavController ל-CollapsingToolbarLayout‏ b/110887183
  • הפונקציה popBackStack() מחזירה עכשיו false כשהמחסנית הקודמת ריקה או כשמזהה היעד שצוין לא נמצא במחסנית הקודמת b/110893637
  • ‫FragmentNavigator מתעלם עכשיו מפעולות ניווט אחרי ש-FragmentManager שמר את המצב, וכך נמנעות חריגות מסוג Can not perform this action after onSaveInstanceState b/110987825

Safe Args

  • שינוי שובר תאימות: תווים לא אלפאנומריים בשמות של פעולות וארגומנטים יוחלפו בשיטת CamelCase בשמות המתודות המתאימות של NavDirections
    • לדוגמה, DemoController.index יהפוך ל-setDemoControllerIndex b/79995048
    • לדוגמה, action_show_settings יהפוך ל-actionShowSettings b/79642240
  • שינוי משמעותי: ארגומנטים נחשבים עכשיו כלא ריקים כברירת מחדל. כדי לאפשר ערכי null בארגומנטים של מחרוזות ושל parcelable, מוסיפים app:nullable="true" b/79642307
  • עכשיו אפשר להשתמש ב-app:type="long" עם defaultValues בפורמט '123L' b/79563966
  • מעכשיו יש תמיכה בארגומנטים מסוג Parcelable, באמצעות שם מחלקה שמוגדר במלואו עבור app:type. ערך ברירת המחדל הנתמך היחיד הוא "@null" b/79563966
  • מחלקות Args מיישמות עכשיו את equals() ואת hashCode() b/79642246
  • מעכשיו אפשר להחיל את התוסף Safe Args על פרויקטים של ספריות b/80036553
  • מעכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של תכונות b/110011752

תיקוני באגים

  • תוקנו בעיות בניווט במהלך שימוש בשיטות של מחזור החיים של Fragment b/109916080
  • תוקנו בעיות בניווט בגרפים מוטמעים כמה פעמים b/110178671
  • נפתרו בעיות בשימוש ב-setPopUpTo עם היעד הראשון בתרשים b/109909461
  • תוקנה בעיה שבה כל הערכים של app:defaultValue הועברו כמחרוזות b/110710788
  • ‫aapt2 שצורף ל-Android Gradle Plugin 3.2 Beta 01 מוסיף עכשיו כללי שמירה לכל מאפיין android:name בקובצי XML של Navigation b/79874119
  • תוקן דליפת זיכרון בהחלפת FragmentNavigator שמוגדר כברירת מחדל b/110900142

גרסה ‎1.0.0-alpha02

‫7 ביוני 2018

שינויים בהתנהגות

  • הבית FragmentNavigator משתמש עכשיו במינוי setReorderingAllowed(true). b/109826220

  • הניווט מפענח עכשיו את הארגומנטים שנותחו מכתובות URL של קישורי עומק. b/79982454

תיקוני באגים

  • תוקנה שגיאת IllegalStateException כשמתקשרים אל navigate משיטות מחזור החיים של Fragment. b/79632233

  • הניווט תלוי עכשיו בספריית התמיכה 27.1.1 כדי לתקן הבהובים כשמשתמשים באנימציות. b/80160903

  • תוקן באג IllegalArgumentException כשמשתמשים ב-defaultNavHost="true" כקטע צאצא. b/79656847

  • תוקן באג StackOverflowError בשימוש ב-NavDeepLinkBuilder. b/109653065

  • תוקן IllegalArgumentException כשחוזרים לתרשים מוטמע. b/80453447

  • תוקנה בעיה שגרמה לחפיפה בין רכיבי Fragment כשמשתמשים ב-launchSingleTop. b/79407969

  • הניווט יוצר עכשיו את מחסנית החזרה הסינתטית הנכונה לגרפים מוטמעים. b/79734195

  • הספרייה NavigationUI תדגיש עכשיו את הפריט הנכון כשמשתמשים בגרף מקונן כ-MenuItem. b/109675998

שינויים ב-API

  • המאפיין clearTask לפעולות וממשק ה-API המשויך ב-NavOptions הוצאו משימוש. b/80338878

  • המאפיין launchDocument של פעולות וממשק ה-API המשויך ב-NavOptions הוצאו משימוש. b/109806636

גרסה ‎1.0.0-alpha01

‫8 במאי 2018

הניווט מספק מסגרת לבניית ניווט בתוך האפליקציה. הגרסה הראשונית הזו היא 1.0.0-alpha01.