ניווט
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 22 באפריל 2026 | 2.9.8 | - | - | 2.10.0-alpha03 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Navigation, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.8" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.8" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
כדי להוסיף את Safe Args לפרויקט, מוסיפים את classpath הבא לקובץ build.gradle ברמה העליונה:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.8" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.8" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
בנוסף, צריך להחיל אחד משני התוספים הזמינים.
כדי ליצור קוד בשפת Java שמתאים למודולים של Java או למודולים משולבים של Java ו-Kotlin, מוסיפים את השורה הזו לקובץ build.gradle של האפליקציה או המודול:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
לחלופין, כדי ליצור קוד Kotlin שמתאים למודולים של Kotlin בלבד, מוסיפים:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
צריך להוסיף את android.useAndroidX=true לקובץ gradle.properties בהתאם להוראות במאמר מעבר ל-AndroidX.
מידע על שימוש בתוספי Kotlin זמין במסמכי התיעוד של ktx.
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 2.10 של מערכת הניווט
גרסה 2.10.0-alpha03
22 באפריל 2026
androidx.navigation:navigation-*:2.10.0-alpha03 מופץ. גרסה 2.10.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- עדכון של Compose
compileSdkל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. (Id45cd, b/413674743)
External Contribution
- נוספו יעדים של
watchosו-tvosלמודוליםnavigation-common,navigation-runtimeו-navigation-testing(I60e46) - הגדרת
DefaultNavTransitionsכציבורי (Ide293)
גרסה 2.10.0-alpha02
25 במרץ 2026
androidx.navigation:navigation-*:2.10.0-alpha02 מופץ. גרסה 2.10.0-alpha02 מכילה את השמירות האלה.
גרסה 2.10.0-alpha01
11 במרץ 2026
androidx.navigation:navigation-*:2.10.0-alpha01 מופץ. גרסה 2.10.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
-
NavHostכוללת עכשיו עומס יתר שמקבל פרמטרים שלpredictivePopEnterTransitionו-predictivePopExitTransitionכדי לאפשר מעבר בהתאמה אישית במהלך חיזוי תנועת החזרה. (Iac9b0, b/478294569)
עדכון של גרסת ה-SDK המינימלית
- ערך ברירת המחדל של minSdk השתנה מ-API 21 ל-API 23, כמו בשאר ספריות AndroidX. (Ibdfca, b/380448311, b/435705964, b/435705223)
External Contribution
-
navigation:navigation-common,navigation:navigation-runtimeו-navigation:navigation-testingתומכים עכשיו ב-desktop, Linux, macOS, iOS, JavaScript ו-WASM בנוסף ל-Android. תודה, Konstantin Tskhovrebov!(I035d9, Iec624, I1615d)
גרסה 2.9
גרסה 2.9.8
22 באפריל 2026
androidx.navigation:navigation-*:2.9.8 מופץ. גרסה 2.9.8 מכילה את השמירות האלה.
תיקוני באגים
- שיפרנו את
NavHostכדי לחזק את ההגנה מפני אפשרויותNullPointerExceptionשנגרמות בגלל מרוץ תהליכים עם חיזוי החזרה. (Ie36c6, b/500945998)
גרסה 2.9.7
28 בינואר 2026
androidx.navigation:navigation-*:2.9.7 מופץ. גרסה 2.9.7 מכילה את השמירות האלה.
תיקוני באגים
- בניווט
SafeArgsאין יותר בעיות של שמירת הגדרות במטמון כשמשתמשים בו עם שירותי Google. (I57cda, b/458071608) - תוקן הבונה של הבדיקה
SavedStateHandleבבדיקת הניווט שלא פענח אתList<String>. (I26aac,b/454180135)
גרסה 2.9.6
5 בנובמבר 2025
androidx.navigation:navigation-*:2.9.6 מופץ. גרסה 2.9.6 מכילה את השמירות האלה.
תיקוני באגים
- הפלאגין Navigation
SafeArgsהועבר לממשקי ה-API המודרניים של פלאגין של Android Gradle, וכך מובטחת התאימות שלו לכל הגרסאות של AGP 8.4.2 ואילך. כתוצאה מהשינויים האלה, ספריית הפלט של קבצים שנוצרו על ידי התוסף השתנתה למיקום ברירת המחדל שסופק על ידי AGP. (Ie09d6, I7c431, b/203559535, b/293920476, b/269532448, b/443261197) - התוסף Navigation
SafeArgsלא יצריך יותר הגדרה של המאפייןuseAndroidXכשמשתמשים בו עם AGP בגרסה 9.0.0-alpha04 ומעלה. (I6c3a4, b/444746731, b/443106400)
גרסה 2.9.5
24 בספטמבר 2025
androidx.navigation:navigation-*:2.9.5 מופץ. גרסה 2.9.5 מכילה את השמירות האלה.
תיקוני באגים
- הספרייה Navigation Safe Args יכולה עכשיו לטפל בתמיכה של AGP 9.0 ב-kotlin מובנה. (I1d9d76)
עדכון תלות
- פלאגין Navigation Safe Args תלוי עכשיו בגרסה 8.4.2 של פלאגין של Android Gradle. (b/431847270, I5932a)
גרסה 2.9.4
10 בספטמבר 2025
androidx.navigation:navigation-*:2.9.4 מופץ. גרסה 2.9.4 מכילה את השמירות האלה.
תיקוני באגים
- מניעת קריסה כשאירוע של חזרה עם חיזוי מועבר באמצע הפריים אחרי שהגורם המטפל הושבת במעבר
NavHost. (I5667c, b/384186542)
גרסה 2.9.3
30 ביולי 2025
androidx.navigation:navigation-*:2.9.3 מופץ. גרסה 2.9.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה שגיאה ב-
NavControllerשגרמה ל-ConcurrentModificationExceptionכשנעשה שימוש ב-OnDestinationChangedListeners. (If7406, b/417784831) - תוקנה שגיאה שהתרחשה כשנעשה שימוש ב-
navigate(uri, navOptions,navigationExtras), שבה התוספים לא נלקחו בחשבון. (I67fb7, b/430336813)
גרסה 2.9.2
16 ביולי 2025
androidx.navigation:navigation-*:2.9.2 מופץ. גרסה 2.9.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך שההזנה לא חזרה לפעולה כשתיבת הדו-שיח שמעל ההזנה נסגרה (Idb20e, b/418746335)
- תוקנה השגיאה
MissingFieldExceptionבבדיקה שלSavedStateHandleעם מסלולים בטוחים לסוגים בזמן השימוש ב-NavTypesבהתאמה אישית. (I2f843, b/421002511)
גרסה 2.9.1
2 ביולי 2025
androidx.navigation:navigation-*:2.9.1 מופץ. גרסה 2.9.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך שאובייקטים מסוג
NavEntriesשנוצרו באמצעות single top לא עברו אף פעם את השלב CREATED ב-Lifecycle.Stateשלהם. (I043ba, b/421095236)
גרסה 2.9.0
7 במאי 2025
androidx.navigation:navigation-*:2.9.0 מופץ. גרסה 2.9.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.8.0
- פעולות של Navigation Safe Args נוצרות עכשיו עם ההערה
@CheckResultכדי לוודא שהן בשימוש.
ממשק SupportingPane
- מעכשיו, רכיבי Custom Navigator יכולים לסמן את היעדים שלהם ככאלה שמטמיעים את הממשק
SupportingPane, וכך לציין ל-NavControllerשהיעדים האלה יוצגו לצד יעדים אחרים. לדוגמה, באמצעות הממשק הזה אפשרRESUMEDכמה יעדים בו-זמנית.
Compose Kotlin Multiplatform
- בניווט יש עכשיו פונקציה חדשה משותפת
NavController.handleDeepLink()שמקבלתNavDeepLinkRequestבמקוםIntent. כך פלטפורמות שאינן Android יוכלו לטפל בקישורי עומק בצורה תקינה. תודה, קונסטנטין צ'וברובוב! - בניווט יש עכשיו
NavUri, פונקציית מנתח חדשה משותפת שהיא API תואם ל-URI של Android בפלטפורמות אחרות. כך אפשר ליצור URI באופן שלא תלוי בפלטפורמה. תודה, קונסטנטין צ'וברובוב!
פונקציות בטוחות לטיפוס
- ממשקי ה-API בטוחים לשימוש, ובעבר הייתה אליהם גישה רק באמצעות שיטות
reified, כלומר: ל-composable<YourScreen>יש עכשיו גרסאות לא מוחשיות שמקבלות ישירות מופע שלKClass. - במניעת שגיאות הקלדה של ניווט יש עכשיו תמיכה במחלקות ערכים כנתיב או כסוג הארגומנט של נתיב.
גרסה 2.9.0-rc01
23 באפריל 2025
androidx.navigation:navigation-*:2.9.0-rc01 מופץ. גרסה 2.9.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- הוסרו כל היעדים של פלטפורמות שאינן Android מ-Jetpack Navigation, כי היעדים האלה לא פועלים בפועל. במקום זאת, מסופקים עכשיו קובצי stub לפלטפורמות שונות.(I2877d)
גרסה 2.9.0-beta01
9 באפריל 2025
androidx.navigation:navigation-*:2.9.0-beta01 מופץ. גרסה 2.9.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- ה-API המשותף של
parseStringAsNavUriהשתנה לפונקציית factory שלNavUriשמקבלת מחרוזת. (I4db6e, b/403616316)
עדכונים של יחסי תלות
- הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)
גרסה 2.9.0-alpha09
26 במרץ 2025
androidx.navigation:navigation-*:2.9.0-alpha09 מופץ. גרסה 2.9.0-alpha09 מכילה את השמירות האלה.
תכונות חדשות
- מודול
navigation-testingתומך עכשיו במחשבים, ב-Linux, ב-macOS וב-iOS, בנוסף ל-Android. (I2b770, b/398265336) - התמיכה ב-
NavTypeזמינה עכשיו במחשבים, ב-Linux, ב-macOS וב-iOS, בנוסף ל-Android. (I297d8)
גרסה 2.9.0-alpha08
12 במרץ 2025
androidx.navigation:navigation-*:2.9.0-alpha08 מופץ. גרסה 2.9.0-alpha08 מכילה את השמירות האלה.
תיקוני באגים
- מתוך Navigation
2.8.9: תוקנה רגרסיה שנמצאה ב-Navigation 2.8.8, שדרשה שקישור עומק יתאים בדיוק לכל השדות של בקשת קישור עומק או של Intent כדי להיחשב כהתאמה. כתוצאה מכך, קישורי עומק שהכילו התאמות חלקיות לשדות ולא הכילו התאמות אחרות לא פעלו יותר. (Ie5e36, b/399826566)
External Contribution
- פונקציית ניתוח נפוצה חדשה ליצירת
NavUri. תודה, קונסטנטין צ'וברובוב! (If0a6a)
גרסה 2.9.0-alpha07
26 בפברואר 2025
androidx.navigation:navigation-*:2.9.0-alpha07 מופץ. גרסה 2.9.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה ניסיון להשתמש ב-
saveStateעם חלון קופץ לא כולל גרם ל-savedState ריק, שיכול היה לגרום לקריסה בשחזור. (I9f3e8, b/395091644) - Navigation 2.8.8: תוקן באג בהתאמה של
NavDeepLink, שבו קישור עומק ובקשה לקישור עומק צריכים להיות זהים בדיוק ב-URI, בפעולה וב-MIME. אם רק שדה אחד או שניים תואמים, אי אפשר יותר לבצע התאמה. (I3b029, b/395712033) - Navigation 2.8.8: תוקן באג שבו מסלולים עם נתיבים של תווים כלליים לא תואמים לקישור עמוק שנוסף (I7ea92, b/389970341)
External Contribution
- הוצאת ממשקי API נפוצים של ניווט, זמן ריצה של ניווט וקומפוזיציה של ניווט לפלטפורמה המשותפת. תודה, קונסטנטין צ'וברובוב! (I1e626, Ica76f, Idf479)
בעיות מוכרות
- בגלל העבודה לטיפול בבעיה b/395712033, קישורי עומק נדרשים באופן שגוי לכלול את כל השדות שכלולים בבקשה לקישור עומק ו/או ב-
Intent. קישורים עמוקים צריכים להתאים רק לשדות שהם מכילים, והמערכת צריכה להתעלם מהשדות שלא נכללים בהם. הבעיה הזו תוקנה בגרסה מאוחרת יותר כחלק מ-b/399826566.
גרסה 2.9.0-alpha06
12 בפברואר 2025
androidx.navigation:navigation-*:2.9.0-alpha06 מופץ. גרסה 2.9.0-alpha06 מכילה את השמירות האלה.
תכונות חדשות
- פעולות של Navigation Safe Args נוצרות עכשיו עם ההערה
@CheckResultכדי לוודא שהן בשימוש. (I14d4c, b/356323084)
תיקוני באגים
- תוקנה שגיאה ב-
NavControllerשבה המערכת ניסתה לשחזר באופן שגוי את מצבי ה-backStack למערך, כשבעצם הם נשמרו ברשימה. (Idfb9b) - מתוך Navigation
2.8.7: עכשיו יש תמיכה ביעדים שניתן להרכיב באמצעות Navigation Safe Args. (I35320, b/362791955)
גרסה 2.9.0-alpha05
29 בינואר 2025
androidx.navigation:navigation-*:2.9.0-alpha05 מופץ. גרסה 2.9.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשנעשה שימוש ב-Navigation Compose. (I480f4, b/353294030)
- מתוך Navigation
2.8.6: תוויותNavDestinationשסופקו באמצעות XML ינותחו באמצעותNavType.getכדי לוודא שהלוגיקה המותאמת אישית שלNavTypeתכובד. (I7ec2f, b/388100796) - מ-Navigation
2.8.6: כשמנווטים לפעילות באמצעותdataPattern, ActivityNavigatorינסה עכשיו לקודד את ערך הארגומנט באמצעותNavTypeשל הארגומנט. (I16376, b/383616432) - מתוך Navigation
2.8.5: תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשמשתמשים ב-Navigation Compose ומפעילים navigate באותו פריים שבו האנימציה הנוכחית מסתיימת. (I26cb1, b/353294030)
גרסה 2.9.0-alpha04
11 בדצמבר 2024
androidx.navigation:navigation-*:2.9.0-alpha04 מופץ. גרסה 2.9.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- ממשקי ה-API בטוחים לשימוש, ובעבר הייתה אליהם גישה רק באמצעות שיטות
reified, כלומר: composable<YourScreen>עכשיו יש גרסאות לא מוחשיות שמקבלות ישירות מופע שלKClass.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
בטבלה הבאה מפורטים ממשקי ה-API של reified ו-KClass.
| reified | KClass |
|---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
שינויים ב-API
- העומס העודף הספציפי ל-Kotlin
NavGraph.setStartDestinationלצורך מניעת שגיאות הקלדה מוסתר ממקורות Java. (Ic640c, b/364634035)
תיקוני באגים
- מתוך Navigation
2.8.5: תוקנה בעיה שבהNavHostיכול להפעיל חריגה בתוךPredictiveBackHandlerאם מחסנית החזרה (back stack) מוקפצת עד לערך אחד ומופעלת חזרה למערכת באותו פריים. (I1a429, b/375343407) - מתוך ניווט
2.8.5: תוקןNavDestinationNullPointerExceptionבעדכון שלstartDestinationשל תרשים. (I99421, b/361560785)
External Contribution
- מתוך Navigation
2.8.5: מניעת שגיאות הקלדה של סוג הניווט תומכת עכשיו ב-List<Enum>כסוג ארגומנט של מסלול בלי לדרושNavTypeמותאם אישית. תודה Csaba Kozák! (GH-725, b/375559962)
גרסה 2.9.0-alpha03
13 בנובמבר 2024
androidx.navigation:navigation-*:2.9.0-alpha03 מופץ. גרסה 2.9.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- במניעת שגיאות הקלדה של ניווט יש עכשיו תמיכה במחלקות ערכים כנתיב או כסוג הארגומנט של נתיב. (I9344a, b/374347483)
תיקוני באגים
- תוקן באג
ConcurrentModificationExceptionשיכול היה להתרחש כש-LifecycleObserverשמצורף ל-NavBackStackEntryמפעיל שינוי במקבץ פעילויות קודמות (back stack) כש-LifecycleOwnerהמארח, כמו Activity או מקטע (fragment) שמכילים אותו, משנה את מצב מחזור החיים שלו. (Ia9494)
גרסה 2.9.0-alpha02
30 באוקטובר 2024
androidx.navigation:navigation-*:2.9.0-alpha02 מופץ. גרסה 2.9.0-alpha02 מכילה את השמירות האלה.
External Contribution
- method חדש מסוג
NavController.handleDeepLink(request: NavDeepLinkRequest). תודה, קונסטנטין צ'וברובוב! (I3e228)
גרסה 2.9.0-alpha01
16 באוקטובר 2024
androidx.navigation:navigation-*:2.9.0-alpha01 מופץ. גרסה 2.9.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- מעכשיו, רכיבי Custom Navigator יכולים לסמן את היעדים שלהם ככאלה שמטמיעים את הממשק
SupportingPane, וכך לציין ל-NavControllerשהיעדים האלה יוצגו לצד יעדים אחרים. לדוגמה, באמצעות הממשק הזה אפשרRESUMEDכמה יעדים בו-זמנית. (Id5559) - מתוך ניווט
2.8.3: נוספו בדיקות חדשות של lint למודוליםnavigation-common,navigation-runtimeו-navigation-composeכדי לעזור לזהות מסלולים בטוחים מבחינת טיפוס שלא נוסף להם הערה נכונה עם@Serializable. הבדיקה הזו מופעלת על כל הפונקציות של התוספיםNavGraphBuilderו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - בקטע Navigation
2.8.3: נוספו בדיקות חדשות של lint למודוליםnavigation-common,navigation-runtimeו-navigation-composeכדי לעזור לזהות מסלולים בטוחים מבחינת סוג עם ארגומנטים של Enum שלא נוסף להם הערה בצורה נכונה עם@Keep. הבדיקה הזו מופעלת על כל הפונקציות של התוספיםNavGraphBuilderו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
שינויים בהתנהגות
- ניסיון להשתמש ב
NavControllerשכברDESTROYEDבעבר יגרום עכשיו לIllegalStateException. (I520da, b/369616172)
תיקוני באגים
- עדכון של חריג מסוג Enum class not found כדי להציע שימוש בהערה
@Keepבמקרה שמחלקת Enum נמחקת בגרסאות מצומצמות. (I90e79, b/358137294)
בעיות מוכרות
- יש בעיה בכללי lint החדשים שנוספו בגרסה
Navigation 2.8.*שגורמת לשגיאהObsolete custom lint checkכשמנסים להריץ lint עם פלאגין של Android Gradle בגרסה 8.4 ואילך. (b/368070326, b/371463741)
גרסה 2.8
גרסה 2.8.9
12 במרץ 2025
androidx.navigation:navigation-*:2.8.9 מופץ. גרסה 2.8.9 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה רגרסיה שנמצאה ב-Navigation 2.8.8, שדרשה שקישור עומק יתאים בדיוק לכל השדות של בקשת קישור עומק או של Intent כדי להיחשב כהתאמה. כתוצאה מכך, קישורי עומק שהכילו התאמות חלקיות לשדות ולא הכילו התאמות אחרות לא פעלו יותר. (Ie5e36, b/399826566)
גרסה 2.8.8
26 בפברואר 2025
androidx.navigation:navigation-*:2.8.8 מופץ. גרסה 2.8.8 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שבו מסלולים עם נתיבים של תו כללי לחיפוש לא תואמים לקישור עומק שנוסף. (I7ea92, b/389970341)
- תוקן באג בהתאמה של
NavDeepLink, שבו קישור עומק ובקשה לקישור עומק צריכים להיות זהים בדיוק ב-URI, בפעולה וב-MIME. אם רק שדה אחד או שניים תואמים, אי אפשר יותר לבצע התאמה. (I3227f, b/395712033)
בעיות מוכרות
- בגלל העבודה לטיפול בבעיה b/395712033, קישורי עומק נדרשים באופן שגוי לכלול את כל השדות שכלולים בבקשה לקישור עומק ו/או ב-
Intent. קישורים עמוקים צריכים להתאים רק לשדות שהם מכילים, ויש להתעלם משדות שלא נכללים בהם. הבעיה הזו תוקנה בגרסה מאוחרת יותר כחלק מ-b/399826566.
גרסה 2.8.7
12 בפברואר 2025
androidx.navigation:navigation-*:2.8.7 מופץ. גרסה 2.8.7 מכילה את השמירות האלה.
תיקוני באגים
- התכונה Navigation Safe Args תומכת עכשיו ביעדים שניתן להרכיב. (I35320, b/362791955)
גרסה 2.8.6
29 בינואר 2025
androidx.navigation:navigation-*:2.8.6 מופץ. גרסה 2.8.6 מכילה את השמירות האלה.
תיקוני באגים
- תוויות
NavDestinationשמועברות באמצעות XML ינותחו באמצעותNavType.getכדי לוודא שהלוגיקה המותאמת אישית שלNavTypeנשמרת. (Id366d, b/388100796) - כשעוברים לפעילות עם
dataPattern, הפונקציהActivityNavigatorתנסה עכשיו לקודד את ערך הארגומנט באמצעותNavTypeשל הארגומנט. (I1a71d, b/383616432)
גרסה 2.8.5
11 בדצמבר 2024
androidx.navigation:navigation-*:2.8.5 מופץ. גרסה 2.8.5 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה
NavHostיכולה להקפיץ הודעת שגיאה (throw) בתוךPredictiveBackHandlerאם מקבץ פעילויות קודמות (back stack) נשלף עד לרשומה אחת ומופעלת חזרה למערכת באותו פריים. (I1a429, b/375343407) - תוקנה הבעיה
NavDestinationNullPointerExceptionבעדכון שלstartDestinationבתרשים. (I99421, b/361560785) - תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשמשתמשים ב-Navigation Compose ומפעילים את הפונקציה navigate באותו פריים שבו האנימציה הנוכחית מסתיימת. (I26cb1, b/353294030)
- תוקן באג
ConcurrentModificationExceptionשיכול היה להתרחש כש-LifecycleObserverשמצורף ל-NavBackStackEntryמפעיל שינוי במקבץ פעילויות קודמות (back stack) כש-LifecycleOwnerהמארח, כמו Activity או מקטע (fragment) שמכילים אותו, משנה את מצב מחזור החיים שלו. (Ia9494)
External Contribution
- מניעת שגיאות הקלדה בניווט תומכת עכשיו ב-
List<Enum>כסוג ארגומנט של מסלול בלי לדרושNavTypeמותאם אישית. תודה Csaba Kozák! (GH-725, b/375559962)
גרסה 2.8.4
13 בנובמבר 2024
androidx.navigation:navigation-*:2.8.4 מופץ. גרסה 2.8.4 מכילה את השמירות האלה.
תכונות חדשות
- מתוך Navigation
2.9.0-alpha03: מניעת שגיאות הקלדה בניווט תומכת עכשיו במחלקת ערכים כמסלול או כסוג הארגומנט של מסלול (I9344a, b/374347483)
תיקוני באגים
- מניווט
2.9.0-alpha01: ניסיון להשתמש בNavControllerשDESTROYEDבעבר יוביל עכשיו לIllegalStateException. (I520da, b/369616172)
גרסה 2.8.3
16 באוקטובר 2024
androidx.navigation:navigation-*:2.8.3 מופץ. גרסה 2.8.3 מכילה את השמירות האלה.
תכונות חדשות
- נוספו בדיקות חדשות של lint למודולים
navigation-common,navigation-runtimeו-navigation-composeכדי לעזור לזהות מסלולים בטוחים מבחינת טיפוס שלא נוסף להם הערה בצורה נכונה באמצעות@Serializable. הבדיקה הזו מופעלת על כל הפונקציות של התוספיםNavGraphBuilderו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - נוספו בדיקות חדשות של כלי ה-lint למודולים
navigation-common,navigation-runtimeו-navigation-composeכדי לעזור לזהות מסלולים בטוחים מבחינת סוגים עם ארגומנטים של Enum שלא נוסף להם הערה בצורה נכונה באמצעות@Keep. הבדיקה הזו מופעלת על כל הפונקציות של התוספיםNavGraphBuilderו-NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
תיקוני באגים
- תוקנה בעיה שבה כללי ה-lint החדשים שנוספו בגרסה
Navigation 2.8.*גרמו לשגיאהObsolete custom lint checkכשניסו להריץ lint עם פלאגין של Android Gradle בגרסה 8.4 ואילך. (I1be3d, b/368070326, b/371463741)
בעיות מוכרות
- בניסיון להריץ lint עם Lint 16 (AGP 8.7) ואילך, יופיע שגיאת בדיקת lint מותאמת אישית שיצאה משימוש. (b/371926651)
גרסה 2.8.2
2 באוקטובר 2024
androidx.navigation:navigation-*:2.8.2 מופץ. גרסה 2.8.2 מכילה את השמירות האלה.
תכונות חדשות
- התכונה 'בטיחות סוגי הניווט' תומכת עכשיו במחלקות שניתנות לסריאליזציה, שכוללות
Double,Double?,DoubleArray,DoubleArray?,List<Double>ו-List<Double>?, בלי לדרושNavTypeמותאם אישית. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
תיקוני באגים
- שיפרנו את הודעת השגיאה שמוצגת כש-Navigation לא מצליח למפות ארגומנט של מסלול ל-
NavType. הודעת השגיאה החדשה תכיל את שם הארגומנט, את השם המוגדר במלואו של הארגומנט ואת השם המוגדר במלואו של המסלול. (Id8416, b/346264232)
גרסה 2.8.1
18 בספטמבר 2024
androidx.navigation:navigation-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.
תכונות חדשות
- נוסף כלל חדש של lint כדי להבטיח שימוש בפונקציה
popBackStackשמקבלת סוג מחלקה מוחשי כשמנסים להשתמש ב-popBackStackבאמצעות ממשקי API בטוחים לסוגים. (Ief161, b/358095343)
תיקוני באגים
- כדי לנווט, עכשיו צריך לוודא שהנתיב שמועבר ל-
NavGraphשלstartDestinationמכיל את הערכים של כל הארגומנטים הנדרשים, כולל ארגומנטים שלא יכולים להיות null ואין להם ערך ברירת מחדל. (I18e74, b/362594265) - ב-Navigation safe args נוספה תמיכה במחרוזות שאינן ניתנות לאיפוס, כך שערכי null ינותחו ויאוחסנו בחבילה כמו שהם. זה שונה מההתנהגות הקיימת, שבה ערכי null מנותחים לאובייקט null. השינוי הזה חל רק על סוגי מחרוזות שלא יכולים להכיל ערך null. מחרוזות שאפשר להגדיר להן ערך null לא משתנות. (I08b4a, b/348936238)
- אי אפשר יותר להפנות ל-
NavDestinationבאמצעות קישור עומק, אלא אם קישור עומק כזה נוסף באופן מפורש ליעד. זה גם אומר שאפשר לנווט למסלול של יעד רק באמצעות פונקציית העומס של הניווט שמקבלת מסלול מחרוזת. העדכון הזה מתקן נקודת חולשה שאיפשרה ליצור קישור עומק ליעד שמוגן באופן פוטנציאלי. (Ie30e6)
עדכון תלות
- התלות של Navigation Safe Args היא עכשיו ב-Kotlin 1.9.24, ולא ב-Kotlin 2.X, כדי שלא לכפות על המפתחים לעדכן. (a4129a)
- התכונה 'פיתוח נייטיב' לניווט תלויה עכשיו בפיתוח נייטיב
1.7.2.
גרסה 2.8.0
4 בספטמבר 2024
androidx.navigation:navigation-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.7.0
Navigation Kotlin DSL Type-Safety
- הניווט מספק עכשיו בטיחות סוגים עבור Kotlin DSL (שמשמש את Navigation Compose) באמצעות Kotlin Serialization, כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים מסוגים ומחלקות נתונים:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
מידע נוסף זמין בפוסט הזה בבלוג בנושא Navigation Compose meet Type Safety.
ניווט באמצעות Compose Predictive Back
- Navigation Compose תומך עכשיו בחיזוי תנועת החזרה באפליקציה באמצעות ממשקי ה-API החדשים
SeekableTransitionStateמ-compose-animation. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית שלכם, לפני שתחליטו אם לבצע את הטרנזקציה באמצעות התנועה המוגמרת או לבטל אותה.
רכיב ה-Composable של Navigation Fragment
- נוסף ארטיפקט
navigation-fragment-composeחדש שכולל חלופהComposableNavHostFragmentל-NavHostFragment, שמאפשרת להוסיף יעדים שניתן להרכיב לקובצי ה-XML של הניווט. כל יעדcomposableצריך להיות מוגדר כשיטת@Composableברמה העליונה ללא ארגומנטים, ששם המאפיין המוגדר במלואו שלה משמש כמאפייןandroid:nameבכל יעד. כשמנווטים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים אחרים
- Navigation Compose תלוי עכשיו ב-Compose 1.7.0.
- המחלקות
CollectionNavType<T>ו-NavType<T>מספקות עכשיו ניווט חדש לארגומנטים מבוססי-אוסף כמו רשימות, מערכים ומפות. כל מערכי ברירת המחדלNavType(IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeו-StringArrayType) יורדים עכשיו מהמחלקה החדשה הזו. -
NavTypeכולל עכשיו תמיכה מובנית ברשימות של Int, String, Boolean, Float ו-Long.
גרסה 2.8.0-rc01
21 באוגוסט 2024
androidx.navigation:navigation-*:2.8.0-rc01 מופץ. גרסה 2.8.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תיקון קריסת הניווט כשמעבירים מחלקות Enum ברמה העליונה כארגומנטים בטוחים מבחינת סוג. (I0ba76, b/358137294)
- Navigation 2.8 פועלת עכשיו בצורה תקינה עם SDK 34 ולא תעבור ל-SDK 35 עד לגרסה 2.9, יחד עם שאר הספריות של AndroidX. (b/358798728)
גרסה 2.8.0-beta07
7 באוגוסט 2024
androidx.navigation:navigation-*:2.8.0-beta07 מופץ. גרסה 2.8.0-beta07 מכילה את השמירות האלה.
בעיות מוכרות
- בגלל b/358137294, יש תמיכה מובנית רק ב-Enums שמוטמעים בכיתה אחרת. תמיכה ב-Enums ברמה העליונה תתווסף במהדורה הבאה.
תיקוני באגים
- כשמנווטים ליעדים כפולים או משותפים, הניווט ייתן עדיפות להגעה ליעד התואם הקרוב ביותר מהמיקום הנוכחי בתרשים. (Ic89a4, b/352006850)
- נוסף
NavType.EnumTypeחדש לניווט בארגומנטים בטוחים. המשמעות היא שסוגיEnumכבר לא דורשיםNavTypeבהתאמה אישית. שימו לב שהשם המוגדר במלואו שלEnumחייב להיות שם ברירת המחדל.SerialName(I66d22, b/346475493) - בניווט ב-safe args נוספה תמיכה מובנית בסוגים של ארגומנטים שניתן להגדיר כ-nullable,כולל
Int?, Long?, Float?, Boolean?ו-Enum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - הפונקציה
NavGraphשלstartDestinationתשתמש עכשיו בערכי ברירת המחדל של הארגומנט אם המסלולstartDestinationשמועבר אלNavGraphשווה בדיוק ל-startDestination.route. (I13762, b/354046047)
גרסה 2.8.0-beta06
24 ביולי 2024
androidx.navigation:navigation-*:2.8.0-beta06 מופץ. גרסה 2.8.0-beta06 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה בדיקות ה-lint של
WrongStartDestinationTypeלא בדקו אובייקטים של Companion בסוג הכיתה שהועבר, ולכן ה-lint לא הצליח לזהות את השגיאה. (I92b09)
גרסה 2.8.0-beta05
10 ביולי 2024
androidx.navigation:navigation-*:2.8.0-beta05 מופץ. גרסה 2.8.0-beta05 מכילה את השמירות האלה.
תיקוני באגים
- תיקון קריסה בניווט
singleTopכשמסלולים מקונניםNavGraphsחולקים את אותו מסלולstartDestination. (I17b94, b/294408596)
גרסה 2.8.0-beta04
26 ביוני 2024
androidx.navigation:navigation-*:2.8.0-beta04 מופץ. גרסה 2.8.0-beta04 מכילה את השמירות האלה.
תיקוני באגים
- הניווט תומך עכשיו בניווט עם מחרוזות ריקות בארגומנטים של נתיבים. (Ic5dbd, b/339481310)
- שיפור הודעת השגיאה עבור סדרות מותאמות אישית שהוגדרו ישירות בשדות של מחלקה באמצעות
@Serializable(with =...), כדי להבהיר שזו תכונה שלא נתמכת כרגע. (I052b0, b/341319151) SavedStateHandleFactoryעכשיו אפשר להשתמש ב-test api בבדיקות שאינן בדיקות Android, אבל נדרשת תמיכה של Robolectric בניתוח ארגומנטים באמצעות Bundles. (I76cdc, b/340966212)- תוקן קריסה שנגרמה משחזור מצב כשממשיכים להשתמש באפליקציה אחרי שהתהליך הסתיים, עם שימוש בניווט בטוח-סוגים ב-Compose. (Ia8f38, b/341801005)
- תוקנה בעיה ב-Navigation Compose שבה אחרי ביטול של חיזוי תנועת החזרה,
NavBackStackEntryשהמשתמש חוזר אליה אף פעם לא חוזר למצב מחזור החייםRESUMED. בנוסף, כך מוודאים שהאנימציה של היעד שאליו חוזרים תפעל בצורה חלקה ולא תופיע פתאום במקום אחרי תנועת הצלפה. (I97a0c, b/346608857) - כשמשתמשים בחיזוי החזרה עם Navigation Compose, ליעד שמוסר מהמערך יש עכשיו את סדר ה-z הנכון, והוא מונפש בצורה נכונה מעל היעד הנכנס. (I2077b, b/345993681)
גרסה 2.8.0-beta03
12 ביוני 2024
androidx.navigation:navigation-*:2.8.0-beta03 מופץ. גרסה 2.8.0-beta03 מכילה את השמירות האלה.
שינויים ב-API
- ל-
CollectionNavTypeיש שיטה מופשטת חדשהemptyCollection(). אפשר לשנות את ההתנהגות הזו כדי לטפל באוסף ריק שמועבר כארגומנט. (Ie4d84, b/341723133)
תיקוני באגים
- הוספנו מסמכים בנושא
NavType.serializeAsValueו-serializeAsValuesכדי להדגיש שהפלט הסופי צריך להיות מקודד בפורמט URI. (Ida6bd, b/344943214) - תוקנה קריסה שהתרחשה כשבוצעה קריאה ל-
toRoute<T>עם ארגומנטCollectionNavTypeמסוג null. כשמנווטים עם nullCollectionNavType, ארגומנט הפלט יהיה ערך ברירת המחדל שהוגדר במחלקה Serializable, או ערך ההחזרה שלemptyCollection()אם לא הוגדר ערך ברירת מחדל. (I84158, Id630f, b/342672856)
גרסה 2.8.0-beta02
29 במאי 2024
androidx.navigation:navigation-*:2.8.0-beta02 מופץ. גרסה 2.8.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה קריסה של
ClassCastExceptionבמהלך שימוש ב-NavBackStackEntry.toRouteעםNavTypeמותאם אישית שניתן להגדרה כ-nullable. (I1c29b, b/342239473) - תוקנו בעיות בשחזור מצב של מקבץ הפעילויות הקודמות (back stack) שנגרמו כשניסו לשחזר רשומה במקבץ הפעילויות הקודמות (back stack) שלא ניתן להגיע אליה באמצעות מזהה מהיעד הנוכחי. מכיוון שהנתיבים מגובים במזהים, גם יעדים שנבנו באמצעות נתיבים הושפעו. בנוסף, תוקנה קריסה שנגרמה כתוצאה מקריאה ל-
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-testingAPI לבדיקה כדי ליצורSavedStateHandleמאובייקט Kotlin Serializable. (Id4867, b/339080702)
תיקוני באגים
- נוספו מסמכים עם פרמטרים חסרים לפונקציות של Navigation Kotlin DSL. (I26a36)
גרסה 2.8.0-alpha08
1 במאי 2024
androidx.navigation:navigation-*:2.8.0-alpha08 מופץ. גרסה 2.8.0-alpha08 מכילה את השמירות האלה.
Safe Args ב-Navigation Compose
- השלמנו את העבודה על תמיכה בבטיחות סוגים בזמן קומפילציה עבור Navigation Compose ומשתמשים ב-Navigation Kotlin DSL על סמך Kotlin Serialization, וממשקי API שהיו ניסיוניים בעבר הם עכשיו יציבים. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
הפונקציונליות הזו משתמשת בסריאליזציה של Kotlin כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים מסוג וסוגי נתונים:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
מידע נוסף זמין בפוסט הזה בבלוג בנושא Navigation Compose meet Type Safety.
תכונות חדשות
- ארטיפקט
navigation-fragment-composeמספק עכשיו קומפוזיציהLocalFragmentמקומית ל-methods שניתנים להגדרה בתוך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שכולל חלופה ל-ComposableNavHostFragmentNavHostFragmentשמאפשרת להוסיף יעדיםcomposableלקובצי ה-XML של הניווט. כל יעדcomposableצריך להיות מוגדר כשיטת@Composableברמה העליונה ללא ארגומנטים, ששם המאפיין המוגדר במלואו שלה משמש כמאפייןandroid:nameבכל יעד. כשמנווטים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים ב-API
- המשכנו לתמוך ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Kotlin Serialization. ממשקי ה-API האלה לא סיימו את הפיתוח ומסומנים בהערה
ExperimentalSafeArgsApi. ההערה הזו תוסר בגרסה עתידית, כשהממשק כולו יהיה מוכן. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
גרסה 2.8.0-alpha06
3 באפריל 2024
androidx.navigation:navigation-*:2.8.0-alpha06 מופץ. גרסה 2.8.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- התחלנו להוסיף תמיכה ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Kotlin Serialization. ממשקי ה-API האלה לא סיימו את הפיתוח ומסומנים בהערה
ExperimentalSafeArgsApi. ההערה הזו תוסר בגרסה עתידית, כשהממשק כולו יהיה מוכן. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
תיקוני באגים
-
NavHostמשתמש עכשיו ב-Alignment.TopStartכארגומנט ברירת המחדל של contentAlignment. השינוי הזה מיישר קו עם ברירת המחדל שלAnimatedContentומתקן מקרים מסוימים של מעבר לא צפוי ממרכז המעבר. (I09e72, b/330111602) - כשמשתמשים בחיזוי תנועת החזרה תוך שימוש ב-Navigation Compose, המעבר המותאם אישית
NavHostיושלם עכשיו בצורה נכונה במקום להסתיים באופן מיידי. (I99017, b/327292110)
גרסה 2.8.0-alpha05
20 במרץ 2024
androidx.navigation:navigation-*:2.8.0-alpha05 מופץ. גרסה 2.8.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו אפשר להעביר ארגומנטים ל-
NavGraphשלstartDestinationישירות במסלולstartDestinationבלי להסתמך עלdefaultValue. הכלל הזה חל גם עלNavGraphstartDestinationsמוטמעים. (I0e0b5, b/109505019, b/188693139)
שינויים ב-API
- נוספה מחלקה מופשטת חדשה,
CollectionNavType<T>, שהיא מחלקת משנה שלNavType<T>לארגומנטים מבוססי-אוסף כמו רשימות, מערכים ומפות. (Ic6d63, b/188693139) - כל מערכי ברירת המחדל
NavType(IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeו-StringArrayType) הם עכשיו מסוגCollectionNavType(Idcf79, b/188693139) -
NavTypeמספק עכשיו API חדש ופתוח שלvalueEqualsשקובע אם שני ערכים מאותו סוג שווים זה לזה. (I6cb97, b/327229511)
תיקוני באגים
- פרמטרים של שאילתות בקישורי עומק מאפשרים עכשיו ערכים בפורמט של סוגריים מסולסלים סביב שם הארגומנט (למשל
{argName}) כערכים תקינים ל-NavTypesמבוסס מחרוזת. התיקון הזה פותר בעיה שבה ערך כזה נחשב לא חוקי (או כערך חסר) בכל הסוגים. (I18302, b/327274038) - פונקציות
NavControllerשתומכות במסלולים כמוnavigateאוpopBackStackיכולות עכשיו להתאים באופן תקין למסלולים שמולאו בארגומנטים של מערךNavTypes. (Iea805, b/327229511)
גרסה 2.8.0-alpha04
6 במרץ 2024
androidx.navigation:navigation-*:2.8.0-alpha04 מופץ. גרסה 2.8.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו אפשר לציין את
SizeTranformלמעברים ב-Navigation Compose על ידי הגדרתם כחלק מההפעלה של הפונקציותcomposableאוnavigation. (I91062, b/296912651)
תיקוני באגים
- תוקנה בעיה שבה המעבר בין המסכים בניווט בכתיבת הודעה
NavHostלא הוצג בצורה תקינה כשמשתמשים באפשרות 'חזרה' של המערכת בלי להשתמש בתנועה. (Iceeae, b/325998468)
גרסה 2.8.0-alpha03
21 בפברואר 2024
androidx.navigation:navigation-*:2.8.0-alpha03 מופץ. גרסה 2.8.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הקוד
NavBackStackEntry.savedStateHandleמסומן עכשיו כ-@MainThreadכי הוא משתמש בקוד שנדרש בכל מקרה בשרשור הראשי. (Ibb988, b/299523245)
תיקוני באגים
- תוקנה בעיה ב-Navigation שגרמה ל-
NavGraphViewModels להיותDESTROYEDמוקדם מדי כיViewModelשל הרשומה המשויכת לא היה חלק מהמצב השמור. (Ib6bb7, b/317581849)
עדכון תלות
- Navigation Compose תלוי עכשיו ב-Compose 1.7.0-alpha03.
גרסה 2.8.0-alpha02
7 בפברואר 2024
androidx.navigation:navigation-*:2.8.0-alpha02 מופץ. גרסה 2.8.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- Navigation Compose תומך עכשיו בחיזוי תנועת החזרה באפליקציה באמצעות ממשקי ה-API החדשים
SeekableTransitionStateמ-compose-animation. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית שלכם, לפני שתחליטו אם להשלים את הטרנזקציה באמצעות התנועה המלאה או לבטל אותה. (I8b8e9)
גרסה 2.8.0-alpha01
24 בינואר 2024
androidx.navigation:navigation-*:2.8.0-alpha01 מופץ. גרסה 2.8.0-alpha01 מכילה את השמירות האלה.
תיקוני באגים
- תוקן דליפת
BackStackStateשבה כמה קריאות שלsaveStateליעד מסוים הובילו לשמירה של כמה מצבים, אבל רק הראשון יכול היה לשחזר. (I598b0, b/309559751) - תוקנה בעיה שבה ארגומנטים שהם לא מחרוזות לא הוצגו כמו שצריך כשנעשה שימוש ב-
NavigationUIhelpers כדי לאכלס את הכותרת של סרגלי האפליקציות. (#636, b/316676794)
עדכון תלות
- הניווט ב-Compose תלוי עכשיו ב-Compose
1.7.0-alpha01, וזה פותר בעיה שיכולה לגרום לאנימציית שינוי גודל לא צפויה. (b/297258205)
External Contribution
- תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שהם לא מחרוזות, כשמשתמשים ב-helpers של
NavigationUIכדי לאכלס את הכותרת של סרגלי האפליקציה.
גרסה 2.7.7
גרסה 2.7.7
7 בפברואר 2024
androidx.navigation:navigation-*:2.7.7 מופץ. גרסה 2.7.7 מכילה את השמירות האלה.
תיקוני באגים
- הועבר מגרסה קודמת של Navigation
2.8.0-alpha01: תוקנה דליפתBackStackStateשבה כמה קריאות שלsaveState()ב-NavBackStackEntryיחיד יגרמו לשמירה של כמה מצבים, אבל רק את המצב השמור הראשון יהיה אפשר לשחזר. (I598b0, b/309559751) - הועבר מגרסה קודמת מ-Navigation
2.8.0-alpha01: תוקנה בעיה שבה ארגומנטים שאינם מסוג String לא הוצגו בצורה תקינה כשמשתמשים ב-helpersNavigationUIכדי לאכלס את הכותרת של סרגלי האפליקציות. (#636, b/316676794)
External Contribution
- תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שהם לא מחרוזות, כשמשתמשים ב-helpers של
NavigationUIכדי לאכלס את הכותרת של סרגלי האפליקציה.
גרסה 2.7.6
גרסה 2.7.6
13 בדצמבר 2023
androidx.navigation:navigation-*:2.7.6 מופץ. גרסה 2.7.6 מכילה את השמירות האלה.
תיקוני באגים
- הפונקציה
NavGraphequals()מתייחסת עכשיו בצורה נכונה לצמתים של הגרף השני במקום רק לגרף שקורא לה. כך נמנע מצב שבו גרפים עם צמתים בעלי מזהים שונים ייחשבו שווים (I401cb, b/311414915)
גרסה 2.7.5
גרסה 2.7.5
1 בנובמבר 2023
androidx.navigation:navigation-*:2.7.5 מופץ. גרסה 2.7.5 מכילה את השמירות האלה.
שיפורים בביצועים
- שיפרנו משמעותית את הביצועים (גם מבחינת זמן וגם מבחינת מספר ההקצאות) של השוואה בין שני תרשימים. המשמעות היא שקריאות כמו
setGraphשמשוות באופן פנימי את הגרף החדש לגרף הקיים, מהירות הרבה יותר וגורמות לפחות פריימים שנדלגים. תודה ל-Michał Z על הניתוח המעמיק שהוביל לשיפור הזה. (I6ad62) -
NavHostיציג עכשיו את יעד ההתחלה במעבר ההרכב הראשון, במקום לחכות למעבר השני כדי לקרוא את המצב המעודכן. (I439a7, b/304852206)
תיקוני באגים
- תוקנה בעיה שבה מחסנית החזרה (back stack) הייתה נמחקת אם קראתם ל-
setGraphיותר מפעם אחת עם אותו גרף בדיוק, רק אם היה יעד בגרף שהכיל פעולה שמקשרת בין שני יעדים. (Ieaed7) - תיבות דו-שיח שהוצגו ונעלמו במהירות לא יופיעו יותר ברשימת
NavController.visibleEntries. (I67586, b/287969970) - כשמוציאים רשומה מהמחסנית ואז משנים את ההגדרה, הערך של
ViewModelברשומה יימחק בצורה תקינה אם הערך שלsaveStateהוא false. (Idf242, b/298164648) - תוקנה בעיה שבה הפונקציה
NavControllerיכלה לטפל באותו קישור עומק יותר מפעם אחת אם מקבץ הפעילויות הקודמות (back stack) היה ריק לחלוטין לפני שינוי בהגדרה או קריאה לפונקציהsetGraphרק אם הוגדר הדגלFLAG_ACTIVITY_NEW_TASKב-Intent הנכנס. (I73c7f)
עדכונים של יחסי תלות
- הניווט באמצעות Fragments תלוי עכשיו ב-Fragment 1.6.2, ומתקן בעיה שבה מופעי
ViewModelשל מקטעים מוטמעים לא נוקו כשבוצעה קריאה ל-clearBackStack.
גרסה 2.7.4
גרסה 2.7.4
4 באוקטובר 2023
androidx.navigation:navigation-*:2.7.4 מופץ. גרסה 2.7.4 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו תמיכה ב-
popUpToכדי להשתמש בנתיבים עם ארגומנטים, וכך לאפשר חזרה לרשומה ספציפית שמשתמשת בארגומנטים האלה בדיוק, בהתאם לתמיכה שקיימת ב-popBackStack. (I731f4, b/299255572)
תיקוני באגים
- תוקנה בעיה שבה הפסקת ניווט באמצעות ניווט אחר עם
popUpToגורמת לקריסה שלFragmentNavigator. (I3c848, b/301887045) - תוקנה בעיה שבה לחיצה על לחצן החזרה במערכת גרמה לכך שהלחצן
currentDestinationלא עודכן בצורה נכונה בהתאם ל-Fragment שמוצג. (Id0d6c, b/289877514) - מחזור החיים של
DialogFragmentיעבור עכשיו למצבRESUMEDבצורה תקינה כשתיבת הדו-שיח שמעליו תיסגר. (I88f0d, b/301811387)
גרסה 2.7.3
גרסה 2.7.3
20 בספטמבר 2023
androidx.navigation:navigation-*:2.7.3 מופץ. גרסה 2.7.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה ב-Navigation with Fragments שגרמה לכך שהרשימה
visibleEntriesהכילה רשומות שגויות. (I5caa9, b/288520638) - תוקנה בעיה שגרמה לכך שיעד של חלון צף (כלומר,
Dialogs,Bottomsheetsוכו') אף פעם לא קיבל קריאה חוזרת במחזור חייםRESUMED. (I3b866, b/287505132)
גרסה 2.7.2
גרסה 2.7.2
6 בספטמבר 2023
androidx.navigation:navigation-*:2.7.2 מופץ. גרסה 2.7.2 מכילה את השמירות האלה.
תיקוני באגים
- הניווט תלוי עכשיו ב-Lifecycle
2.6.2, וזה פותר אינטראקציה ביןrememberSaveableלביןNavHostשל Navigation Compose, שגרמה לכך שהמצב שלrememberSaveableשל יעדים ושל מופעים שלViewModelבבעלותSavedStateHandleלא שוחזר כראוי אחרי סיום התהליך ויצירה מחדש. (b/298059596, b/289436035) - תוקנה בעיה שבה הצגה של כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית, שבה תיבות דו-שיח שהוסתרו חלקית (למשל, לא תיבת הדו-שיח העליונה ביותר) היו במצב מחזור החיים
CREATEDולא במצבSTARTED. (aosp/2728520, b/289257213) - תוקנה בעיה שקרתה כשמציגים כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית. במקרה כזה, סגירה של תיבת הדו-שיח העליונה גורמת לתיבת הדו-שיח העליונה החדשה להיתקע במצב מחזור החיים
STARTEDבמקום לעבור למצבRESUMEDכמו שצריך. (aosp/2629401, b/286371387) - Safe Args של Navigation לא יוצרים יותר מופע של המשימה באופן מיידי אם היא לא מבוצעת בפועל. (I0e385, b/260322841)
עדכון תלות
- הגרסה של Navigation Compose תלויה עכשיו בגרסה 1.5.1 של Compose.
גרסה 2.7.1
גרסה 2.7.1
23 באוגוסט 2023
androidx.navigation:navigation-*:2.7.1 מופץ. גרסה 2.7.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו בעיות בניווט באמצעות Compose, שבהן היה אפשר לקבל שגיאה כשניסיתם לגשת ל-
Lifecycle.State.DESTROYEDViewModelבאמצעותScaffold. (I1dc11, b/268422136)
גרסה 2.7.0
גרסה 2.7.0
9 באוגוסט 2023
androidx.navigation:navigation-*:2.7.0 מופץ. גרסה 2.7.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.6.0
אנימציות מ-Accompanist
עכשיו, כש-AnimatedContent יציב, יכולנו להעביר את הקוד מ-Accompanist Navigation Animation בחזרה אל Navigation Compose עצמו.
כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהייתה ב-AnimatedNavHost נתמכת ישירות ב-NavHost.
לא יבוצעו שינויים נוספים ב-Accompanist Navigation Animation, ובקרוב נצא משימוש באופן רשמי, יחד עם הנחיות להעברה חזרה אל Navigation Compose עצמו, אבל זה יהיה ההיפך של מדריך ההעברה ללא צורך בשינויים נוספים ב-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist (0.31.2-alpha). (b/197140101)
תיקוני באגים
- NavHost ב-Navigation Compose מיירט עכשיו בצורה נכונה קריאות חזרה של המערכת גם אחרי שה-Activity הופסק והופעל מחדש. (Icb6de, b/279118447)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Compose
1.5.0במקום ב-1.1.0.
גרסה 2.7.0-rc01
26 ביולי 2023
androidx.navigation:navigation-*:2.7.0-rc01 מופץ. גרסה 2.7.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה פונקציות ה-lambda
EnterTransitionו-ExitTransitionשנוצרו כחלק מ-NavHostעלולות להישאר בזיכרון גם אחרי ש-NavHostמוסר מהקומפוזיציה. (I893d0)
בעיות מוכרות
- יש בעיה בגרסה 2.6.x של Navigation, שלפיה כשמנווטים באמצעות popUpTo, יכול להיות שתיגרם
IllegalArgumentException. יכול להיות שאפשר להימנע מהחריגה הזו על ידי שינוי המבנה של הגרף, בדומה להמלצה שמופיעה כאן. (b/287133013)
גרסה 2.7.0-beta02
28 ביוני 2023
androidx.navigation:navigation-*:2.7.0-beta02 מופץ. גרסה 2.7.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- ל-Navigation Compose יש עכשיו את סדר ה-Z הנכון למעברים בהתאמה אישית שמשתמשים באפשרות navigate עם
popUpTo.(/Ib1c3a, b/285153947)
גרסה 2.7.0-beta01
7 ביוני 2023
androidx.navigation:navigation-*:2.7.0-beta01 מופץ. גרסה 2.7.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
-
NavHostNavigation Compose מיירט עכשיו בצורה נכונה קריאות למערכת גם אחרי ש-ActivityעברSTOPPEDו-RESUMED. (Icb6de, b/279118447)
גרסה 2.7.0-alpha01
24 במאי 2023
androidx.navigation:navigation-*:2.7.0-alpha01 מופץ. גרסה 2.7.0-alpha01 מכילה את השמירות האלה.
אנימציות מ-Accompanist
עכשיו, כש-AnimatedContent יציב, יכולנו להעביר את הקוד מ-Accompanist Navigation Animation בחזרה אל Navigation Compose עצמו.
כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהייתה ב-AnimatedNavHost נתמכת ישירות ב-NavHost.
לא יבוצעו שינויים נוספים ב-Accompanist Navigation Animation, ובקרוב נצא בהודעה רשמית על הוצאתו משימוש. נספק גם הנחיות להעברה חזרה אל Navigation Compose עצמו, אבל הן יהיו הפוכות למדריך ההעברה, ולא יידרשו שינויים נוספים ב-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist (0.31.2-alpha). (b/197140101)
תיקוני באגים
- מתוך Navigation
2.6.0-rc02: תוקנה בעיה ב-Navigation ב-Fragments שבה ניווט באמצעותpopUpToוהוצאת fragment מה-back stack בלי ליצור מחדש את התצוגה שלו גרמו להפסקת הפעולה של המערכת. (Ieb8d4, b/281726455)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Compose
1.5.0-beta01.
גרסה 2.6.0
גרסה 2.6.0
7 ביוני 2023
androidx.navigation:navigation-*:2.6.0 מופץ. גרסה 2.6.0 מכילה את השמירות האלה.
שינויים חשובים בניווט מאז גרסה 2.5.0
- הערכים
NavBackStackEntryו-argumentsשמועברים אלOnDestinationChangedListenerהם עכשיו רק עותק של הארגומנטים הבלתי ניתנים לשינוי שנוצרו כשעברתם אל היעד.argumentsהמשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישות הבאות ל-argumentsאו למופעים אחרים שלOnDestinationChangedListener. - ב-
NavDeepLinkיש עכשיו תמיכה בערכי ברירת מחדל למערכים, שמאפשרת תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט. הפונקציהNavTypeכוללת עכשיו גם שיטת ברירת מחדל שאפשר לבטל כדי לשלב שני ערכים שנותחו. - מחלקות משנה מותאמות אישית של
NavTypeיכולות עכשיו לבטל אתserializeAsValueכדי לבצע סריאליזציה של ערך למחרוזת, וכך לאפשר גם סריאליזציה וגם דה-סריאליזציה (באמצעותparseValue) שיהיו כלולות במלואן במחלקהNavType. StringTypeמחליף עכשיו את ה-method הזה כדי לקרוא ל-Uri.encodeב-Stringהנתון.
שינויים חשובים ב-Navigation Compose מאז גרסה 2.5.0
- כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם
NavHost, מוצג עכשיוstartDestinationשל NavGraph כברירת מחדל. -
NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route)תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. חשוב לשים לב שהארגומנטים צריכים להיות התאמה מדויקת לארגומנטים של הרשומה. - ניסיון ליצור
NavDeepLinkריק באמצעותnavDeepLinkKotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך לכלול uri, פעולה או mimetype כדי להיות תקין.
שינויים חשובים בניווט באמצעות Fragments מאז גרסה 2.5.0
- האפליקציה
NavHostFragmentכבר לא מיירטת את הכפתור "הקודם" של המערכת. כך אפשר לאפשר ל-FragmentManagerהבסיסי לטפל בחזרה למערכת. כך, Fragment1.7.0-alpha01ומעלה יכולים לספק אנימציה של חזרה ניבויים בתוך האפליקציה במכשירי Android U. - כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית
FragmentTransactionשמוסיף Fragment ל-מקבץ פעילויות קודמות (back stack) שלFragmentManagerיגרום עכשיו להקפיץ הודעת שגיאה (throw)IllegalArgumentException. תמיד צריך להוסיף פרגמנטים באמצעותnavigate()API. - כשמשתמשים במחרוזת המדויקת
${applicationId}כמציין המיקום במאפייניםapp:dataו-app:dataPatternברכיב הפעילות של קובץ XML של ניווט, מציין המיקום יתמלא באופן אוטומטי ב-packageNameשל ההקשר בזמן יצירת אובייקט התצוגה. - ה-
FragmentNavigatorמשתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחיםNavBackStackEntries. כלומר,NavBackStackEntryLifecycleימתין עכשיו עד שאפקטי הכניסה והיציאה של הפריט יסתיימו לפני שיזיז אתLifecycle.Stateהסופי. -
DialogFragmentNavigatorעכשיו משתמשים בממשקי ה-API של המעברים כשמנווטים ופותחים חלונות קופציםNavBackStackEntries. המשמעות היא שהמערכת תמתין עד שNavBackStackEntryLifecycleיעבור לDESTROYEDלפני שהיא עצמה תעבור לDESTROYED.LifecycleDialogFragment - ב-
NavHostFragmentאפשר עכשיו לאחזר אתNavControllerברגע ש-NavHostFragmentמצורף ל-FragmentManager, ולא רק אחריonCreate(). - התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספריית הפצת פיצ'רים ב-Play המפורטת.
- התלות של Navigation Safe Args היא עכשיו בפלאגין של Android Gradle בגרסה 7.3.0. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ואילך.
שינויים חשובים ב-NavigationUI מאז גרסה 2.5.0
- כשמעבירים את המזהה של תרשים ניווט אל
AppBarConfiguration(למשל באמצעותMenu),NavigationUIמתייחס עכשיו רק ליעד ההתחלתי של תרשים הניווט הזה כיעד ברמה העליונה, במקום לסמן באופן שגוי כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא משתנה. אותה פונקציונליות זמינה גם בקוד שלכם באמצעות הפונקציה החדשהisTopLevelDestinationב-AppBarConfiguration. - השילובים של
setupWithNavControllerב-NavigationUIלעבודה עם סרגל האפליקציות העליון ינתחו עכשיו ערכים שלR.stringלארגומנטים שלReferenceTypeשנמצאים ב-android:label, ויחזירו את ערכי המחרוזת שלהם במקום את המספר השלם של המשאב שנוצר אוטומטית. -
NavigationUIמספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItemשנבחר.
גרסה 2.6.0-rc02
24 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc02 מופץ. גרסה 2.6.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בניווט ב-Fragments שבה ניווט באמצעות
popUpToוהוצאת Fragment מה-back stack בלי ליצור מחדש את התצוגה שלו גרמו להפסקת הפעולה של המערכת. (Ieb8d4, b/281726455)
גרסה 2.6.0-rc01
10 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc01 מופץ. גרסה 2.6.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בניווט עם פרגמנטים שבה הסרת פרגמנט באמצעות ניווט עם
popUpToבקריאה חוזרת במחזור חייםonResume()שלו גרמה ל-IllegalStateException. (I21884, b/279644470)
גרסה 2.6.0-beta01
19 באפריל 2023
androidx.navigation:navigation-*:2.6.0-beta01 מופץ. גרסה 2.6.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
-
NavBackStackEntryמספק עכשיו הטמעה מותאמת אישית שלtoString. (Iff00b)
תיקוני באגים
- כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית
FragmentTransactionשמוסיף Fragment ל-מקבץ פעילויות קודמות (back stack) שלFragmentManagerיגרום עכשיו להקפיץ הודעת שגיאה (throw)IllegalArgumentException. תמיד צריך להוסיף פרגמנטים באמצעותnavigate()API. (I6d38e) - אם יש
navigateשמוסיף רשומה וpopBackStackשמסיר אותה באותו פריים, הרשומה העליונה שמתקבלת במקבץ הפעילויות הקודמות תחזור עכשיו באופן עקבי אלRESUMEDLifecycle.State. (Id8067, b/276495952)
גרסה 2.6.0-alpha09
5 באפריל 2023
androidx.navigation:navigation-*:2.6.0-alpha09 מופץ. גרסה 2.6.0-alpha09 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו בדיקות של מסלול לא תקין, כך שאם
NavDestinationמכילNavArgumentשלא יכול להיות null, המסלול של היעד הזה חייב להכיל placeholders לארגומנטים ששמם זהה ל-NavArgumentשלא יכול להיות null. (Ic62bf, b/274697949) - ניווטים לקישורים עמוקים שמבוססים על
Action/MimeTypeייכשלו מעכשיו אם בפעולת הניווט חסרNavArgumentשאי אפשר להגדיר כ-null, שנדרש על ידיNavDestinationשהערך שלAction/MimeTypeתואם לו. (Ibfa17, b/271777424) - כש-
NavControllerמגדיר גרף עם אותו מסלול ויעדים כמו הגרף הקודם, הוא מחליף עכשיו כמו שצריך את הצמתים הנוכחיים בגרף ואת היעדים במקבץ הפעילויות הקודמות (back stack) במופעים חדשים. תוקן קראש שהתרחש כשמשתמשים ב-onLaunchSingleTopבלי לשמור את המצב ב-Navigation Compose. בנוסף, תוקנה שגיאה שבה ניווט ליעדים שמשויכים לגרף הבסיסי יוצר מקבץ פעילויות קודמות (back stack) שגויה. (I5bc58, b/275258161, b/275407804)
גרסה 2.6.0-alpha08
22 במרץ 2023
androidx.navigation:navigation-*:2.6.0-alpha08 מופץ. גרסה 2.6.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- ב-
NavHostFragmentאפשר עכשיו לאחזר אתNavControllerברגע ש-NavHostFragmentמצורף ל-FragmentManager, ולא רק אחריonCreate(). (Ic6382, b/220186282)
תיקוני באגים
- תוקנה בעיה שקשורה ל-
NullPointerExceptionכשפותחים גרף מקונן שכולל ארגומנט שלא יכול להיות null. (6b3581, b/249988437) - כשמשתמשים בלחצן 'הקודם' של המערכת אחרי ניווט באמצעות
popUpTo, המצב שלNavControllerיקפוץ לרשומה הנכונה. (I3a8ec, b/270447657) -
FragmentNavigatorיציג עכשיו כראוי רשומות קופצות כשמבצעים פעולת pop במקבץ פעילויות קודמות (back stack) באמצעות הכפתור 'הקודם' במערכת או באמצעותpopBackStack(), ויציג גם אם הטרנזקציה משתמשת באפקטים בשביל המקטע (fragment). (I81bdf) - הוספת פרגמנטים ל-
FragmentNavigator'sFragmentManagerבלי להשתמש בניווט לא תגרום יותר לקריסה. (b17204, b/274167493)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו במחזור החיים
2.6.1. (586fe7) - הניווט תלוי עכשיו ב-SavedState
1.2.1. (078e4e) - הניווט תלוי עכשיו ב-ProfileInstaller
1.3.0. (512f0c)
גרסה 2.6.0-alpha07
8 במרץ 2023
androidx.navigation:navigation-*:2.6.0-alpha07 מופץ. גרסה 2.6.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- הגרסאות של API
getBackStackEntry,popBackStack,clearBackStackשמקבלות מסלולים מקבלות עכשיו דפוסי מסלולים עם ארגומנטים שניתן להגדיר כ-nullable ופרמטרים של שאילתות שניתן להגדיר כ-nullable (I22294, b/269302500) - נפתרה בעיה שבה קריאה ל-
clearBackStack()מ-NavControllerלא ניקתה את המצב השמור במנהל הרכיבים שמשויך למקבץ פעילויות קודמות (back stack) שנוקה. (Ic1cce, b/271190202) - תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה להדגשה של
MenuItemשגוי ב-BottomNavigationViewכשמשתמשים בתכונה 'חזרה למערכת' בין כרטיסיות. (I634f6, b/270447657) - תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה לכך שרכיבי
NavBackStackEntryלא הועברו למצב RESUMED כשנעשה שימוש ברכיביAnimation. (Ib3589, b/269646882)
גרסה 2.6.0-alpha06
22 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha06 מופץ. גרסה 2.6.0-alpha06 מכילה את השמירות האלה.
תכונות חדשות
- כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם
NavHost, מוצג עכשיוstartDestinationשל NavGraph כברירת מחדל. (I2b89f)
שינויים ב-API
- כל העומסים העודפים של
NavControllernavigateמסומנים עכשיו ב-@MainThreadכדי לוודא שהם מופעלים בשרשור הראשי. (I2c0b0, b/263427111)
תיקוני באגים
- תוקנה קריסה שקורית כשמנסים לנווט בזמן השימוש בניווט דינמי של מקטעים. (I3ee29, b/268360479)
- תוקן באג שבו ניווט לקטע אחר באמצעות הכפתור "הקודם" של המערכת לא מעדכן את הסרגל התחתון לפריט הנכון שנבחר (If559f, b/269044426)
בעיות מוכרות
- כשמשתמשים ב-Navigation עם Fragments, מחזור החיים של
NavBackStackEntryRESUMEDלא מגיע אלRESUMEDכשמשתמשים ב-APIs שלAnimation. (b/269646882) - כשמשתמשים ב-Navigation עם Fragments ומנווטים באמצעות
BottomNavigation, אם מנסים לשחזר back stack עם כמה רשומות,BottomMenuItemלא מתעדכן בצורה נכונה. (b/270447657) - כשמשתמשים ב-Navigation עם Fragments, אחרי שמשחזרים את המצב, הפונקציה
NavBackStackEntryLifecycleלא מקבלת את הערךDESTROYEDכשה-fragment שלה הואDESTROYED. (b/270610768)
גרסה 2.6.0-alpha05
8 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha05 מופץ. גרסה 2.6.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
-
NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route)תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. חשוב לשים לב שהארגומנטים צריכים להיות התאמה מדויקת לארגומנטים של הרשומה. (Iebd28, Ic678c, I3b37b, b/257514373) - ה-
FragmentNavigatorמשתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחיםNavBackStackEntries. כלומר,NavBackStackEntryLifecycleיחכה עכשיו עד שאפקטי הכניסה והיציאה של הפריט יסתיימו לפני שיעבור לLifecycle.Stateהסופי שלו. (I3cb19, b/238686802) - ה-
DialogFragmentNavigatorמשתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחיםNavBackStackEntries. המשמעות היא שהמערכת תמתין עד שNavBackStackEntryLifecycleיעבור לDESTROYEDלפני שהיא עצמה תעבור לDESTROYED.LifecycleDialogFragment(I53ee5, b/261213893)
שינויים ב-API
-
NavigatorStateמספק עכשיו אתprepareForTransitionAPI כדי לאפשר ל-Navigators להעבירNavBackStackEntriesל-Lifecycle.States ביניים. (I42c21, b/238686802) - עכשיו אפשר לגשת למצבור הפעולות הקודמות שמשויך לנכס
NavGraphNavigatorאו לנכסComposeNavigatorדרך נכסbackstack. ComposeNavigatorגם חושף עכשיו את הקריאה החוזרתonTransitionComplete()כדי לסמןNavBackStackEntryשהפעיל ניווט או פעולתpopBackStackכהשלמה. (I02062, I718db, b/257519195)
תיקוני באגים
- מצב Navigator לא יבצע פעולה כשהמשתמשים משתמשים ב-
push/popWithTransitionAPIs והערך כבר מטופל. (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מחליף עכשיו את ה-method הזה כדי לקרוא ל-Uri.encodeב-Stringהנתון. (Ie5213, b/247637434) -
NavigationUIמספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItemשנבחר. (I2af5a, b/247730357)
תיקוני באגים
- קישורי עומק לניווט עוברים עכשיו ניתוח עצל במקום ניתוח במהלך אתחול הגרף, מה שיכול לשפר את ביצועי האפליקציה בהפעלה. (Iab0ab)
- תוקנה קריסה שנגרמה מניווט למעלה אחרי קישור עומק ליעד עם ארגומנטים של ברירת מחדל מסוג null. (I51c24, b/243183636)
עדכון תלות
- התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספריית הפצת פיצ'רים ב-Play המפורטת. (Ib4ddc)
- התלות של Navigation Safe Args היא עכשיו בפלאגין של Android Gradle בגרסה 7.3.0. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ומעלה. (I47e49)
גרסה 2.6.0-alpha03
24 באוקטובר 2022
androidx.navigation:navigation-*:2.6.0-alpha03 מופץ. גרסה 2.6.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- מתוך ניווט
2.5.3:NavHostלא יגרום יותר לNoSuchElementExceptionכשאין יעד זמין לCrossfadeליצירה. הוא פשוט ידלג על הקומפוזיציה. (Ieb46e, b/253299416) - מתוך ניווט
2.5.3: תוקנה בעיה שבה מצב ה-Compose השמור (למשל, שימושים ב-rememberSaveable) לא נשכח ולא הוסר כשפריט יעד הוצא ממקבץ הפעילויות הקודמות (back stack). (I64949)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Fragment
1.5.4. (Icd424)
גרסה 2.6.0-alpha02
5 באוקטובר 2022
androidx.navigation:navigation-*:2.6.0-alpha02 מופץ. גרסה 2.6.0-alpha02 מכילה את השמירות האלה.
שינויים בהתנהגות
- כשמעבירים את המזהה של תרשים ניווט אל
AppBarConfiguration(למשל באמצעותMenu),NavigationUIמתייחס עכשיו רק ליעד ההתחלתי של תרשים הניווט הזה כיעד ברמה העליונה, במקום לסמן באופן שגוי כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא משתנה. אותה פונקציונליות זמינה גם בקוד שלכם באמצעות הפונקציה החדשהisTopLevelDestinationב-AppBarConfiguration. (Ie936e, b/238496771)
תיקוני באגים
- הרכיב
navigation:navigation-fragmentתלוי עכשיו בגרסה1.5.2של Fragment. (I00ba4) - פריט התפריט שנבחר לא יעודכן יותר כשעוברים ליעד
FloatingWindowכמו תיבת דו-שיח. (I4cde8, b/240308330)
גרסה 2.6.0-alpha01
7 בספטמבר 2022
androidx.navigation:navigation-*:2.6.0-alpha01 מופץ. גרסה 2.6.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- השילובים של
setupWithNavControllerב-NavigationUIלעבודה עם סרגל האפליקציות העליון ינתחו עכשיו ערכים שלR.stringלארגומנטים שלReferenceTypeשנמצאים ב-android:label, ויחזירו את ערכי המחרוזת שלהם במקום את המספר השלם של המשאב שנוצר אוטומטית. (I5f803, b/167959935) - ב-
NavDeepLinkיש עכשיו תמיכה בערכי ברירת מחדל למערכים, שמאפשרת תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט. הפונקציהNavTypeכוללת עכשיו גם שיטת ברירת מחדל שאפשר לבטל כדי לשלב שני ערכים שנותחו. (Id68c3, b/209977108) - כשמשתמשים במחרוזת המדויקת
${applicationId}כמציין המיקום במאפייניםapp:dataו-app:dataPatternברכיב הפעילות של קובץ XML של ניווט, מציין המיקום יתמלא באופן אוטומטי ב-packageNameשל ההקשר בזמן יצירת אובייקט התצוגה. (Iaabde, b/234223561) - ניסיון ליצור
NavDeepLinkריק באמצעותnavDeepLinkKotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך לכלול uri, פעולה או mimetype כדי להיות תקין. (I08d2f, b/154038883)
שינויים ב-API
- נוספה פונקציית תוסף חדשה,
NavDestination, לניתוח תוויות דינמיות עם ארגומנטים בצורהandroid:label="{arg}"למחרוזת. תומכת בארגומנטים מסוגReferenceTypeעל ידי ניתוח הערכים מסוגR.stringלערכים מסוג String. (I07d89, b/236269380)
שינויים בהתנהגות
-
argumentsשל NavBackStackEntry ו-argumentsשמועבר אלOnDestinationChangedListenerהם עכשיו רק עותק של הארגומנטים הבלתי ניתנים לשינוי שנוצרו כשעברתם ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישות הבאות ל-argumentsאו למופעים אחרים שלOnDestinationChangedListener. (I676f5)
תיקוני באגים
- מתוך ניווט
2.5.2: ניווט דינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. (Ia2c16, b/240292838) - מ-Navigation
2.5.2: הניווט יחליף עכשיו את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו יעד ומגדירים את הדגלlaunchSingleTopכ-true. (I5a2f1, b/237374580) - מתוך ניווט
2.5.2: תוקן באגIllegalStateExceptionשנגרם מניווט לגרף עם קינון כפול שחולק הורה עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)
גרסה 2.5
גרסה 2.5.3
24 באוקטובר 2022
androidx.navigation:navigation-*:2.5.3 מופץ. גרסה 2.5.3 מכילה את השמירות האלה.
תיקוני באגים
NavHostלא יגרום יותר לNoSuchElementExceptionכשאין יעד זמין לחיבור שלCrossfade. הוא פשוט ידלג על הקומפוזיציה. (Ieb46e, b/253299416)- תוקנה בעיה שבה מצב השמירה של Compose (למשל, שימושים ב-
rememberSaveable) לא נשכח ולא הוסר כשיעד הוצא ממקבץ הפעילויות הקודמות (back stack). (I64949)
גרסה 2.5.2
7 בספטמבר 2022
androidx.navigation:navigation-*:2.5.2 מופץ. גרסה 2.5.2 מכילה את השמירות האלה.
תיקוני באגים
- הניווט הדינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. (Ia2c16, b/240292838)
- הניווט יחליף עכשיו את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו יעד ומגדירים את הדגל
launchSingleTopכ-true. (I5a2f1, b/237374580) - תוקן באג מספר
IllegalStateExceptionשנגרם מניווט לגרף עם קינון כפול שחולק הורה עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)
עדכון תלות
- הניווט
2.5.2תלוי עכשיו ב-Fragment1.5.2. (aosp/2178734)
גרסה 2.5.1
27 ביולי 2022
androidx.navigation:navigation-*:2.5.1 מופץ. גרסה 2.5.1 מכילה את השמירות האלה.
תיקוני באגים
Navigation Safe Argsלא יציג יותר אזהרות לגבי הוצאה משימוש בכיתות שנוצרו כשמשתמשים בסוגי ארגומנטים בהתאמה אישית שנשמרים ב-Bundle. (Id86ed, b/237725966)
עדכונים של יחסי תלות
- ספריית הניווט תלויה עכשיו ב-Lifecycle
2.5.1. (Ib4451) - ספריית הניווט תלויה עכשיו ב-Activity
1.5.1. (I3efe8) - ספריית הניווט תלויה עכשיו ב-Fragment
1.5.1. (I56177)
גרסה 2.5.0
29 ביוני 2022
androidx.navigation:navigation-*:2.5.0 מופץ. גרסה 2.5.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.4.0
- שילוב CreationExtras – ל-
Navigationיש עכשיו אפשרות לספקViewModelProvider.Factoryבלי שמירת מצב דרךCreationExtrasשל מחזור חיים2.5.0.
Navigation SafeArgs
-
Navigation Safe Argsשדרג את התלותAndroid Gradle Pluginכדי להסתמך על7.0.4, וכך ביטל את התאימות לגרסאות AGP שקדמו ל-7.0. - נוספה תמיכה במאפיין build.gradle של מרחב השמות, לשימוש במקום applicationId.
שינויים אחרים
- ממשק ה-API
visibleEntriesכבר לא ניסיוני, והוא מספק פונקציה לאחזור כל הרשומות שהיעד שלהן גלוי כרגע בהתאם לNavController.
גרסה 2.5.0-rc02
15 ביוני 2022
androidx.navigation:navigation-*:2.5.0-rc02 מופץ. גרסה 2.5.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקן קריסה שנגרמה כתוצאה ממעבר מהיר בין יעדים בתחתית כשמשתמשים ב-Navigation Compose
NavHost. (I3979a, b/234054916) -
Navigation SafeArgsלא יקרוס יותר כשמשתמשים ב-applicationIdSuffixובמרחב שמות ללאapplicationId, או כש-applicationIdומרחב השמות שונים. (I754b1, b/233119646) - ל-
NavArgumentיש עכשיו פונקצייתtoString()מותאמת אישית להצגת הערכים הפנימיים של הארגומנט. (I900a8)
גרסה 2.5.0-rc01
11 במאי 2022
androidx.navigation:navigation-*:2.5.0-rc01 מופץ. גרסה 2.5.0-rc01 מכילה את השמירות האלה.
תכונות חדשות
- נוסף כלל חדש של Lint כדי להזהיר מפני הצבת רכיבי
<deeplink>בתוך רכיבי<activity>בקובץnavigation.xml.(Ic15a5, b/178403185)
תיקוני באגים
- היקפים שניתן להרכיב ב-
NavHostוב-DialogHostמושמדים עכשיו בסדר הצפוי, כלומר, רכיבים פנימיים מושמדים לפני רכיבים חיצוניים. (I157e6) - התכונה Navigation SafeArgs משתמשת עכשיו ב-
PathSensitivity.RELATIVEב-ArgumentsGenerationTaskכדי לאפשר העברה של המטמון. המשמעות היא שאפשר עכשיו לעשות שימוש חוזר ברשומה במטמון מ-CI build ל-local build. (I5f67c, b/173420454) - כלל ה-lint
UnrememberedGetBackStackEntryDetectorעודכן כדי לוודא שהקריאה ל-rememberשמקיפה את הקריאה ל-getBackStackEntry()מעבירה גם אובייקטNavBackStackEntryכמפתח.(Ib7081, b/227382831)
גרסה 2.5.0-beta01
20 באפריל 2022
androidx.navigation:navigation-*:2.5.0-beta01 מופץ. גרסה 2.5.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
-
DialogNavigatorמשתמש עכשיו ב-popWithTransitionכשמבצעים שיחה ב-dismiss(). התיקון הזה פותר מרוץ תהליכים כשמשתמשים ב-ViewModelביעדdialog, שגורם ל-IllegalStateExceptionכשסוגרים את תיבת הדו-שיח באמצעות לחצן החזרה של המערכת או באמצעות הקשה מחוץ לתיבת הדו-שיח כדי לצאת. (Id7376, b/226552301)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Lifecycle
2.5.0-beta01, ומתקןIllegalStateExceptionכשמטמיעיםNavHostבתוךNavHostבכרטיסיית ניווט תחתונה לא ראשית כשמשתמשים בכמה מחסניות חזרה.
גרסה 2.5.0-alpha04
6 באפריל 2022
androidx.navigation:navigation-*:2.5.0-alpha04 מופץ. גרסה 2.5.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- התכונה
visibleEntriesכבר לא ניסיונית. (I4829f, b/225394514)
תיקוני באגים
- הקומפוננטה NavHost תלויה עכשיו ב-
visibleEntriesמ-NavControllerכדי לקבוע אילו רשומות להוסיף לקומפוזיציה. כלומר, כשמשתמשים ב-NavHost מוטמע, המעבר החוצה שלNavHostהפנימי יונפש בצורה תקינה. (I4ba2b, b/225394514) - הערך
visibleEntriesStateFlowשמופיע ב-NavControllerמבוסס עכשיו על מצב מחזור החיים המקסימלי של הרשומה במקום על מצב מחזור החיים הנוכחי. המשמעות היא שגם אם מחזור החיים של המארחnavControllerירד מתחת לערך STARTED, רשימת הרשומות הגלויות תישאר ללא שינוי. (I9e2a8, b/225394514) - מעכשיו אפשר להשתמש ב-
SavedStateViewFactoryעםCreationExtrasגם אם הוא אותחל עםSavedStateRegistryOwner. אם מספקים תוספים, המערכת מתעלמת מהארגומנטים שמוגדרים בהפעלה. (I6c43b, b/224844583) -
NavDeepLinkיכול עכשיו לנתח כתובות URI עם פרמטר שאילתה יחיד ללא ערך. (I0efe8, b/148905489) - מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, b/217399862)
Navigation Safe Argsלא יקרוס יותר כשמשתמשים במרחבי שמות ולא מוגדרAndroidManifest.xml. (I17ccf, b/227229815)
גרסה 2.5.0-alpha03
23 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha03 מופץ. גרסה 2.5.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- מעכשיו אפשר להעביר את
CreationExtrasאלby navGraphViewModelsכדי ליצורViewModel. (I29217, b/217618359)
תיקוני באגים
-
NavDeepLinksתומך עכשיו בצורה תקינה בתווי שורה חדשה מוטמעים בקידוד בנתיבים או ב-URI של קישורי עומק. (I513d1, b/217815060) -
CreationExtrasיפעל עכשיו בצורה תקינה כשמשתמשים בו עםNavBackStackEntriesכדי ליצור ViewModels. (I69161, b/217617710) - התכונה Navigation Safe Args תומכת עכשיו בשימוש במרחב השמות שמוגדר ב-
build.gradleבמקום בחבילה ב-AndroidManifest. (I659ef, b/217414933)
גרסה 2.5.0-alpha02
9 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha02 מופץ. גרסה 2.5.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- מתוך Navigation
2.4.1: עכשיוNavHostFragmentיגדיר אתOnBackPressedDispatcherבצורה נכונה כשמשתמשים ב-viewbinding עם גרפים מקוננים. (Ifbb51, b/214577959) - מתוך ניווט
2.4.1: כשמשתמשים בקישור עמוק דרך כמהNavGraphs מוטמעים, עכשיו מקבץ פעילויות קודמות (back stack) כוללת כמו שצריך את יעדי ההתחלה הביניים. (I504c0, b/214383060)
גרסה 2.5.0-alpha01
26 בינואר 2022
androidx.navigation:navigation-*:2.5.0-alpha01 מופץ. גרסה 2.5.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
-
NavBackStackEntryמשולב עכשיו עם ViewModel CreationExtras, שהוצג כחלק מ-Lifecycle2.5.0-alpha01. (Ib9fe2, b/207012490)
תיקוני באגים
- תוקנה בעיה שבה גישה ל-
ViewModelשנוצר באמצעותby navGraphViewModels()מ-onCreate()של Fragment נכשלה עםIllegalStateException. (I8a14d) -
NavDeepLinks כבר לא יפענח את הארגומנטים פעמיים ללא צורך, כלומר הארגומנטים הנכונים מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399)
Safe Args
- הספרייה Safe Args תלויה עכשיו בגרסה 7.0.4 של פלאגין של Android Gradle. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות 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 מכילה את השמירות האלה.
תיקוני באגים
- הועבר מגרסה קודמת של Navigation
2.5.0-alpha03:NavDeepLinksעכשיו יש תמיכה נכונה בתווי שורה חדשה מקודדים שמוטמעים בנתיבים או במזהי URI של קישורי עומק. (I513d1, b/217815060) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha03: עכשיו אפשר להשתמש ב-Navigation SafeArgs במרחב השמות שמוגדר ב-build.gradleבמקום בחבילה ב-AndroidManifest. (I659ef, b/217414933) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha04:Navigation Safe Argsלא יקרוס יותר כשמשתמשים במרחבי שמות ולא קייםAndroidManifest.xml. (I17ccf, b/227229815) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha04: מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, b/217399862)
גרסה 2.4.1
גרסה 2.4.1
9 בפברואר 2022
androidx.navigation:navigation-*:2.4.1 מופץ. גרסה 2.4.1 מכילה את השמירות האלה.
תיקוני באגים
- הקומפיילר של
NavHostFragmentיגדיר עכשיו אתOnBackPressedDispatcherבצורה נכונה כשמשתמשים ב-viewbinding עם תרשימים מקוננים. (Ifbb51, b/214577959) - כשמשתמשים בקישורי עומק דרך כמה רכיבי
NavGraphמוטמעים, עכשיו מקבץ פעילויות קודמות (back stack) כולל כמו שצריך את יעדי ההתחלה הביניים. (I504c0, b/214383060) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha01: תוקנה בעיה שבה גישה ל-ViewModel שנוצר באמצעותby navGraphViewModels()מ-Fragment שלonCreate()נכשלה עםIllegalStateException. (I8a14d) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha01:NavDeepLinks לא מפענח יותר ארגומנטים פעמיים ללא צורך, כלומר הארגומנטים המפוענחים כראוי מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha01: Safe Args תלוי עכשיו בגרסה 7.0.4 של פלאגין של Android Gradle. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות Android Studio שקודמות לגרסה 7.0, אבל עכשיו הוא תואם לפלאגין של Android Gradle בגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)
גרסה 2.4.0
גרסה 2.4.0
26 בינואר 2022
androidx.navigation:navigation-*:2.4.0 מופץ. גרסה 2.4.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.3.0
- כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר מחלקות כ-nullable באמצעות ג'נריקס (כמו מחלקות משנה של
NavType). כל פונקציות ההרחבה של Kotlin שהיו חלק מפריטי ה--ktxהועברו לפריטי ה-Artifact הראשיים שלהן.-ktxהארטיפקטים ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. - ארטיפקט
navigation-fragmentמכיל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעותAbstractListDetailFragmentהחדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayoutכדי לנהל חלונית רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית פרטים, שנעשה בה שימוש ב-NavHostFragmentכהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה. - ה-method
currentBackStackEntryAsFlow()ב-NavControllerמספקFlowשמופעל בכל פעם ש-NavBackStackEntryהנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני שלOnDestinationChangedListener. - ה-NavController מאפשר עכשיו לאחזר רשימה של כל המופעים הגלויים של
NavBackStackEntryבתורStateFlowבאמצעות המאפיין הניסיוניvisibleEntries. - עכשיו אפשר להרחיב את המחלקה
NavTypeכדי ליצור NavTypes מותאמים אישית. אפשר להשתמש בסוגים מותאמים אישית רק כשיוצרים את גרף הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. ב-Navigation יש עכשיו ממשקי API של
findStartDestination()ושלgetHierarchy()שאפשר להשתמש בהם כדי להטמיע NavigationUI בהתאמה אישית. findStartDestination()היא פונקציית הרחבה שלNavGraphשתאתר את יעד ההתחלה בפועל שיוצג כשמנווטים לגרף, גם אםstartDestinationהיא בעצמהNavGraphמקוננת. getHierarchy()היא פונקציה ב-NavDestinationשאפשר להשתמש בה כדי לוודא שיעד נתון נמצא בהיררכיה של יעד אחר.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUImethods שהשתמשו ב-BottomNavigationViewעודכנו כך שהם משתמשים במקום זאת ב-מחלקת אב שהוצג ב-Material1.4.0, NavigationBarView. כך אפשר להשתמש ב-methods האלה עםNavigationRailView.כשמנפחים רכיב
<action>באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנמשכים מהעיצוב באמצעות התחבירapp:enterAnim="?attr/transitionEnter".הספרייה Safe Args יוצרת עכשיו שיטה
fromSavedStateHandle()לכל מחלקהNavArgs. (מס' 122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
מסלולי ניווט ו-Kotlin DSL
בגרסאות קודמות של Navigation, לכל יעד היה מזהה מספר שלם קבוע שזיהה אותו באופן ייחודי מבין היעדים האחים שלו, ואפשר navigate() ליעד הזה ישירות או באמצעות פעולה. השיטה הזו עדיין תקפה ושימושית, במיוחד במקרים שבהם מגדירים את גרף הניווט ב-XML ואפשר להשתמש בקבועי R.id שנוצרו אוטומטית או ב-Safe Args (שמשתמש בקבועים האלה כדי ליצור קוד בזמן ה-build). עם זאת, המערכת הזו של מספרים שלמים ייחודיים לא הצליחה לתעד את המשמעות הסמנטית ואת היכולת הבעה שנדרשות כדי לתמוך בגרפים דינמיים לחלוטין שנבנים באופן פרוגרמטי בזמן הריצה באמצעות Navigation Kotlin DSL.
בגרסה הזו נוספה אפשרות חדשה לזיהוי ייחודי של יעד בתרשים ניווט לפי המסלול שלו. מסלול הוא String שמגדיר את הנתיב הייחודי ליעד. כל השיטות של Kotlin DSL שקיבלו מזהה יעד הוצאו משימוש והוחלפו ב-API מקביל שמקבל נתיב.
כל מסלול צריך להיות החלק של הנתיב בכתובת Uri שמגדירה את היעד, למשל home, profile/{userId}, profile/{userId}/friends וכו'. כשמזהים יעד שמשויך לחלק ספציפי בתוכן, הארגומנטים הדינמיים האלה צריכים להיות חלק מהמסלול, בהתאם לאותם כללים של קישורי עומק משתמעים.
כל ממשקי ה-API של NavController שבעבר קיבלו רק מזהה, כוללים עכשיו עומס יתר שמקבל מסלול String. הם כוללים את navigate(), popBackStack(), popUpTo() ו-getBackStackEntry().
היו לכך השלכות על ה-API:
- המאפיין
popUpToKotlin ב-Kotlin DSL יצא משימוש, ועכשיו צריך להשתמש במאפייןpopUpToId. - הוצאנו משימוש את ממשק ה-API
getStartDestination(), ועכשיו אנחנו ממליצים להשתמש ב-getStartDestinationId().
בניגוד לניווט לפי מזהה, ניווט לפי נתיב פועל לפי אותם כללים כמו קישורי עומק מרומזים, כך שאפשר לנווט ישירות לכל יעד בכל גרף מקונן, ולוודא שאפשר להשתמש בנתיבים האלה בפרויקטים עם כמה מודולים בלי להוסיף במפורש קישור עומק שגלוי חיצונית לכל יעד.
Navigation Compose
ארטיפקט navigation-compose מספק שילוב בין רכיב הניווט לבין Jetpack פיתוח נייטיב. היא משתמשת בפונקציות @Composable כיעדים באפליקציה.
הגרסה הזו כוללת:
- רכיב
NavHostcomposable שמאפשר ליצור את גרף הניווט באמצעות Kotlin DSL, עם יעדיcomposableו-dialog, וגם תמיכה ברכיבי Navigators אופציונליים כמו אלה מ-Accompanist Navigation Material. - חובה לתמוך בהחלפה הדרגתית בין יעדים. אפשר להשתמש ב-Accompanist Navigation Animation כדי לשלוט במעברים של כניסה ויציאה באמצעות ממשקי Compose API ניסיוניים.
- הגדרת היקף של
Lifecycleלכל יעד שאפשר להרכיב. כל יעד מגיע למצבRESUMEDרק כשכל המעברים הנכנסים מסתיימים, ויורד מיד למצבSTARTEDכשכל המעברים היוצאים מתחילים. כך אפשר להימנע מכל הבעיות שקשורות ל-IllegalStateExceptionולמגע מרובה, כי קריאה ל-navigateמופעלת רק כש-LifecycleהואRESUMED. - הגדרת היקף של
ViewModel(באמצעותviewModel()API של Lifecycle ViewModel Compose2.4.0אוhiltViewModel()של Hilt Navigation Compose1.0.0ברמת היעד, כדי לספק היקף ששומר על הנתונים גם אחרי שינויים בהגדרות וגם אחרי שהמשתמש חוזר אחורה (כשתוכן ה-Composable מושמד בדרך אחרת), וגם אות ב-ViewModelonCleared()שמציין את ההשמדה הקבועה ואת ניקוי המצב שמשויך ל-NavBackStackEntry. - הגדרת היקף של
rememberSaveableמצב ברמת היעד, כדי להבטיח שכל המצב שניתן להרכבה יישמר וישוחזר באופן אוטומטי כשחוזרים ליעד. - תמיכה מלאה בשמירה ובשחזור של מצב
NavControllerושל מצב היעד שלו אחרי השבתת תהליך ויצירה מחדש. - שילוב אוטומטי עם כפתור 'הקודם' במערכת.
תמיכה בהעברת ארגומנטים, בצירוף קישורי עומק ליעדים ובהחזרת תוצאה ליעדים קודמים.
אפשר ליצור פונקציות עזר ספציפיות ב-
rememberNavController()וב-currentBackStackEntryAsState()כדי לאפשר העברת מצב וחיבור שלNavControllerלרכיבים שאפשר להשתמש בהם מחוץ ל-NavHost(כמו סרגל ניווט תחתון).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
מידע נוסף זמין במדריך בנושא Compose Navigation.
Multiple back stacks
ה-NavController אחראי לניהול מקבץ הפעילויות הקודמות (back stack) של היעדים, להוספת יעדים למקבץ הפעילויות הקודמות (back stack) כשמבצעים navigate() אליהם ולהסרתם כשמפעילים את popBackStack() או את הכפתור "הקודם" של המערכת. ההרחבה של המחלקה הקיימת NavOptions והשילוב שלה ברכיבי <action> ב-XML של גרף הניווט מאפשרים לשמור ולשחזר את מקבץ הפעילויות הקודמות (back stack).
כחלק מהשינוי הזה, השיטות NavigationUI של onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ו-NavigationView.setupWithNavController() שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוצאו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה מחסניות חזרה.
ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:
ב-XML של הניווט, הרכיב
<action>יכול עכשיו להשתמש במאפיינים הבוליאנייםapp:popUpToSaveStateו-app:restoreStateכדי לשמור את המצב של כל היעדים שהוצגו באמצעותapp:popUpToולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />ב-
navOptionsKotlin DSL, אפשר להוסיף את המאפיין הבוליאניrestoreStateואת המאפיין הבוליאניsaveStateב-popUpTobuilder:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }כשיוצרים אובייקט
NavOptionsבאופן ידני באמצעותNavOptions.Builder, אפשר להשתמש ב-setRestoreState()וב-overload החדש כדיsetPopUpTo()שדורש פרמטר נוסף שלsaveState.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);עכשיו אפשר לכלול פרמטר
saveStateנוסף בקריאות פרוגרמטיות אלpopBackStack().אפשר להשתמש בשיטה
clearBackStack()כדי לנקות כל מצב שנשמר באמצעותpopBackStack()אוpopUpToSaveState.
בכל המקרים, NavController ישמור וישחזר את המצב של כל NavBackStackEntry, כולל מופעים של ViewModel שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator עודכנו כדי לאפשר לכל Navigator לתמוך בשמירה ובשחזור של המצב שלו.
שינויים בהתנהגות
-
NavDeepLinkBuilderמוסיף עכשיו אתPendingIntent.FLAG_IMMUTABLEל-PendingIntentשמוחזר על ידיcreatePendingIntent(), כדי לוודא שה-API הזה פועל כמצופה כשמטרגטים ל-Android 12. - הניווט תלוי עכשיו במחזור החיים
2.3.1, ועכשיו מסומניםsetGraph(),popBackStack(),navigateUp()ו-navigate(), השיטות שמעדכנות אתNavBackStackEntryLifecycle, בתור@MainThread, בהתאם לאכיפה של השרשור הראשי שהוצגה במחזור החיים2.3.0. - קישורי העומק בודקים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-
Uri. - בארגומנטים שנותחו
NavDeepLink, סימני סולמית נחשבים עכשיו כמו סימני שאלה כמפריד בין מקטעי נתיב, וכך מונעים מארגומנט להשתרע על פני סימן הסולמית. - כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args ממקם עכשיו ארגומנטים ללא ערכי ברירת מחדל לפני ארגומנטים עם ערכי ברירת מחדל כפרמטרים.
- כשיוצרים ארגומנטים, Safe Args ממקם עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל.
- הספרייה Safe-Args תלויה עכשיו בפלאגין של Android Gradle 4.2.0. המשמעות היא שהאזהרה לגבי השימוש ב-
applicationIdTextResourceלא תוצג יותר.
בעיות מוכרות
- תוקן ב-Navigation
2.5.0-alpha01: גישה אלViewModelשנוצר באמצעותby navGraphViewModels()מ-onCreate()של Fragment תיכשל עםIllegalStateException. (b/213504272) - תוקן ב-Navigation
2.5.0-alpha01: Safe Args 2.4.0 לא תואם לפלאגין של Android Gradle מגרסה 7.1.0 ואילך. (b/213086135) - קישור עומק עם כמה תרשימי ניווט מקוננים לא יוצר את היסטוריית החזרה המלאה בצורה נכונה. (b/214383060)
גרסה 2.4.0-rc01
15 בדצמבר 2021
androidx.navigation:navigation-*:2.4.0-rc01 מופץ. גרסה 2.4.0-rc01 מכילה את השמירות האלה.
שינויים בהתנהגות
NavDeepLinkארגומנטים שנותחו מתייחסים עכשיו לסימני סולמית באותו אופן שבו הם מתייחסים לסימני שאלה כמפריד בין ארגומנטים. (I21309, b/180042703)
תיקוני באגים
- מעכשיו, קישורים עמוקים לא יתעלמו יותר מארגומנטים עם ערכים שזהים לשם של הפלייסהולדר. (If8017, b/207389470)
- אחרי שמשחזרים את
NavController, הוא לא קורס יותר כשפותחים יעד מקונן באמצעות מעברים.NavController(I0f7c9, b/205021623) - אם משתמשים בערך לא תקין של
startDestination, הודעת השגיאה תהיה עכשיו ברירת המחדל של המסלול ליעד ההתחלה, אם יש כזה. (I86b9d, b/208041894)
תיקוני באגים ב-Navigation Compose
- תוקנה בעיה שגרמה לקריסה פוטנציאלית כתוצאה ממעבר מהיר בין יעד ההתחלה ליעד אחר באמצעות פריטים בתפריט הניווט התחתון. (Ic8976, b/208887901)
- תיבות דו-שיח של יעד משוחזרות עכשיו בצורה תקינה בחלק העליון של המסך אחרי שינויים בהגדרות או אחרי שהתהליך הסתיים. (I4c0dc, b/207386169)
- תוקנה בעיה שגרמה לכך שניסיון לאחזר
ViewModelמ-NavBackStackEntryשל תיבת דו-שיח נכשל כשהתיבה נסגרה. (I6b96d, b/206465487) - תוקנה בעיה שקרתה כשמשתמשים ביעדים של
activityעםNavHostשל Navigation Compose, שגרמה להרכבות חוזרות אינסופיות. (I8f64c) - תוקנה דליפה ב-Navigation Compose שבה המערכת שמרה הפניה לפעילות הישנה אחרי שינוי בהגדרות או השבתת תהליך. (I4efcb, b/204905432)
תיקוני באגים ב-Safe Args
SafeArgsלא קורס יותר כשמנסים לשחזר מערכים מותאמים אישית של parcelable אחרי שהתהליך הסתיים. (I618e8, b/207315994)- תוקן באג ב-safe args שלא אפשר למערכים בוליאניים לקבל ערך
null. (I8c396, b/174787525)
גרסה 2.4.0-beta02
3 בנובמבר 2021
androidx.navigation:navigation-*:2.4.0-beta02 מופץ. גרסה 2.4.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
- הטיפול בקישורים עמוקים מפורשים ומשתמעים מוסיף עכשיו אוטומטית את הדגל
saveStateכשעוברים לגרף אחר, וכך מבטיח שקוד כמוNavigationUI.setupWithNavControllerוקוד שמשתמש במחסניות אחוריות מרובות יפעל כמצופה. (Ic8807)
שינויים בהתנהגות
- תבניות של קישורי עומק עוברות עכשיו קומפילציה עצלה ב-NavDeepLink במקום במהלך הניפוח. השינוי הזה אמור לשפר את זמן הניפוח של תרשימי ניווט שכוללים קישורי עומק. (b8d257, b/184149935)
תיקוני באגים
- תוקנה בעיה שבה רכיבי NavBackStackEntry נדחפו למטה אל
Lifecycle.State.CREATEDאחרי מעבר אלLifecycle.State.STARTEDכש-NavHostנוסף ישירות אלsetContent()של הפעילות. (Ia5ac1, b/203536683) - תוקן מצב מרוץ תהליכים שבו הסרת יעד
DialogFragmentממקבץ הפעילויות הקודמות (back stack) לפני שהתיבה מוצגת בפועל לא גורמת לסגירת התיבה, וכתוצאה מכך מתרחשת קריסה כשהמשתמש סוגר את התיבה באופן ידני. (I687e5) - תוקנה בעיה שבה
onNavDestinationSelectedAPI ב-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)
תיקוני באגים
- ViewModels לא ייהרסו יותר כשמעברים מופרעים בגלל ניווט קדימה ואחורה בין אותם מסכים (Id52d8, b/200817333)
- כשמוסיפים קישורי עומק ל-
NavDestination, אין יותר צורך בערך ברירת מחדל לארגומנטים מסוג NullableNavDeepLink. (I5aad4, b/201320030) - NavBackStackEntries עם מחזורי חיים שונים לא נחשבים יותר שווים. המשמעות היא שרכיב NavHost יבצע קומפוזיציה מחדש של כל היעדים בצורה תקינה כשמבצעים ניווט באמצעות singleTop וכשבוחרים מחדש פריטים בתפריט התחתון. (I1b351, b/196997433)
- תוקנה בעיה ב-
AbstractListDetailFragmentשגרמה לטיפול שגוי במאפייניםlayout_widthו-layout_weightבחלונית הרשימה שהוחזרה על ידיonCreateListPaneView(), או להתעלמות מהם. (f5fbf3) - המצב החזותי של יעדי הדיאלוג נשאר עכשיו מסונכרן עם המצב של
DialogFragmentNavigator. המשמעות היא שקריאה ידנית ל-API האסינכרוניdismiss()עבורDialogFragmentמנקה עכשיו כמו שצריך את כל יעדי הדו-שיח מעל הדו-שיח שנסגר. השינוי הזה לא משפיע על מקרים שבהם משתמשים ב-popUpToאו ב-popBackStack()כדי לסגור את תיבת הדו-שיח. (I77ba2) AbstractAppBarOnDestinationChangedListenerכולל עכשיו הודעות שגיאה ברורות יותר לגביonDestinationChanged(). (Ie742d)
גרסה 2.4.0-alpha10
29 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha10 מופץ. גרסה 2.4.0-alpha10 מכילה את השמירות האלה.
תכונות חדשות
- NavController כולל עכשיו אפשרות לאחזר רשימה של כל המופעים הגלויים של
NavBackStackEntryבאמצעות StateFlow (Ia964e)visibleEntries -
rememberNavController()מקבלת עכשיו קבוצה אופציונלית של מופעים שלNavigatorשיתווספו ל-NavControllerשמוחזר כדי לתמוך טוב יותר ב-Navigators אופציונליים, כמו אלה של Accompanist Navigation Material. (I4619e)
תיקוני באגים
- הניווט הדינמי לא יקרוס יותר כשהפעילות תיווצר מחדש. (Ifa6a3, b/197942869)
- תוקנה בעיה בכפתור הקודם של המערכת שמתרחשת רק אחרי שחוזרים ליעד שניתן להגדרה ומכיל
NavHost. (3ed148, b/195668143) - SafeArgs יוצר עכשיו את הארגומנטים של
fromBundle()ו-fromSavedStateHandle()בסדר הפרמטרים הנכון. (I824a8, b/200059831)
גרסה 2.4.0-alpha09
15 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha09 מופץ. גרסה 2.4.0-alpha09 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו אפשר להשתמש בשיטה
clearBackStack()כדי לנקות כל מצב שנשמר באמצעותpopBackStack()אוpopUpToSaveState. (I80a0f) - מעכשיו אפשר להעביר רשימה של ארגומנטים או קישורי עומק לבונה של גרף הניווט המקונן, והם יתווספו אוטומטית לגרף שיתקבל. (I8a470, b/182545357)
שינויים ב-API
- הפונקציה
navArgumentKotlin DSL היא עכשיו חלק מ-navigation-commonבמקום מ-navigation-compose. כדי להמשיך להשתמש בפונקציה הזו, צריך לעדכן את ההצהרות של הייבוא. (I1d095)
שינויים בהתנהגות
- כשיוצרים ארגומנטים, Safe Args מציב עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל. (I89709, b/198493585)
תיקוני באגים
- כשמשתמשים ב-Navigation Compose, NavGraphs יהיו
DESTROYEDרק אחרי שכל הצאצאים שלהם יהיוDESTROYED. (I86552, b/198741720) - לא צריך יותר לציין ערך ברירת מחדל לארגומנטים מסוג
NavDeepLinkשאפשר להגדיר להם ערך null. (Ia14ef, b/198689811) - קריאה ל-
setGraph()עם גרף חדש תנקה עכשיו גם את כל מקבצי הפעילויות הקודמות (back stack) שנשמרו, בנוסף להתנהגות הקודמת של הוצאת מקבץ הפעילויות הקודמות (back stack). (I97f96) - תוקנה בעיה שבה לא נשלחו התראות למופעים של
OnDestinationChangedListenerול-currentBackStackEntryFlowכשנעשה שימוש ב-launchSingleTop. (Iaaebc)
עדכונים של יחסי תלות
- Navigation Compose תלוי עכשיו ב-Activity Compose 1.3.1. (I05829)
- Navigation Compose תלוי עכשיו ב-Lifecycle ViewModel Compose
2.4.0-beta01. (Ib86a3)
גרסה 2.4.0-alpha08
1 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha08 מופץ. גרסה 2.4.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו אפשר להרחיב את המחלקה
NavTypeכדי ליצור NavTypes מותאמים אישית. אפשר להשתמש בסוגים מותאמים אישית רק כשיוצרים את גרף הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. (I78440, b/196871885)
שינויים בהתנהגות
- כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args ממקם עכשיו ארגומנטים ללא ערכי ברירת מחדל לפני ארגומנטים עם ערכי ברירת מחדל כפרמטרים. (Idb697, b/188855904)
- קישורי העומק מאמתים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-
Uri. (#204, b/185527157)
תיקוני באגים
- השימוש ב-
getBackStackEntryוב-previousBackStackEntryבתוך composable(), בשילוב עםremember(), לא יגרום יותר לחריגה בגלל שלא מוגדר יעד במקבץ פעילויות קודמות (back stack). (I75138, b/194313238) - Navigation Compose מבצע עכשיו קומפוזיציה מחדש בצורה תקינה כשמשנים את הארגומנטים של מחסנית החזרה ומשתמשים ב-
launchSingleTop=true. (Iebd69, b/186392337) - לא יהיה יותר
ArrayIndexOutOfBoundsExceptionכשמתקשרים אלsetGraphעם גרף שכולל 13 או 29 יעדים. (I1a9f1, b/195171984) - מחולל ה-Java של SafeArgs לא אמור יותר לגרום לאזהרות של lint כשיוצרים מחלקות Args. (I1a666, b/185843837)
External Contribution
- תודה ל-ospixd על כך שקישורי העומק מאמתים שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) מופיעים ב-
Uri. (#204, b/185527157)
גרסה 2.4.0-alpha07
18 באוגוסט 2021
androidx.navigation:navigation-*:2.4.0-alpha07 מופץ. גרסה 2.4.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- Navigation Compose שומר עכשיו את המצב בצורה תקינה אחרי שינויים בהגדרות וכשמחליפים גרפים בזמן השימוש בתכונה multiple back stack. (If5a3d, b/195141957)
- כשמשתמשים ב-Navigation Compose עם כמה מחסניות חזרה, בחירה מחדש של אותה כרטיסייה לא תוביל יותר למסך ריק. (I860dc, b/194925622)
-
NavHostעכשיו עוקב אחרי שינויים ב-Lifecycle.StateשלNavBackStackEntry, מה שאומר שאם משתמשים ב-NavHostבמקטע, הוא יורכב מחדש בצורה תקינה כשיש שינויים במחזור החיים, במקום להציג מסך ריק. (I4eb85, b/195864489) - תוקנה בעיה שגרמה לכך שסגירה של
DialogFragmentלא עדכנה את הסטטוס שלNavControllerבצורה נכונה אחרי יצירה מחדש של הפעילות (כלומר, אחרי שינוי בהגדרה). (Icd72b) - תוקנה בעיה שבה הוצאה של יעד של תיבת דו-שיח לא עדכנה את הטיפול של NavController בלחצן 'הקודם' במערכת, מה שיכול היה לגרום ל-NavController ליירט את לחצן 'הקודם' גם אם לא היה לו מקבץ פעילויות קודמות (back stack) להוציא ממנו. (If3b34)
- הספרייה Safe-args יוצרת עכשיו באופן אוטומטי שיטה לארגומנטים שאפשר להשתמש בה כדי לבדוק את הקוד
ViewModel.toSavedStateHandle(If1e2d, b/193353880)
גרסה 2.4.0-alpha06
4 באוגוסט 2021
androidx.navigation:navigation-*:2.4.0-alpha06 מופץ. גרסה 2.4.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- השמות של ה-methods
requireSlidingPaneLayout()ו-requireDetailPaneNavHostFragment()ב-AbstractListDetailFragmentשונו ל-getSlidingPaneLayout()ו-getDetailPaneNavHostFragment(), בהתאמה. (I34a08)
שינויים בהתנהגות
- כשמנווטים עם אנימציות (כמו
Crossfade), ה-Lifecycleשל היעד החדש יגיע עכשיו רק ל-RESUMEDכשהאנימציה תושלם. (If0543, b/172112072, b/194301889) - ב-Navigation Compose,
NavHostמגדיר עכשיו את הגרף כחלק מהקומפוזיציה הראשונה. (Ieb7be)
תיקוני באגים
- הסרת היעד האחרון מגרף ניווט כבר לא גורמת לשגיאה
ClassCastException. (If0543, b/172112072, b/194301889) - תוקנה בעיה
NullPointerExceptionשהתרחשה כשמוסיפים קישור עומק בליUriועוברים דרך מסלול או קישור עומק. (938a0c, b/193805425) - תוקנה בעיה ב-Navigation Compose שבה קישור עומק
NavBackStackEntryלא הגיע למצבRESUMED. (I192c5) - תוקנה הבעיה שבה כשמוציאים יעד של תיבת דו-שיח מהמחסנית, המערכת לא מעדכנת את הטיפול בלחצן 'הקודם' של NavController, ולכן יכול להיות ש-NavController מיירט את הלחצן 'הקודם' למרות שאין לו מקבץ פעילויות קודמות (back stack) להוציא ממנו. (aosp/1782668)
גרסה 2.4.0-alpha05
21 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha05 מופץ. גרסה 2.4.0-alpha05 מכילה את השמירות האלה.
שינויים בהתנהגות
- הקומפוננטה
NavHostשל Navigation Compose תמיד משתמשת עכשיו בהחלפות הדרגתיות כשעוברים בין יעדים. (I07049, b/172112072) - עכשיו אפשר לבצע שינויים בתרשים של NavHost. תרשימים עם אותו startDestination ויעדים בתרשים ייחשבו שווים ולא ינקו את
NavControllerמקבץ הפעילויות הקודמות (back stack). (I0b8db, b/175392262)
תיקוני באגים
- תוקנה בעיה שגרמה ל-
NoSuchElementExceptionכשמתקשרים אלpopBackStack()מתוךLifecycleObserverשמצורף אלNavBackStackEntry, בגלל עדכונים חוזרים למצב של NavController. (I64621) -
AbstractListDetailFragmentמאפשרת עכשיו להסיר לגמרי אתSlidingPaneLayoutמה-APK כשלא נעשה שימוש ב-AbstractListDetailFragment. (I611ad) - השיטות
NavGraphו-NavDestinationמחליפות עכשיו את שיטת השוויון, כך ששני אובייקטים עם אותם ערכים ייחשבו שווים. (I166eb, b/175392262)
גרסה 2.4.0-alpha04
1 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha04 מופץ. גרסה 2.4.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- הארטיפקט
navigation-fragmentכולל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעותAbstractListDetailFragmentהחדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayoutכדי לנהל חלונית רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית פרטים, שנעשה בה שימוש ב-NavHostFragmentכהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה. (Iac4be, b/191276636) - הארטיפקט
NavHostשלnavigation-composeתומך עכשיו ביעדים מסוגdialogבנוסף ליעדים מסוגcomposable. כל אחד מיעדי תיבות הדו-שיח הללו יוצג בתוך רכיבDialog, צף מעל יעדcomposableהנוכחי. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
שינויים ב-API
- הפונקציה
addב-NavigatorStateנקראת עכשיוpush. כל הקריאות הנוכחיות אלadd()יצטרכו להשתנות ל-push(). (Ie89fc, b/172112072) - עכשיו אפשר להשתמש בממשקי ה-API
pushWithTransactionו-popWithTransitionב-NavigatorStateכדי להעביר או להוציא יעד באופן אסינכרוני.Navigatorחשוב לציין שממשקי ה-API האלה עדיין לא נמצאים בשימוש באף אחד מהרכיבים לניווט שכלולים בחבילה. (Ic4d7c, b/172112072)
שינויים בהתנהגות
-
NavDeepLinkBuilderמוסיף עכשיו אתPendingIntent.FLAG_IMMUTABLEל-PendingIntentשמוחזר על ידיcreatePendingIntent(), כדי לוודא שממשק ה-API הזה פועל כמצופה כשמטרגטים את Android 12. (If8c52)
תיקוני באגים
- תוקנה בעיה ב-
<include-dynamic>שבה ארגומנטים שהועברו לתרשים לא הועברו בצורה נכונה לתרשים שנכלל באופן דינמי. (I3e115) - תוקנה בעיה ב-
NullPointerExceptionכשמנווטים ליעד באמצעות ארגומנטstring[]עם ערך ברירת מחדל של@null. (I1fbe8) - הוספת כללי ProGuard ל-
@Navigator.Name, לפתרון בעיות בשימוש במצב מלא של R8 3.1. (I2add9, b/191654433) - השימוש ב-SafeArgs לא יגרום יותר לכשלים כשמבצעים build של האפליקציה עם
Kotlinגרסאות קודמות לגרסה1.5.0. (Icd1ff, b/190739257)
גרסה 2.4.0-alpha03
16 ביוני 2021
androidx.navigation:navigation-*:2.4.0-alpha03 מופץ. גרסה 2.4.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה נדרשו שתי קריאות ל-
navigate()כדי לנווט לגרף דינמי שכלול. (I7785c, b/188859835) - תוקנה רגרסיה שהוצגה בגרסה Navigation
2.4.0-alpha01שבהsetupActionBarWithNavController()לא הסיר את סמל החזרה לרמה הקודמת בצורה תקינה כשנמצאים ביעד ברמה העליונה. (I5d443, b/189868637) - תוקנה בעיה
IllegalStateExceptionבקריאה ל-popBackStack()אחרי שהוצג הגרף הבסיסי של NavController. (I2a330, b/190265699) - כללי ProGuard ל-
by navArgs()חלים עכשיו כמו שצריך כשמשתמשים ב-navigation-commonאו בארטיפקטים שתלויים בו. (I68800, b/190082521) -
OnDestinationChangedListenerשקורא ל-navigate()בפעם הראשונה שהוא מקבל קריאה חוזרת, מקבל עכשיו קריאה חוזרת שנייה עם היעד שאליו הוא ניווט. (Ie5f9e, b/190228815) - Safe Args לא קורס יותר כשמשתמשים בו עם מודולים של תכונות דינמיות ו-AGP 7.0 ואילך. (I69518, b/189966576)
בעיה ידועה
- השימוש ב-Gradle
6.7.0יגרום ל-Safe Args להיכשל עם שגיאהUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’בגלל תלות בגרסה ישנה יותר של Kotlin. כדי לפתור את הבעיה, צריך לעדכן לגרסה Gradle 7.0. (b/190739257)
גרסה 2.4.0-alpha02
2 ביוני 2021
androidx.navigation:navigation-*:2.4.0-alpha02 מופץ. גרסה 2.4.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- יש עכשיו תמיכה במסלולים ביעדים Activity, Fragment ו-Dialog, וגם ב-Kotlin DSL של DynamicNavigation. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
-
NavigationUIהוסיף באופן זמני ממשקי API ניסיוניים כדי לאפשר ביטול של שמירת המצב. למרות ששמירת המצב תמיד היא ההתנהגות הנכונה, עדיין יש שימושים בספריות שהוצאו משימוש (כלומר, retained fragments), שלא ניתן לתמוך בהם כששומרים את המצב. לכן, יש כאן הזדמנות לאפליקציות לעבור בהדרגה מכל ממשקי API שלא נתמכים. (Idf93c) ב-Navigation יש עכשיו ממשקי API של
findDestination()ושלgetHierarchy()שאפשר להשתמש בהם כדי להטמיע NavigationUI בהתאמה אישית. findDestination()היא פונקציית הרחבה שלNavGraphשתאתר יעד בגרף. getHierarchy()היא פונקציה ב-NavDestinationשאפשר להשתמש בה כדי לוודא שיעד נתון נמצא בהיררכיה של יעד אחר.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }השיטות של NavigationUI שקיבלו
BottomNavigationViewעודכנו כך שיקבלו במקום זאת את מחלקת האב שלהן, שהוצגה ב-Material1.4.0,NavigationBarView. כך אפשר להשתמש ב-methods האלה עםNavigationRailView. (Ib0b36, b/182938895)כשמבצעים ניפוח של רכיב
<action>באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנמשכים מהעיצוב באמצעות התחבירapp:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)
שינויים ב-API
- הוצאנו משימוש ב-Kotlin DSL את ה-builders שמשתמשים במזהה, ועכשיו צריך להחליף אותם ב-builders שמשתמשים בנתיבים (I85b42, b/188816479). (I9f58f, b/188816479)
תיקוני באגים
-
DialogFragmentNavigatorמשתמש עכשיו ב-NavigatorState.pop()API כדי לעדכן אתNavControllerכשתיבת דו-שיח נסגרת בלחיצה על לחצן החזרה במערכת או בלחיצה מחוץ לתיבה, וכך לוודא שהמצב שלNavControllerתמיד מסונכרן עם המצב של Navigator. (I2ead9) הניווט כבר לא מחזיר
ConcurrentModificationExceptionכשמשתמשים במניפולציה של רשימתOnDestinationChangedListenersמתוך קריאה חוזרת שלonDestinationChanged. (Ib1707, b/188860458)הספרייה Safe Args לא קורסת יותר כשמנסים ליצור מאפייני כיוון ב-Kotlin. (Id2416, b/188564435)
השיטה setId ב-NavDestination מתויגת עכשיו בצורה נכונה באמצעות
@IdRes, ולכן היא מקבלת רק מזהי משאבים. (I69b80)הפרמטר int של
findNodeהוא עכשיוresIdבמקוםresid. (I7711d)
עדכון תלות
- הספרייה Safe-Args תלויה עכשיו בפלאגין של Android Gradle 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)
Multiple back stacks
ה-NavController אחראי לניהול מקבץ הפעילויות הקודמות (back stack) של היעדים, להוספת יעדים למקבץ הפעילויות הקודמות (back stack) כשמבצעים navigate() אליהם ולהסרתם כשמפעילים את popBackStack() או את הכפתור "הקודם" של המערכת. ההרחבה של המחלקה הקיימת NavOptions והשילוב שלה ברשומות <action> ב-XML של תרשים הניווט מאפשרים לשמור ולשחזר את מקבץ הפעילויות הקודמות (back stack). (b/80029773)
כחלק מהשינוי הזה, השיטות NavigationUI של onNavDestinationSelected(), BottomNavigationView.setupWithNavController() ו-NavigationView.setupWithNavController() שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוצאו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה מחסניות חזרה. (Ie07ca)
ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:
ב-XML של הניווט, הרכיב
<action>יכול עכשיו להשתמש במאפיינים הבוליאנייםapp:popUpToSaveStateו-app:restoreStateכדי לשמור את המצב של כל היעדים שהוצגו באמצעותapp:popUpToולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />ב-
navOptionsKotlin DSL, אפשר להוסיף את המאפיין הבוליאניrestoreStateואת המאפיין הבוליאניsaveStateב-popUpTobuilder:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }כשיוצרים אובייקט
NavOptionsבאופן ידני באמצעותNavOptions.Builder, אפשר להשתמש ב-setRestoreState()וב-overload החדש כדיsetPopUpTo()שדורש פרמטר נוסף שלsaveState.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);עכשיו אפשר לכלול פרמטר
saveStateנוסף בקריאות פרוגרמטיות אלpopBackStack().
בכל המקרים, NavController ישמור וישחזר את המצב של כל NavBackStackEntry, כולל מופעים של ViewModel שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator עודכנו כדי לאפשר לכל Navigator לתמוך בשמירה ובשחזור של המצב שלו.
ה-ComposeNavigator שמשמש ליעדי composable ב-Navigation Compose, וגם ה-FragmentNavigator וה-DynamicFragmentNavigator שמשמשים ליעדי <fragment> ב-Navigation עם Fragments, עודכנו כך שישתמשו בממשקי ה-API החדשים של Navigator ויאפשרו שמירה ושחזור של מצב.
מסלולי ניווט
מסלול הוא String שמזהה יעד באופן ייחודי. בעבר, נעשה שימוש במושג הזה רק ב-Navigation Compose, אבל עכשיו הוא הפך לחלק מממשקי ה-API הבסיסיים של Navigation. האפשרות הזו מספקת חלופה לשימוש במזהי מספרים שלמים כשיוצרים את הגרף באמצעות Navigation Kotlin DSL. (b/172823546)
כל ממשקי ה-API שבעבר קיבלו רק מזהה, כוללים עכשיו עומס יתר שמקבל נתיב String. הם כוללים את navigate(), popBackStack(), popUpTo() ו-getBackStackEntry().
היו לכך השלכות על ה-API:
- המאפיין
popUpTokotlin ב-Kotlin DSL יצא משימוש, ועכשיו צריך להשתמש במאפייןpopUpToId. (I59c73, b/172823546) - הוצאנו משימוש את ממשק ה-API
getStartDestination(), ועכשיו אנחנו ממליצים להשתמש ב-getStartDestinationId(). (I0887f, b/172823546)
למפתחים שמשדרגים מגרסאות קודמות של Navigation Compose לגרסה 2.4.0-alpha01 של Navigation Compose, המשמעות היא שהייבוא הבא של שיטות הרחבה כבר לא נחוץ וצריך להסיר אותו:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
הארגומנט KEY_ROUTE הוחלף בנכס route ב-NavDestination, כך שאפשר לקרוא ישירות ל-navBackStackEntry.destination.route.
שינויים ב-API
- כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר מחלקות כ-nullable באמצעות ג'נריקס (כמו מחלקות משנה של
NavType). כל פונקציות ההרחבה של Kotlin שהיו חלק מפריטי ה--ktxהועברו לפריטי ה-Artifact הראשיים שלהן. פריטי האומנות-ktxימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. (b/184292145) -
NavDeepLinkBuilderתומך עכשיו בהוספה של כמה יעדים שונים למקבץ פעילויות קודמות (back stack) שנוצר. (I3ee0d, b/147913689) - הוספת פונקציות factory ל-
DynamicNavHostFragment(Icd515, b/175222619) - המזהה הייחודי של
NavBackStackEntryמוצג עכשיו כחלק מה-API הציבורי שלו. (Ie033a) - השדות
nameו-argumentופונקציות הפירוק שלNamedNavArgumentהם עכשיו ציבוריים. (#174, b/181320559) - הוספנו תוסף חדש
NavBackStackEntry#provideToCompositionLocalsשמספק אתNavBackStackEntryלמשתנים המקומיים הרלוונטיים של הקומפוזיציה. (#175, b/187229439)
Safe Args
הספרייה Safe Args יוצרת עכשיו שיטה
fromSavedStateHandle()לכל מחלקהNavArgs. (מס' 122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }עדכנו את Safe Args כך שיסתמך על KotlinPoet
1.8.0. (#172, b/183990444)
שינויים בהתנהגות
- הניווט תלוי עכשיו במחזור החיים
2.3.1, ועכשיו מסומניםsetGraph(),popBackStack(),navigateUp()ו-navigate(), השיטות שמעדכנות אתNavBackStackEntryLifecycle, בתור@MainThread, בהתאם לאכיפה של השרשור הראשי שהוצגה במחזור החיים2.3.0. (b/171125856) - ניתוח של ארגומנטים מסוג Enum מקישורי עומק הוא עכשיו לא תלוי באותיות רישיות, כך שקישור עומק כמו
http://www.example.com/redיכול להתאים לקישור עומקwww.example.com/{color}גם אם ל-Enum יש את הערךRED. (מס' 152, b/135857840)
תאימות של Compose
-
androidx.navigation:navigation-compose:2.4.0-alpha01תואם רק ל-Compose מגרסה1.0.0-beta07ואילך.
תיקוני באגים
- תוקנה בעיה שבה מצייני מיקום של ארגומנטים מסוג trailing קיבלו עדיפות על פני קישורי עומק עם סיומת תואמת מדויקת. (מס' 153, b/184072811)
-
NavHostFragmentתומך עכשיו ב-Navigators מותאמים אישית שמשתמשים באותו@Navigator.Name("dialog")כמו ברירת המחדלDialogFragmentNavigator. (Ib1c2c, b/175979140) - שופרה ההתנהגות של
NavigatorProvider#addNavigatorכדי לוודא שקריאה חוזרת לאותו מופע לא תגרום לבעיות. (מס' 176, b/187443146)
פריטי תוכן שהוספת
- תודה ל-simonschiller על הוספת תמיכה ב-Safe Args, שיוצרת שיטה
fromSavedStateHandle()לכל מחלקהNavArgs. (מס' 122, b/136967621) - תודה ל-Bradleycorn על כך שדאג שניתן יהיה לנתח ארגומנטים של Enum מקישורי עומק בלי להתחשב באותיות רישיות. (מס' 152, b/135857840)
- תודה ל-osipxd על תיקון בעיה שבה 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)
Navigation Compose גרסה 1.0.0
גרסה 1.0.0-alpha10
7 באפריל 2021
androidx.navigation:navigation-compose:1.0.0-alpha10 מופץ. גרסה 1.0.0-alpha10 מכילה את השמירות האלה.
שינויים ב-API
-
NavHostמקבל עכשיוModifier, שמועבר לקונטיינר הניתן להרכבה שעוטף את הרכיבים הניתנים להרכבה של היעד. (I85aca, b/175125483)
תיקוני באגים
-
NavHostפועל עכשיו גם אם לא נמצאOnBackPressedDispatcherOwner, כמו במקרה של תצוגה מקדימה שלNavHost. (I7d8b4) - Navigation Compose תלוי עכשיו ב-Navigation
2.3.5, וזה פותר בעיה שהתרחשה כשמשתמשים ב-BackHandlerבתוך יעדNavHost. (I7e63b, b/182284739)
גרסה 1.0.0-alpha09
10 במרץ 2021
androidx.navigation:navigation-compose:1.0.0-alpha09 מופץ. גרסה 1.0.0-alpha09 מכילה את השמירות האלה.
שינויים ב-API
-
LocalViewModelStoreOwner.currentמחזירה עכשיוViewModelStoreOwnerשניתן להגדיר כ-nullable, כדי לקבוע בצורה טובה יותר אםViewModelStoreOwnerזמין בהרכב הנוכחי. ממשקי API שנדרש בשבילםViewModelStoreOwner, כמוviewModel()ו-NavHost, עדיין יחזירו חריגה אם לא הוגדרViewModelStoreOwner. (Idf39a)
תיקוני באגים
- Navigation Compose תלוי עכשיו ב-Navigation 2.3.4 שכולל את התיקון לניסיון להגדיר את אותו אובייקט ViewModelStore אחרי שהגרף הוגדר. (I65c24, b/177825470)
גרסה 1.0.0-alpha08
24 בפברואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha08 מופץ. גרסה 1.0.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
-
NavHostממלאת עכשיו אתLocalSavedStateRegistryOwnerCompositionLocal ב-NavBackStackEntryשל היעד הזה, וכך מוודאת שכל מצב שנשמר ישירות ב-SavedStateRegistryיישמר וישוחזר לצד היעד. (I435d7, b/179469431)
גרסה 1.0.0-alpha07
10 בפברואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
עדכונים של יחסי תלות
- Navigation Compose מסתמך עכשיו על Lifecycle ViewModel Compose 1.0.0-alpha01 כדי לספק תמיכה ב-
viewModel()ליעדיcomposable. (I7a374) -
NavHostמשתמש עכשיו ב-LocalOnBackPressedDispatcherOwnerהחדש מ-Activity-Compose 1.3.0-alpha01 כדי לקבל אתOnBackPressedDispatcherשמוגדר ב-NavController. (I65b12)
גרסה 1.0.0-alpha06
28 בינואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha06 מופץ. גרסה 1.0.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- נוספה method להרחבת
getBackStackEntry(route: String)ב-NavControllerשמחזירה אתNavBackStackEntryהמשויך. (If8931)
גרסה 1.0.0-alpha05
13 בינואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
העדכון תלוי ב-Compose 1.0.0-alpha10.
גרסה 1.0.0-alpha04
16 בדצמבר 2020
androidx.navigation:navigation-compose:1.0.0-alpha04 מופץ. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
- העדכון בוצע כדי להבטיח תאימות ל-Compose
1.0.0-alpha09.
גרסה 1.0.0-alpha03
2 בדצמבר 2020
androidx.navigation:navigation-compose:1.0.0-alpha03 מופץ. גרסה 1.0.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שבה
popBackStack()ו-navigateUp()לא פעלו אחרי שינוי בהגדרה או אחרי שהתהליך הסתיים והתחיל מחדש. (Icea47, b/173281473) - הניווט לגרף מקונן בתוך NavHost פועל עכשיו כמו שצריך. (I0948d, b/173647694)
גרסה 1.0.0-alpha02
11 בנובמבר 2020
androidx.navigation:navigation-compose:1.0.0-alpha02 מופץ. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- התכונה 'פיתוח נייטיב' לניווט תומכת עכשיו ב-NavOptions לשימוש בפעולות popUpTo ו-launchSingleTop (If96c3, b/171468994)
- נוספה פונקציית ניווט שמקבלת מסלול במקום מזהה, ומאפשרת ליצור גרפים מקוננים ב-DSL של Navigation Compose. (I1661d)
- הפרמטר startDestination מופיע עכשיו לפני הפרמטר route ברשימת הפרמטרים של NavHost (Ie620e)
- מעכשיו אפשר ליצור תרשים באמצעות המסלול כיעד התחלתי מחוץ לרכיב NavHost. (Iceb75)
גרסה 1.0.0-alpha01
28 באוקטובר 2020
android.navigation:navigation-compose:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
ארטיפקט navigation-compose מספק שילוב בין רכיב הניווט לבין Jetpack פיתוח נייטיב. היא משתמשת בפונקציות @Composable כיעדים באפליקציה.
הגרסה הראשונית הזו כוללת:
-
NavHostcomposable שמאפשר ליצור את גרף הניווט באמצעות Kotlin DSL. - הגדרת היקף של מחזור החיים,
ViewModelומצב שנשמר ברמת היעד. - שילוב אוטומטי עם כפתור 'הקודם' במערכת.
- תמיכה בהעברת ארגומנטים, בצירוף קישורי עומק ליעדים ובהחזרת תוצאה ליעדים קודמים.
- אפשר ליצור פונקציות עזר ספציפיות ב-
rememberNavController()וב-currentBackStackEntryAsState()כדי לאפשר העברת מצב וחיבור שלNavControllerלרכיבים שאפשר להשתמש בהם מחוץ ל-NavHost(כמו סרגל ניווט תחתון).
מידע נוסף זמין במדריך בנושא Compose Navigation.
גרסה 2.3.5
גרסה 2.3.5
7 באפריל 2021
androidx.navigation:navigation-*:2.3.5 מופץ. גרסה 2.3.5 מכילה את השמירות האלה.
תכונות חדשות
- כשמנווטים באמצעות
NavDeepLinkRequestאוUri, עכשיו אפשר לגשת אלUri, הפעולה וסוג ה-MIME ביעד שמתקבל על ידי קבלת הכוונה מארגומנטים באמצעותKEY_DEEP_LINK_INTENT, בדומה לפונקציונליות שכבר זמינה לקישור עמוק חיצוני. (I975c3, b/181521877)
תיקוני באגים
-
OnBackPressedCallbacksנוסף ל-dispatcher עםNavBackStackEntryבתור LifecycleOwner, ועכשיו הוא מיירט את הפעולה 'חזרה' בצורה תקינה אחרי שמחזור החיים של הפעילות הואSTOPPED, ואזSTARTED(Iff94f, b/182284739) - ניתוח הדומיין של קישור העומק לא תלוי יותר באותיות רישיות, כך שהמחרוזת
www.example.comתתאים גם למחרוזותwww.example.comוגם ל-www.Example.com. חשוב לזכור שבשמות של פרמטרים של שאילתות יש הבחנה בין אותיות רישיות לרגילות. (מס' 144, b/153829033) - תוקנה בעיה
NullPointerExceptionשיכולה להתרחש כשליעד יש כמה ארגומנטים שאי אפשר להגדיר כ-nullable, ואתם עוברים ליעד הזה תוך כדי החלפת קבוצת משנה של הארגומנטים האלה. (aosp/1644827)
עדכונים של יחסי תלות
- הפלאגין Navigation Safe Args Gradle תלוי עכשיו בפלאגין Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
External Contribution
- תודה
bentrengroveעל בקשת המיזוג שגורמת לניתוח של דומיין קישור עומק להיות לא תלוי באותיות רישיות. (מס' 144, b/153829033)
גרסה 2.3.4
גרסה 2.3.4
10 במרץ 2021
androidx.navigation:navigation-*:2.3.4 מופץ. גרסה 2.3.4 מכילה את השמירות האלה.
תכונות חדשות
- אפשר עכשיו לנתח ארגומנטים של
ReferenceTypeבצורה תקינה כשהם נשלחים כחלק מ-URI של קישור עמוק. הפונקציה תומכת גם בערך השלם הגולמי וגם בערכים הקסדצימליים עם הקידומת0x. (#127, b/179166693) - הפונקציה
android:defaultValueשל ארגומנט עםapp:argType="float"תומכת עכשיו בערכי ברירת מחדל של מספרים שלמים, כך שאפשר להשתמש ב-android:defaultValue="0"במקום ב-0.0. (#117, b/173766247)
תיקוני באגים
- תיקון התקדמות התקנה תקועה כשמשתמשים בתמיכה של Navigation בתכונות דינמיות. (Ib27a7, b/169636207)
- שיחה אל
setViewModelStoreאו אלsetLifecycleOwnerעם אותו אובייקט שכבר הוגדר תהיה עכשיו פעולה שלא מבצעת כלום (no-op) (Idf491, b/177825470) - הספרייה Safe-Args מוסיפה עכשיו הערות suppress לשיטות המתאימות כשמשתמשים ב-Java. (I8fbc5, b/179463137)
פריטי תוכן שהוספת
- תודה
JvmNameעל בקשת המיזוג. עכשיו אפשר לנתח כמו שצריך את הארגומנטים שלReferenceTypeכששולחים אותם כחלק ממזהה URI של קישור עמוק. (#127, b/179166693) - תודה
tatocasterעל בקשת המיזוג שמאפשרת ל-defaultValueעבור ארגומנט עםapp:argType=”float”לתמוך עכשיו בערכי ברירת מחדל של מספרים שלמים. (#117, b/173766247)
גרסה 2.3.3
גרסה 2.3.3
27 בינואר 2021
androidx.navigation:navigation-*:2.3.3 מופץ. גרסה 2.3.3 מכילה את השמירות האלה.
תיקוני באגים
- אין יותר קריסה כשפותחים חלון קופץ של
NavBackStackEntryלפני ש-Lifecycleשלו מועבר אלCREATED. (Ie3ba3) - תוקנה רגרסיה שנגרמה בגלל b/171364502, שבה ניווט לפעילות עם ערך משאב אנימציה של
0גרם ל-ResourceNotFoundException. (I7aedb, b/176819931)
גרסה 2.3.2
גרסה 2.3.2
2 בדצמבר 2020
androidx.navigation:navigation-*:2.3.2 מופץ. גרסה 2.3.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה רגרסיה ב-
NavigationUIשבה ניסיון להשתמש ביעד<activity>עםonNavDestinationSelectedנכשל בניסיון לנווט אל הפעילות. (I22e34, b/171364502) - תוקנה בעיה שבה לחיצה על
navigation-dynamic-features-fragmentהייתה גורמת למעבר ליעד שהותקן לאחרונה כמה פעמים. (aosp/1486056, b/169636207) - תוקנה הבעיה שבה ארגומנטים שמוגדרים כברירת מחדל לא נשלחו למופעים של
OnDestinationChangedListenerכשנעשה שימוש ב-launchSingleTop. (I2c5cb) - תוקנה בעיה שבה ניווט לתרשים ניווט מקונן לא יצר מופע חדש של התרשים במקבץ פעילויות קודמות (back stack). (Ifc831)
- תוקנה הבעיה שבה שימוש ב-
navigate()עםpopUpToשהסיר את היעד האחרון בתרשים ניווט לא גרם להרס מיידי של תרשים הניווט עצמו ולהסרה שלו ממקבץ הפעילויות הקודמות (back stack). (I910a3) - Navigation SafeArgs משתמש עכשיו ב-KotlinPoet גרסה 1.7.2, שמוסיפה תמיכה במצב ה-API המפורש של Kotlin. (I918b5)
-
NavHostFragment.findNavController(Fragment)בודק עכשיו גם את תצוגת העיצוב הבסיסית של DialogFragment, בנוסף לבדיקות הקיימות של היררכיית Fragment והיררכיית התצוגה של Fragment. כך תוכלו לבדוק קטעי דיאלוג שמשתמשים ב-Navigation עםFragmentScenarioו-Navigation.setViewNavController(). (I69e0d)
גרסה 2.3.1
גרסה 2.3.1
14 באוקטובר 2020
androidx.navigation:navigation-*:2.3.1 מופץ. גרסה 2.3.1 מכילה את השמירות האלה.
תכונות חדשות
- משאבי ברירת המחדל של Animator נוספו לממשק המשתמש של Navigation, ומומלץ להשתמש בהם במקום במשאבי ברירת המחדל של האנימציה. (b/167430145)
- NavOptions מחליף עכשיו את השיטות hashcode ו-equals (b/161586466)
- הניווט כולל עכשיו את היעד הנוכחי ב-IllegalArgumentException 'אין יעד עם מזהה', מה שאמור לשפר את חוויית ניפוי הבאגים של המפתחים. (b/168311416)
תיקוני באגים
- הפונקציה Safe Args לא תעטוף יותר את שורת ההחזרה, גם אם שם מחלקת הארגומנט שנוצר ארוך מ-100 תווים. (b/168584987)
שינויים בתלות
-
navigation-uiתלוי עכשיו ב-DrawerLayout 1.1.1, מה שמבטיח ש-NavigationUIיוכל לפתוח את חלונית ההזזה גם כשמשתמשים ב-LOCK_MODE_LOCKED_CLOSEDאו ב-LOCK_MODE_LOCKED_OPEN. (b/162253907) - Safe Args תלוי עכשיו ב-KotlinPoet 1.6.0 (aosp/1435911)
- התלות של Safe Args היא עכשיו ב-AGP 4.0.1 (aosp/1442337)
גרסה 2.3.0
גרסה 2.3.0
24 ביוני 2020
androidx.navigation:navigation-*:2.3.0 מופץ. גרסה 2.3.0 מכילה את השמירות האלה.
שינויים משמעותיים מאז גרסה 2.2.0
- שילוב של מודול תכונות: ארטיפקטים של
navigation-dynamic-features-runtimeושלnavigation-dynamic-features-fragmentמאפשרים לנווט ליעדים שמוגדרים במודולים של תכונות, ומטפלים אוטומטית בהתקנה של המודולים של התכונות לפי הצורך. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות. - בדיקת ניווט: ארטיפקט
navigation-testingמספקTestNavHostControllerשמאפשר להגדיר את היעד הנוכחי ולאמת את מקבץ הפעילויות הקודמות (back stack) אחרי פעולות ניווט. מידע נוסף מופיע במאמר בנושא בדיקת הניווט. - החזרת תוצאה: האובייקט
NavBackStackEntryשמשויך לכל יעד במקבץ הפעילויות הקודמות (back stack) של הניווט מאפשר עכשיו לגשת אלSavedStateHandleשמתאים לאחסון של כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במקבץ הפעילויות הקודמות (back stack). מידע נוסף זמין במאמר החזרת תוצאה ליעד הקודם. - תמיכה ב-
NavigationUIOpenable: כל השימושים ב-DrawerLayoutב-NavigationUIהוחלפו בממשק הכללי יותרOpenableשנוסף ב-CustomView1.1.0ומיושם על ידיDrawerLayoutב-DrawerLayout1.1.0. - תמיכה בפעולות ובסוגי MIME בקישורי עומק: הרחבנו את התמיכה בקישורי עומק כך שתכלול את
app:actionו-app:mimeTypeבנוסף ל-app:uriשהיה זמין קודם. NavControllerתומך עכשיו בניווט באמצעות כל שילוב של השדות האלה דרך המחלקה החדשהNavDeepLinkRequest. מידע נוסף מופיע במאמר בנושא ניווט באמצעות NavDeepLinkRequest.
בעיות מוכרות
- התמיכה בפעולות של קישורי עומק ובסוגי MIME עדיין לא זמינה ב-Manifest Merger. עד שהעבודה הזו תושלם, כל רכיבי
<intent-filter>שנוצרו מרכיב<nav-graph>במניפסט לא יכללו את סוג ה-MIME ברכיב<data>או את<action>המותאם אישית. צריך להוסיף באופן ידני<intent-filter>מתאים למניפסט.
גרסה 2.3.0-rc01
10 ביוני 2020
androidx.navigation:navigation-*:2.3.0-rc01 מופץ. גרסה 2.3.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שקרתה כשמחליפים מופע של יעד ללא ארגומנטים במופע אחר עם ארגומנטים באמצעות
singleTop.NullPointerException(b/158006669) - לכל
destination is unknownהחריגים שמוחזרים על ידיNavControllerיש עכשיו מידע על תוצאות ניפוי הבאגים נוסף, שיעזור לקבוע את המצב שלNavController. (b/157764916)
גרסה 2.3.0-beta01
20 במאי 2020
androidx.navigation:navigation-*:2.3.0-beta01 מופצים. גרסה 2.3.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה
LifecycleשלNavBackStackEntryלא עודכן כראוי אחרי שהתהליך הסתיים. (b/155218371) -
OnDestinationChangedListenerinstances שנרשמו לפני הקריאה ל-setGraph()נשלחות עכשיו כמו שצריך ליעד המשוחזר אחרי שהתהליך הסתיים. (b/155218371) - כשמשתמשים ב-
singleTop, הארגומנטים שלNavBackStackEntryמתעדכנים עכשיו בצורה נכונה, והארגומנטים המעודכנים נשלחים לכל המופעים שלOnDestinationChangeListener. (b/156545508)
עדכונים של יחסי תלות
- ארטיפקט
NavigationUIתלוי עכשיו ב-CustomView1.1.0-rc01וב-DrawerLayout1.1.0-rc01. (aosp/1309696)
גרסה 2.3.0-alpha06
29 באפריל 2020
androidx.navigation:navigation-*:2.3.0-alpha06 מופץ. (גרסה 2.3.0-alpha06 מכילה את השמירות האלה).
תכונות חדשות
- הוספנו תמיכה בקישורי עומק ב-
app:actionוב-app:mimeType, בנוסף ל-app:uriשהיה זמין קודם. ה-NavController תומך עכשיו בניווט באמצעות כל שילוב של השדות האלה דרך המחלקה החדשהNavDeepLinkRequest. (b/136573074, b/135334841)
שינויים ב-API
- הרחבנו מאוד את התמיכה ב-Kotlin DSL ליעדי ניווט דינמיים. (b/148969800)
תיקוני באגים
- תוקנה הבעיה שבה מערכת התעלמה מ-Intents של קישורי עומק כשנעשה שימוש ביעד התחלה מוטמע. (b/154532067)
גרסה 2.3.0-alpha05
15 באפריל 2020
androidx.navigation:navigation-*:2.3.0-alpha05 מופץ. גרסה 2.3.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- בגרפים דינמיים שכוללים שימוש ב-
<include-dynamic>, כבר לא צריך לציין אתapp:graphPackage, והמערכת תשתמש בברירת מחדל על ידי הוספת הסיומתmoduleNameל-applicationIdאחרי נקודה. אם אתם צריכים להתאים אישית אתgraphPackage, עכשיו יש תמיכה ב-placeholder של${applicationId}. (b/152696768) - Kotlin DSL של Navigation Graph חושף עכשיו
defaultArgumentsMapלפעולות, בדומה ליכולת להגדיר ערכי ברירת מחדל באלמנטים<action>בקובצי XML של Navigation. (b/150345605)
תיקוני באגים
- Navigation 2.2.2: תוקן באג
IllegalStateExceptionכשמבצעים קישור עומק ליעד ההתחלתי של הגרף כשקיימים כמה מופעים שלNavHostFragmentבפעילות. (b/147378752)
עדכונים של תלות
- הניווט תלוי עכשיו ב-Fragment
1.2.4. (aosp/1277325) - התכונה 'ניווט דינמי' תלויה עכשיו ב-Play Core
1.7.2. (aosp/1282257)
גרסה 2.3.0-alpha04
18 במרץ 2020
androidx.navigation:navigation-*:2.3.0-alpha04 מופץ. גרסה 2.3.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו תמיכה בפעילות של מודול תכונות ובמקטעי יעד ב-Navigation Kotlin DSL. (b/148969800)
שינויים ב-API
- המחלקות
DynamicExtrasכבר לא משתמשות בתבנית builder, ועכשיו אפשר ליצור אותן ישירות. (aosp/1253671) -
DynamicActivityNavigatorמקבל עכשיוContextב-constructor שלו במקוםActivity. (aosp/1250252)
תיקוני באגים
NavigationUIכבר לא מתעלם מתוויות ריקות (כלומר, יעד עםandroid:label=””) ועכשיו מגדיר את הכותרת בצורה נכונה למחרוזת ריקה. (b/148679860)
עדכונים של יחסי תלות
- הארטיפקטים של תכונות דינמיות לניווט מסתמכים עכשיו על Play Core
1.6.5. (b/149556401)
גרסה 2.3.0-alpha03
4 במרץ 2020
androidx.navigation:navigation-*:2.3.0-alpha03 מופץ. גרסה 2.3.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- במקום להסתמך על המחלקה הקונקרטית
DrawerLayout,AppBarConfigurationמשתמש עכשיו בממשקOpenableשהוצג ב-CustomView1.1.0-alpha02(ש-DrawerLayoutמיישם החל מ-DrawerLayout1.1.0-alpha04), וכך אפשר להשתמש בהטמעות מותאמות אישית שלOpenableעםNavigationUI. (b/129030452)
תיקוני באגים
- כללי
navigation-common-ktxProGuard שומרים עכשיו רק את המחלקותNavArgsשנעשה בהן שימוש, ולא את כל המופעיםNavArgs. (b/150213558)
שינויים בתלות
- התלות של Navigation ב-Core
1.2.0בוטלה, ועכשיו היא תלויה ב-Core1.1.0, כדי שלא יהיה צורך להעביר מפתחים לתלות חדשה יותר אם Navigation לא תלוי באף ממשק API חדש ב-Core1.2.0.
גרסה 2.3.0-alpha02
19 בפברואר 2020
androidx.navigation:navigation-*:2.3.0-alpha02 מופץ. גרסה 2.3.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- ה-
NavBackStackEntryמאפשר עכשיו גישה ל-SavedStateHandleשמתאים לאחסון כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במקבץ פעילויות קודמות (back stack). במאמר החזרת תוצאה מופיע תרחיש לדוגמה. (b/79672220)
שינויים ב-API
- נוספו שיטות נוחות של
getCurrentBackStackEntry()ו-getPreviousBackStackEntry()כדי להקל על אחזורNavBackStackEntryליעדים הנוכחיים והקודמים. (b/79672220)
תיקוני באגים
-
navigateUp()מעביר עכשיו את הארגומנטים של היעד הנוכחי ואתKEY_DEEP_LINK_INTENTליעד הקודם כשמפעילים את האפליקציה במצבור המשימות שלכם. (b/147456890)
שינויים בתלות
- הניווט תלוי עכשיו ב-Core
1.2.0.
גרסה 2.3.0-alpha01
5 בפברואר 2020
androidx.navigation:navigation-*:2.3.0-alpha01 מופץ. גרסה 2.3.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- ארטיפקט
navigation-testingהחדש מספק מחלקהTestNavHostController. מחלקה זו מספקת חלופה לשימוש ב-mockNavControllerכשבודקים ניווט, ומאפשרת להגדיר את היעד הנוכחי ולאמת את מקבץ הפעילויות הקודמות (back stack) אחרי פעולות ניווט. (b/140884273) - הספרייה החדשה
navigation-dynamic-features-fragment(והתלות הטרנזיטיבית שלה,navigation-dynamic-features-runtime) מאפשרת לכם לכלול יעדים או גרפים שלמים של ניווט (באמצעות<include-dynamic>) ממודולים של תכונות, וכך להתקין בצורה חלקה מודולים של תכונות לפי דרישה כשמנווטים ליעדים האלה. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות. (b/132170186)
תיקוני באגים
- מתוך Navigation
2.2.1: קישורי עומק ללא פרמטרים של שאילתה מתעלמים עכשיו מפרמטרים של שאילתה, במקום לצרף אותם לרכיבי{argument}בסוף או לא להתאים לקישור העומק. (b/147447512) - מתוך Navigation
2.2.1: Thenavigation-uiProGuard rules forDrawerArrowDrawablehave been updated to ensure thatandroid.enableJetifier=trueis not required. (b/147610424) - מתוך Navigation
2.2.1: למודולnavigation-common-ktxיש עכשיו שם חבילה ייחודי במניפסט, במקום לשתף את אותו שם חבילה במניפסט עםnavigation-runtime-ktx. (aosp/1141947)
עדכונים של תלות
- מתוך Navigation
2.2.1: הניווט2.2.1תלוי עכשיו ב-Lifecycle ViewModel SavedState2.2.0וב-Fragment1.2.1.
גרסה 2.2.2
גרסה 2.2.2
15 באפריל 2020
androidx.navigation:navigation-*:2.2.2 מופצים. גרסה 2.2.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג
IllegalStateExceptionשקשור לקישורי עומק ליעד ההתחלתי של הגרף כשיש כמה מופעים שלNavHostFragmentבפעילות. (b/147378752) NavigationUIכבר לא מתעלם מתוויות ריקות (כלומר, יעד עםandroid:label=””) ועכשיו מגדיר את הכותרת בצורה נכונה למחרוזת ריקה. הגרסה הזו פורסמה בעבר ב-Navigation 2.3.0-alpha04. (b/148679860)- כללי
navigation-common-ktxProGuard שומרים עכשיו רק את המחלקותNavArgsשנעשה בהן שימוש, ולא את כל המופעיםNavArgs. הגרסה הזו פורסמה בעבר ב-Navigation 2.3.0-alpha03. (b/150213558
עדכונים של תלות
- הניווט תלוי עכשיו ב-Fragment
1.2.4. (aosp/1277325)
גרסה 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.1תלוי עכשיו ב-Lifecycle ViewModel SavedState2.2.0וב-Fragment1.2.1.
גרסה 2.2.0
גרסה 2.2.0
22 בינואר 2020
androidx.navigation:navigation-*:2.2.0 מופץ. גרסה 2.2.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.1.0
- NavBackStackEntry: עכשיו אפשר לקרוא ל-
NavController.getBackStackEntry()ולהעביר את המזהה של יעד או של תרשים ניווט במקבץ הפעילויות הקודמות (back stack). הערך שמוחזרNavBackStackEntryמספקLifecycleOwnerמבוסס-ניווט,ViewModelStoreOwner(זהה לערך שמוחזר על ידיNavController.getViewModelStoreOwner()) ו-SavedStateRegistryOwner, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. - שילוב של Lifecycle ViewModel SavedState:
SavedStateViewModelFactoryהוא עכשיו פקטורי (factory) ברירת המחדל שמשמש כשמשתמשים ב-by navGraphViewModels()או ב-constructorViewModelProviderעם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כך שיתאימו לאנימציות המעבר המדורג המותאמות ב-Fragment1.2.0-rc04. (b/145769814)
גרסה 2.2.0-rc03
4 בדצמבר 2019
androidx.navigation:navigation-*:2.2.0-rc03 מופץ. גרסה 2.2.0-rc03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בניתוח של קישור עמוק כשמשתמשים בפרמטרים של שאילתה ובארגומנט כחלק האחרון של הנתיב, שגרמה לכך שלא ניתן היה לנתח יותר מתו אחד של הארגומנט של הנתיב הסופי. (b/144554689)
- תוקנה בעיה בניתוח של קישורי עומק שבה פרמטרים אופציונליים קיבלו את הערך
"@null"במקוםnull. (b/141613546) -
NavHostFragmentמשחזר עכשיו את הגרף בצורה נכונה אחרי שינוי בהגדרות, כשמשתמשים בו עםFragmentContainerView. (b/143752103)
שינויים בתלות
- הניווט תלוי עכשיו ב-Lifecycle
2.2.0-rc03, ב-Lifecycle ViewModel SavedState1.0.0-rc03, ב-Activity1.1.0-rc03וב-Fragment1.2.0-rc03במקומות המתאימים.
גרסה 2.2.0-rc02
7 בנובמבר 2019
androidx.navigation:navigation-*:2.2.0-rc02 מופץ. גרסה 2.2.0-rc02 מכילה את השמירות האלה.
שינויים בתלות
- הניווט תלוי עכשיו ב-androidx.lifecycle
2.2.0-rc02.
גרסה 2.2.0-rc01
23 באוקטובר 2019
הגרסה androidx.navigation:navigation-*:2.2.0-rc01 פורסמה ללא שינויים מאז 2.2.0-beta01. גרסה 2.2.0-rc01 מכילה את השמירות האלה.
גרסה 2.2.0-beta01
9 באוקטובר 2019
androidx.navigation:navigation-*:2.2.0-beta01 מופץ. גרסה 2.2.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
-
NavDestinationותת-המחלקות שלו מחליפים עכשיו אתtoString()כדי לספק מידע מועיל יותר במהלך ניפוי הבאגים. (b/141264986)
שינויים בהתנהגות
- המערכת מתעלמת עכשיו מפרמטרים נוספים של שאילתה כשמתאימה קישורי עומק, במקום לגרום לכך שההתאמה תיכשל. (b/141482822)
תיקוני באגים
- נפתרה בעיה שגרמה להתעלמות מארגומנטים בנתיב של קישור עומק אם צוינו גם פרמטרים של שאילתה. (b/141505755)
- הודעת השגיאה בתוסף
navArgs()Kotlin ב-Activityמשופרת עכשיו, אם אין תוספים. (b/141408999) - מחלקות Java שנוצרו על ידי Safe Args מכילות עכשיו ערכי ברירת מחדל.
Directions(b/141099045) - מחלקות Java שנוצרו על ידי Safe Args
Argsמכילות עכשיו ערכי ברירת מחדל. (b/140123727) - כשמשתמשים ב-
Toolbar,NavigationUIכבר לא מפעיל אנימציה לשינוי הטקסט כשעוברים בין שני יעדים ברמה העליונה. (b/140848160)
גרסה 2.2.0-alpha03
18 בספטמבר 2019
androidx.navigation:navigation-*:2.2.0-alpha03 מופץ. גרסה 2.2.0-alpha03 מכילה את השמירות האלה.
שינויים בהתנהגות
- חיוג אל
setViewModelStore()אחרי חיוג אלsetGraphמוביל עכשיו לIllegalStateException. ההגדרה הזו צריכה להיקבע תמיד על ידיNavHostכחלק מההגדרה הראשונית, כדי להבטיח שלכל המופעים שלNavBackStackEntryיהיה אחסון עקבי למופעים שלViewModel. (aosp/1111821)
תיקוני באגים
- תוקנה בעיה
ConcurrentModificationExceptionכשמשתמשים במכונותViewModelשמצורפות לכמה מכונותViewModelStoreשונות עם היקף של תרשים ניווט. (aosp/1112257)
גרסה 2.2.0-alpha02
5 בספטמבר 2019
androidx.navigation:navigation-*:2.2.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- קישורי עומק עם פרמטרים של שאילתה תומכים עכשיו בפרמטרים של שאילתה שסודרו מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שהם יכולים להיות null הם עכשיו אופציונליים כשמבצעים התאמה של קישורי עומק. (b/133273839)
- עכשיו אפשר להתקשר אל
NavController.getBackStackEntry()ולהעביר את המזהה של יעד או של גרף ניווט במקבץ הפעילויות הקודמות (back stack). הערך שמוחזר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()או ב-constructorViewModelProviderעםViewModelStoreOwnerשמוחזר על ידיNavController.getViewModelStoreOwner(). (b/135716331)
שינויים ב-API
- Navigation
2.1.0-rc01: הוסר ה-API getViewModelStore()שהוצא משימוש ב-NavController, שהוצג ב-2.1.0-alpha02. (aosp/1091021)
תיקוני באגים
NavHostFragmentעכשיו משתמש ב-FragmentContainerView, וכך פותר בעיות של אנימציה בסדר Z ושליחת שוליים של חלונות ל-Fragments. (b/137310379)
גרסה 2.1.0
גרסה 2.1.0
5 בספטמבר 2019
androidx.navigation:navigation-*:2.1.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים חשובים מאז גרסה 2.0.0
- הגדרת היקף של ViewModels לגרף ניווט: עכשיו אפשר ליצור ViewModels שההיקף שלהם מוגדר ברמת גרף הניווט באמצעות נציג המאפיינים
by navGraphViewModels()למשתמשי Kotlin שמשתמשים בספריות-ktx, או באמצעות ה-APIgetViewModelStoreOwner()שנוסף ל-NavController. מידע נוסף זמין במאמר בנושא שיתוף נתונים שקשורים לממשק המשתמש בין יעדים. - יעדים לתיבת דו-שיח: עכשיו אפשר ליצור
<dialog>יעדים שיוצג בהםDialogFragmentכשnavigateאליהם.NavHostFragmentתומך ביעדים של תיבות דו-שיח כברירת מחדל. מידע נוסף זמין במאמר יצירת יעד מ-DialogFragment. - ניווט באמצעות URI: עכשיו אפשר
navigateבאמצעותUri, שמשתמש ב<deepLink>שהוספתם ליעד כדי לנווט אליו. מידע נוסף מופיע במאמר בנושא ניווט באמצעות Uri. - NavHostController: ממשקי ה-API שמשמשים במיוחד ליצירת
NavHostבהתאמה אישית הועברו אלNavHostController, וכך אפשר להטמיע חיבור שלNavControllerאל המארחLifecycleOwner,OnBackPressedDispatcherו-ViewModelStore.
גרסה 2.1.0-rc01
7 באוגוסט 2019
androidx.navigation:navigation-*:2.1.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים ב-API
- הסרנו את ממשק ה-API
getViewModelStore()שהוצא משימוש ב-NavController, שהוצג בגרסה2.1.0-alpha02. (aosp/1091021)
גרסה 2.1.0-beta02
19 ביולי 2019
androidx.navigation:*:2.1.0-beta02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- הוסרה תלות לא מכוונת ב-jacoco שהתווספה בגרסה
2.1.0-beta01. (b/137782950)
גרסה 2.1.0-beta01
17 ביולי 2019
androidx.navigation:*:2.1.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- כשמשתמשים ב-
NavigationUIעםToolbarאוCollapsingToolbarLayout, עכשיו יש אנימציה להסרה של הלחצן 'למעלה' ב-NavigationUI.setupWithNavController()(b/131403621)
תיקוני באגים
- תוקנה בעיה בתזמון כשמשתמשים בכמה NavHostFragments עם אותו מאגר באמצעות
findNavController(). (b/136021571)
גרסה 2.1.0-alpha06
2 ביולי 2019
androidx.navigation:*:2.1.0-alpha06 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- המאפיין
app:navGraphשבו נעשה שימוש ב-NavHostFragment הועבר עכשיו אל ארטיפקטnavigation-runtime. אם מוסיפים רכיבי ניווט מותאמים אישית באמצעות XML, צריך להשתמש במאפיין הזה כדי לשלב אותם בחלונית Host (מארח) בכלי לעריכת ניווט. (b/133880955)
שינויים ב-API
- הוצאנו משימוש את
getViewModelStore()API ב-NavController, ועברנו לשימוש בשיטה החדשהgetViewModelStoreOwner()שמחזירהViewModelStoreOwner. (aosp/987010) - ההטמעה של יעדים בחלונות צפים, כמו יעדי
<dialog>, עברה הכללה לממשק סמן,FloatingWindow, שכל יעדי<dialog>מטמיעים עכשיו. השיטות של NavigationUI לאינטראקציה עם סרגל האפליקציות העליון מתעלמות עכשיו מיעדים שלFloatingWindow. (b/133600763)
שינויים בהתנהגות
- הניווט שומר עכשיו את המצב שלו בסנכרון עם מה שמוצג במסך כשמשתמשים ביעד
<dialog>. כתוצאה מכך, עכשיו כשמנווטים ליעד שאינו תיבת דו-שיח או פעילות, כמו יעד<fragment>, מופיע באופן אוטומטי חלון קופץ עם היעד.<dialog>(b/134089818)
תיקוני באגים
- הניווט מדכא עכשיו את האנימציה שמתרחשת כשיוצרים מחדש את הפעילות בזמן טיפול בקישור עומק, וכך נמנעת הבהוב חזותי. (b/130362979)
- תוקן באג שגרם לכך שמקבץ פעילויות קודמות (back stack) של הניווט לא היה מסונכרן כשמבטלים את ההוספה של מקטע (fragment) בתור המקטע (fragment) הראשוני. (b/133832218)
גרסה 2.1.0-alpha05
5 ביוני 2019
androidx.navigation:*:2.1.0-alpha05 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים ב-API
- ממשקי API שקשורים למארח ב-
NavControllerשונו והועברו למחלקה משנית חדשה שלNavController, NavHostController. (aosp/966091) - השיטה
NavControllersetHostOnBackPressedDispatcherOwner()הוחלפה בשיטהsetOnBackPressedDispatcher()שלNavHostController, ועכשיו צריך להפעיל את השיטהsetLifecycleOwner()לפני שמפעילים אותה. (aosp/965409) -
NavHostControllerכולל עכשיו שיטהenableOnBackPressed(boolean)שמחליפה את המחלקהNavHostOnBackPressedManagerשהוחזרה קודם על ידיsetHostOnBackPressedDispatcherOwner(). (aosp/966091)
תיקוני באגים
- תוקנה בעיה שבה מקבץ פעילויות קודמות (back stack) לא היה נכון אחרי ניווט באמצעות 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 הואצו מ-400ms ל-220ms כדי להתאים למהירות האנימציה שמוגדרת כברירת מחדל בפעילויות ובקטעים. b/130055522
שינויים ב-API
- השיטה
createFragmentNavigator()שלNavHostFragmentהוצאה משימוש, והפונקציונליות שלה הועברה לשיטה החדשהonCreateNavController()כדי להבהיר שזו נקודת הכניסה הנכונה להוספת רכיבי ניווט בהתאמה אישית כשיוצרים מחלקת משנה שלNavHostFragment. b/122802849 - נוספה שיטת
hasDeepLink()ל-NavDestinationכדי לאפשר לכם לבדוק אם אפשר לטפל ב-Uriנתון ביעד הזה, או במקרה שלNavGraph, בכל יעד בתרשים הניווט. b/117437718
תיקוני באגים
- ארגומנטים שמוגדרים כברירת מחדל מועברים עכשיו בצורה תקינה למופעים של
OnDestinationChangedListener. b/130630686 -
NavHostFragmentמיירט עכשיו אירועי חזרה של המערכת באמצעותOnBackPressedDispatcher, וכך פותר בעיה שמתרחשת כשמבצעים ניווט מותנה בשיטות מחזור החיים של Fragment כשחוזרים אל Fragment. b/111598096 - ב-Safe Args,
android:defaultValue=”@null”עםapp:argTypeלא מוגדר מוסק עכשיו בצורה נכונה כארגומנטstring. b/129629192
גרסה 2.1.0-alpha02
3 באפריל 2019
androidx.navigation:*:2.1.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- מעכשיו אפשר ליצור ViewModels בהיקף של גרף ניווט באמצעות נציג המאפיין
by navGraphViewModels()למשתמשי Kotlin או באמצעות ה-APIgetViewModelStore()שנוסף ל-NavController. b/111614463
שינויים ב-API
- עכשיו אפשר להוסיף
app:targetPackageליעד<activity>כדי להגביל את שם חבילת ההתאמה. הוא תומך ב-app:targetPackage="${applicationId}"כדי להגביל את החבילה למזהה האפליקציה שלכם. b/110975456
תיקוני באגים
- ה-
android:nameליעדי<activity>כבר לא מנותח ל-Class בזמן הניפוח, וכך נמנעות שגיאות ClassNotFoundException כשמשתמשים בתכונות דינמיות. b/124538597
גרסה 2.1.0-alpha01
19 במרץ 2019
זו גרסת האלפא הראשונה של הניווט 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)כחלופה ליצירת click listener עם מזהה משאב וחבילה. b/127631752 - המאפיין
FragmentNavigator.instantiateFragmentהוצא משימוש. ההטמעה של ברירת המחדל משתמשת עכשיו ב-FragmentFactoryכדי ליצור מופעים של Fragments. b/119054429
תיקוני באגים
- הניווט לא שולח יותר ערך null
Bundleכשיש ארגומנטים שמצורפים ליעד, וכך נפתרה בעיה בשימוש ב-android:defaultValue="@null". b/128531879 - Safe Args תלוי עכשיו ב-KotlinPoet 1.1.0, ומתקן בעיה בשמות חבילות ארוכים במיוחד. b/123654948
גרסה 2.0.0
גרסה 2.0.0
14 במרץ 2019
הניווט 2.0.0 יוצא ללא שינויים מהגרסה 2.0.0-rc02.
גרסה 2.0.0-rc02
6 במרץ 2019
Navigation 2.0.0-rc02 מספקת ארטיפקטים חדשים עם מזהה הקבוצה androidx.navigation
ומשנה את התלות שלה למקבילות של AndroidX.
ההתנהגות של גרסה 2.0.0-rc02 זהה להתנהגות של Navigation 1.0.0-rc02, ולא אמורים להיות שינויים בקוד שנדרשים כדי לעדכן מגרסה 1.0.0-rc02, מלבד עדכון התלות כך שתתאים לתלויות החדשות.
כדי להשתמש בגרסאות 2.X של Navigation, צריך להעביר את הפרויקט ל-AndroidX. Navigation 1.0 stable תהיה הגרסה האחרונה שמשתמשת בתלות של Support Library. כל הפיתוחים העתידיים מעבר לגרסה 1.0 יתבססו על AndroidX ועל גרסה 2.0 stable.
תלויות ב-Pre-AndroidX
בגרסאות של Navigation לפני AndroidX, צריך לכלול את יחסי התלות הבאים:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
בקטע Safe args, מוסיפים את נתיב המחלקה הבא בקובץ build.gradle ברמה העליונה
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
גרסה 1.0.0
גרסה 1.0.0
14 במרץ 2019
הניווט 1.0.0 יוצא ללא שינויים מהגרסה 1.0.0-rc02.
גרסה 1.0.0-rc02
26 בפברואר 2019
זו הגרסה השנייה המועמדת להפצה של גרסה 1.0.0 היציבה של Navigation. הגרסה הזו כוללת מספר תיקוני באגים.
תיקוני באגים
- תוקנה בעיה שבה המערכת התעלמה מהתג
popBackStack()אם לגרף הבסיסי לא היה מזהה b/126251695 -
navigateUp()עכשיו יש טיפול נכון בניווט חזרה למשימה של האפליקציה כשמתבצעת קריאה אחרי טיפול בקישור עומק ללאFLAG_ACTIVITY_NEW_TASKb/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בצורה נכונה כשמוציאים את היעד האחרון ממקבץ הפעילויות הקודמות (back stack), וכך מתקנים רגרסיה שהוצגה בגרסה1.0.0-beta01. b/123933201 - הניווט מגדיר עכשיו את
ClassLoaderבצורה נכונה במהלך השחזור של מצב מופע שנשמר, וכך נמנעות בעיות בשימוש במחלקות מותאמות אישית במצב שנשמר שלNavigatorאו בארגומנטים שנשלחים אלNavDestination. b/123893858 - הכיתות NavArgs שנוצרו על ידי Safe Args לא גורמות יותר לקריסה כשמשחזרים ארגומנט
Parcelable[]ממצב שמור של מופע. b/123963545 - Safe Args מנקה עכשיו בצורה תקינה מחלקות Kotlin מיותרות שנוצרו. b/124120883
גרסה 1.0.0-beta01
4 בפברואר 2019
זו גרסת הבטא הראשונה של Navigation. מעכשיו, ה-API של Navigation צפוי להישאר יציב עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים ושינויים בהתנהגות.
שינויים בהתנהגות
- הניווט מבטיח עכשיו שערכי ברירת המחדל של הארגומנטים יטופלו באופן זהה בזמן הריצה ובאמצעות Safe Args. כתוצאה מכך, רק לארגומנטים עם
app:argType="reference"יכול להיות ערך ברירת מחדל שמפנה למשאב אחר (לדוגמה,@color/colorPrimary). ניסיון להשתמש בערך ברירת מחדל של הפניה עםapp:argTypeשונה יוביל לחריגה בניתוח של ה-XML של הניווט. b/123551990 - Safe Args תלוי עכשיו בפלאגין של Android Gradle 3.3.0 aosp/888413
- Safe Args תלוי עכשיו ב-Kotlin 1.3.20 aosp/888414
תיקוני באגים
- מעכשיו אפשר להשתמש ב-Safe Args במודולים של ספריות ותכונות בכל הגרסאות של פלאגין של Android Gradle. b/121304903
- תוקנה רגרסיה שגרמה להוצאה של כל העותקים של יעד מסוים מראש מקבץ פעילויות קודמות (back stack), במקום רק יעד אחד בכל פעם, במהלך פעולה אחת של
popBackStack().b/123552990 - תוקנה בעיה שבה המצב של
FragmentNavigatorלא היה מסונכרן עם המצב שלNavController, מה שגרם ל-IllegalStateExceptionכשניסו לשחזר את מקבץ הפעילויות הקודמות (back stack).b/123803044 - תוקנה בעיה שבה החץ אחורה
NavigationUIלא הופיע כשנעשה שימוש ב-ProGuard עם טשטוש. b/123449431 - הקוד שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בשימוש ב-
app:argTypeשמפנה למחלקה פנימית סטטית בפורמט.OuterClass$InnerClass. b/123736741 - קוד ה-Java שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בפעולות גלובליות וביעדים מוטמעים עמוק. b/123347762
גרסה 1.0.0-alpha11
23 בינואר 2019
זוהי גרסת תיקון חם של 1.0.0-alpha10 שמתקנת בעיה ב-Safe Args.
תיקוני באגים
- תוקנה בעיה שבה לא ניתן היה לייבא את המחלקה Directions שמשויכת לפעולות גלובליות באמצעות Safe Args. b/123307342
גרסה 1.0.0-alpha10
23 בינואר 2019
בעיות מוכרות
- הייבוא של המחלקה Directions שמשויכת לפעולות כלליות נכשל ב-Safe Args. b/123307342
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים שעלולים לגרום לכשל שבהמשך.
תכונות חדשות
- משתמשי Kotlin יכולים עכשיו להשתמש בנציג המאפיין
by navArgs()כדי לקבל באופן עצלני הפניה למחלקתNavArgsשנוצרה על ידי Safe Args ב-Activityאו ב-Fragment. b/122603367 - הספרייה Safe Args מאפשרת עכשיו ליצור קוד Kotlin על ידי החלת התוסף
androidx.navigation.safeargs.kotlin. קוד Kotlin נוצר במיוחד למודולים של Kotlin בלבד, באמצעות ארגומנטים שמוגדרים כברירת מחדל ומחלקות שלא ניתן לשנות, במקום תבנית ה-builder שעדיין זמינה דרך הפלאגין הקודםandroidx.navigation.safeargs. b/110263087
שינויים בהתנהגות
- קישורי עומק תואמים מוטים עכשיו לקישור העומק עם הכי הרבה ארגומנטים תואמים. b/118393029
- מעכשיו, כשמתקשרים אל
setGraph()במכשירNavController, מחסנית החזרה מאופסת. b/111450672 - קישורי עומק לא ידועים לא גורמים יותר לשגיאה
IllegalStateException, אלא מתעלמים מהם. כך נפתרות בעיות שקשורות לקישורי עומק מוטמעים או מרובים מסוגNavHostFragment. b/121340440
שינויי תוכנה שעלולים לגרום לכשלים
- השיטה
NavOptions.applyPopAnimationsToPendingTransition()להחלת אנימציות קופצות על פעילות הועברה אלActivityNavigator. b/122413117 - הספרייה Safe Args לא משכפלת יותר מחלקות זהות לפעולות ללא ארגומנטים. סוג ההחזרה של שיטות ללא ארגומנטים במחלקות NavDirections שנוצרו הוא עכשיו
NavDirections. b/123233147 - למחלקות Directions שנוצרו על ידי Safe Args אין יותר בנאי ציבורי – צריך ליצור אינטראקציה רק עם השיטות הסטטיות שנוצרו. b/123031660
- למחלקות
NavDirectionsשנוצרו על ידי Safe Args אין יותר בנאי ציבורי – הן צריכות להיווצר רק באמצעות השיטות הסטטיות במחלקות Directions שנוצרו. b/122963206 - הערך
Bundleשמוחזר מהערךNavDirections'getArguments()מסומן עכשיו כ-@NonNullולא כ-@Nullable. b/123243957
תיקוני באגים
-
NavDeepLinkBuilderמטפלת עכשיו בצורה נכונה במספר בקשות בו-זמניותPendingIntentלאותו יעד, באמצעות הארגומנטים שמעבירים לה כדי לקבוע את הייחודיות. b/120042732 -
NavControllerמטפל עכשיו בצורה נכונה בפעולותpopBackStack()כשמשתמשים ב-NavHostFragmentמוטמע או ב-Fragments אחרים של צאצא עם מקבץ פעילויות קודמות (back stack). b/122770335 -
NavigationUInow correctly sets the content description of the Up button. b/120395362 - מחלקות Directions שנוצרו על ידי Safe Args מטפלות עכשיו בצורה נכונה בפעולות גלובליות עם אותו מזהה כמו פעולה ביעד. b/122962504
- מחלקות
NavDirectionsשנוצרו על ידי Safe Args כוללות עכשיו ערכים שווים נכון כש-hashCode()מחזירה true. b/123043662equals() FragmentNavigatorעכשיו מוצגת הודעת שגיאה טובה יותר אם מנסים לבצע התאמה אישית שלFragmentTransactionsב-NavHostFragment'sFragmentManager. תמיד צריך להשתמש ב-getChildFragmentManager(). b/112927148
גרסה 1.0.0-alpha09
18 בדצמבר 2018
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף זמין בקטע שינויים שעלולים לגרום לכשל שבהמשך.
החלטנו שלא להמשיך בפיתוח של ארטיפקט android.arch.navigation:navigation-testing. התכונה הזו הוכחה כמועילה לבדיקות פנימיות של NavController, אבל אנחנו ממליצים מאוד להשתמש בשיטות בדיקה חלופיות, כמו יצירת מוקאפ של מופע NavController כדי לוודא שמתבצעות הקריאות הנכונות ל-navigate(). הגישה הזו מוסברת בפירוט בהרצאה בנושא Single Activity בכנס AndroidDevSummit 2018, ואנחנו עובדים על תיעוד נוסף שמתמקד בבדיקות באמצעות Navigation.
תכונות חדשות
-
MenuItems עםmenuCategory="secondary"לא יקפיצו יותר את ה-back stack כשמשתמשים בהם עם שיטותNavigationUI. b/120104424 - מעכשיו אפשר להגדיר ב-
AppBarConfigurationמופעOnNavigateUpListenerשל חזרה למצב הקודם, שיופעל כש-navController.navigateUp()יחזירfalse. b/79993862 b/120690961
שינויי תוכנה שעלולים לגרום לכשלים
- כשמשתמשים ב-
<argument>עםargType="reference", מערכת הניווט כבר לא מנתחת את ההפניה, אלא מספקת את מזהה המשאב הגולמי עצמו. b/111736515 onNavDestinationSelected()עכשיו, כברירת מחדל, הפעולה מחזירה אתכם ליעד ההתחלתי של תרשים הניווט, כך שהיא עקבית עם השיטות שלsetup. כדי למנוע את הצגת מקבץ הפעילויות הקודמות (back stack), צריך להוסיף אתmenuCategory="secondary"אלMenuItem. aosp/852869- ה-methods של מחלקות
fromBundle()שנוצרוArgsמקבלות עכשיוBundleשאינו null במקוםBundleשניתן להיות null aosp/845616
תיקוני באגים
- ארגומנטים מנותחים עכשיו בצורה תקינה מקישורי עומק כערך הנכון
argTypeבמקום תמיד כמחרוזות b/110273284 - הניווט מייצא עכשיו את המשאבים הציבוריים שלו בצורה נכונה b/121059552
- Safe Args תואם עכשיו ל-פלאגין של Android Gradle 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שונה ל-OnDestinationChangedListenerb/118670572 -
OnDestinationChangedListenerמעבירה עכשיו גם אתBundleשל הארגומנטים aosp/837142 - התכונות
app:clearTaskו-app:launchDocumentוהשיטות שמשויכות אליהן הוסרו. אפשר להשתמש ב-app:popUpToעם הרמה הבסיסית (root) של הגרף כדי להסיר את כל היעדים ממקבץ הפעילויות הקודמות (back stack). b/119628354 -
ActivityNavigator.Extrasמשתמש עכשיו בתבניתBuilderומוסיף את האפשרות להגדיר כל דגלIntent.FLAG_ACTIVITY_aosp/828140 - השם של
NavController.onHandleDeepLinkשונה ל-handleDeepLinkaosp/836063 - הרבה שיעורים ושיטות שלא מיועדים ליצירת מחלקות משנה, כמו
NavOptions,NavInflater,NavDeepLinkBuilderו-AppBarConfiguration, הפכו ל-finalaosp/835681 - השיטה
NavHostFragment.setGraph()שהוצאה משימוש הוסרה aosp/835684 - הוצאנו משימוש את השיטה
NavigationUI.navigateUp(DrawerLayout, NavController). aosp/835684 - העברנו את יצירת הפרגמנטים אל
FragmentNavigator, כדי שיהיה קל יותר להקצות את יצירת הפרגמנטים ל-FragmentFactory. b/119054429 - ה-constructor של
NavGraphNavigatorלא מקבל יותרContextaosp/835340 - NavigatorProvider הוא עכשיו מחלקה ולא ממשק. הפונקציה
NavigatorProviderשמוחזרת על ידיgetNavigatorProvider()לא השתנתה. aosp/830660 NavDestination.navigate()הוסר. במקום זאת, מתקשרים אלnavigate()ב-Navigator. aosp/830663- בוצע ארגון הקוד מחדש (Refactoring) משמעותי של
Navigator, כך שלא צריך יותר להשתמש ב-OnNavigatorNavigatedListener. במקום זאת, הפונקציהnavigateמחזירה אתNavDestinationשאליו בוצעה הניווט. - אי אפשר יותר לשלוח מופעים של
Navigatorלאירועים קופצים ב-NavController. מומלץ להשתמש ב-OnBackPressedCallbackכדי ליירט לחיצות על הכפתור "הקודם" ולהתקשר אלnavController.popBackStack(). aosp/833716
תיקוני באגים
-
popUpToפועל עכשיו באופן עקבי כשהיעד הוא רכיב<navigation>b/116831650 - תוקנו מספר באגים שגרמו לשגיאה
IllegalArgumentExceptionבשימוש בתרשימים מקוננים b/118713731 b/113611083 b/113346925 b/113305559 - המאפיין
dataPatternשל יעדי<activity>יאכלס עכשיו ארגומנטים מארגומנטים שאינם מחרוזות על ידי קריאה ל-toString()b/120161365
Safe Args
- Safe Args תומך באובייקטים שניתנים לסריאליזציה, כולל ערכי Enum. אפשר להגדיר ערך ברירת מחדל לטיפוסים בני מנייה (enum) באמצעות ליטרל enum ללא שם המחלקה (לדוגמה,
app:defaultValue="READ") b/111316353 - Safe Args תומך במערכים מכל הסוגים הנתמכים b/111487504
- הספרייה Safe Args מתעלמת עכשיו מתיקיות משנה של ספריות משאבים b/117893516
- Safe Args מוסיף הערות
@Overrideבמקומות המתאימים b/117145301
גרסה 1.0.0-alpha07
29 באוקטובר 2018
תכונות חדשות
- מחלקת AppBarConfiguration חדשה מאפשרת לכם להתאים אישית את היעדים שמוגדרים כיעדים ברמה העליונה. פרטים נוספים זמינים בתיעוד המעודכן. b/117333663
- עכשיו אפשר להעביר ארגומנטים ליעד ההתחלה של הגרף b/110300470
- קישורי עומק תומכים עכשיו בסכימות מותאמות אישית עם נקודות, מקפים וסימני פלוס. b/112806402
שינויי תוכנה שעלולים לגרום לכשלים
- המודול
navigation-testing-ktxשולב בnavigation-testing artifactולא יפורסם יותר. - לארטיפקט
navigation-testingיש עכשיו תלות בספריית Kotlin הרגילה. ממשק ה-API שונה כדי שיהיה עקבי יותר עם המוסכמות של Kotlin, אבל אפשר להמשיך להשתמש בו לבדיקות שנכתבו ב-Java. - אין יותר תמיכה בתרשימי ניווט שרשומים במניפסט של מטא-נתונים. b/118355937
- אי אפשר יותר לצרף פעולות ליעדים מסוג <activity>. aosp/785539
תיקוני באגים
- קישורי עומק מנתחים עכשיו פרמטרים של שאילתות בצורה נכונה. b/110057514
- עכשיו אנימציות הכניסה והיציאה מוחלות בצורה נכונה על יעדי פעילות. b/117145284
- תוקנה קריסה שמתרחשת אחרי שינויים בהגדרות כשמשתמשים ב-Navigators בהתאמה אישית. b/110763345
Safe Args
- ל-Safe Args יש עכשיו תלות קבועה ב-פלאגין של Android Gradle 3.2.1. b/113167627
- מעכשיו אפשר ליצור הוראות לכיתות פנימיות. b/117407555
- תוקנה בעיה שקשורה ליצירת מסלולים לגרף <include>. b/116542123
גרסה 1.0.0-alpha06
20 בספטמבר 2018
תכונות חדשות
- יש עכשיו תמיכה במעברים של רכיבים משותפים ליעדים מסוג Fragment ו-Activity b/79665225. מידע נוסף זמין במאמר בנושא הטמעה של ניווט באמצעות רכיב ארכיטקטורת הניווט
- בחירה של פריט ב-
NavigationViewתגרום עכשיו לסגירה של כל גיליון תחתון שמכיל אותו b/112158843
שינויים ב-API
- שינוי שעלול לשבור את התאימות לאחור: ה-method
navigate()של Navigator מקבל עכשיו פרמטרNavigator.Extras. - השיטה
getGraph()של NavController היא עכשיוNonNullb/112243286
תיקוני באגים
NavigationUI.setupWithNavController()אין יותר דליפות של תצוגות אם משתמשים בה עם תצוגות מיעדים ספציפיים b/111961977- הפונקציה Navigator
onSaveState()מופעלת עכשיו רק פעם אחת b/112627079
Safe Args
- אם קיים קלאס Directions של האב, קלאסים של יעד בניווט מרחיבים אותו b/79871405
- למחלקות Directions ו-Args יש עכשיו הטמעה שימושית
toString()b/111843389
גרסה 1.0.0-alpha05
10 באוגוסט 2018
תיקוני באגים
- תוקן באג שגרם להתנהגות שגויה של מחסנית החזרה. b/111907708
- תוקן באג ב-
equals()של מחלקות Generated Args. b/111450897 - תוקנה בעיה שגרמה לכשל ב-build ב-Safe Args. b/109409713
- תיקון המרה ממזהי משאבים לשמות Java b/111602491
- תיקון הודעות שגיאה לגבי אפשרות קבלת ערך null בתוסף Safe Args.
- הוספת אנוטציות חסרות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability).
גרסה 1.0.0-alpha04
19 ביולי 2018
Navigation 1.0.0-alpha04 ותוסף ה-Safe Args gradle המשויך מכילים מספר שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API / בהתנהגות
- NavHostFragment תמיד יגדיר את ה-Fragment הנוכחי כ-Fragment הניווט הראשי, וידאג שמנהלי ה-Fragment המשניים יוסרו לפני שמסירים את ה-NavController החיצוני b/111345778
Safe Args
- שינוי שעלול לגרום לכשלים: השם
app:typeשונה ל-app:argTypeכדי למנוע התנגשויות עם ספריות אחרות כמו ConstraintLayout 2.0.0-alpha1 b/111110548 - הודעות שגיאה מ-Safe Args ניתנות עכשיו ללחיצה b/111534438
- מחלקות Args מאשרות עכשיו שמאפייני
NonNullהם לא null b/111451769 - נוספו הערות נוספות של
NonNullלמחלקות שנוצרו NavDirections ו-Args b/111455455 b/111455456
תיקוני באגים
- תוקנה בעיה בכפתור 'הקודם' במערכת אחרי קישור עומק ליעד של קטע b/111515685
גרסה 1.0.0-alpha03
12 ביולי 2018
Navigation 1.0.0-alpha03 ותוסף ה-Safe Args gradle המשויך מכילים מספר שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API / בהתנהגות
- נוספה שיטה NavigationUI.setupWithNavController עבור סרגל הכלים b/109868820
- נוספה שיטה NavigationUI.setupWithNavController ל-CollapsingToolbarLayout b/110887183
- הפונקציה popBackStack() מחזירה עכשיו false כשהמקבץ פעילויות קודמות (back stack) ריק או כשמזהה היעד שצוין לא נמצא במקבץ פעילויות קודמות (back stack) b/110893637
- FragmentNavigator מתעלם עכשיו מפעולות ניווט אחרי ש-FragmentManager שמר את המצב, וכך נמנעות חריגות מסוג Can not perform this action after onSaveInstanceState b/110987825
Safe Args
- שינוי שעלול לשבור את הקוד: תווים לא אלפאנומריים בשמות של פעולות וארגומנטים יוחלפו בשיטת CamelCase בשמות של שיטות NavDirections המתאימות
- לדוגמה,
DemoController.indexיהפוך ל-setDemoControllerIndexb/79995048 - לדוגמה,
action_show_settingsיהפוך ל-actionShowSettingsb/79642240
- לדוגמה,
- שינוי משמעותי: ארגומנטים נחשבים עכשיו כלא ריקים כברירת מחדל. כדי לאפשר ערכי null בארגומנטים של מחרוזות ושל parcelable, מוסיפים
app:nullable="true"b/79642307 - עכשיו אפשר להשתמש ב-
app:type="long"עם defaultValues בפורמט “123L” b/79563966 - יש עכשיו תמיכה בארגומנטים מסוג Parcelable, באמצעות שם מחלקה שמוגדר במלואו עבור
app:type. ערך ברירת המחדל הנתמך היחיד הוא"@null"b/79563966 - מחלקות Args מיישמות עכשיו את
equals()ואתhashCode()b/79642246 - מעכשיו אפשר להחיל את התוסף Safe Args על פרויקטים של ספריות b/80036553
- מעכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של תכונות b/110011752
תיקוני באגים
- תוקנו בעיות בניווט במהלך שימוש בשיטות של מחזור החיים של Fragment b/109916080
- תוקנו בעיות בניווט בגרפים מוטמעים כמה פעמים b/110178671
- נפתרו בעיות בשימוש ב-
setPopUpToעם היעד הראשון בתרשים b/109909461 - תוקנה בעיה שבה כל הערכים של
app:defaultValueהועברו כמחרוזות b/110710788 - AAPT2 שצורף לפלאגין של Android Gradle 3.2 Beta 01 מוסיף עכשיו כללי שמירה לכל מאפיין
android:nameבקובצי XML של Navigation b/79874119 - תוקן דליפת זיכרון בהחלפת FragmentNavigator שמוגדר כברירת מחדל b/110900142
גרסה 1.0.0-alpha02
7 ביוני 2018
שינויים בהתנהגות
הבית
FragmentNavigatorמשתמש עכשיו במינויsetReorderingAllowed(true). b/109826220הניווט מבצע עכשיו פענוח של כתובות URL של קישורי עומק כדי לנתח את הארגומנטים. b/79982454
תיקוני באגים
תוקן באג
IllegalStateExceptionכשמתקשרים אל navigate משיטות מחזור החיים של מקטע. b/79632233הניווט תלוי עכשיו בספריית התמיכה 27.1.1 כדי לתקן הבהובים כשמשתמשים באנימציות. b/80160903
תוקן באג
IllegalArgumentExceptionכשמשתמשים ב-defaultNavHost="true" כקטע צאצא. b/79656847תוקן באג
StackOverflowErrorבשימוש ב-NavDeepLinkBuilder. b/109653065תוקנה בעיה
IllegalArgumentExceptionבניווט חזרה לתרשים מקונן. b/80453447תוקנה בעיה שקשורה לחפיפה של Fragments כשמשתמשים ב-
launchSingleTop. b/79407969הניווט יוצר עכשיו את מקבץ הפעילויות הקודמות הסינתטי הנכון לגרפים מקוננים. b/79734195
הספרייה NavigationUI תדגיש עכשיו את הפריט הנכון כשמשתמשים בתרשים מוטמע כ-
MenuItem. b/109675998
שינויים ב-API
המאפיין
clearTaskלפעולות וממשק ה-API המשויך ב-NavOptionsהוצאו משימוש. b/80338878המאפיין
launchDocumentשל פעולות וממשק ה-API המשויך ב-NavOptionsהוצאו משימוש. b/109806636
גרסה 1.0.0-alpha01
8 במאי 2018
הניווט מספק מסגרת לבניית ניווט בתוך האפליקציה. הגרסה הראשונית הזו היא 1.0.0-alpha01.