ניווט

הניווט הוא מסגרת ניווט בין 'יעדים' באפליקציה ל-Android שמספקת API עקבי, בין אם היעדים מוטמעים כ-Fragments, פעילויות או רכיבים אחרים.
העדכון האחרון גרסה יציבה מועמד לגרסה גרסת בטא גרסת אלפא
24 ביולי 2024 2.7.7 - בטא 06.2.8 -

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

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

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

מגניב

dependencies {
  def nav_version = "2.7.7"

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

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

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

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

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

Kotlin

dependencies {
  val nav_version = "2.7.7"

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

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

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

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

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

Safe Args

כדי להוסיף ארגומנטים בטוחים בפרויקט, כוללים את ה-classpath הבא בקובץ build.gradle ברמה העליונה:

מגניב

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

Kotlin

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

צריך גם להחיל אחד משני יישומי פלאגין זמינים.

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

מגניב

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

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

מגניב

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

Kotlin

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

חייב להיות לך android.useAndroidX=true קובץ אחד (gradle.properties) לפי מעבר ל-AndroidX.

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

אפשר לקרוא מידע נוסף על יחסי תלות במאמר הוספת יחסי תלות של build.

משוב

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

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

מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.

גרסה 2.8

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

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

  • העבודה לתמוך בשמירה על בטיחות סוגי הזמן עבור כתיבת ניווט והמשתמשים ב-Navigation Kotlin DSL שמבוסס על Kotlin DSL, וממשקי ה-API הניסיוניים הקודמים, עכשיו יציבים. .I873.

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

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

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

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

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

תכונות חדשות

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

גרסה 2.8.0-alpha07

17 באפריל 2024

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

תכונות חדשות

  • הוספת ארטיפקט חדש מסוג navigation-fragment-compose שכולל חלופה של ComposableNavHostFragment ל-NavHostFragment, שמאפשרת להוסיף יעדים של composable לקובצי ה-XML של הניווט. כל יעד composable צריך לבטא כמוצר ברמה העליונה, ללא שיטת @Composable של ארגומנט ששמו המוגדר במלואו משמש כמאפיין android:name בכל יעד. כשמנווטים לאחד מהיעדים האלה, נוצר מקטע מכיל כדי להציג את התוכן הקומפוזבילי. (I0ef2e, b/265480755)

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

שינויים ב-API

  • המשך התמיכה ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על ההסדרה של Kotlin. ממשקי ה-API האלה לא הסתיימו ומסומנים בהערה ExperimentalSafeArgsApi. ההערה הזו תוסר כשפלטפורמת ה-API תושלם בגרסה עתידית. (Iefd95, I409c8,

גרסה 2.8.0-alpha06

3 באפריל 2024

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

שינויים ב-API

  • התחילה התמיכה ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על ההסדרה של Kotlin. ממשקי ה-API האלה לא הסתיימו ומסומנים בהערה ExperimentalSafeArgsApi. ההערה הזו תוסר כשפלטפורמת ה-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. הכלל הזה חל גם על startDestinations בתוך NavGraph. (I0e0b5, b/109505019, b/188693139)

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.8.0-alpha04

6 במרץ 2024

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

תכונות חדשות

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

עדכון לגבי תלות

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

תיקוני באגים

  • העברה לאחור מניווט 2.8.0-alpha01: תוקנה דליפת BackStackState שבה מספר קריאות saveState() ב-NavBackStackEntry יחיד יובילו לשמירה של מספר מצבים, אבל ניתן יהיה לשחזר רק את המצב הראשון שנשמר. (I598b0, b/309559751)
  • בוצעה העברה לאחור מניווט 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, שמבצעות השוואה פנימית בין התרשים החדש לבין התרשים הקיים, מהירות הרבה יותר ויוצרות פחות פריימים שדולגו. תודה לך מיכל Z על הניתוח היסודי שהוביל לשיפור הזה. (I6ad62)
  • המערכת NavHost תעבד עכשיו את יעד ההתחלה בכרטיס היצירה הראשון במקום שיהיה צורך להמתין עד לאישור השני כדי לקרוא את המצב המעודכן. (I439a7, b/304852206)

תיקוני באגים

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

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

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

עדכון לגבי תלות

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

גרסה 2.7.0

9 באוגוסט 2023

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

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

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

עכשיו, אחרי שהגרסה AnimatedContent יציבה, הצלחנו להעביר את הקוד מאנימציה של ניווט נלווה בחזרה לניסוח הניווט עצמו.

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

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

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

עכשיו, אחרי שהגרסה AnimatedContent יציבה, הצלחנו להעביר את הקוד מאנימציה של ניווט נלווה בחזרה לניסוח הניווט עצמו.

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

שינויים חשובים בניסוח האוטומטי החל מ-2.5.0

  • מעכשיו, כשבודקים תוכן קומפוזבילי עם NavHost בתצוגה מקדימה, יוצג startDestination של Nav Graph כברירת מחדל.
  • ב-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 לניווט, ה-placeholder ימולא באופן אוטומטי ב-packageName של ההקשר בזמן הניפוח.
  • ה-FragmentNavigator משתמש עכשיו בממשקי ה-API למעבר בזמן הניווט והפתיחה של NavBackStackEntries. פירוש הדבר הוא ש-NavBackStackEntry Lifecycle ימתין עכשיו להשלמת האפקטים המיוחדים של המקטע שהכניסה אליו והיציאה שלו תסתיים לפני העברת ה-Lifecycle.State הסופי.
  • ה-DialogFragmentNavigator משתמש עכשיו בממשקי ה-API למעבר בזמן הניווט והפתיחה של NavBackStackEntries. המשמעות היא ש-NavBackStackEntry Lifecycle ימתין עכשיו עד שDialogFragment Lifecycle יעבור אל DESTROYED לפני שיעבור אל DESTROYED.
  • עכשיו יש לך אפשרות לאחזר את NavController ב-NavHostFragment ברגע שה-NavHostFragment מצורף אל FragmentManager, ולא רק אחרי onCreate().
  • התמיכה של הניווט במודולים של תכונות דינמיות תלויה עכשיו בספרייה המפורטת של העברת תכונות ב-Play.
  • הניווט Safe Args תלוי עכשיו ב-Android Gradle Plugin בגרסה 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 מכילה את שמירות האלה.

תיקוני באגים

  • תוקנה בעיה בניווט במקטעים שבה ניווט באמצעות popUpTo והוצאת מקטע מהמקבץ האחורי בלי ליצור מחדש את התצוגה שלו גרמה למערכת להפסיק לפעול. (Ieb8d4, b/281726455)

גרסה 2.6.0-rc01

10 במאי 2023

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

תיקוני באגים

  • תוקנה בעיה בניווט עם מקטעים שבה הסרת מקטע דרך ניווט באמצעות popUpTo בקריאה חוזרת (callback) של מחזור החיים שלו 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 שאינו מאפשר null, המסלול של היעד הזה חייב להכיל placeholders עבור ארגומנטים ששמם זהה לערך NavArgument שאינו null. (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 במהלך פתיחת תרשים מקונן שכולל ארגומנט שאינו אפס. (6b3581, b/249988437)
  • כשמשתמשים במערכת חזרה אחרי ניווט עם popUpTo, המצב של NavController מופיע ברשומה הנכונה. (I3a8ec, b/270447657)
  • עכשיו FragmentNavigator יקפוץ כמו שצריך רשומות כשהמקבץ האחורי קופץ דרך המערכת חזרה או popBackStack() ואם העסקה משתמשת באפקטים עבור המקטע. (I81bdf)
  • הוספת מקטעים ל-FragmentNavigator 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 שמשתמשים עכשיו במסלולים משתמשים עכשיו בדפוסי מסלול עם ארגומנטים אפסיים ופרמטרים של שאילתות שאינם מכילים נתונים (I22294, b/269302500)
  • תוקנה בעיה שבה קריאה ל-clearBackStack() מה-NavController לא גרמה לניקוי המצב השמור במנהל המקטעים המשויך למחסנית החזרה שהוחלפה. (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 כדי לוודא שהם יופעלו ב-thread הראשי. (I2c0b0, b/263427111)

תיקוני באגים

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

בעיות מוכרות

  • כשמשתמשים בניווט עם מקטעים, מחזור החיים של NavBackStackEntry לא מצליח להגיע ל-RESUMED במהלך השימוש בממשקי API של Animation. (b/269646882)
  • כשמשתמשים בניווט עם מקטעים ומנווטים באמצעות 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 מכילה את התחייבויות אלה.

תכונות חדשות

  • ב-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 חושף עכשיו את הקריאה החוזרת של 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)
  • הניווט 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. (Ib4ddc)
  • הניווט Safe Args תלוי עכשיו ב-Android Gradle Plugin בגרסה 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: תוקנה בעיה שבה מצב כתיבה שמור (למשל שימוש ב-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. (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 לניווט, ה-placeholder ימולא באופן אוטומטי ב-packageName של ההקשר בזמן הניפוח. (Iaabde, b/234223561)
  • ניסיון ליצור NavDeepLink ריק באמצעות navDeepLink Kotlin DSL יוביל עכשיו לאזהרה של איתור שגיאות בקוד (lint) שמציינת שקישור עומק דורש URI, פעולה ו/או mimetype. (I08d2f, b/154038883)

שינויים ב-API

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

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

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

תיקוני באגים

  • מניווט 2.5.2: הניווט הדינמי מנסה להתקין יעדי פעילות ממודולים אחרים לפני הניווט אליהם. (Ia2c16, b/240292838)
  • מניווט 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

  • שילוב של CreationExtrasNavigation יכול עכשיו לספק ViewModelProvider.Factory ללא שמירת מצב דרך CreationExtras של מחזור חיים 2.5.0.

ניווט SafeArgs

  • שדרגנו את התלות של Android Gradle Plugin על ידי Navigation Safe Args כך שיוסתמך על 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)

תיקוני באגים

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

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

תיקוני באגים

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

תיקוני באגים

  • מתוך ניווט 2.4.1: NavHostFragment יגדיר עכשיו כמו שצריך את OnBackPressedDispatcher כשמשתמשים בקישור תצוגה עם תרשימים מקוננים. (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() של מקטע תיכשל עם IllegalStateException. (I8a14d)
  • הפונקציה NavDeepLink לא תפענח יותר ארגומנטים פעמיים שלא לצורך, כלומר, הארגומנטים המתאימים מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399)

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

  • השימוש ב-Safe Args תלוי עכשיו ב-Android Gradle Plugin בגרסה 7.0.4. המשמעות היא שתכונות הניווט הבטוחות לא יפעלו יותר עם גרסאות של Android Studio שקודמות לגרסה 7.0, אבל עכשיו תואמות פלאגין Android Gradle מגרסה 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 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 2.4.1

גרסה 2.4.1

9 בפברואר 2022

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

תיקוני באגים

  • עכשיו השדה NavHostFragment יגדיר בצורה תקינה את OnBackPressedDispatcher כשמשתמשים ב-viewbinding עם תרשימים בתצוגת עץ. (Ifbb51, b/214577959)
  • עכשיו, כשמקשרים עומק דרך כמה NavGraphs מקוננים, המקבץ החוזר יכלול כראוי יעדי התחלה ברמת ביניים. (I504c0, b/214383060)
  • בוצעה העברה לאחור מניווט 2.5.0-alpha01: תוקנה בעיה בגישה ל-ViewModel נוצרה דרך by navGraphViewModels() מתוך onCreate() של מקטע ייכשל עם IllegalStateException. (I8a14d)
  • הועבר לאחור מניווט 2.5.0-alpha01: פונקציות NavDeepLink לא מפענחות יותר ארגומנטים שלא לצורך פעמיים, כלומר, הארגומנטים שמפוענחים בצורה נכונה מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399)
  • בוצעה העברה לאחור מניווט 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)

גרסה 2.4.0

גרסה 2.4.0

26 בינואר, 2022

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

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

  • כל פריטי המידע שקשורים לניווט נכתבו מחדש ב-Kotlin. כך שיפרנו את יכולת האפס של מחלקות שמשתמשות בגנרי (כמו NavType מחלקות משנה). כל הפונקציות של תוספי Kotlin שהיו חלק מפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של -ktx הועברו אל פריטי המידע העיקריים התואמים שלהם. פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של -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() שיכולים לעזור בהטמעת ממשק ניווט מותאם אישית. findStartDestination() היא פונקציית תוסף ב-NavGraph שמאתרת את יעד ההתחלה בפועל שיוצג כשמנווטים לתרשים, גם אם startDestination הוא בעצמו NavGraph מקונן. getHierarchy() היא פונקציה ב-NavDestination שניתן להשתמש בה כדי לבדוק אם יעד נתון נמצא בהיררכיה של יעד אחר.

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

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

  • עכשיו חברת Safe Args יוצרת method 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 מקביל שעושה מסלול.

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

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

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

  • הנכס popUpTo Kotlin ב-Kotlin DSL הוצא משימוש לטובת popUpToId.
  • ה-API של getStartDestination() הוצא משימוש לטובתך מתוך getStartDestinationId().

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

כתיבת ניווט

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

הגרסה הזו מספקת:

  • תוכן קומפוזבילי NavHost שמאפשר ליצור את תרשים הניווט באמצעות Kotlin DSL, באמצעות היעדים composable ו-dialog, וגם תמיכה בספקי ניווט אופציונליים כמו חומרי ניווט נלווים.
  • תמיכה נדרשת במקרה של עמעום הדרגתי בין יעדים. אפשר להשתמש באנימציה של ניווט נלווה כדי לשלוט במעברים בין כניסה ויציאה באמצעות ממשקי API ניסיוניים של כתיבה ידנית.
  • היקף של Lifecycle לכל יעד קומפוזבילי. כל יעד מגיע למצב RESUMED רק כשכל מעברים נכנסים מסתיימים, ומיד יורד ל-STARTED כשמתחילים מעברים יוצאים. כך אפשר להימנע מכל הבעיות שקשורות לIllegalStateException ולריבוי נקודות מגע, על ידי הפעלת קריאה ל-navigate רק כשערך ה-Lifecycle הוא RESUMED.
  • ההיקף של ViewModel (באמצעות ממשק ה-API של viewModel() של Lifecycle ViewModel Compose 2.4.0 או hiltViewModel() של Hilt Navigation Compose 1.0.0 ברמת היעד, ומספק היקף ששורד את שינויי ההגדרות ונמצא במקבץ האחורי (כשהתוכן הקומפוזבילי מתווסף בדרך אחרת) ואות ב-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()
        }
    }
}

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

ריבוי מקבצים

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

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

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

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

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • ב-navOptions Kotlin DSL, אפשר להוסיף את הנכס הבוליאני restoreState ואת המאפיין הבוליאני saveState ב-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.
  • הניווט תלוי עכשיו מחזור חיים 2.3.1 ועכשיו מסמן את setGraph(), popBackStack(), navigateUp(), ו-navigate(), שיטות שמעדכנות את NavBackStackEntry Lifecycle, בתור @MainThread, התאמת הניווט ל-thread הראשי הוכנסו לאכיפה במחזור החיים 2.3.0.
  • עכשיו קישורי העומק מוודאים שכל הארגומנטים הנדרשים (אלה שאין להם ערכי ברירת מחדל) נמצאים ב-Uri.
  • ארגומנטים מנותחים במסגרת NavDeepLink מביאים בחשבון סימני פאונד באותו אופן כמו סימני שאלה כמפריד בין מקטעי נתיב, וכך מונע מארגומנט להתפרס על פני סימן הפאונד.
  • כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args כולל עכשיו ארגומנטים לפני ערכי ברירת המחדל כפרמטרים.
  • כשיוצרים ארגומנטים, מערכת Safe Args מוסיפה פרמטרים בלי ערכי ברירת מחדל לפני הערכים עם ערכי ברירת המחדל.
  • בשלב הזה, הכלי Safe-Args תלוי ב-Android Gradle Plugin 4.2.0. המשמעות היא שלא אמורה להופיע יותר האזהרה לגבי שימוש ב-applicationIdTextResource.

בעיות מוכרות

  • תוקן בניווט 2.5.0-alpha01: גישה ל-ViewModel נוצרה דרך by navGraphViewModels() מתוך onCreate() של מקטע תיכשל עם IllegalStateException. (b/213504272)
  • תוקן בניווט 2.5.0-alpha01: הפרמטר Safe Args 2.4.0 לא תואם עם Android Gradle Plugin מגרסה 7.1.0 ואילך. (b/213086135)
  • קישורי עומק עם תרשימי ניווט מקוננים לא יוצרים כראוי Backstack. (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)

תיקוני באגים בצורה בטוחה

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

שינויים ב-API

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

תיקוני באגים

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

תכונות חדשות

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

שינויים ב-API

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

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

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

תיקוני באגים

  • בעת שימוש בכתיבה 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(), לא יגרמו יותר חריג לכך שאף יעד לא נמצא במקבץ האחורי. (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 של NavBackStackEntrys, כלומר שימוש ב-NavHost בקטע יהיה מורכב מחדש כמו שמחזור החיים משתנה, ולא כתוצאה מכך מסך ריק. (I4eb85, b/195864489)
  • תוקנה בעיה שבה סגירה של DialogFragment לא תעדכן כראוי את מצב NavController אחרי שחזור הפעילות (כלומר, אחרי שינוי בהגדרה). (Icd72b)
  • תוקנה בעיה שבה נפתחה היעד של תיבת הדו-שיח לא יעדכן את טיפול בלחצן 'הקודם' במערכת, שעלול לגרום NavController כדי ליירט את הלחצן 'הקודם' למרות שאין בו אף מקבץ חזרה שאפשר לקפוץ. (If3b34)
  • הארגומנטים הבטוחים יוצרים עכשיו באופן אוטומטי toSavedStateHandle לארגומנטים שבהם אפשר להשתמש כדי לבדוק את קוד ViewModel. (If1e2d, b/193353880)

גרסה 2.4.0-alpha06

4 באוגוסט 2021

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

שינויים ב-API

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

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

  • בניווט עם אנימציות (כמו Crossfade), Lifecycle של היעד החדש יגיע עכשיו רק אל RESUMED כשהאנימציה תסתיים. (If0543, b/172112072, b/194301889)
  • 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. (I0b8db, b/175392262)

תיקוני באגים

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

גרסה 2.4.0-alpha04

1 ביולי 2021

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

תכונות חדשות

  • פריט המידע שנוצר בתהליך הפיתוח (Artifact) של navigation-fragment כולל עכשיו הטמעה מוגדרת מראש של פריסת שתי חלוניות דרך AbstractListDetailFragment החדש. במקטע הזה נעשה שימוש ב-SlidingPaneLayout כדי לנהל חלונית רשימה (שמחלקת המשנה שלך מספקת) וחלונית פרטים שהיישום שלה הוא NavHostFragment, כפי שאפשר לראות בהטמעה לדוגמה שלנו. (Iac4be, b/191276636)
  • NavHost של פריט המידע שנוצר בתהליך הפיתוח (Artifact) מסוג 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)
  • מכונות Navigator בהתאמה אישית יכולות עכשיו להשתמש בממשקי ה-API של pushWithTransaction ו-popWithTransition ב-NavigatorState כדי לדחוף או לפתוח יעד באופן אסינכרוני. הערה: ממשקי ה-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)
  • תוקנה רגרסיה שהתרחשה ניווט 2.4.0-alpha01, כאשר setupActionBarWithNavController() לא להסיר כראוי את הסמל למעלה כשאתם נמצאים יעד ברמה העליונה. (I5d443, b/189868637)
  • תוקן IllegalStateException כאשר מתבצעת התקשרות אל popBackStack() אחרי שהקפצה בעבר תרשים הבסיס של NavController. (I2a330, b/190265699)
  • כללי ProGuard עבור by navArgs() מוגדרים עכשיו כמו שצריך חלים כשמשתמשים ב-navigation-common או בפריטי מידע שנוצרו בתהליך הפיתוח (Artifact) שתלויות בו. (I68800, b/190082521)
  • OnDestinationChangedListener שמתקשר navigate() בפעם הראשונה שמתקבלת שיחה חוזרת לקבל קריאה חוזרת (callback) שנייה עם היעד עברת אל. (Ie5f9e, b/190228815)
  • השימוש ב-Safe Args כבר לא קורס כשמשתמשים בו עם תכונה דינמית ו-AGP 7.0 ומעלה. (I69518, b/189966576)

בעיה ידועה

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

גרסה 2.4.0-alpha02

2 ביוני 2021

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

תכונות חדשות

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

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

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

שינויים ב-API

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

תיקוני באגים

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

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

  • לשיטת setId ב-NavaDestination יש עכשיו הערות תקינות עם @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 מכילה את התחייבויות אלה.

תכונות חדשות

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

ריבוי מקבצים

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

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

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

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

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • ב-navOptions Kotlin DSL, אפשר להוסיף את הנכס הבוליאני restoreState ואת המאפיין הבוליאני saveState ב-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 Kotlin DSL. (b/172823546)

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

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

  • נכס Kotlin 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

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

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

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

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

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

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

תאימות לכתיבה

  • androidx.navigation:navigation-compose:2.4.0-alpha01 תואם רק לגרסה 1.0.0-beta07 ואילך של 'כתיבה'.

תיקוני באגים

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

גרסה 1.0.0-alpha10

7 באפריל 2021

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

שינויים ב-API

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

תיקוני באגים

  • NavHost עובד עכשיו גם אם לא נמצא OnBackPressedDispatcherOwner, זה מה שקורה כשצופים בתצוגה מקדימה של NavHost. (I7d8b4)
  • התכונה 'כתיבת ניווט' תלויה עכשיו בניווט 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 ריק כדי לקבוע בצורה מדויקת יותר האם 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 מאכלס עכשיו את CompositionLocal ב-LocalSavedStateRegistryOwner עם NavBackStackEntry של היעד הזה, ומבטיח שכל מדינה שנשמרה ישירות ב-SavedStateRegistry תישמר ותשוחזר לצד היעד. (I435d7, b/179469431)

גרסה 1.0.0-alpha07

10 בפברואר 2021

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

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

גרסה 1.0.0-alpha06

28 בינואר 2021

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

שינויים ב-API

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

גרסה 1.0.0-alpha05

13 בינואר 2021

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

עודכנה לאפשרות 'כתיבה' 1.0.0-alpha10.

גרסה 1.0.0-alpha04

16 בדצמבר 2020

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

  • עודכנה תאימות ל'כתיבה' 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 לצורך שימוש בחלון קופץ ומפעילים את פעולות ה-SingleTop (If96c3, b/171468994)
  • נוספה פונקציית ניווט שמשתמשת במסלול במקום מזהה שמאפשר לך לבנות גרפים מקוננים בחלונית הניווט DSL. (I1661d)
  • startDestination מופיע עכשיו לפני המסלול ברשימה של פרמטרים ל-NavHost (Ie620e)
  • עכשיו אפשר ליצור תרשים שמבוסס על המסלול כהתחלה מחוץ לתוכן קומפוזבילי של NavHost. (Iceb75)

גרסה 1.0.0-alpha01

28 באוקטובר 2020

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

תכונות חדשות

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

הגרסה הראשונית הזו מספקת:

  • תוכן קומפוזבילי NavHost שמאפשר ליצור את תרשים הניווט באמצעות 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 בתור הבעלים של מחזור החיים מיירטים עכשיו כראוי אחרי מחזור החיים של הפעילות הוא STOPPED, ואז STARTED (Iff94f, b/182284739)
  • ניתוח דומיין של קישורי עומק הוא עכשיו לא תלוי-רישיות, כדי לוודא שה-www.example.com תואם גם ל-www.example.com וגם ל-www.Example.com. חשוב לזכור ששמות הפרמטרים של השאילתות עדיין תלויי אותיות רישיות (case-sensitive). (#144, b/153829033)
  • תוקנו NullPointerException שעלולים להתרחש כשביעד יש כמה ארגומנטים של ברירת מחדל שאינם ניתנים כ-null, ואתם עוברים ליעד הזה תוך שינוי על קבוצת משנה של הארגומנטים האלה בלבד. (aosp/1644827)

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

  • הפלאגין Safe Args Gradle Plugin תלוי עכשיו ב-Kotlin Gradle Plugin 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 על בקשת המשיכה, כדי לוודא שעכשיו אפשר לנתח כראוי ארגומנטים של ReferenceType כשהם נשלחים כחלק מ-URI של קישור עומק. (#127, b/179166693)
  • תודה tatocaster על בקשת המשיכה כדי לאפשר ל-defaultValue לארגומנט עם app:argType=”float” עכשיו תומך בערכי ברירת מחדל מספרים שלמים. (#117, b/173766247)

גרסה 2.3.3

גרסה 2.3.3

27 בינואר, 2021

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

תיקוני באגים

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

גרסה 2.3.2

גרסה 2.3.2

2 בדצמבר, 2020

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

תיקוני באגים

  • תוקנה רגרסיה בNavigationUI שגרמה לכך ששימוש ביעד <activity> עם onNavDestinationSelected לא הצליח לנווט לפעילות. (I22e34, b/171364502)
  • תוקנה בעיה שגרמה להפעלת האפליקציה navigation-dynamic-features-fragment וגרמה לניווט ליעד החדש שהותקן כמה פעמים. (aosp/1486056, b/169636207)
  • תוקנה בעיה שבה ארגומנטים שמוגדרים כברירת מחדל לא נשלחו למכונות OnDestinationChangedListener במהלך השימוש ב-launchSingleTop. (I2c5cb)
  • תוקנה בעיה שבה ניווט לתרשים ניווט מקונן לא היה גורם ליצירת מופע חדש של תרשים במקבץ האחורי. (Ifc831)
  • תוקנה בעיה שבה שימוש ב-navigate() עם popUpTo שהסיר את היעד האחרון בתרשים ניווט לא היה גורם להשמדה מיידית ולהסרת תרשים הניווט עצמו מהמקבץ האחורי. (I910a3)
  • ניווט 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)
  • הניווט כולל עכשיו את היעד הנוכחי ב-DisallowArgumentexcept 'ללא יעד עם מזהה'. הפעולה הזו אמורה לשפר את חוויית ניפוי הבאגים של המפתחים. (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

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

בעיות מוכרות

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

תיקוני באגים

  • תוקנה בעיה שבה המערכת תתעלם ממנגנוני Intent של קישורי עומק כשמשתמשים ביעד התחלה בתוך יעד. (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)
  • עכשיו, ה-Navigation Graph של Kotlin DSL חושף Map defaultArguments לפעולות, מה שמשקף את היכולת להגדיר ערכי ברירת מחדל לרכיבי <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 מכילה את התחייבויות אלה.

תכונות חדשות

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

שינויים ב-API

  • המחלקה DynamicExtras כבר לא משתמשת בדפוס builder ועכשיו אפשר ליצור אותה באופן ישיר. (aosp/1253671)
  • עכשיו DynamicActivityNavigator לוקח את Context ב-constructor שלו ולא את 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)

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

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

תכונות חדשות

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

תיקוני באגים

  • מניווט 2.2.1: קישורי עומק ללא פרמטרים של שאילתה מתעלמים עכשיו כמו שצריך מפרמטרים של שאילתה, במקום לצרף אותם לרכיבי {argument} בסוף או לא תואמים לקישור העומק. (b/147447512)
  • מניווט 2.2.1: navigation-ui כללי ProGuard ל-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=””) ומגדירה עכשיו את הכותרת כמחרוזת ריקה. התכונה הזו הושקה בעבר בניווט 2.3.0-alpha04. (b/148679860)
  • נכון לעכשיו, כללי ProGuard navigation-common-ktx שומרים רק את המחלקות NavArgs שנמצאות בשימוש, ולא את כל המופעים של NavArgs. התכונה הזו הושקה בעבר בניווט 2.3.0-alpha03. b/150213558

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

גרסה 2.2.1

גרסה 2.2.1

5 בפברואר 2020

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

תיקוני באגים

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

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

גרסה 2.2.0

גרסה 2.2.0

22 בינואר, 2020

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

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

  • NavBackStackEntry: עכשיו אפשר לקרוא לפונקציה NavController.getBackStackEntry() ולהעביר את המזהה של יעד או את תרשים הניווט במקבץ האחורי. הפונקציה NavBackStackEntry שחוזרת מספקת LifecycleOwner, ViewModelStoreOwner (אותו מוחזר על ידי NavController.getViewModelStoreOwner()) ו-SavedStateRegistryOwner שמבוסס על ניווט, בנוסף למתן הארגומנטים ששימשו לתחילת היעד הזה.
  • שילוב של מצב 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 משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

תכונות חדשות

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

תיקוני באגים

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

גרסה 2.2.0-alpha01

7 באוגוסט 2019

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

תכונות חדשות

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

שינויים ב-API

תיקוני באגים

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

גרסה 2.1.0

גרסה 2.1.0

5 בספטמבר 2019

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

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

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

גרסה 2.1.0-rc01

7 באוגוסט 2019

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

שינויים ב-API

  • ה-API של getViewModelStore() שהוצא משימוש ב-NavController הוסר ב-2.1.0-alpha02. (aosp/1091021)

גרסה 2.1.0-beta02

19 ביולי 2019

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

תיקוני באגים

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

גרסה 2.1.0-beta01

17 ביולי 2019

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

תכונות חדשות

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

תיקוני באגים

  • תוקנה בעיית תזמון במהלך שימוש במספר NavHostFragments עם אותו קונטיינר עם findNavController(). (b/136021571)

גרסה 2.1.0-alpha06

2 ביולי 2019

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

תכונות חדשות

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

גרסה 2.1.0-alpha05

5 ביוני 2019

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 2.1.0-alpha04

16 במאי 2019

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

תיקוני באגים

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

בעיות מוכרות

  • 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() כדי שיהיה ברור שזוהי נקודת הכניסה הנכונה להוספת נתוני ניווט מותאמים אישית למחלקות משניות ב-NavHostFragment. b/122802849
  • השיטה hasDeepLink() נוספה אל NavDestination כדי לאפשר לכם לבדוק אם Uri מסוים יכול להיות מטופל ביעד הזה, או במקרה של NavGraph, ביעד כלשהו בתרשים הניווט. b/117437718

תיקוני באגים

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

  • הערכים של android:name עבור היעדים <activity> כבר לא מנותחים למחלקה בזמן האינפלציה, כך שאין החרגות מסוג ClassNotFound : כשמשתמשים בתכונות דינמיות. 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) חדשה נוסף כחלופה ליצירת האזנה לקליקים עם מזהה המשאב והחבילה. b/127631752
  • האפשרות FragmentNavigator.instantiateFragment הוצאה משימוש. ברירת המחדל עכשיו משתמש ב-FragmentFactory כדי ליצור מקטעים (Fragments). b/119054429

תיקוני באגים

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

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

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

יחסי תלות לפני AndroidX

בגרסאות של הניווט שקודמות ל-AndroidX, צריך לכלול את יחסי התלות הבאים:

dependencies {
    def nav_version = "1.0.0"

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

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

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

גרסה 1.0.0

גרסה 1.0.0

14 במרץ 2019

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

גרסה 1.0.0-rc02

26 בפברואר 2019

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

תיקוני באגים

  • תוקנה בעיה שבה המערכת תתעלם מ-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 כמו שצריך במהלך ההקפצה היעד האחרון במקבץ האחורי, תיקון רגרסיה שנוספה ב-1.0.0-beta01. b/123933201
  • הניווט מגדיר עכשיו בצורה נכונה את ClassLoader במהלך השחזור של את מצב המכונה שנשמר, וכך להימנע מבעיות כשמשתמשים במחלקות מותאמות אישית Navigator מצב שמור או בארגומנטים שנשלחו אל NavDestination. b/123893858
  • מחלקות של NavArgs שנוצרו ב-Safe Args כבר לא קורסות במהלך שחזור ארגומנט Parcelable[] ממצב המכונה שנשמרה. b/123963545
  • מעכשיו, Safe Args מנקים בצורה תקינה מחלקות Kotlin מיותרות שנוצרו על ידי Kotlin. b/124120883

גרסה 1.0.0-beta01

4 בפברואר 2019

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

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

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

תיקוני באגים

  • עכשיו ניתן להשתמש ב-Safe Args במודולים של ספריות ותכונות בכל הגרסאות של הפלאגין Android Gradle. b/121304903
  • תוקנה רגרסיה שגרמה לפעולת popBackStack() אחת: להקפיץ את כל העותקים של יעד מסוים מהחלק העליון של המקבץ, במקום רק יעד אחד בכל פעם. b/123552990
  • תוקנה בעיה שגרמה לביטול הסנכרון של מצב FragmentNavigator עם המצב של NavController, שגורם ל-IllegalStateException כאשר בניסיון לשחזר את המקבץ האחורי. b/123803044
  • תוקנה בעיה שבה החץ המטופל בNavigationUI לא הצליח מופיעות כשמשתמשים ב-ProGuard עם ערפול קוד (obfuscation). 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 שקשורות לפעולות גלובליות. b/123307342

גרסה 1.0.0-alpha10

23 בינואר 2019

בעיות מוכרות

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

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

תכונות חדשות

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

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

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

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

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

תיקוני באגים

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

גרסה 1.0.0-alpha09

18 בדצמבר 2018

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

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

תכונות חדשות

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

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

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

תיקוני באגים

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

גרסה 1.0.0-alpha08

6 בדצמבר 2018

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

תכונות חדשות

  • תוויות של יעדים, כשמשתמשים בהן עם NavigationUI שיטות, יופעלו מעכשיו באופן אוטומטי צריך להחליף {argName} מופעים בandroid:label בארגומנט הנכון b/80267266
  • הניווט תלוי עכשיו בספריית התמיכה בגרסה 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
  • ה-method 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 תומך באובייקטים שניתנים לשינוי טורי, כולל ערכי Enum. סוגי טיפוסים בני מנייה (enum) יכולים להגדיר ערך ברירת מחדל באמצעות שימוש בליטרל 'טיפוסים בני מנייה (enum)' ללא שם המחלקה. (למשל, app:defaultValue="READ") b/111316353
  • Safe Args תומך במערכים מכל הסוגים הנתמכים b/111487504
  • מעכשיו, Safeargs מתעלם מתיקיות משנה של ספריות משאבים 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 וכבר לא יפורסמו.
  • פריט המידע שנוצר בתהליך הפיתוח (Artifact) מסוג navigation-testing תלוי בתקן Kotlin לספרייה. ה-API השתנה כדי שיתאים יותר ל-Kotlin אבל אתה יכול להמשיך להשתמש בו בבדיקות שנכתבו ב-Java.
  • אין יותר תמיכה בתרשימי ניווט שרשומים במניפסט המטא-נתונים. b/118355937
  • לא ניתן יותר לצרף פעולות אל <activity> יעדים. aosp/785539

תיקוני באגים

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

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

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

גרסה 1.0.0-alpha06

20 בספטמבר 2018

תכונות חדשות

שינויים ב-API

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

תיקוני באגים

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

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

  • מעכשיו, המחלקה של אפליקציית 'מסלול' של ההורה שלה תרחיב עכשיו את המחלקה במסלול ליעד ניווט, אם היא קיימת b/79871405
  • למסלולים ולמחלקות Args יש עכשיו הטמעה שימושית של toString() b/111843389

גרסה 1.0.0-alpha05

10 באוגוסט 2018

תיקוני באגים

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

גרסה 1.0.0-alpha04

19 ביולי 2018

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

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

  • NavHostFragment תמיד יגדיר את ה-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
  • שיטת הניווטUI.setupWithNavController ל-ColdsingToolbarLayout נוספה b/110887183
  • PopBackStack() מחזירה את הערך False כשהמחסנית האחורית ריקה או כשמזהה היעד הנתון לא נמצא במקבץ האחורי b/110893637
  • מעכשיו, ב-FragmentNavigator, המערכת מתעלמת מפעולות ניווט אחרי שמירת המצב ב-FragmentManager, וכך היא לא מתעדת את החריגים "לא ניתן לבצע את הפעולה הזו אחרי onSaveInstanceState" b/110987825

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

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

גרסה 1.0.0-alpha02

7 ביוני 2018

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

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

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

תיקוני באגים

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

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

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

  • תוקן StackOverflowError במהלך השימוש ב-NavDeepLinkBuilder. b/109653065

  • תוקן IllegalArgumentException בניווט חזרה לתרשים בתוך תרשים. b/80453447

  • תוקנה בעיה במקטעים חופפים במהלך השימוש ב-launchSingleTop. b/79407969

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

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

שינויים ב-API

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

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

גרסה 1.0.0-alpha01

8 במאי 2018

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