ניווט

הניווט הוא מסגרת לניווט בין 'יעדים' באפליקציה ל-Android, שמספקת API עקבי בין אם היעדים מוטמעים כ-Fragment, 'פעילויות' או 'רכיבים אחרים'.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
30 באוקטובר 2024 2.8.3 - - 2.9.0-alpha02

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

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

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

Groovy

dependencies {
  def nav_version = "2.8.3"

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

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

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

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

}

Kotlin

dependencies {
  val nav_version = "2.8.3"

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

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

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

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

}

Safe Args

To add Safe Args to your project, include the following classpath in your top level build.gradle file:

Groovy

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

Kotlin

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

You must also apply one of two available plugins.

To generate Java language code suitable for Java or mixed Java and Kotlin modules, add this line to your app or module's build.gradle file:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:

Groovy

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

Kotlin

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

You must have android.useAndroidX=true in your gradle.properties file as per Migrating to AndroidX.

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

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

משוב

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

דיווח על בעיה חדשה

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 2.9

גרסה 2.9.0-alpha02

30 באוקטובר 2024

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

תרומה חיצונית

  • שיטה נפוצה חדשה של NavController.handleDeepLink(request: NavDeepLinkRequest). תודה Konstantin Tskhovrebov! (I3e228)

גרסה 2.9.0-alpha01

16 באוקטובר 2024

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

תכונות חדשות

  • מעכשיו, יוצרים של כלי ניווט מותאמים אישית יכולים לסמן את היעדים שלהם כמיישמים את הממשק SupportingPane. כך הם מציינים ל-NavController שהיעדים האלה יוצגו לצד יעדים אחרים. באמצעות הממשק הזה, אפשר למשל להגדיר כמה יעדים כRESUMED בו-זמנית. (Id5559)
  • מ-Navigation 2.8.3: נוספו בדיקות איתור שגיאות בקוד חדשות למודול navigation-common, למודול navigation-runtime ולמודול navigation-compose כדי לזהות מסלולים בטוחים מבחינת סוגים שלא סומנו בצורה נכונה באמצעות @Serializable. הבדיקה הזו חלה על כל פונקציות התוספים NavGraphBuilder ו-NavDeepLinkBuilder. (I4a259, ‏ I95402, ‏ Ie601a, ‏ Id8c6e, ‏ I28bda, ‏ b/362725816)
  • מ-Navigation 2.8.3: נוספו בדיקות איתור שגיאות בקוד חדשות למודול 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 נמחקת בגרסאות build מקוצרות. (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.3

16 באוקטובר 2024

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

תכונות חדשות

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

תיקוני באגים

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

בעיות מוכרות

  • כשהמערכת מנסה להפעיל איתור שגיאות בקוד, היא תגרום לשגיאה של בדיקת שגיאות בקוד בהתאמה אישית בגרסה 16 (AGP 8.7) ואילך. (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. הודעת השגיאה החדשה תכלול את שם הארגומנט, את השם המלא והמפורט של הארגומנט ואת השם המלא והמפורט של המסלול. (Id8416, ‏ b/346264232)

גרסה 2.8.1

18 בספטמבר 2024

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

תכונות חדשות

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

תיקוני באגים

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

עדכון יחסי תלות

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

גרסה 2.8.0

4 בספטמבר 2024

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

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

בטיחות סוגים ב-Navigation Kotlin DSL

  • מעכשיו, Navigation מספק תמיכה ב-type safety ל-DSL של Kotlin (שמשמש את 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)
        }
    }

מידע נוסף זמין בפוסט בבלוג עם התכונה 'ניווט ב-Meet בנושא בטיחות'.

ניווט כתיבה חיזוי חזרה

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

Navigation Fragment Composable

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

גרסה 2.8.0-beta06

24 ביולי 2024

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

תיקוני באגים

  • תוקנה בעיה בבדיקות השגיאות בקוד WrongStartDestinationType של (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)
  • עכשיו אפשר להשתמש ב-API לבדיקה של SavedStateHandleFactory בבדיקות שאינן ל-Android, אבל הוא ידרוש Robolectric לתמוך בניתוח ארגומנטים באמצעות Bundles. (I76cdc, ‏ b/340966212)
  • תוקן קריסה שנגרמה כתוצאה משחזור המצב כשממשיכים את האפליקציה אחרי מוות של תהליך באמצעות ניווט בטוח לסוגים ב-Compose. (Ia8f38, b/341801005)
  • תוקנה בעיה בתכונה 'ניווט בזמן כתיבת אימייל', שבה אחרי ביטול התנועה החזויית לאחור, NavBackStackEntry שאליו המשתמש חוזר אף פעם לא חוזר למצב מחזור החיים RESUMED. כך ניתן גם לוודא שהאנימציה של היעד שחוזרת משתנה כמו שצריך, במקום להיצמד למקומו לאחר הנביטה. (I97a0c, ‏ b/346608857)
  • כשמשתמשים בתכונה 'חזרה חזוי' עם 'כתיבה בזמן ניווט', ליעד שיוצג בחלון קופץ תהיה עכשיו רמת z מתאימה, והוא יוצג באנימציה נכונה מעל היעד הנכנס. (I2077b, b/345993681)

גרסה 2.8.0-beta03

12 ביוני 2024

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

שינויים ב-API

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

תיקוני באגים

  • הוספנו מסמך תיעוד לגבי NavType.serializeAsValue ו-serializeAsValues כדי להדגיש שצריך לקודד את הפלט הסופי ב-Uri. (Ida6bd, ‏ b/344943214)
  • תוקנה קריסה שהתרחשה בקריאה ל-toRoute<T> עם ארגומנט CollectionNavType null. כשמנווטים עם CollectionNavType null, ארגומנט הפלט יהיה ערך ברירת המחדל שהוצהר בכיתה 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 בהתאמה אישית שניתן לבטל. (I1c29b, ‏ b/342239473)
  • תוקנו בעיות בשחזור המצב של סטאק העורפי של הניווט שנגרמו כשמנסים לשחזר רשומה בסטאק העורפי שלא ניתן להגיע אליה באמצעות מזהה מהיעד הנוכחי. מאחר שהנתיבים נתמכים במזהים, גם יעדים שנוצרו באמצעות נתיבים הושפעו מהבעיה. התיקון הזה מתקן גם קריסה שנגרמה על ידי קריאה ל-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)
  • הוספנו ממשק API לבדיקה ל-navigation-testing כדי ליצור SavedStateHandle מאובייקט Serializable ב-Kotlin. (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 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.

תכונות חדשות

  • ארטיפקט 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 באמצעות גישה שמבוססת על Serialization ב-Kotlin נמשכת. ממשקי ה-API האלה לא הסתיימו ומסומנים בהערה ExperimentalSafeArgsApi. ההערה הזו תוסר כשכל ממשק ה-API יושלם בגרסה עתידית. (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 כארגומנט ברירת המחדל של contentיישור. הפעולה הזו מאפשרת לקבוע את ברירת המחדל של AnimatedContent ולתקן מקרים מסוימים של קנה מידה לא צפוי מהמעבר למרכז. (I09e72, b/330111602)
  • כשמבצעים את המחווה החזרה החזוייה בזמן השימוש בתכונה 'ניווט בזמן כתיבת אימייל', הלחצן NavHost ישלים עכשיו את המעבר המותאם אישית בצורה נכונה במקום לסיים מיד. (I99017, ‏ b/327292110)

גרסה 2.8.0-alpha05

20 במרץ 2024

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

תכונות חדשות

  • עכשיו אפשר להעביר ארגומנטים ל-startDestination של NavGraph ישירות במסלול 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 מספק עכשיו ממשק valueEquals API פתוח חדש שקובע אם שני ערכים מאותו סוג שווים זה לזה. (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 כי נעשה בו שימוש בקוד שנדרש בכל זאת מתוך ה-thread הראשי. (Ibb988, ‏ b/299523245)

תיקוני באגים

  • תוקנה בעיה בניווט שגרמה ל-NavGraph ViewModels להיות DESTROYED מוקדם מדי כי ViewModel של הרשומה המשויכת לא היה חלק מהמצב השמור. (Ib6b7, b/317581849)

עדכון יחסי תלות

גרסה 2.8.0-alpha02

7 בפברואר 2024

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

תכונות חדשות

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

גרסה 2.8.0-alpha01

24 בינואר 2024

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

תיקוני באגים

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

עדכון יחסי תלות

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

תרומה חיצונית

  • תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שאינם מחרוזות כשמשתמשים בעזרים של 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 כדי לאכלס את השם של שורת האפליקציות. (#636, ‏ b/316676794)

תרומה חיצונית

  • תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שאינם מחרוזות כשמשתמשים בעזרים של 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 ייצור עכשיו את יעד ההתחלה במעבר הראשון של ה-composition, במקום להמתין למעבר השני כדי לקרוא את המצב המעודכן. (I439a7, b/304852206)

תיקוני באגים

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

עדכוני יחסי תלות

  • הניווט באמצעות קטעי קוד (Fragments) תלוי עכשיו ב-Fragment 1.6.2, ותוקנה בעיה שבה המופעים ViewModel של קטעי קוד בתצוגת עץ לא נמחקו כשקוראים ל-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 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 2.7.2

גרסה 2.7.2

6 בספטמבר 2023

androidx.navigation:navigation-*:2.7.2 משוחרר. גרסה 2.7.2 כוללת את השינויים האלה.

תיקוני באגים

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

עדכון יחסי תלות

  • התכונה 'כתיבה מהירה' בניווט תלויה עכשיו ב-Compose 1.5.1.

גרסה 2.7.1

גרסה 2.7.1

23 באוגוסט 2023

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

תיקוני באגים

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

גרסה 2.7.0

גרסה

9 באוגוסט 2023

androidx.navigation:navigation-*:2.7.0 משוחרר. גרסה 2.7.0 כוללת את ההצהרות האלה.

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

אנימציות של מלווה

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

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

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

תיקוני באגים

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

עדכוני יחסי תלות

  • הניווט תלוי עכשיו בסמל הכתיבה 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 שכשמנווטים עם חלון קופץ ייתכן שגורמת לIllegalArgumentException. יכול להיות שאפשר למנוע את החריג הזה על ידי שינוי המבנה של התרשים, בדומה לטיפים שמופיעים כאן. (b/287133013)

גרסה 2.7.0-beta02

28 ביוני 2023

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

תיקוני באגים

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

גרסה 2.7.0-beta01

7 ביוני 2023

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

תיקוני באגים

  • NavHost בתפריט הניווט 'כתיבה' עכשיו מאפשרת ליירט כראוי שיחות חזרה מהמערכת, גם אחרי ש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 יציב, הצלחנו להעביר את הקוד מ-אנימציית הניווט של 'התכונת 'הנחיה'' חזרה ל-Navigation Compose עצמו.

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

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

תיקוני באגים

  • מניווט 2.6.0-rc02: תוקנה בעיה בניווט במקטעים שבה ניווט באמצעות popUpTo והפצת מקטע מהמקבץ האחורי בלי ליצור מחדש את התצוגה גרמה למערכת להפסיק לעבוד. (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

  • הנתונים arguments של NavBackStackEntry והarguments שהועברו אל OnDestinationChangedListener הם עכשיו רק עותק של הארגומנטים הלא ניתנים לשינוי שנוצרו כשניווטת ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישה הבאה ל-arguments או למכונות OnDestinationChangedListener אחרות.
  • עכשיו יש ב-NavDeepLink תמיכה בערכי ברירת מחדל למערכים, שמאפשרת תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט. NavType כולל עכשיו גם שיטת ברירת מחדל שניתנת לביטול כדי לשלב שני ערכים מנותחים.
  • מעכשיו, תתי-כיתות בהתאמה אישית של NavType יכולות לשנות את serializeAsValue כדי לסריאליזציה ערך למחרוזת, וכך לאפשר את האנקפסולציה המלאה של הסריאליזציה וההמרה מהסריאליזציה (דרך parseValue) בכיתה NavType. StringType משנה עכשיו את השיטה הזו כדי לקרוא ל-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 כדי שהוא יהיה תקף.

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

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

שינויים חשובים בממשק המשתמש של הניווט מאז 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 מסטאק העורפי בלי ליצור מחדש את התצוגה שלו גרמו למערכת להפסיק לפעול. (Ieb8d4, b/281726455)

גרסה 2.6.0-rc01

10 במאי 2023

androidx.navigation:navigation-*:2.6.0-rc01 משוחרר. גרסה 2.6.0-rc01 כוללת את ההצהרות האלה.

תיקוני באגים

  • תוקנה בעיה בניווט עם קטעי קוד, שבה הסרת קטע קוד באמצעות navigate עם popUpTo בקריאה החוזרת ל-lifecycle‏ 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)

תיקוני באגים

  • כשמשתמשים בניווט עם קטעי קוד, ניסיון לבצע FragmentTransaction באופן ידני שמוסיף קטע קוד למחסנית הקוד הקודמת של FragmentManager יגרום להפעלת IllegalArgumentException. תמיד צריך להוסיף מקטעים דרך ה-API של navigate(). (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 שאינו nullable, המסלול של היעד הזה חייב להכיל placeholders ל-args ששמותיהם זהים לשם של NavArgument שאינו nullable. (Ic62bf, b/274697949)
  • מעכשיו, ניווטים של קישורי עומק שמבוססים על Action/MimeType ייכשלו אם בפעולת הניווט חסר NavArgument שאינו אפס, שנדרש על ידי NavDestination שה-Action/MimeType תואם לו. (Ibfa17, ‏ b/271777424)
  • כש-NavController מגדיר גרף עם אותו מסלול ויעדים כמו בגרף הקודם, הוא מחליף עכשיו בצורה תקינה את צמתים הגרף הנוכחיים ואת היעדים בסטאק העורפי במופעים חדשים. התיקון הזה מטפל בקריסה שמתרחשת כשמשתמשים ב-onLaunchSingleTop בלי לשמור את המצב ב'כתיבה בזמן ניווט'. התיקון הזה גם מתקן שגיאה שבה מנווטים ליעדי build שמשויכים לגרף הבסיס, וכן סטאק לא תקין של חזרה אחורה. (I5bc58, b/275258161, b/275407804)

גרסה 2.6.0-alpha08

22 במרץ 2023

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

תכונות חדשות

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

תיקוני באגים

  • תוקנה בעיה ב-NullPointerException כשפופ מגרף בתצוגת עץ שכולל ארגומנט שאינו nullable. (6b3581, b/249988437)
  • כשמשתמשים ב'חזרה' במערכת אחרי ניווט באמצעות popUpTo, המצב של NavController יופיע ברשומה הנכונה. (I3a8ec, ‏ b/270447657)
  • עכשיו FragmentNavigator יקפוץ כמו שצריך רשומות כשהמחסנית האחורית קופץת דרך המערכת חזרה או 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 לא מנקה את המצב השמור במנהל הקטעים המשויך ל-back stack שנמחק. (Ic1cce, ‏ b/271190202)
  • תוקנה נסיגה בגרסה 2.6.0-alpha06 שגרמה להדגשה של MenuItem הלא נכון ב-BottomNavigationView כשמשתמשים ב'חזרה למערכת' בין כרטיסיות. (I634f6, ‏ b/270447657)
  • תוקנה נסיגה בגרסה 2.6.0-alpha06 שגרמה לכך ש-NavBackStackEntry לא הועברו לסטטוס 'המשך' כשנעשה שימוש ב-Animation. (Ib3589, b/269646882)

גרסה 2.6.0-alpha06

22 בפברואר 2023

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

בעיות מוכרות

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

גרסה 2.6.0-alpha05

8 בפברואר 2023

androidx.navigation:navigation-*:2.6.0-alpha05 משוחרר. גרסה 2.6.0-alpha05 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

  • מצב הניווט לא יפעל כעת כשמשתמשים בממשקי ה-API של push/popWithTransition והרשומה כבר מטופלת. (Iadbfa, ‏ b/261213893)
  • כשמשתמשים ב-launchSingleTop עם NavGraph בתצוגת עץ, כל היעדים, החל מהיעד המקורי ועד ל-startDestination שלו, יתווספו בצורה תקינה לחלק העליון של סטאק החזרה. (Id4bea, ‏ b/253256629)
  • עכשיו, מערכת הניווט תחליף כראוי את מופע DialogFragment כשמנווטים לאותו יעד, כאשר הדגל launchSingleTop מוגדר כ-true. (I45b5a, b/149572817)
  • Navigation SafeArgs לא יגרום יותר לשגיאת הידור כשמשתמשים בארגומנטים באורך 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 משנה עכשיו את השיטה הזו כדי לקרוא ל-Uri.encode ב-String הנתון. (Ie5213, ‏ b/247637434)
  • NavigationUI מספק עכשיו יומנים כשהוא לא מצליח לנווט דרך MenuItem שנבחר. (I2af5a, b/247730357)

תיקוני באגים

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

עדכון יחסי תלות

  • התמיכה של התכונה 'ניווט' במודולים של פיצ'רים דינמיים תלויה עכשיו בספרייה המפורטת של Play Feature Delivery. (Ib4ddc)
  • Navigation Safe Args תלוי עכשיו בפלאגין Android Gradle בגרסה 7.3.0. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 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: תוקנה בעיה שבה המצב השמור של Compose (למשל, שימושים ב-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} כתובת Placeholder במאפיינים app:data ו-app:dataPattern ברכיב הפעילות בקובץ XML של הניווט, packageName של ההקשר יאוכלס באופן אוטומטי ב-Placeholder במהלך ההנפה. (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)
  • מניווט 2.5.2: מערכת הניווט תחליף עכשיו כראוי את מופע הפלח כשמנווטים לאותו יעד ומגדירים את הדגל 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)
  • הניווט יחליף עכשיו בצורה תקינה את מופע המקטע כשמנווטים לאותו יעד ומגדירים את הדגל 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 – עכשיו יש ל-Navigation אפשרות לספק ViewModelProvider.Factory ללא מצב (stateless) דרך CreationExtras של 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 כוללת את ההוספות האלה.

תיקוני באגים

  • תוקנה קריסה שנגרמה כתוצאה ממעבר מהיר בין יעדים תחתונים כשהשתמשת בניסוח ניווט 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 כוללת את ההצהרות האלה.

תכונות חדשות

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

תיקוני באגים

  • היקפי ה-Composable ב-NavHost וב-DialogHost נהרסים עכשיו בסדר הצפוי, כלומר ה-Composable הפנימיים נהרסים לפני ה-Composable החיצוניים. (I157e6)
  • עכשיו, ב-Navigation SafeArgs נעשה שימוש ב-PathSensitivity.RELATIVE ב-ArgumentsGenerationTask כדי לאפשר העברה של מטמון. המשמעות היא שאפשר להשתמש שוב ברשומה במטמון מ-build ב-CI ל-build מקומי. (I5f67c, b/173420454)
  • כלל השגיאות בקוד 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)

עדכוני יחסי תלות

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

גרסה 2.5.0-alpha04

6 באפריל 2022

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

שינויים ב-API

תיקוני באגים

  • עכשיו, NavHost תלוי ב-visibleEntries מה-NavController כדי לקבוע אילו רשומות לכתוב. כלומר, כשמשתמשים ב-NavHost בתצוגת עץ, ה-NavHost הפנימי אמור להיעלם עכשיו בצורה נכונה. (I4ba2b, ‏ b/225394514)
  • השדה visibleEntries StateFlow ש-NavController מספק מבוסס עכשיו על מצב מחזור החיים המקסימלי של הרשומה, במקום על מצב מחזור החיים הנוכחי. כלומר, גם אם מחזור החיים של המארח של navController יורד מתחת ל-STARTED, רשימת השלמות הגלויות תישאר ללא שינוי. (I9e2a8, ‏ b/225394514)
  • עכשיו יש תמיכה ב-SavedStateViewFactory בשימוש ב-CreationExtras גם אם הוא הופעל באמצעות SavedStateRegistryOwner. אם תספקו תוספות, המערכת תתעלם מהארגומנטים המאתחלים. (I6c43b, b/224844583)
  • עכשיו אפשר לנתח את NavDeepLink עם פרמטר שאילתה אחד ללא ערך. (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)
  • עכשיו יש תמיכה ב'ארגומנטים בטוחים' בניווט באמצעות מרחב השמות שמוגדר ב-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: עכשיו, כשמקשרים עומק דרך כמה מחרוזות NavGraph בתצוגת עץ, המקבץ האחורי יכלול נכון יעדי ביניים. (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 תלוי עכשיו ב-Android Gradle Plugin בגרסה 7.0.4. המשמעות היא ש-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 כוללת את ההצהרות האלה.

תיקוני באגים

  • הוספה לאחור מ-Navigation 2.5.0-alpha03: עכשיו יש ב-NavDeepLinks תמיכה נכונה בתווים מקודדים של שורות חדשות שמוטמעים במסלולים או ב-URI של קישורים עמוקים. (I513d1, ‏ b/217815060)
  • הוטמעו מ-Navigation 2.5.0-alpha03: מעכשיו, Navigation SafeArgs תומך בשימוש במרחב השמות שמוגדר ב-build.gradle במקום בחבילה ב-AndroidManifest. (I659ef, ‏ b/217414933)
  • בעקבות ההעברה לאחור מניווט 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 מכילה את ההוספות האלה.

תיקוני באגים

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

גרסה

גרסה

26 בינואר 2022

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

שינויים חשובים מאז 2.3.0

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

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • שיטות NavigationUI שהשתמשו ב-BottomNavigationView עודכנו כך שישתמשו במקום זאת בסיווג ההורה שלהן, NavigationBarView, שהוצג בחומר 1.4.0. כך ניתן להשתמש בשיטות האלה עם 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

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

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

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

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

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

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

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

כתיבה מהירה בזמן ניווט

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

בגרסה הזו יש:

  • רכיב NavHost שאפשר להרכיב, שמאפשר ליצור את תרשים הניווט באמצעות DSL של Kotlin, באמצעות יעדים מסוג composable ו-dialog, וגם תמיכה ב-Navigators אופציונליים כמו אלה מ-Accompanist Navigation Material.
  • תמיכה חובה במעבר חלק בין יעדים. אפשר להשתמש באנימציית ניווט של כלי נלווה כדי לשלוט במעברים של הכניסה והיציאה באמצעות ממשקי API ניסיוניים של Compose.
  • הגדרת ההיקף של 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 ושל היעד שלו אחרי סיום התהליך ויצירתו מחדש.
  • שילוב אוטומטי עם לחצן החזרה של המערכת.
  • תמיכה בהעברת ארגומנטים, בהצמדת קישורי עומק ליעדים ובחזרת תוצאה ליעדים קודמים.

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

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.

ריבוי מקבצים

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

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

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

  • ב-Navigation 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 ב-builder של popUpTo:

    // 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() ובעומס יתר חדש ל-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);
    
  • עכשיו קריאות פרוגרמטיות אל popBackStack() יכולות לכלול פרמטר saveState נוסף.

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

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

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

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

תיקוני באגים

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

תיקוני באגים בכתיבת ניווט

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

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

  • SafeArgs לא קורס יותר בניסיון לשחזר מערכים בהתאמה אישית שניתנים לחלוקה אחרי מוות של תהליך. (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)

תיקוני באגים

  • תוקנה בעיה שבה רשומות NavBackStackEntries נדחפו למטה אל Lifecycle.State.CREATED אחרי המעבר אל Lifecycle.State.STARTED, כאשר ה-NavHost נוסף ישירות ל-setContent() של הפעילות. (Ia5ac1, ‏ b/203536683)
  • תוקנה בעיה של תנאי מרוץ (race condition) שבה הוצאה של יעד DialogFragment מהמקבץ האחורי לפני שהתיבת הדו-שיח הוצגה בפועל לא סגרה את תיבת הדו-שיח בפועל, וכתוצאה מכך התרחש קריסה כשהמשתמש סגר את תיבת הדו-שיח השגויה באופן ידני. (I687e5)
  • תוקנה בעיה שבה ה-API של onNavDestinationSelected ב-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 עם 'קטעים'. (I901e3, ‏ b/201446416)

שינויים ב-API

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

תיקוני באגים

  • מודלים של תצוגת מידע לא יימחקו יותר כשמעבר בין מסכים מופרע על ידי ניווט הלוך ושוב בין אותם מסכים (Id52d8, ‏ b/200817333)
  • לארגומנטים מסוג NavDeepLink שאינם ניתנים יותר אין יותר צורך בערך ברירת מחדל כשמוסיפים קישורי עומק ל-NavDestination. (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 של visibleEntries (Ia964e)
  • עכשיו rememberNavController() לוקחת קבוצה אופציונלית של מכונות Navigator, שיתווספו למופעים של NavController שהוחזרו, כדי לספק תמיכה טובה יותר בניווטים אופציונליים, כמו אלה מחומר הניווט של המשתמש. (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 מכילה את ההצהרות האלה.

תכונות חדשות

  • עכשיו אפשר להשתמש ב-method clearBackStack() כדי למחוק כל מצב שנשמר באמצעות popBackStack() או popUpToSaveState. (I80a0f)
  • עכשיו אפשר להעביר רשימה של ארגומנטים ו/או קישורים עומק ל-builder של תרשים הניווט המורכב, והם יתווספו באופן אוטומטי לתרשים שנוצר. (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 שניתנים לשינוי. (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(), לא יגרום יותר לחריגה במקרה שאין יעד ב-back stack. (I75138, ‏ b/194313238)
  • עכשיו, כשמשנים ארגומנטים חזרה במקבץ, ועושים שימוש ב-launchSingleTop=true, צריך ליצור מחדש את ההצעות לכתיבה. (Iebd69, b/186392337)
  • לא תהיה יותר ArrayIndexOutOfBoundsException כשקוראים ל-setGraph עם תרשים עם 13 או 29 יעדים. (I1a9f1, ‏ b/195171984)
  • מחולל הג'אווה SafeArgs לא אמור יותר לגרום לאזהרות איתור שגיאות בקוד (lint) במהלך יצירת מחלקות Args. (I1a666, ‏ b/185843837)

תרומה חיצונית

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

גרסה 2.4.0-alpha07

18 באוגוסט 2021

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

תיקוני באגים

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

גרסה 2.4.0-alpha06

4 באוגוסט 2021

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

שינויים ב-API

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

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

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

תיקוני באגים

  • הצגת היעד האחרון של תרשים ניווט כבר לא מפעילה את השגיאה ClassCastException. (If0543, ‏ b/172112072, ‏ b/194301889)
  • תוקן NullPointerException שהתרחש כשמוסיפים קישור עומק ללא Uri ומנווטים דרך מסלול או קישור עומק. (938a0c, ‏ b/193805425)
  • תוקנה בעיה בתכונה 'כתיבה בזמן ניווט', שבה 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 בתכונה 'כתיבה בזמן ניווט', עכשיו תמיד נעשה שימוש במעברים חלקים בין קטעים כשעוברים בין יעדים. (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 לא תיכשל יותר במהלך פיתוח האפליקציה עם גרסאות 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)
  • תוקנה נסיגה (regression) בניווט 2.4.0-alpha01 שבה setupActionBarWithNavController() לא הסיר כראוי את סמל למעלה כשנמצאים ביעד ברמה העליונה. (I5d443, ‏ b/189868637)
  • תוקן IllegalStateException בקריאה ל-popBackStack() אחרי פתיחת תרשים הרמה הבסיסית (root) של 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, וגם ב-DynamicNavigation Kotlin DSL. (Ib5544, ‏ Ia617b, ‏ I22f96, ‏ b/188914648, ‏ b/188901565)
  • NavigationUI הוסיף באופן זמני ממשקי API ניסיוניים כדי לאפשר ביטול הסכמה לשמירת המצב שלך. אמנם תמיד כדאי לשמור את המצב, אבל עדיין יש שימושים בספריות שהוצאו משימוש (כלומר, קטעי קוד שנשמרו) שלא ניתן לתמוך בהם כששומרים את המצב. לכן, זו הזדמנות לאפליקציות לעבור בהדרגה ממשקי API שלא נתמכים. (Idf93c)
  • רכיב הניווט מספק עכשיו ממשקי API של findDestination() ו-getHierarchy() שאפשר להשתמש בהם כדי להטמיע ממשק משתמש מותאם אישית של Navigation. findDestination() היא פונקציית תוסף של NavGraph שמאתרת יעד בתרשים. getHierarchy() היא פונקציה ב-NavDestination שניתן להשתמש בה כדי לבדוק אם יעד מסוים נמצא בהיררכיה של יעד אחר.(I2932f, b/188183365)

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

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

שינויים ב-API

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

תיקוני באגים

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

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

  • ל-methodId ב-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)

מספר סטאקים של חזרה אחורה

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

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

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

  • ב-Navigation 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 ב-builder של popUpTo:

    // 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() ובעומס יתר חדש ל-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);
    
  • קריאות פרוגרמטיות אל popBackStack() יכולות עכשיו לכלול פרמטר saveState נוסף.

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

ה-ComposeNavigator שמשמש ליעדי composable בתכונה 'כתיבה בזמן ניווט', וה-FragmentNavigator ו-DynamicFragmentNavigator שמשמש ליעדי <fragment> בתכונה 'ניווט באמצעות קטעים', עודכנו כך שישתמשו בממשקי ה-API החדשים של Navigator וישפרו את התמיכה בשמירה ובשחזור של המצב.

מסלולי ניווט

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

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

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

  • המאפיין popUpTo ב-Kotlin DSL יצא משימוש והוחלף במאפיין popUpToId. (I59c73, ‏ b/172823546)
  • ממשק ה-API ‏getStartDestination() הוצא משימוש והוחלף על ידי getStartDestinationId(). (I0887f, ‏ b/172823546)

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

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

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

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

  • הניווט תלוי עכשיו ב-Lifecycle 2.3.1, ומסמן את setGraph(),‏ popBackStack(),‏ navigateUp() ו-navigate(), השיטות שמעדכנות את NavBackStackEntry Lifecycle, בתור @MainThread. כך הניווט תואם לאכיפה של פעילות השרשור הראשי שהוצגה ב-Lifecycle 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 ואילך.

תיקוני באגים

  • תוקנה בעיה שבה תוספי ארגומנטים נלווים נותנים עדיפות על פני קישורי עומק עם סיומת תואמת. (#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 על תיקון בעיה שבה placeholder לארגומנטים בסוף הטקסט מקבל עדיפות על פני קישורי עומק עם סיומת תואמת. (#153, ‏ b/184072811)
  • תודה ל-tatocaster על עדכון Safe Args כך שיהיה תלוי ב-KotlinPoet 1.8.0. (#172, ‏ b/183990444)
  • תודה ל-jossiwolf על כך שהפך את השדות name ו-argument ואת פונקציות הפירוק של NamedNavArgument לציבוריות. (#174, ‏ b/181320559)
  • תודה ל-jossiwolf על הצגת התוסף החדש NavBackStackEntry#provideToCompositionLocals שמספק את הערך של NavBackStackEntry ל-locals הרלוונטיים של היצירה. (#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)
  • עכשיו, 'כתיבה בזמן ניווט' תלויה בניווט 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)

תיקוני באגים

  • הניווט 'כתיבה' תלוי עכשיו בניווט 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

עדכוני יחסי תלות

גרסה 1.0.0-alpha06

28 בינואר 2021

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

שינויים ב-API

  • נוספה שיטת תוסף 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

  • עודכן לתאימות עם 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

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

גרסה 1.0.0-alpha01

28 באוקטובר 2020

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

תכונות חדשות

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

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

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

מידע נוסף זמין במדריך הניווט 'כתיבה'.

גרסה 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 נוסף למפזר עם 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)

תרומה חיצונית

  • תודה 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)

תיקוני באגים

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

תרומות חיצוניות

  • תודה ל-JvmName על בקשת המשיכה (pull request) שבעזרתה אפשר עכשיו לנתח כראוי את הארגומנטים של ReferenceType כשהם נשלחים כחלק ממזהה URI של קישור עומק. (#127, ‏ b/179166693)
  • תודה ל-tatocaster על בקשת המשיכה (pull request) שאפשרה ל-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. כך תוכלו לבדוק קטעי תיבת דו-שיח שמשתמשים בתכונה 'ניווט' באמצעות FragmentScenario ו-Navigation.setViewNavController(). (I69e0d)

גרסה 2.3.1

גרסה 2.3.1

14 באוקטובר 2020

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

תכונות חדשות

  • משאבי ברירת המחדל של Animator נוספו לממשק המשתמש של הניווט, והם מומלצים על פני משאבי האנימציה שמוגדרים כברירת מחדל. (b/167430145)
  • NavOptions מבטלת את קוד הגיבוב (hash) ומגדירה שיטות (b/161586466)
  • הניווט כולל עכשיו את היעד הנוכחי ב-DisallowArgumentהסרת 'ללא יעד עם מזהה'. הפעולה הזו אמורה לשפר את חוויית ניפוי הבאגים של המפתחים. (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 שמשויך לכל יעד ב-Navigation back stack באמצעות SavedStateHandle, שמתאים לאחסון כמויות קטנות של מצב ששמור וצריך לשייך לרשומה מסוימת ב-back stack. ניתן למצוא מידע נוסף במאמר החזרת תוצאה ליעד הקודם.
  • תמיכה ב-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> במניפסט לא יכללו את סוג ה-MIME ברכיב <data> שלו או ב-<action> בהתאמה אישית. צריך להוסיף באופן ידני <intent-filter> מתאים למניפסט.

גרסה 2.3.0-rc01

10 ביוני 2020

androidx.navigation:navigation-*:2.3.0-rc01 משוחרר. גרסה 2.3.0-rc01 כוללת את ההצהרות האלה.

תיקוני באגים

  • תוקנה בעיה ב-NullPointerException כשמחליפים מופע של יעד ללא ארגומנטים במופע אחר עם ארגומנטים באמצעות singleTop. (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 שנרשמו לפני הקריאה ל-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. (b/136573074, b/135334841)

שינויים ב-API

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

תיקוני באגים

  • תוקנה בעיה שבה מערכת Google Ads התעלמה מ-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)
  • עכשיו, DSL של Kotlin עם תרשים ניווט חושף defaultArguments Map לפעולות, מה שמשקף את היכולת להגדיר ערכי ברירת מחדל לרכיבי <action> בקובצי XML של הניווט. (b/150345605)

תיקוני באגים

  • מניווט 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 כבר לא נעשה שימוש בתבנית build, ועכשיו אפשר ליצור אותה ישירות. (aosp/1253671)
  • עכשיו ה-constructor של DynamicActivityNavigator מקבל Context במקום Activity. (aosp/1250252)

תיקוני באגים

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

עדכוני יחסי תלות

  • פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של התכונות הדינמיות של הניווט תלויים עכשיו ב-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)

תיקוני באגים

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

שינויים ביחסי התלות

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

גרסה 2.3.0-alpha02

19 בפברואר 2020

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

תכונות חדשות

  • עכשיו אפשר להשתמש ב-NavBackStackEntry כדי לגשת ל-SavedStateHandle שמתאים לאחסון כמויות קטנות של מצב שמור שצריך לשייך לרשומה מסוימת ב-back stack. החזרת תוצאה – דוגמה לתרחיש לדוגמה. (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: כללי ProGuard של navigation-ui עבור DrawerArrowDrawable עודכנו כדי להבטיח ש-android.enableJetifier=true לא נדרש. (b/147610424)
  • מניווט 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)
  • כללי ProGuard של navigation-common-ktx שומרים עכשיו בצורה נכונה רק את הכיתות של 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)
  • כללי ProGuard של navigation-ui עבור DrawerArrowDrawable עודכנו כדי לוודא ש-android.enableJetifier=true לא נדרש. (b/147610424)
  • למעכשיו, למערכי הנתונים של המודול navigation-common-ktx יש שם חבילה ייחודי של מניפסט, במקום לשתף את שם החבילה של המניפסט עם navigation-runtime-ktx. (aosp/1141947)

עדכוני יחסי תלות

גרסה

גרסה 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 שמבוססים על ניווט, בנוסף לארגומנטים ששימשו להפעלת היעד הזה.
  • שילוב של מצב SaveState של תצוגת מחזור החיים: SavedStateViewModelFactory הוא עכשיו היצרן המוגדר כברירת מחדל לשימוש כשמשתמשים ב-by navGraphViewModels() או ב-constructor של ViewModelProvider עם ViewModelStoreOwner שהוחזר על ידי NavController.getBackStackEntry() או NavController.getViewModelStoreOwner().
  • תמיכה בפרמטרים של שאילתות בקישורי עומק: עכשיו יש תמיכה בפרמטרים של שאילתות בקישורי עומק עם שינוי הסדר של הפרמטרים. עכשיו אפשר להשתמש בארגומנטים עם ערך ברירת מחדל או עם אפשרות ל-null כשמתבצעת התאמה של קישורי עומק.
  • שיפור התמיכה באנימציה: NavHostFragment משתמש עכשיו ב-FragmentContainerView מ-Fragment 1.2.0, ותוקנות בעיות שקשורות לסדר ה-Z של אנימציות ולשליחת חלונות משנה ל-Fragments.

גרסה 2.2.0-rc04

18 בדצמבר 2019

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

תיקוני באגים

  • שינינו את אנימציות ברירת המחדל של העמעום שבהן משתמש navigation-ui כך שיתאיימו לאנימציות העמעום שהותאמו בקטע 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)

שינויים ביחסי התלות

  • הניווט תלוי עכשיו במחזור החיים 2.2.0-rc03, במצב השמור של תצוגת מודל מחזור החיים 1.0.0-rc03, בפעילות 1.1.0-rc03 ובמקטע 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 מסוג Directions שנוצרו על ידי Safe Args מכילות ערכי ברירת מחדל. (b/141099045)
  • כיתות Java מסוג Args שנוצרו על ידי Safe 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • קישורי עומק עם פרמטרים של שאילתות תומכים עכשיו בפרמטרים של שאילתות בסדר מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שאפשר להקצות להם ערך 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

שינויים ב-API

תיקוני באגים

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

גרסה 2.1.0

גרסה

5 בספטמבר 2019

androidx.navigation:navigation-*:2.1.0 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

שינויים חשובים מאז גרסה 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

שינויים ב-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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

תיקוני באגים

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

גרסה 2.1.0-alpha06

2 ביולי 2019

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

תכונות חדשות

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

שינויים ב-API

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

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

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

תיקוני באגים

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

גרסה 2.1.0-alpha05

5 ביוני 2019

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

שינויים ב-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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • NavHostFragment מתייחס בצורה נכונה ל-app:defaultNavHost כשמנתב את האירועים של לחצן החזרה אחורה במערכת, וכך מתקן נסיגה ב-Navigation 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator מטפל עכשיו בצורה תקינה בפעולות popBackStack() ו-navigateUp(). b/132576764
  • תוקנה בעיית IllegalStateException: unknown destination during restore בניווט חוזר בין תרשימים מקוננים. b/131733658

גרסה 2.1.0-alpha03

7 במאי 2019

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

בעיות מוכרות

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

תכונות חדשות

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

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

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

שינויים ב-API

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

תיקוני באגים

  • עכשיו, ארגומנטי ברירת המחדל מועברים בצורה נכונה למופעי OnDestinationChangedListener. b/130630686
  • NavHostFragment עכשיו מיירט אירועי Back במערכת באמצעות 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.1.0-alpha01

19 במרץ 2019

זוהי גרסת האלפא הראשונה של הניווט '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) כחלופה ליצירת מאזין קליקים עם מזהה משאב ו-Bundle.‏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

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

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

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

יחסי תלות לפני 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

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

תיקוני באגים

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

גרסה 1.0.0-rc01

21 בפברואר 2019

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

תיקוני באגים

  • תוקנה בעיה בשימוש ב-Fragments ובפעולות ניווט מסוג singleTop b/124294805

גרסה 1.0.0-beta02

12 בפברואר 2019

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

תכונות חדשות

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

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

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

תיקוני באגים

  • הפונקציות popBackStack() ו-navigateUp מחזירות עכשיו את הערך false בצורה נכונה כשמבצעים pop של היעד האחרון ב-back stack, וכך מתקנים נסיגה לאחור (regression) שהופיעה ב-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. מעכשיו והלאה, Navigation API צפוי להישאר יציב עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים ושינויים בהתנהגות.

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

  • הניווט מבטיח עכשיו שערכים שמוגדרים כברירת מחדל לארגומנטים יטופלו באופן זהה במהלך זמן הריצה ודרך Safe Args. לכן, רק לארגומנטים עם app:argType="reference" יכולים להיות ערך ברירת מחדל שמפנה למשאב אחר (לדוגמה, @color/colorPrimary). ניסיון להשתמש בערך ברירת המחדל של קובץ העזר עם app:argType שונה יגרום לחריגה בניתוח ה-XML של הניווט. b/123551990
  • Safe Args תלוי עכשיו בפלאגין Android Gradle 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.

תיקוני באגים

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

גרסה 1.0.0-alpha10

23 בינואר 2019

בעיות מוכרות

  • ל-Safe Args אין אפשרות לייבא את הכיתה Directions שמשויכת לפעולות גלובליות. b/123307342

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

תכונות חדשות

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

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

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

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

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

תיקוני באגים

  • NavDeepLinkBuilder מטפל עכשיו בצורה נכונה בכמה קריאות PendingIntent בו-זמנית לאותו יעד, באמצעות הארגומנטים שאתם מעבירים כדי לקבוע את הייחודיות. b/120042732
  • NavController מטפל עכשיו כראוי בפעולות popBackStack() כשמשתמשים ב-NavHostFragment בתצוגת עץ או ב-Fragments צאצאים אחרים עם סטאק אחורה. b/122770335
  • NavigationUI מגדיר עכשיו בצורה נכונה את תיאור התוכן של לחצן למעלה. b/120395362
  • שיעורי הדרכה שנוצרו באמצעות Safe Args מטפלים עכשיו בצורה נכונה בפעולות גלובליות שיש להן את אותו מזהה כמו פעולה ביעד. b/122962504
  • לכיתות NavDirections שנוצרו על ידי Safe Args יש עכשיו ערכים שווים של hashCode() כאשר equals() מחזירה את הערך true. b/123043662
  • FragmentNavigator מחזירה עכשיו הודעת שגיאה טובה יותר אם מנסים לבצע FragmentTransactions בהתאמה אישית ב-FragmentManager של NavHostFragment. צריך להשתמש תמיד ב-getChildFragmentManager(). b/112927148

גרסה 1.0.0-alpha09

18 בדצמבר 2018

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

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

תכונות חדשות

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

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

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

תיקוני באגים

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

גרסה 1.0.0-alpha08

6 בדצמבר 2018

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

תכונות חדשות

  • מעכשיו, תוויות יעד, כשמשתמשים בהן עם methods של NavigationUI, יחליפו באופן אוטומטי את המכונות {argName} ב-android:label בארגומנט הנכון b/80267266
  • הניווט תלוי עכשיו ב-Support Library 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 תומך באובייקטים מסוג Serializable, כולל ערכי 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

תכונות חדשות

שינויים ב-API

  • שינוי שעלול להפר את התאימות לאחור: השיטה navigate() של Navigator כוללת עכשיו פרמטר Navigator.Extras.
  • ה-method 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

תיקוני באגים

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

גרסה 1.0.0-alpha04

19 ביולי 2018

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

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

  • ‏NavHostFragment תמיד מגדיר את ה-Fragment הנוכחי כ-Fragment הניווט הראשי, כדי לוודא שמנהלי ה-Fragment הצאצאים יופעלו לפני שמנהל ה-NavController החיצוני יופעל b/111345778

ארגומנטים בטוחים

  • שינוי תוכנה שעלול לגרום לכשלים: השם 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

תיקוני באגים

  • תוקנה בעיה בלחצן 'הקודם' במערכת אחרי קישור עמוק ליעד של קטע קוד b/111515685

גרסה 1.0.0-alpha03

12 ביולי 2018

הניווט 1.0.0-alpha03 והפלאגין של Safe Args gradle המשויך אליו מכילים כמה שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.

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

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

Safe Args

  • שינוי שגורם לשבירה של תאימות לגרסאות קודמות: תווים לא אלפאנומריים בשמות של פעולות ושל ארגומנטים יוחלפו באותיות רישיות באותיות רישיות קטנות בשמות של השיטות הרלוונטיות של NavDirections
    • למשל: DemoController.index יהפוך ל-setDemoControllerIndex b/79995048
    • לדוגמה, action_show_settings יהפוך ל-actionShowSettings b/79642240
  • שינוי שפוגע בתאימות לאחור: עכשיו, הארגומנטים נחשבים כערכים שאינם null כברירת מחדל. כדי לאפשר ערכי null בארגומנטים מסוג מחרוזת ו-Parcelable, מוסיפים את app:nullable="true" b/79642307
  • עכשיו אפשר להשתמש ב-app:type="long" עם ערכי ברירת מחדל בפורמט '123L' b/79563966
  • עכשיו יש תמיכה בארגומנטים שניתנים לחלוקה, באמצעות שם מחלקה מוגדר במלואו עבור 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 3.2 Beta 01 מוסיף עכשיו כללי שמירה לכל מאפיין android:name בקובצי XML של ניווט b/79874119
  • תוקנה דליפת זיכרון במהלך החלפת FragmentNavigator ברירת המחדל b/110900142

גרסה 1.0.0-alpha02

7 ביוני 2018

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

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

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

תיקוני באגים

  • תוקן IllegalStateException בהפעלה של ניווט מ-methods של מחזור החיים ב-Fragment. b/79632233

  • הניווט תלוי עכשיו ב-Support Library 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.