ניווט
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
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
2 ביולי 2025 | 2.9.1 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-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.1" // 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.1" // 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.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.1" 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. נשמח לשמוע מכם אם תגלו בעיות חדשות או אם יש לכם רעיונות לשיפור הספרייה הזו. לפני שיוצרים ספרייה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להוסיף את ההצבעה שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא כלי המעקב אחר בעיות.
גרסה 2.9
גרסה 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
השתנה לפונקציית יצירה של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
: תוקנה הבעיהNavDestination
NullPointerException
בעדכוןstartDestination
של תרשים. (I99421, b/361560785)
External Contribution
- מתוך Navigation
2.8.5
: בטיחות סוג הניווט תומכת עכשיו ב-List<Enum>
כסוג ארגומנט של מסלול בלי לדרושNavType
מותאם אישית. תודה Csaba Kozák! (GH-725, b/375559962)
גרסה 2.9.0-alpha03
13 בנובמבר 2024
androidx.navigation:navigation-*:2.9.0-alpha03
משוחרר. גרסה 2.9.0-alpha03 מכילה את ההתחייבויות האלה.
תכונות חדשות
- בבטיחות של סוג הניווט יש עכשיו תמיכה במחלקות ערכים כנתיב או כסוג הארגומנט של נתיב. (I9344a, b/374347483)
תיקוני באגים
- תוקנה בעיה
ConcurrentModificationException
שיכולה להתרחש כשLifecycleObserver
שמצורף ל-NavBackStackEntry
מפעיל שינוי במחסנית האחורית כש-LifecycleOwner
המארח, כמו Activity או Fragment שמכילים אותו, משנה את מצב מחזור החיים שלו. (Ia9494)
גרסה 2.9.0-alpha02
30 באוקטובר 2024
androidx.navigation:navigation-*:2.9.0-alpha02
משוחרר. גרסה 2.9.0-alpha02 מכילה את ההתחייבויות האלה.
External Contribution
- שיטה חדשה ונפוצה
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 (לא נמצאה מחלקת Enum) כדי להציע שימוש בהערה
@Keep
במקרה שמחלקת Enum נמחקת בגרסאות מצומצמות. (I90e79, b/358137294)
בעיות מוכרות
- יש בעיה בכללי ה-lint החדשים שנוספו בגרסה
Navigation 2.8.*
שגורמת לשגיאהObsolete custom lint check
כשמנסים להריץ lint עם Android Gradle Plugin בגרסה 8.4 ואילך. (b/368070326, b/371463741)
גרסה 2.8
גרסה 2.8.9
12 במרץ 2025
androidx.navigation:navigation-*:2.8.9
משוחרר. גרסה 2.8.9 מכילה את הקומטים האלה.
תיקוני באגים
- תוקנה רגרסיה שנמצאה ב-Navigation 2.8.8, שדרשה שקישור עומק יתאים בדיוק לכל השדות של בקשת קישור עומק או של Intent כדי להיחשב כהתאמה. כתוצאה מכך, קישורי עומק שהכילו התאמות חלקיות לשדות ולא הכילו התאמות אחרות לא פעלו יותר. (Ie5e36, b/399826566)
גרסה 2.8.8
26 בפברואר 2025
androidx.navigation:navigation-*:2.8.8
משוחרר. גרסה 2.8.8 מכילה את הקומטים האלה.
תיקוני באגים
- תוקן באג שבו מסלולים עם נתיבים של תווים כלליים לחיפוש לא תואמים לקישור עומק שנוסף. (I7ea92, b/389970341)
- תוקנה בעיה בהתאמה של
NavDeepLink
, שבה קישור עומק ובקשה לקישור עומק צריכים להיות זהים בדיוק ב-URI, בפעולה וב-MIME. אם רק שדה אחד או שניים תואמים, אי אפשר יותר לבצע התאמה. (I3227f, b/395712033)
בעיות מוכרות
- בגלל העבודה שנעשתה כדי לטפל בבעיה b/395712033, קישורי עומק נדרשים באופן שגוי לכלול את כל השדות שכלולים בבקשה לקישור עומק או ב-
Intent
. קישורים עמוקים צריכים להתאים רק לשדות שהם מכילים, והמערכת צריכה להתעלם מהשדות שלא נכללים בהם. הבעיה הזו תוקנה בגרסה מאוחרת יותר כחלק מ-b/399826566.
גרסה 2.8.7
12 בפברואר 2025
androidx.navigation:navigation-*:2.8.7
משוחרר. גרסה 2.8.7 מכילה את הקודים האלה.
תיקוני באגים
- התכונה Navigation Safe Args תומכת עכשיו ביעדים שניתן להרכיב. (I35320, b/362791955)
גרסה 2.8.6
29 בינואר 2025
androidx.navigation:navigation-*:2.8.6
משוחרר. גרסה 2.8.6 מכילה את התחייבויות האלה.
תיקוני באגים
- תוויות
NavDestination
שמועברות באמצעות XML ינותחו באמצעותNavType.get
כדי לוודא שהלוגיקה המותאמת אישית שלNavType
נשמרת. (Id366d, b/388100796) - כשעוברים לפעילות עם
dataPattern
,ActivityNavigator
ינסה עכשיו לקודד את ערך הארגומנט באמצעותNavType
של הארגומנט. (I1a71d, b/383616432)
גרסה 2.8.5
11 בדצמבר 2024
androidx.navigation:navigation-*:2.8.5
משוחרר. גרסה 2.8.5 מכילה את הקומטים האלה.
תיקוני באגים
- תוקנה בעיה שבה
NavHost
יכול להחזיר חריגה בתוךPredictiveBackHandler
אם מחסנית החזרה (back stack) מרוקנת עד לרשומה אחת ומופעלת חזרה למערכת באותו פריים. (I1a429, b/375343407) - תוקנה הבעיה
NavDestination
NullPointerException
בעדכון שלstartDestination
בתרשים. (I99421, b/361560785) - תוקנה בעיה שגרמה לאנימציית שינוי גודל לא צפויה כשמשתמשים ב-Navigation Compose ומפעילים את הפונקציה navigate באותו פריים שבו האנימציה הנוכחית מסתיימת. (I26cb1, b/353294030)
- תוקנה בעיה
ConcurrentModificationException
שיכולה להתרחש כשLifecycleObserver
שמצורף ל-NavBackStackEntry
מפעיל שינוי במחסנית האחורית כש-LifecycleOwner
המארח, כמו Activity או Fragment שמכילים אותו, משנה את מצב מחזור החיים שלו. (Ia9494)
External Contribution
- בטיחות סוג הניווט תומכת עכשיו ב-
List<Enum>
כסוג ארגומנט של מסלול בלי לדרושNavType
מותאם אישית. תודה Csaba Kozák! (GH-725, b/375559962)
גרסה 2.8.4
13 בנובמבר 2024
androidx.navigation:navigation-*:2.8.4
משוחרר. גרסה 2.8.4 מכילה את התחייבויות האלה.
תכונות חדשות
- מתוך Navigation
2.9.0-alpha03
: סוג הניווט safety תומך עכשיו במחלקת ערכים כמסלול או כסוג הארגומנט של מסלול (I9344a, b/374347483)
תיקוני באגים
- מתוך Navigation
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 Plugin בגרסה 8.4 ואילך. (I1be3d, b/368070326, b/371463741)
בעיות מוכרות
- אם מנסים להריץ את Lint עם Lint 16 (AGP 8.7) או גרסה מתקדמת יותר, הכלי Navigation Lint יציג שגיאה של בדיקת Lint מותאמת אישית שיצאה משימוש. (b/371926651)
גרסה 2.8.2
2 באוקטובר 2024
androidx.navigation:navigation-*:2.8.2
משוחרר. גרסה 2.8.2 מכילה את ההתחייבויות האלה.
תכונות חדשות
- התכונה 'בטיחות סוגי הניווט' תומכת עכשיו במחלקות שניתנות לסריאליזציה, שכוללות
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
ו-List<Double>?
, בלי לדרושNavType
מותאם אישית. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
תיקוני באגים
- שיפרנו את הודעת השגיאה שמוצגת כשלא מצליחים למפות ארגומנט של מסלול ל-
NavType
. הודעת השגיאה החדשה תכיל את שם הארגומנט, את השם המלא של הארגומנט ואת השם המלא של המסלול. (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
מכיל את הערכים של כל הארגומנטים הנדרשים, כולל ארגומנטים שהם non-nullable ואין להם ערך ברירת מחדל. (I18e74, b/362594265) - ב-Navigation safe args נוספה תמיכה במחרוזות שאינן ניתנות לאיפוס, כך שערכי null ינותחו ויאוחסנו בחבילה כמו שהם. זה שונה מההתנהגות הקיימת, שבה ערכי null מנותחים לאובייקט null. השינוי הזה חל רק על סוגי מחרוזות שלא יכולים להכיל ערך null. מחרוזות שאפשר להגדיר להן ערך null לא משתנות. (I08b4a, b/348936238)
- אי אפשר יותר להפנות ל
NavDestination
באמצעות קישור עומק, אלא רק באמצעות קישור עומק שנוסף באופן מפורש ליעד. זה גם אומר שאפשר לנווט למסלול של יעד רק באמצעות העמסת יתר של פונקציית הניווט שמקבלת מסלול מחרוזת. העדכון הזה מתקן נקודת חולשה שאיפשרה ליצור קישור עומק ליעד שמוגן באופן פוטנציאלי. (Ie30e6)
עדכון תלות
- התלות של Navigation Safe Args היא עכשיו ב-Kotlin 1.9.24, ולא ב-Kotlin 2.X, כדי שמפתחים לא יחויבו לעדכן. (a4129a)
- הניווט ב-Compose תלוי עכשיו ב-Compose
1.7.2
.
גרסה 2.8.0
4 בספטמבר 2024
androidx.navigation:navigation-*:2.8.0
משוחרר. גרסה 2.8.0 מכילה את ההתחייבויות האלה.
שינויים חשובים מאז גרסה 2.7.0
Navigation Kotlin DSL Type-Safety
- הניווט מספק עכשיו בטיחות סוגים ל-Kotlin DSL (שמשמש את Navigation Compose) באמצעות Kotlin Serialization, כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים מסוגים וסוגי נתונים:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
מידע נוסף זמין בפוסט הזה בבלוג בנושא Navigation Compose meet Type Safety.
ניווט Compose Predictive Back
- Navigation Compose תומך עכשיו בתכונה 'חזרה לאחור באפליקציה עם חיזוי' באמצעות ממשקי ה-API החדשים
SeekableTransitionState
מ-compose-animation. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית שלכם, לפני שתחליטו אם להשלים את העסקה באמצעות התנועה המלאה או לבטל אותה.
Navigation Fragment Composable
- הוספנו ארטיפקט
navigation-fragment-compose
חדש שכולל חלופהComposableNavHostFragment
ל-NavHostFragment
, שמאפשרת להוסיף יעד שאפשר להרכיב לקובצי ה-XML של הניווט. כלcomposable
יעד צריך להיות מוגדר כשיטת@Composable
ברמה העליונה, ללא ארגומנטים, ששמה המלא משמש כמאפייןandroid:name
בכל יעד. כשעוברים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים אחרים
- הניווט ב-Compose תלוי עכשיו ב-Compose 1.7.0.
- הכיתה החדשה
CollectionNavType<T>
של Navigation היא תת-כיתה של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
חדש לניווט ב-safe args. המשמעות היא שסוגי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) - תוקנו בעיות בשחזור מצב של ערימת הניווט הקודם שנגרמו בניסיון לשחזר רשומה בערימת הניווט הקודם שלא ניתן להגיע אליה באמצעות מזהה מהיעד הנוכחי. מכיוון שהמסלולים מגובים על ידי מזהים, גם יעדים שנבנו באמצעות מסלולים הושפעו. בנוסף, פתרנו קריסה שנגרמה כתוצאה מקריאה ל-
clearBackStack()
שהייתה לה אותה בעיה בסיסית. (I423c3, b/339908057)
גרסה 2.8.0-beta01
14 במאי 2024
androidx.navigation:navigation-*:2.8.0-beta01
משוחרר. גרסה 2.8.0-beta01 מכילה את הקומטים האלה.
שינויים ב-API
-
SavedStateHandle.toRoute()
מקבלת עכשיו פרמטרtypeMap
לסוגים של ארגומנטים בהתאמה אישית. (Ie39fb, b/339026523) - הוספנו ל-
navigation-testing
API לבדיקה כדי ליצורSavedStateHandle
מאובייקט Kotlin Serializable. (Id4867, b/339080702)
תיקוני באגים
- נוספו מסמכים עם פרמטרים חסרים לפונקציות של Navigation Kotlin DSL. (I26a36)
גרסה 2.8.0-alpha08
1 במאי 2024
androidx.navigation:navigation-*:2.8.0-alpha08
משוחרר. גרסה 2.8.0-alpha08 מכילה את ההתחייבויות האלה.
Safe Args ב-Navigation Compose
- העבודה על תמיכה בבטיחות סוגים בזמן קומפילציה עבור 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
מקומית לשיטות שאפשר להרכיב בתוךComposableFragment
. (If35e5) -
NavType
כולל עכשיו תמיכה מובנית ברשימות של Int, String, Boolean, Float ו-Long. (I4b6dd, Ia914c, b/188693139)
גרסה 2.8.0-alpha07
17 באפריל 2024
androidx.navigation:navigation-*:2.8.0-alpha07
משוחרר. גרסה 2.8.0-alpha07 מכילה את ההתחייבויות האלה.
תכונות חדשות
נוסף ארטיפקט
navigation-fragment-compose
חדש שכולל חלופה ל-ComposableNavHostFragment
NavHostFragment
שמאפשרת להוסיף יעדיםcomposable
לקובצי ה-XML של הניווט. כלcomposable
יעד צריך להיות מוגדר כשיטת@Composable
ברמה העליונה, ללא ארגומנטים, ששמה המלא משמש כמאפייןandroid:name
בכל יעד. כשעוברים לאחד מהיעדים האלה, נוצר פרגמנט מכיל כדי להציג את התוכן הקומפוזבילי. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים ב-API
- המשכנו לתמוך ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Kotlin Serialization. ממשקי ה-API האלה לא סיימו את הפיתוח ומסומנים בהערה
ExperimentalSafeArgsApi
. ההערה הזו תוסר כשה-API כולו יהיה מוכן בגרסה עתידית. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
גרסה 2.8.0-alpha06
3 באפריל 2024
androidx.navigation:navigation-*:2.8.0-alpha06
משוחרר. גרסה 2.8.0-alpha06 מכילה את הקומטים האלה.
שינויים ב-API
- התחלנו להוסיף תמיכה ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Kotlin Serialization. ממשקי ה-API האלה לא סיימו את הפיתוח ומסומנים בהערה
ExperimentalSafeArgsApi
. ההערה הזו תוסר כשה-API כולו יהיה מוכן בגרסה עתידית. (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
. הדבר נכון גם לגבי תגיNavGraph
startDestinations
מוטמעים. (I0e0b5, b/109505019, b/188693139)
שינויים ב-API
- נוספה מחלקה מופשטת חדשה,
CollectionNavType<T>
, שהיא מחלקת משנה שלNavType<T>
לארגומנטים מבוססי-אוסף כמו רשימה, מערכים, מפות. (Ic6d63, b/188693139) - כל מערכי ברירת המחדל
NavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
ו-StringArrayType
) הם עכשיו מסוגCollectionNavType
(Idcf79, b/188693139) -
NavType
מספק עכשיו API חדש ופתוח שלvalueEquals
שקובע אם שני ערכים מאותו סוג שווים זה לזה. (I6cb97, b/327229511)
תיקוני באגים
- פרמטרים של שאילתות בקישורי עומק מאפשרים עכשיו ערכים בפורמט של סוגריים מסולסלים סביב שם הארגומנט (כלומר
{argName}
) כערכים תקינים ל-NavTypes
מבוסס מחרוזת. התיקון הזה פותר בעיה שבה ערך כזה נחשב לא חוקי (או כערך חסר) בכל הסוגים. (I18302, b/327274038) - פונקציות
NavController
שתומכות בנתיבים כמוnavigate
אוpopBackStack
יכולות עכשיו להתאים נכון לנתיבים שמולאו בארגומנטים של מערךNavTypes
. (Iea805, b/327229511)
גרסה 2.8.0-alpha04
6 במרץ 2024
androidx.navigation:navigation-*:2.8.0-alpha04
משוחרר. גרסה 2.8.0-alpha04 מכילה את הקומטים האלה.
תכונות חדשות
- עכשיו אפשר לציין את
SizeTranform
למעברים ב-Navigation Compose על ידי הגדרתם כחלק מההפעלה של הפונקציותcomposable
אוnavigation
. (I91062, b/296912651)
תיקוני באגים
- תוקנה בעיה שגרמה לכך שהמעבר לא הוצג בצורה תקינה כשמשתמשים באפשרות 'חזרה' של המערכת בלי להשתמש בתנועה.
NavHost
(Iceeae, b/325998468)
גרסה 2.8.0-alpha03
21 בפברואר 2024
androidx.navigation:navigation-*:2.8.0-alpha03
משוחרר. גרסה 2.8.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- הקובץ
NavBackStackEntry.savedStateHandle
מסומן עכשיו כ-@MainThread
כי הוא משתמש בקוד שנדרש בכל מקרה בשרשור הראשי. (Ibb988, b/299523245)
תיקוני באגים
- תוקנה בעיה ב-Navigation שגרמה לכך ש-
NavGraph
ViewModels נמחקו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) - תוקנה בעיה שבה ארגומנטים שהם לא מחרוזות לא הוצגו בצורה תקינה כשמשתמשים ב-
NavigationUI
helpers כדי לאכלס את הכותרת של סרגלי האפליקציות. (#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
: תוקנה בעיה שבה ארגומנטים שהם לא מחרוזות לא הוצגו בצורה תקינה כשמשתמשים ב-NavigationUI
helpers כדי לאכלס את הכותרת של סרגלי האפליקציות. (#636, b/316676794)
External Contribution
- תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שהם לא מחרוזת כשמשתמשים ב-helpers של
NavigationUI
כדי לאכלס את שם הפריט של סרגלי האפליקציה.
גרסה 2.7.6
גרסה 2.7.6
13 בדצמבר 2023
androidx.navigation:navigation-*:2.7.6
משוחרר. גרסה 2.7.6 מכילה את הקומיטים האלה.
תיקוני באגים
- הפונקציה
NavGraph
equals()
מתייחסת עכשיו בצורה נכונה לצמתים של הגרף השני, ולא רק לגרף שקורא לה. כך נמנע מצב שבו תרשימים עם צמתים בעלי מזהים שונים ייחשבו שווים (I401cb, b/311414915)
גרסה 2.7.5
גרסה 2.7.5
1 בנובמבר 2023
androidx.navigation:navigation-*:2.7.5
משוחרר. גרסה 2.7.5 מכילה את הקומיטים האלה.
שיפורים בביצועים
- שיפרנו משמעותית את הביצועים (גם מבחינת זמן וגם מבחינת מספר ההקצאות) של השוואה בין שני תרשימים. המשמעות היא שקריאות כמו
setGraph
שמשוות באופן פנימי את הגרף החדש לגרף הקיים, מהירות הרבה יותר וגורמות לפחות דילוגים על פריימים. תודה ל-Michał Z על הניתוח המעמיק שהוביל לשיפור הזה. (I6ad62) -
NavHost
יציג עכשיו את יעד ההתחלה במעבר הראשון של הקומפוזיציה, במקום לחכות למעבר השני כדי לקרוא את המצב המעודכן. (I439a7, b/304852206)
תיקוני באגים
- תוקנה בעיה שבה מחסנית החזרה (back stack) הייתה נמחקת אם קראתם ל-
setGraph
יותר מפעם אחת עם אותו גרף בדיוק, רק אם היה יעד בגרף שהכיל פעולה שמקשרת בין שני יעדים. (Ieaed7) - תיבות דו-שיח שנווטו אליהן ונסגרו ברצף מהיר לא יופיעו יותר ברשימת
NavController.visibleEntries
. (I67586, b/287969970) - כשמוציאים רשומה מהמחסנית ואז משנים את ההגדרה, הערך של
ViewModel
ברשומה יימחק כמו שצריך אםsaveState
הוא false. (Idf242, b/298164648) - תוקנה בעיה שבה הפונקציה
NavController
יכלה לטפל באותו קישור עמוק יותר מפעם אחת אם מחסנית החזרה הייתה ריקה לחלוטין לפני שינוי בהגדרה או קריאה לפונקציהsetGraph
רק כשהדגלFLAG_ACTIVITY_NEW_TASK
הוגדר ב-Intent הנכנס. (I73c7f)
עדכונים של יחסי תלות
- הניווט באמצעות Fragments תלוי עכשיו ב-Fragment 1.6.2, וכך נפתרה בעיה שבה המופעים
ViewModel
של Fragments מוטבעים לא נוקו כשבוצעה קריאה ל-clearBackStack
.
גרסה 2.7.4
גרסה 2.7.4
4 באוקטובר 2023
androidx.navigation:navigation-*:2.7.4
משוחרר. גרסה 2.7.4 מכילה את הקומיטים האלה.
תכונות חדשות
- הוספנו תמיכה ב-
popUpTo
כדי להשתמש בנתיבים עם ארגומנטים, וכך לאפשר חזרה לרשומה ספציפית שמשתמשת בארגומנטים האלה בדיוק, בהתאם לתמיכה שקיימת ב-popBackStack
. (I731f4, b/299255572)
תיקוני באגים
- תוקנה הבעיה שבה הפסקת ניווט באמצעות ניווט אחר עם
popUpTo
גורמת לקריסתFragmentNavigator
. (I3c848, b/301887045) - תוקנה בעיה שבה לחיצה על לחצן החזרה במערכת לא עדכנה את
currentDestination
בצורה נכונה כך שתתאים לרכיב Fragment שמוצג. (Id0d6c, b/289877514) - מחזור החיים של
DialogFragment
יעבור עכשיו למצבRESUMED
בצורה תקינה כשתיבת הדו-שיח שמעליו תיסגר. (I88f0d, b/301811387)
גרסה 2.7.3
גרסה 2.7.3
20 בספטמבר 2023
androidx.navigation:navigation-*:2.7.3
משוחרר. גרסה 2.7.3 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה ב-Navigation with Fragments שגרמה לכך שהרשימה
visibleEntries
הכילה רשומות שגויות. (I5caa9, b/288520638) - תוקנה בעיה שגרמה לכך שיעד של חלון צף (כלומר,
Dialogs
,Bottomsheets
וכו') אף פעם לא קיבל קריאה חוזרת (callback) של מחזור החייםRESUMED
. (I3b866, b/287505132)
גרסה 2.7.2
גרסה 2.7.2
6 בספטמבר 2023
androidx.navigation:navigation-*:2.7.2
משוחרר. גרסה 2.7.2 מכילה את הקומיטים האלה.
תיקוני באגים
- הניווט תלוי עכשיו ב-Lifecycle
2.6.2
, ומתקן אינטראקציה ביןrememberSaveable
לביןNavHost
של Navigation Compose שגרמה למצבrememberSaveable
של יעדים ולכל מופעיViewModel
שבבעלותSavedStateHandle
לא לשחזר כראוי אחרי סיום התהליך ויצירה מחדש. (b/298059596, b/289436035) - תוקנה בעיה שבה הצגה של כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית, כשתיבות הדו-שיח שמוסתרות חלקית (למשל, לא תיבת הדו-שיח העליונה ביותר) היו במצב מחזור החיים
CREATED
ולא במצבSTARTED
. (aosp/2728520, b/289257213) - תוקנה בעיה שקרתה כשמציגים כמה תיבות דו-שיח ב-Navigation Compose בו-זמנית. במקרה כזה, סגירה של תיבת הדו-שיח העליונה גורמת לתיבת הדו-שיח העליונה החדשה להיתקע במצב מחזור החיים
STARTED
במקום לעבור למצבRESUMED
כמו שצריך. (aosp/2629401, b/286371387) - הארגומנטים הבטוחים של Navigation לא יוצרים יותר מופע של המשימה באופן מיידי אם היא לא מבוצעת בפועל. (I0e385, b/260322841)
עדכון תלות
- הגרסה של Navigation Compose עכשיו תלויה בגרסה 1.5.1 של Compose.
גרסה 2.7.1
גרסה 2.7.1
23 באוגוסט 2023
androidx.navigation:navigation-*:2.7.1
משוחרר. גרסה 2.7.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנו בעיות בניווט בכלי הכתיבה, שבהן כשמשתמשים ב-
Scaffold
אפשר לקבל שגיאה בניסיון לגשת אלLifecycle.State.DESTROYED
ViewModel
. (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 הנכון למעברים מותאמים אישית שמשתמשים בניווט עם האפשרות
popUpTo
.(/Ib1c3a, b/285153947)
גרסה 2.7.0-beta01
7 ביוני 2023
androidx.navigation:navigation-*:2.7.0-beta01
משוחרר. גרסה 2.7.0-beta01 מכילה את הקומיטים האלה.
תיקוני באגים
-
NavHost
Navigation Compose מיירט עכשיו בצורה נכונה קריאות למערכת 'חזרה' גם אחרי ש-Activity
עברSTOPPED
ו-RESUMED
. (Icb6de, b/279118447)
גרסה 2.7.0-alpha01
24 במאי 2023
androidx.navigation:navigation-*:2.7.0-alpha01
משוחרר. גרסה 2.7.0-alpha01 מכילה את הקומיטים האלה.
אנימציות מ-Accompanist
עכשיו, כש-AnimatedContent
יציב, יכולנו להעביר את הקוד מ-Accompanist Navigation Animation בחזרה אל Navigation Compose עצמו.
כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהייתה ב-AnimatedNavHost
נתמכת ישירות ב-NavHost
.
לא יבוצעו שינויים נוספים ב-Accompanist Navigation Animation, ובקרוב נצא משימוש באופן רשמי, יחד עם הנחיות להעברה חזרה אל Navigation Compose עצמו, אבל זה יהיה ההיפך של מדריך ההעברה ללא צורך בשינויים נוספים ב-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist (0.31.2-alpha
). (b/197140101)
תיקוני באגים
- Navigation
2.6.0-rc02
: תוקנה בעיה ב-Navigation in 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
מחליף עכשיו את השיטה הזו כדי להתקשר אלUri.encode
ב-String
הנתון.
שינויים חשובים ב-Navigation Compose מאז גרסה 2.5.0
- כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם
NavHost
, הוא יציג עכשיו אתstartDestination
של NavGraph כברירת מחדל. -
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. חשוב לשים לב שהארגומנטים צריכים להיות זהים לארגומנטים של הרשומה. - ניסיון ליצור
NavDeepLink
ריק באמצעותnavDeepLink
Kotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך uri, פעולה או mimetype כדי להיות תקין.
שינויים חשובים בניווט באמצעות Fragments מאז גרסה 2.5.0
- האפליקציה
NavHostFragment
כבר לא מיירטת את לחצן החזרה של המערכת. כך אפשר למערכת הבסיסיתFragmentManager
לטפל בחזרה למסך הקודם. כך, Fragment1.7.0-alpha01
ומעלה יכולים לספק אנימציה של חזרה עם חיזוי באפליקציות במכשירי Android U. - כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית פעולת
FragmentTransaction
שמוסיפה Fragment ל-back stack שלFragmentManager
יגרום עכשיו להפעלתIllegalArgumentException
. תמיד צריך להוסיף מקטעים באמצעותnavigate()
API. - כשמשתמשים במחרוזת המדויקת
${applicationId}
כמציין המיקום במאפייניםapp:data
ו-app:dataPattern
ברכיב הפעילות של קובץ XML של ניווט, מציין המיקום יתמלא באופן אוטומטי ב-packageName
של ההקשר בזמן הניפוח. - ה-
FragmentNavigator
משתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחים חלונות קופציםNavBackStackEntries
. כלומר,NavBackStackEntry
Lifecycle
ימתין עכשיו עד שאפקטי הכניסה והיציאה של הפרגמנט יסתיימו לפני שיזיז אתLifecycle.State
הסופי. - ה-
DialogFragmentNavigator
משתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחים חלונות קופציםNavBackStackEntries
. המשמעות היא שהמערכת תמתין עכשיו עד שהמצב שלDialogFragment
Lifecycle
ישתנה לDESTROYED
לפני שהיא תעבור לDESTROYED
בעצמה.NavBackStackEntry
Lifecycle
-
NavHostFragment
מאפשר עכשיו לאחזר אתNavController
ברגע ש-NavHostFragment
מצורף ל-FragmentManager
, ולא רק אחריonCreate()
. - התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספריית Play Feature Delivery המפורטת.
- הפלאגין Navigation Safe Args תלוי עכשיו בגרסה 7.3.0 של Android Gradle Plugin. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ואילך.
שינויים חשובים ב-NavigationUI מאז גרסה 2.5.0
- כשמעבירים את המזהה של תרשים ניווט אל
AppBarConfiguration
(למשל באמצעותMenu
),NavigationUI
מתייחס עכשיו רק ליעד ההתחלה של תרשים הניווט הזה כיעד ברמה העליונה, במקום לסמן באופן שגוי כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא משתנה. אותה פונקציונליות זמינה גם בקוד שלכם באמצעות הפונקציה החדשהisTopLevelDestination
ב-AppBarConfiguration
. - השילובים של
setupWithNavController
ב-NavigationUI
לעבודה עם סרגל האפליקציות העליון ינתחו עכשיו ערכים שלR.string
לארגומנטים שלReferenceType
שנמצאים ב-android:label
לערכי המחרוזת שלהם, במקום להפיק את מספר השלם של המשאב שנוצר אוטומטית. -
NavigationUI
מספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItem
שנבחר.
גרסה 2.6.0-rc02
24 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc02
משוחרר. גרסה 2.6.0-rc02 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה בניווט ב-Fragments שבה ניווט באמצעות
popUpTo
והוצאת Fragment מה-back stack בלי ליצור מחדש את התצוגה שלו גרמו להפסקת הפעולה של המערכת. (Ieb8d4, b/281726455)
גרסה 2.6.0-rc01
10 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc01
משוחרר. גרסה 2.6.0-rc01 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה בניווט עם פרגמנטים, שבה הסרת פרגמנט באמצעות navigate עם
popUpTo
בקריאת החזרה של מחזור החיים שלonResume()
גרמה ל-IllegalStateException
. (I21884, b/279644470)
גרסה 2.6.0-beta01
19 באפריל 2023
androidx.navigation:navigation-*:2.6.0-beta01
משוחרר. גרסה 2.6.0-beta01 מכילה את הקומיטים האלה.
תכונות חדשות
-
NavBackStackEntry
מספקת עכשיו הטמעה מותאמת אישית שלtoString
. (Iff00b)
תיקוני באגים
- כשמשתמשים ב-Navigation עם Fragments, ניסיון לבצע ידנית פעולת
FragmentTransaction
שמוסיפה Fragment ל-back stack שלFragmentManager
יגרום עכשיו להפעלתIllegalArgumentException
. תמיד צריך להוסיף מקטעים באמצעותnavigate()
API. (I6d38e) - אם יש
navigate
שמוסיף רשומה וpopBackStack
שמסיר אותה באותו פריים, הרשומה העליונה שמתקבלת במחסנית הקודמת תחזור עכשיו באופן עקבי אלRESUMED
Lifecycle.State
. (Id8067, b/276495952)
גרסה 2.6.0-alpha09
5 באפריל 2023
androidx.navigation:navigation-*:2.6.0-alpha09
משוחרר. גרסה 2.6.0-alpha09 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנו בדיקות של מסלול לא תקין, כך שאם
NavDestination
מכילNavArgument
שלא יכול להיות null, המסלול של היעד הזה חייב להכיל placeholders לארגומנטים ששמם זהה ל-NavArgument
שלא יכול להיות null. (Ic62bf, b/274697949) - ניווטים לקישורים עמוקים שמבוססים על
Action/MimeType
ייכשלו עכשיו אם בפעולת הניווט חסרNavArgument
שאי אפשר להגדיר כ-null, שנדרש על ידיNavDestination
שאליוAction/MimeType
תואם. (Ibfa17, b/271777424) - כש-
NavController
מגדיר גרף עם אותו מסלול ויעדים כמו הגרף הקודם, הוא מחליף עכשיו כמו שצריך את הצמתים הנוכחיים בגרף ואת היעדים במחסנית החזרה במופעים חדשים. תוקן קריסה שהתרחשה כשמשתמשים ב-onLaunchSingleTop
בלי לשמור את המצב ב-Navigation Compose. בנוסף, תוקנה שגיאה שבה ניווט ליעדים שמשויכים לגרף הבסיסי יוצר מחסנית חזרה שגויה. (I5bc58, b/275258161, b/275407804)
גרסה 2.6.0-alpha08
22 במרץ 2023
androidx.navigation:navigation-*:2.6.0-alpha08
משוחרר. גרסה 2.6.0-alpha08 מכילה את הקומיטים האלה.
תכונות חדשות
-
NavHostFragment
מאפשר עכשיו לאחזר אתNavController
ברגע ש-NavHostFragment
מצורף ל-FragmentManager
, ולא רק אחריonCreate()
. (Ic6382, b/220186282)
תיקוני באגים
- תוקנה בעיה
NullPointerException
כשפותחים גרף מקונן שכולל ארגומנט שלא יכול להיות null. (6b3581, b/249988437) - כשמשתמשים בלחצן 'הקודם' של המערכת אחרי ניווט באמצעות
popUpTo
, המצב שלNavController
יקפוץ לרשומה הנכונה. (I3a8ec, b/270447657) -
FragmentNavigator
יציג עכשיו כראוי את הרשומות כשמבצעים פעולת הוצאה מהמחסנית באמצעות הכפתור 'הקודם' במערכת או באמצעותpopBackStack()
, ויקבע אם העסקה משתמשת באפקטים בשביל הפריט. (I81bdf) - הוספת פרגמנטים ל-
FragmentNavigator
'sFragmentManager
בלי להשתמש בניווט לא תגרום יותר לקריסה. (b17204, b/274167493)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Lifecycle
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
לא ניקתה את המצב השמור במנהל הרכיבים שמשויך למחסנית החזרה שנוקתה. (Ic1cce, b/271190202) - תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה להדגשה של
MenuItem
שגוי ב-BottomNavigationView
כשמשתמשים בתכונה 'חזרה למערכת' בין כרטיסיות. (I634f6, b/270447657) - תוקנה רגרסיה בגרסה 2.6.0-alpha06 שגרמה לכך שאי אפשר היה להעביר את
NavBackStackEntry
למצב RESUMED כשמשתמשים ב-Animation
. (Ib3589, b/269646882)
גרסה 2.6.0-alpha06
22 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha06
משוחרר. גרסה 2.6.0-alpha06 מכילה את הקומיטים האלה.
תכונות חדשות
- כשמציגים תצוגה מקדימה של רכיב שאפשר להרכיב עם
NavHost
, הוא יציג עכשיו אתstartDestination
של NavGraph כברירת מחדל. (I2b89f)
שינויים ב-API
- כל העומסים העודפים של
NavController
navigate
מסומנים עכשיו ב-@MainThread
כדי להבטיח שהם יופעלו בשרשור הראשי. (I2c0b0, b/263427111)
תיקוני באגים
- תוקנה קריסה שמתרחשת כשמנסים לנווט בזמן השימוש בניווט דינמי של מקטעים. (I3ee29, b/268360479)
- תוקן באג שבו ניווט אל פרגמנט אחר באמצעות לחצן החזרה של המערכת לא מעדכן את הסרגל התחתון לפריט הנבחר הנכון (If559f, b/269044426).
בעיות מוכרות
- כשמשתמשים ב-Navigation עם Fragments, מחזור החיים של
NavBackStackEntry
RESUMED
לא מגיע ל-RESUMED
כשמשתמשים ב-APIs שלAnimation
. (b/269646882) - כשמשתמשים ב-Navigation עם Fragments ומנווטים באמצעות
BottomNavigation
, אם מנסים לשחזר back stack עם כמה רשומות, ה-BottomMenuItem
לא מתעדכן בצורה נכונה. (b/270447657) - כשמשתמשים ב-Navigation עם Fragments, אחרי שמשחזרים את המצב, הפונקציה
NavBackStackEntry
Lifecycle
לא מקבלת את הערךDESTROYED
כשה-fragment שלה הואDESTROYED
. (b/270610768)
גרסה 2.6.0-alpha05
8 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha05
משוחרר. גרסה 2.6.0-alpha05 מכילה את הקומיטים האלה.
תכונות חדשות
-
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
תומכים עכשיו בנתיבים עם ארגומנטים שמולאו באופן חלקי או מלא. חשוב לשים לב שהארגומנטים צריכים להיות זהים לארגומנטים של הרשומה. (Iebd28, Ic678c, I3b37b, b/257514373) - ה-
FragmentNavigator
משתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחים חלונות קופציםNavBackStackEntries
. כלומר,NavBackStackEntry
Lifecycle
ימתין עכשיו עד שאפקטי הכניסה והיציאה של הפרגמנט יסתיימו לפני שיזיז אתLifecycle.State
הסופי. (I3cb19, b/238686802) - ה-
DialogFragmentNavigator
משתמש עכשיו בממשקי ה-API של המעברים כשמנווטים ופותחים חלונות קופציםNavBackStackEntries
. המשמעות היא שהמערכת תמתין עכשיו עד שהמצב שלDialogFragment
Lifecycle
ישתנה לDESTROYED
לפני שהיא תעבור לDESTROYED
בעצמה.NavBackStackEntry
Lifecycle
(I53ee5, b/261213893)
שינויים ב-API
-
NavigatorState
מספק עכשיו את APIprepareForTransition
כדי לאפשר ל-Navigator
להעבירNavBackStackEntries
ל-Lifecycle.State
ביניים. (I42c21, b/238686802) - עכשיו אפשר לגשת למצבור הפעולות הקודמות שמשויך לנכס
NavGraphNavigator
או לנכסComposeNavigator
דרך נכסbackstack
. ComposeNavigator
גם חושף עכשיו את הקריאה החוזרתonTransitionComplete()
כדי לסמןNavBackStackEntry
שהפעיל ניווט או פעולתpopBackStack
כהשלמה. (I02062, I718db, b/257519195)
תיקוני באגים
- מצב Navigator לא יבצע פעולה כשהמשתמשים משתמשים בממשקי ה-API של
push/popWithTransition
והערך כבר מטופל. (Iadbfa, b/261213893) - כשמשתמשים ב-
launchSingleTop
עםNavGraph
מקונן, כל היעדים שמתחילים מהיעד המקורי ועדstartDestination
שלו יתווספו רק לחלק העליון של היסטוריית החזרה. (Id4bea, b/253256629) - הניווט יחליף עכשיו את המופע
DialogFragment
בצורה תקינה כשמנווטים לאותו יעד עם הדגלlaunchSingleTop
שהערך שלו מוגדר כ-true. (I45b5a, b/149572817) - השימוש ב-SafeArgs לניווט לא יגרום יותר לשגיאת קומפילציה כשמשתמשים בארגומנטים באורך של 19 תווים בדיוק. (Id60bc, b/257110095)
גרסה 2.6.0-alpha04
9 בנובמבר 2022
androidx.navigation:navigation-*:2.6.0-alpha04
משוחרר. גרסה 2.6.0-alpha04 מכילה את הקומיטים האלה.
תכונות חדשות
- מחלקות משנה מותאמות אישית של
NavType
יכולות עכשיו לבטל את ההגדרה שלserializeAsValue
כדי לבצע סריאליזציה של ערך למחרוזת, וכך לאפשר גם סריאליזציה וגם דה-סריאליזציה (באמצעותparseValue
) שיהיו כלולות במלואן במחלקהNavType
. StringType
מחליף עכשיו את השיטה הזו כדי להתקשר אלUri.encode
ב-String
הנתון. (Ie5213, b/247637434) -
NavigationUI
מספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItem
שנבחר. (I2af5a, b/247730357)
תיקוני באגים
- קישורי עומק לניווט עוברים עכשיו ניתוח עצלני במקום ניתוח במהלך אתחול הגרף, מה שיכול לשפר את ביצועי האפליקציה בהפעלה. (Iab0ab)
- תוקנה קריסה שנגרמה מניווט למעלה אחרי קישור עומק ליעד עם ארגומנטים של ברירת מחדל מסוג null. (I51c24, b/243183636)
עדכון תלות
- התמיכה של Navigation במודולים של תכונות דינמיות תלויה עכשיו בספריית Play Feature Delivery המפורטת. (Ib4ddc)
- הפלאגין Navigation Safe Args תלוי עכשיו בגרסה 7.3.0 של Android Gradle Plugin. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ומעלה. (I47e49)
גרסה 2.6.0-alpha03
24 באוקטובר 2022
androidx.navigation:navigation-*:2.6.0-alpha03
משוחרר. גרסה 2.6.0-alpha03 מכילה את הקומיטים האלה.
תיקוני באגים
- מתוך ניווט
2.5.3
:NavHost
לא יגרום יותר לNoSuchElementException
כשאין יעד זמין לCrossfade
כדי ליצור. הוא פשוט ידלג על ההודעה. (Ieb46e, b/253299416) - מתוך ניווט
2.5.3
: תוקנה בעיה שבה מצב הטיוטה השמור (למשל, שימושים ב-rememberSaveable
) לא נשכח ולא הוסר כשיעד הוצא מהמחסנית האחורית. (I64949)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-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
ריק באמצעותnavDeepLink
Kotlin DSL יגרום עכשיו להצגת אזהרת lint שמציינת שקישור עומק צריך uri, פעולה או mimetype כדי להיות תקין. (I08d2f, b/154038883)
שינויים ב-API
- נוספה פונקציית תוסף חדשה,
NavDestination
, לניתוח תוויות דינמיות עם ארגומנטים בצורהandroid:label="{arg}"
למחרוזת. תומכת בארגומנטים מסוגReferenceType
על ידי ניתוח של ערכים מסוגR.string
לערכי המחרוזת שלהם. (I07d89, b/236269380)
שינויים בהתנהגות
- NavBackStackEntry's
arguments
ו-arguments
שמועבר ל-OnDestinationChangedListener
הם עכשיו רק עותק של הארגומנטים הבלתי ניתנים לשינוי שנוצרו כשעברתם ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישות הבאות ל-arguments
או למופעים אחרים שלOnDestinationChangedListener
. (I676f5)
תיקוני באגים
- מתוך ניווט
2.5.2
: ניווט דינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. (Ia2c16, b/240292838) - מתוך Navigation
2.5.2
: הניווט יחליף עכשיו את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו היעד ומגדירים את הדגלlaunchSingleTop
כ-true. (I5a2f1, b/237374580) - מתוך ניווט
2.5.2
: תוקן באגIllegalStateException
שנגרם מניווט לגרף עם קינון כפול שחולק הורה עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)
גרסה 2.5
גרסה 2.5.3
24 באוקטובר 2022
androidx.navigation:navigation-*:2.5.3
משוחרר. גרסה 2.5.3 מכילה את הקומיטים האלה.
תיקוני באגים
NavHost
לא יגרום יותר לNoSuchElementException
כשאין יעד זמין לחיבור שלCrossfade
. הוא פשוט ידלג על ההודעה. (Ieb46e, b/253299416)- תוקנה בעיה שבה מצב הטיוטה השמור (למשל, שימושים ב-
rememberSaveable
) לא נשכח ולא הוסר כשיעד הוצא מהמחסנית האחורית. (I64949)
גרסה 2.5.2
7 בספטמבר 2022
androidx.navigation:navigation-*:2.5.2
משוחרר. גרסה 2.5.2 מכילה את הקומיטים האלה.
תיקוני באגים
- הניווט הדינמי מנסה עכשיו להתקין יעדים של פעילות ממודולים אחרים לפני שהוא מנווט אליהם. (Ia2c16, b/240292838)
- הניווט יחליף עכשיו את מופע ה-Fragment בצורה תקינה כשמנווטים לאותו יעד ומגדירים את הדגל
launchSingleTop
כ-true. (I5a2f1, b/237374580) - תוקן באג
IllegalStateException
שנגרם מניווט לגרף עם קינון כפול שחולק הורה עם יעד התחלה חדש שנפתח בחלון קופץ. (I9f7cb, b/243778589)
עדכון תלות
- הניווט
2.5.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
של Lifecycle2.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)
תיקוני באגים
- היקפים (scopes) שניתן להרכיב ב-
NavHost
וב-DialogHost
מושמדים עכשיו בסדר הצפוי, כלומר, רכיבים פנימיים מושמדים לפני רכיבים חיצוניים. (I157e6) - התכונה Navigation SafeArgs משתמשת עכשיו ב-
PathSensitivity.RELATIVE
ב-ArgumentsGenerationTask
כדי לאפשר העברה של המטמון. המשמעות היא שאפשר עכשיו לעשות שימוש חוזר בערך במטמון מתוך בנייה של CI לבנייה מקומית. (I5f67c, b/173420454) - כלל ה-lint
UnrememberedGetBackStackEntryDetector
עודכן כדי לוודא שהקריאה ל-remember
שמקיפה את הקריאה ל-getBackStackEntry()
מעבירה גם אובייקטNavBackStackEntry
כמפתח.(Ib7081, b/227382831)
גרסה 2.5.0-beta01
20 באפריל 2022
androidx.navigation:navigation-*:2.5.0-beta01
משוחרר. גרסה 2.5.0-beta01 מכילה את הקומיטים האלה.
תיקוני באגים
-
DialogNavigator
משתמש עכשיו ב-popWithTransition
כשמבצעים שיחה ב-dismiss()
. התיקון הזה פותר מצב של תחרות (race condition) כשמשתמשים ב-ViewModel
ביעדdialog
שגורם ל-IllegalStateException
כשסוגרים את תיבת הדו-שיח באמצעות לחצן החזרה של המערכת או באמצעות הקשה מחוץ לתיבת הדו-שיח כדי לצאת. (Id7376, b/226552301)
עדכונים של יחסי תלות
- הניווט תלוי עכשיו ב-Lifecycle
2.5.0-beta01
, ומתקן אתIllegalStateException
כשמטמיעיםNavHost
בתוךNavHost
בכרטיסיית ניווט תחתונה לא ראשית כשמשתמשים בכמה מחסניות חזרה.
גרסה 2.5.0-alpha04
6 באפריל 2022
androidx.navigation:navigation-*:2.5.0-alpha04
משוחרר. גרסה 2.5.0-alpha04 מכילה את הקומיטים האלה.
שינויים ב-API
- התכונה
visibleEntries
כבר לא ניסיונית. (I4829f, b/225394514)
תיקוני באגים
- הקומפוננטה NavHost תלויה עכשיו ב-
visibleEntries
מ-NavController
כדי לקבוע אילו רשומות להוסיף לקומפוזיציה. כלומר, כשמשתמשים ב-NavHost מוטמע, האנימציה שלNavHost
הפנימי תפעל כמו שצריך. (I4ba2b, b/225394514) - הערך
visibleEntries
StateFlow
שמופיע ב-NavController
מבוסס עכשיו על מצב מחזור החיים המקסימלי של הרשומה במקום על מצב מחזור החיים הנוכחי. המשמעות היא שגם אם מחזור החיים של המארחnavController
ירד מתחת לערך STARTED, רשימת הרשומות הגלויות תישאר ללא שינוי. (I9e2a8, b/225394514) - מעכשיו אפשר להשתמש ב-
SavedStateViewFactory
עםCreationExtras
גם אם הוא אותחל עםSavedStateRegistryOwner
. אם מספקים תוספים, המערכת מתעלמת מהארגומנטים שמוגדרים בהפעלה. (I6c43b, b/224844583) - הפונקציה
NavDeepLink
יכולה עכשיו לנתח כתובות URI עם פרמטר שאילתה יחיד ללא ערך. (I0efe8, b/148905489) - מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, b/217399862)
- האפליקציה
Navigation Safe Args
לא תקרוס יותר כשמשתמשים במרחבי שמות ולא מופיעAndroidManifest.xml
. (I17ccf, b/227229815)
גרסה 2.5.0-alpha03
23 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha03
משוחרר. גרסה 2.5.0-alpha03 מכילה את הקומיטים האלה.
שינויים ב-API
- עכשיו אפשר להעביר את
CreationExtras
אלby navGraphViewModels
כדי ליצורViewModel
. (I29217, b/217618359)
תיקוני באגים
-
NavDeepLinks
תומך עכשיו בצורה תקינה בתווי שורה חדשה מוטמעים בקידוד בנתיבים או ב-URI של קישורי עומק. (I513d1, b/217815060) -
CreationExtras
יעבוד עכשיו בצורה תקינה כשמשתמשים בו עםNavBackStackEntries
כדי ליצור ViewModels. (I69161, b/217617710) - התכונה Navigation Safe Args תומכת עכשיו בשימוש במרחב השמות שמוגדר ב-
build.gradle
במקום בחבילה ב-AndroidManifest. (I659ef, b/217414933)
גרסה 2.5.0-alpha02
9 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha02
משוחרר. גרסה 2.5.0-alpha02 מכילה את הקומיטים האלה.
תיקוני באגים
- מתוך Navigation
2.4.1
: הרכיבNavHostFragment
יגדיר עכשיו אתOnBackPressedDispatcher
בצורה תקינה כשמשתמשים ב-viewbinding עם גרפים מקוננים. (Ifbb51, b/214577959) - מתוך Navigation
2.4.1
: כשמשתמשים בקישור עמוק דרך כמהNavGraph
s מוטמעים, עכשיו מחסנית החזרה כוללת כמו שצריך את יעדי ההתחלה הביניים. (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) NavDeepLink
s לא יפענח יותר את הארגומנטים פעמיים ללא צורך, כלומר הארגומנטים הנכונים מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399)
Safe Args
- התלות של Safe Args היא עכשיו בגרסה 7.0.4 של Android Gradle Plugin. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות Android Studio שקודמות לגרסה 7.0, אבל עכשיו הוא תואם ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)
גרסה 2.4.2
גרסה 2.4.2
6 באפריל 2022
androidx.navigation:navigation-*:2.4.2
משוחרר. גרסה 2.4.2 מכילה את הקומיטים האלה.
תיקוני באגים
- הוספנו תמיכה בקידוד של תווי שורה חדשה שמוטמעים בנתיבים או ב-URI של קישורי עומק. השינוי הזה הועבר מגרסה קודמת של Navigation
2.5.0-alpha03
:NavDeepLinks
. (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
s מקוננים, עכשיו מחסנית החזרה כוללת כמו שצריך את יעדי ההתחלה הביניים. (I504c0, b/214383060) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha01
: תוקנה בעיה שבה גישה ל-ViewModel שנוצר באמצעותby navGraphViewModels()
מ-Fragment שלonCreate()
נכשלת עםIllegalStateException
. (I8a14d) - הועבר מגרסה קודמת של Navigation
2.5.0-alpha01
:NavDeepLink
s כבר לא מפענח ארגומנטים פעמיים ללא צורך, כלומר הארגומנטים המפוענחים כראוי מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399) - הועבר מ-Navigation
2.5.0-alpha01
: Safe Args תלוי עכשיו בגרסה 7.0.4 של Android Gradle Plugin. המשמעות היא ש-Navigation Safe Args לא יהיה יותר תואם לגרסאות Android Studio שקודמות לגרסה 7.0, אבל עכשיו הוא תואם ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)
גרסה 2.4.0
גרסה 2.4.0
26 בינואר 2022
androidx.navigation:navigation-*:2.4.0
משוחרר. גרסה 2.4.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 2.3.0
- כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר ערך null למחלקות באמצעות generics (כמו מחלקות משנה של
NavType
). כל פונקציות ההרחבה של Kotlin שהיו חלק מארטיפקטים של-ktx
הועברו לארטיפקטים הראשיים המתאימים. פריטי ה--ktx
ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. - ארטיפקט
navigation-fragment
מכיל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעותAbstractListDetailFragment
החדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayout
כדי לנהל חלונית של רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית של פרטים, שנעשה בה שימוש ב-NavHostFragment
כהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה. - השיטה
currentBackStackEntryAsFlow()
ב-NavController
מספקתFlow
שמופעל בכל פעם ש-NavBackStackEntry
הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני שלOnDestinationChangedListener
. - החל מגרסה 2.5.0, NavController מאפשר לאחזר רשימה של כל המופעים הגלויים של
NavBackStackEntry
בתורStateFlow
באמצעות המאפיין הניסיוניvisibleEntries
. - עכשיו אפשר להרחיב את המחלקה
NavType
כדי ליצור NavTypes מותאמים אישית. סוגים מותאמים אישית נתמכים רק כשיוצרים את גרף הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. הספרייה Navigation כוללת עכשיו ממשקי API
findStartDestination()
ו-getHierarchy()
שאפשר להשתמש בהם כדי להטמיע NavigationUI בהתאמה אישית. findStartDestination()
היא פונקציית הרחבה ב-NavGraph
שתאתר את יעד ההתחלה בפועל שיוצג כשמנווטים לגרף, גם אםstartDestination
הוא בעצמוNavGraph
מקונן. getHierarchy()
היא פונקציה ב-NavDestination
שאפשר להשתמש בה כדי לבדוק אם יעד נתון נמצא בהיררכיה של יעד אחר.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
השיטות
NavigationUI
שקיבלוBottomNavigationView
עודכנו כך שהן מקבלות במקום זאת את מחלקת העל שהוצגה ב-Material1.4.0
, NavigationBarView
. כך אפשר להשתמש בשיטות האלה עםNavigationRailView
.כשמנפחים רכיב
<action>
באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנמשכים מהעיצוב באמצעות התחבירapp:enterAnim="?attr/transitionEnter"
.הכלי Safe Args יוצר עכשיו שיטה
fromSavedStateHandle()
לכל מחלקהNavArgs
. (מס' 122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
מסלולי ניווט ו-Kotlin DSL
בגרסאות קודמות של Navigation, לכל יעד היה מזהה מספר שלם קבוע שזיהה אותו באופן ייחודי מבין היעדים האחים שלו, ואפשר navigate()
ליעד הזה ישירות או באמצעות פעולה. השיטה הזו עדיין תקפה ושימושית, במיוחד במקרים שבהם מגדירים את גרף הניווט ב-XML ואפשר להשתמש בקבועי R.id
שנוצרו אוטומטית או ב-Safe Args (שמשתמש בקבועים האלה כדי ליצור קוד בזמן הבנייה). עם זאת, המערכת הזו של מספרים שלמים ייחודיים לא הצליחה לתעד את המשמעות הסמנטית ואת היכולת להביע את מה שנדרש כדי לתמוך בגרפים דינמיים לחלוטין שנבנים באופן פרוגרמטי בזמן הריצה באמצעות Navigation Kotlin DSL.
בגרסה הזו הוספנו אפשרות חדשה לזיהוי ייחודי של יעד בתרשים ניווט לפי המסלול שלו. מסלול הוא String
שמגדיר את הנתיב הייחודי ליעד. כל השיטות של Kotlin DSL שקיבלו מזהה יעד הוצאו משימוש והוחלפו ב-API מקביל שמקבל מסלול.
כל מסלול צריך להיחשב כחלק 'הנתיב' של Uri
שמגדיר את היעד הזה, למשל: home
, profile/{userId}
, profile/{userId}/friends
וכו'. כשזהות היעד משויכת לחלק ספציפי בתוכן, הארגומנטים הדינמיים האלה צריכים להיות חלק מהנתיב, בהתאם לאותם כללים של קישורים עמוקים משתמעים.
לכל ממשקי NavController
API שבעבר קיבלו רק מזהה, יש עכשיו עומס יתר שמקבל מסלול String
. זה כולל את navigate()
, popBackStack()
, popUpTo()
ו-getBackStackEntry()
.
היו לכך השלכות על ה-API:
- המאפיין
popUpTo
Kotlin ב-Kotlin DSL יצא משימוש, ועכשיו משתמשים במאפייןpopUpToId
. - הוצאנו משימוש את API
getStartDestination()
, ועברנו להשתמש ב-getStartDestinationId()
.
בניגוד לניווט לפי מזהה, ניווט לפי נתיב פועל לפי אותם כללים כמו קישורים עמוקים משתמעים, כך שאפשר לנווט ישירות לכל יעד בכל גרף מקונן, ולוודא שאפשר להשתמש בנתיבים האלה בפרויקטים עם כמה מודולים בלי להוסיף במפורש קישור עמוק גלוי חיצוני לכל יעד.
Navigation Compose
ארטיפקט navigation-compose
מספק שילוב בין רכיב הניווט לבין Jetpack Compose. היא משתמשת בפונקציות @Composable
כיעדים באפליקציה.
הגרסה הזו כוללת:
- קומפוזבל
NavHost
שמאפשר ליצור את גרף הניווט באמצעות Kotlin DSL, עם יעדים שלcomposable
ו-dialog
, וגם תמיכה ברכיבי Navigators אופציונליים, כמו אלה מ-Accompanist Navigation Material. - תמיכה חובה בהחלפה הדרגתית בין יעדים. אפשר להשתמש באנימציה של מעבר בין דפים כדי לשלוט במעברים של כניסה ויציאה באמצעות ממשקי API ניסיוניים של Compose.
- הגדרת היקף של
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.
Multiple back stacks
ה-NavController אחראי לניהול ערימת החזרה של היעדים, להוספת יעדים לערימת החזרה כשמבצעים navigate()
אליהם ולהסרתם כשמפעילים את popBackStack()
או את לחצן החזרה של המערכת. ההרחבה של המחלקה הקיימת NavOptions
והשילוב שלה ברכיבי <action>
ב-XML של גרף הניווט מאפשרים לשמור ולשחזר את מחסנית החזרה.
כחלק מהשינוי הזה, השיטות NavigationUI
של onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ו-NavigationView.setupWithNavController()
שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוצאו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה ערימות של היסטוריית חזרה.
ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:
ב-XML של הניווט, הרכיב
<action>
יכול עכשיו להשתמש במאפיינים הבוליאנייםapp:popUpToSaveState
ו-app:restoreState
כדי לשמור את המצב של כל היעדים שהוצגו באמצעותapp:popUpTo
ולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
ב-
navOptions
Kotlin DSL, אפשר להוסיף את הנכס הבוליאניrestoreState
ואת הנכס הבוליאניsaveState
ב-popUpTo
builder:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
כשיוצרים אובייקט
NavOptions
באופן ידני באמצעותNavOptions.Builder
, אפשר להשתמש ב-setRestoreState()
וב-overload החדש כדיsetPopUpTo()
שדורש פרמטר נוסף שלsaveState
.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
עכשיו אפשר לכלול פרמטר נוסף בקריאות פרוגרמטיות אל
popBackStack()
.saveState
אתם יכולים להשתמש בשיטה
clearBackStack()
כדי לנקות כל מצב שנשמר באמצעותpopBackStack()
אוpopUpToSaveState
.
בכל המקרים, NavController
ישמור וישחזר את המצב של כל NavBackStackEntry
, כולל מופעים של ViewModel
שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator
עודכנו כדי לאפשר לכל Navigator
לתמוך בשמירה ובשחזור של המצב שלו.
שינויים בהתנהגות
-
NavDeepLinkBuilder
מוסיף עכשיו אתPendingIntent.FLAG_IMMUTABLE
ל-PendingIntent
שמוחזר על ידיcreatePendingIntent()
, כדי להבטיח שה-API הזה יפעל כמצופה כשמטרגטים ל-Android 12. - הניווט תלוי עכשיו במחזור החיים
2.3.1
, ועכשיו מסומניםsetGraph()
,popBackStack()
,navigateUp()
ו-navigate()
, השיטות שמעדכנות אתNavBackStackEntry
Lifecycle
, בתור@MainThread
, בהתאם לאכיפה של השרשור הראשי שהוצגה במחזור החיים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 Plugin מגרסה 7.1.0 ואילך. (b/213086135) - קישורי עומק עם כמה תרשימי ניווט מקוננים לא יוצרים נכון את מחסנית החזרה המלאה. (b/214383060)
גרסה 2.4.0-rc01
15 בדצמבר 2021
androidx.navigation:navigation-*:2.4.0-rc01
משוחרר. גרסה 2.4.0-rc01 מכילה את הקומיטים האלה.
שינויים בהתנהגות
NavDeepLink
ארגומנטים שנותחו מתייחסים עכשיו לסימני סולמית באותו אופן שבו הם מתייחסים לסימני שאלה כמפריד בין ארגומנטים. (I21309, b/180042703)
תיקוני באגים
- הקישורים העמוקים כבר לא יתעלמו מארגומנטים עם ערכים שזהים לשם של הפלייסהולדר. (If8017, b/207389470)
- אחרי ש-
NavController
ישוחזר, הוא לא יקרוס יותר כשפותחים יעד מקונן באמצעות מעברים.NavController
(I0f7c9, b/205021623) - אם משתמשים ב-
startDestination
לא תקין, הודעת השגיאה תציג כברירת מחדל את המסלול של יעד ההתחלה, אם הוא זמין. (I86b9d, b/208041894)
תיקוני באגים ב-Navigation Compose
- תוקנה קריסה פוטנציאלית שנגרמה כתוצאה ממעבר מהיר בין יעד ההתחלה ליעד אחר באמצעות פריטים בתפריט הניווט התחתון. (Ic8976, b/208887901)
- דיאלוגים של יעד משוחזרים עכשיו בצורה תקינה בחלק העליון של המסך אחרי שינויים בהגדרות או אחרי שהתהליך הסתיים. (I4c0dc, b/207386169)
- תוקנה בעיה שגרמה לכך שניסיון לאחזר
ViewModel
מ-NavBackStackEntry
של תיבת דו-שיח נכשל כשהתיבה נסגרה. (I6b96d, b/206465487) - תוקנה בעיה שקרתה כשמשתמשים ב
activity
יעדים עםNavHost
של Navigation Compose, שגרמה להרכבות חוזרות אינסופיות. (I8f64c) - תוקנה דליפה ב-Navigation Compose שבה נשמרת הפניה לפעילות הישנה אחרי שינוי בהגדרות או סיום התהליך. (I4efcb, b/204905432)
תיקוני באגים ב-Safe Args
SafeArgs
לא קורס יותר כשמנסים לשחזר מערכים מותאמים אישית של parcelable אחרי שהתהליך הסתיים. (I618e8, b/207315994)- תוקן באג ב-safe args שלא אפשר למערכים בוליאניים לקבל ערך של
null
. (I8c396, b/174787525)
גרסה 2.4.0-beta02
3 בנובמבר 2021
androidx.navigation:navigation-*:2.4.0-beta02
משוחרר. גרסה 2.4.0-beta02 מכילה את הקומיטים האלה.
שינויים ב-API
- כשמטפלים בקישורים עמוקים מפורשים ומשתמעים, עכשיו נוסף אוטומטית הדגל
saveState
כשעוברים לגרף אחר. כך קוד כמוNavigationUI.setupWithNavController
וקוד שמשתמש בכמה מחסניות חזרה פועלים כמצופה. (Ic8807)
שינויים בהתנהגות
- תבניות של קישורי עומק עוברות עכשיו קומפילציה עצלה ב-NavDeepLink במקום במהלך הניפוח. השינוי הזה אמור לשפר את זמן הניפוח של תרשימי ניווט שכוללים קישורי עומק. (b8d257, b/184149935)
תיקוני באגים
- תוקנה בעיה שבה רשומות NavBackStackEntries נדחפו למטה אל
Lifecycle.State.CREATED
אחרי מעבר אלLifecycle.State.STARTED
כש-NavHost
נוסף ישירות אלsetContent()
של הפעילות. (Ia5ac1, b/203536683) - תוקן מצב race condition שבו הסרת יעד של
DialogFragment
ממחסנית החזרה לפני שהתיבה הדו-שיח הוצגה בפועל לא גרמה לסגירת התיבה, וכתוצאה מכך התרחשה קריסה כשהמשתמש סגר את התיבה באופן ידני. (I687e5) - תוקנה בעיה שבה
onNavDestinationSelected
API ב-NavigationUI
החזירtrue
גם אם בפועל לאnavigate()
לתרשים הניווט הזה. היא פועלת עכשיו לפי אותה לוגיקה שמשמשת אתsetupWithNavController
באופן פנימי, כדי לבחור רק אתMenuItem
שמשויך ליעד הנוכחי באמצעותhierarchy
של היעד. (I2b053)
גרסה 2.4.0-beta01
27 באוקטובר 2021
androidx.navigation:navigation-*:2.4.0-beta01
משוחרר. גרסה 2.4.0-beta01 מכילה את הקומיטים האלה.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
by navGraphViewModel
עם מסלול כחלופה לשימוש במזהה, כדי לשפר את התמיכה בשימוש ב-Navigation Kotlin DSL עם Fragments. (I901e3, b/201446416)
שינויים ב-API
- ממשק ה-API של
visibleEntries
נמצא עכשיו בשלב ניסיוני. (I93f6f)
תיקוני באגים
- מודלים של תצוגות לא יושמדו יותר כשמעברים מופרעים על ידי ניווט קדימה ואחורה בין אותם מסכים (Id52d8, b/200817333)
- כשמוסיפים קישורי עומק ל-
NavDestination
, לא צריך יותר להגדיר ערך ברירת מחדל לארגומנטים מסוג NullableNavDeepLink
. (I5aad4, b/201320030) - NavBackStackEntries עם מחזורי חיים שונים לא נחשבים יותר שווים. המשמעות היא שרכיב NavHost יבצע קומפוזיציה מחדש של כל היעדים בצורה תקינה כשמבצעים ניווט באמצעות singleTop, וכשבוחרים מחדש פריטים בתפריט התחתון. (I1b351, b/196997433)
- תוקנה בעיה ב-
AbstractListDetailFragment
שגרמה לטיפול שגוי במאפייניםlayout_width
ו-layout_weight
בחלונית הרשימה שהוחזרה על ידיonCreateListPaneView()
, או להתעלמות מהם. (f5fbf3) - המצב החזותי של יעדי הדיאלוג נשאר עכשיו מסונכרן עם המצב של
DialogFragmentNavigator
. המשמעות היא שקריאה ידנית ל-dismiss()
API האסינכרוני של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
שמוחזר כדי לתמוך טוב יותר ברכיבי ניווט אופציונליים כמו אלה של Accompanist Navigation Material. (I4619e)
תיקוני באגים
- הניווט הדינמי לא יקרוס יותר כשהפעילות תיווצר מחדש. (Ifa6a3, b/197942869)
- תוקנה בעיה בכפתור הקודם של המערכת שמתרחשת רק אחרי חזרה ל-composable destination שמכיל
NavHost
. (3ed148, b/195668143) - SafeArgs יוצר עכשיו את הארגומנטים של
fromBundle()
ושלfromSavedStateHandle()
בסדר הפרמטרים הנכון. (I824a8, b/200059831)
גרסה 2.4.0-alpha09
15 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha09
משוחרר. גרסה 2.4.0-alpha09 מכילה את הקומיטים האלה.
תכונות חדשות
- עכשיו אפשר להשתמש בשיטה
clearBackStack()
כדי לנקות כל מצב שנשמר באמצעותpopBackStack()
אוpopUpToSaveState
. (I80a0f) - מעכשיו אפשר להעביר רשימה של ארגומנטים ו/או קישורים עמוקים לבונה של גרף הניווט המקונן, והם יתווספו אוטומטית לגרף שיתקבל. (I8a470, b/182545357)
שינויים ב-API
- הפונקציה
navArgument
Kotlin DSL היא עכשיו חלק מ-navigation-common
במקום מ-navigation-compose
. כדי להמשיך להשתמש בפונקציה הזו, צריך לעדכן את ההצהרות import. (I1d095)
שינויים בהתנהגות
- כשיוצרים ארגומנטים, Safe Args ממקם עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל. (I89709, b/198493585)
תיקוני באגים
- כשמשתמשים ב-Navigation Compose, NavGraphs יהיו
DESTROYED
רק אחרי שכל הצאצאים שלהם יהיוDESTROYED
. (I86552, b/198741720) - לא צריך יותר לציין ערך ברירת מחדל לארגומנטים מסוג
NavDeepLink
שאפשר להגדיר להם ערך null. (Ia14ef, b/198689811) - קריאה ל-
setGraph()
עם גרף חדש תנקה עכשיו גם את כל ערימות החזרה שנשמרו, בנוסף להתנהגות הקודמת של הוצאת ערימת החזרה. (I97f96) - תוקנה בעיה שבה לא נשלחה הודעה למופעים של
OnDestinationChangedListener
ול-currentBackStackEntryFlow
כשנעשה שימוש ב-launchSingleTop
. (Iaaebc)
עדכונים של יחסי תלות
- הניווט ב-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()
, לא יגרום יותר לחריגה כי אין יעד במחסנית האחורית. (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
s, כלומר שימוש ב-NavHost
בקטע קוד יגרום עכשיו להרכבה מחדש תקינה כשהמחזור משתנה, במקום להציג מסך ריק. (I4eb85, b/195864489) - תוקנה בעיה שבה סגירה של
DialogFragment
לא עדכנה את הסטטוס שלNavController
בצורה נכונה אחרי יצירה מחדש של הפעילות (כלומר, אחרי שינוי בהגדרה). (Icd72b) - תוקנה בעיה שבה כשמוציאים יעד של תיבת דו-שיח מהמחסנית, הטיפול בלחצן 'הקודם' במערכת של NavController לא מתעדכן, ולכן יכול להיות ש-NavController מיירט את לחצן 'הקודם' למרות שאין לו מחסנית חזרה להוציא ממנה. (If3b34)
- הספרייה Safe-args יוצרת עכשיו באופן אוטומטי שיטה לארגומנטים שאפשר להשתמש בה כדי לבדוק את הקוד
ViewModel
.toSavedStateHandle
(If1e2d, b/193353880)
גרסה 2.4.0-alpha06
4 באוגוסט 2021
androidx.navigation:navigation-*:2.4.0-alpha06
משוחרר. גרסה 2.4.0-alpha06 מכילה את הקומיטים האלה.
שינויים ב-API
- השמות של השיטות
requireSlidingPaneLayout()
ו-requireDetailPaneNavHostFragment()
ב-AbstractListDetailFragment
השתנו ל-getSlidingPaneLayout()
ו-getDetailPaneNavHostFragment()
, בהתאמה. (I34a08)
שינויים בהתנהגות
- כשמנווטים עם אנימציות (כמו
Crossfade
), ה-Lifecycle
של היעד החדש יגיע עכשיו רק ל-RESUMED
כשהאנימציה תושלם. (If0543, b/172112072, b/194301889) - ה-Compose של Navigation
NavHost
מגדיר עכשיו את הגרף כחלק מהקומפוזיציה הראשונה. (Ieb7be)
תיקוני באגים
- הסרת היעד האחרון מגרף ניווט כבר לא גורמת לשגיאה
ClassCastException
. (If0543, b/172112072, b/194301889) - תוקן באג
NullPointerException
שהתרחש כשמוסיפים קישור עומק בליUri
ועוברים דרך מסלול או קישור עומק. (938a0c, b/193805425) - תוקנה בעיה ב-Navigation Compose שבה קישור עומק
NavBackStackEntry
לא הגיע למצבRESUMED
. (I192c5) - תוקנה הבעיה שבה הסרת יעד של תיבת דו-שיח לא עדכנה את הטיפול של NavController בלחצן 'הקודם' במערכת, ולכן יכול להיות ש-NavController ייעץ ללחצן 'הקודם' למרות שאין לו מחסנית חזרה להסרה. (aosp/1782668)
גרסה 2.4.0-alpha05
21 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha05
משוחרר. גרסה 2.4.0-alpha05 מכילה את הקומיטים האלה.
שינויים בהתנהגות
- הספרייה Navigation Compose
NavHost
משתמשת עכשיו תמיד בהעברה הדרגתית כשעוברים בין יעדים. (I07049, b/172112072) - עכשיו אפשר לבצע שינויים בתרשים של NavHost. תרשימים
עם אותו startDestination ויעדים בתרשים ייחשבו
שווים ולא ינקו את
NavController
back stack. (I0b8db, b/175392262)
תיקוני באגים
- תוקנה בעיה שגרמה ל
NoSuchElementException
כשמתקשרים אלpopBackStack()
מתוךLifecycleObserver
שמצורף אלNavBackStackEntry
, בגלל עדכונים חוזרים למצב של NavController. (I64621) -
AbstractListDetailFragment
מאפשרת עכשיו להסיר לגמרי אתSlidingPaneLayout
מה-APK כשלא נעשה שימוש ב-AbstractListDetailFragment
. (I611ad) - השיטות
NavGraph
ו-NavDestination
מחליפות עכשיו את שיטת השוויון, כך ששני אובייקטים עם אותם ערכים ייחשבו שווים. (I166eb, b/175392262)
גרסה 2.4.0-alpha04
1 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha04
משוחרר. גרסה 2.4.0-alpha04 מכילה את הקומיטים האלה.
תכונות חדשות
- ארטיפקט
navigation-fragment
מכיל עכשיו הטמעה מוכנה מראש של פריסת שני חלונות באמצעותAbstractListDetailFragment
החדש. בקטע הקוד הזה נעשה שימוש ב-SlidingPaneLayout
כדי לנהל חלונית של רשימה (שמסופקת על ידי מחלקת המשנה) וחלונית של פרטים, שנעשה בה שימוש ב-NavHostFragment
כהטמעה שלה, כפי שניתן לראות בדוגמה להטמעה. (Iac4be, b/191276636) - הארטיפקט
NavHost
שלnavigation-compose
תומך עכשיו ביעדים מסוגdialog
בנוסף ליעדים מסוגcomposable
. כל אחד מהיעדים של תיבת הדו-שיח יוצג בתוך רכיב ComposableDialog
, מעל היעד הנוכחי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) - תוקנה רגרסיה שהוצגה בניווט
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)
בעיה ידועה
- השימוש ב-Safe Args ייכשל עם שגיאה
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
כשמשתמשים ב-Gradle6.7.0
בגלל תלות בגרסה ישנה יותר של Kotlin. כדי לפתור את הבעיה, צריך לעדכן לגרסה Gradle 7.0. (b/190739257)
גרסה 2.4.0-alpha02
2 ביוני 2021
androidx.navigation:navigation-*:2.4.0-alpha02
משוחרר. גרסה 2.4.0-alpha02 מכילה את הקומיטים האלה.
תכונות חדשות
- יש עכשיו תמיכה במסלולים ליעדים Activity, Fragment ו-Dialog, וגם בכל ה-DSL של DynamicNavigation Kotlin. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
-
NavigationUI
הוסיף באופן זמני ממשקי API ניסיוניים כדי לאפשר ביטול של שמירת המצב. למרות ששמירת המצב תמיד היא ההתנהגות הנכונה, עדיין יש שימושים בספריות שהוצאו משימוש (כלומר, שברים שנשמרו), שלא ניתן לתמוך בהם בעת שמירת המצב, ולכן יש הזדמנות לאפליקציות לעבור בהדרגה מכל ממשקי 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
. כך אפשר להשתמש בשיטות האלה עם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 מכילה את הקומיטים האלה.
תכונות חדשות
- השיטה
currentBackStackEntryAsFlow()
ב-NavController
מספקתFlow
שמופעל בכל פעם ש-NavBackStackEntry
הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני שלOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Multiple back stacks
ה-NavController אחראי לניהול ערימת החזרה של היעדים, להוספת יעדים לערימת החזרה כשמבצעים navigate()
אליהם ולהסרתם כשמפעילים את popBackStack()
או את לחצן החזרה של המערכת. המחלקות הקיימות NavOptions
והשילוב שלהן ברשומות <action>
בקובץ ה-XML של תרשים הניווט הורחבו כדי לתמוך בשמירה ובשחזור של ערימת החזרה. (b/80029773)
כחלק מהשינוי הזה, השיטות NavigationUI
של onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ו-NavigationView.setupWithNavController()
שומרות עכשיו באופן אוטומטי את המצב של יעדים שהוצאו מהמחסנית ומחזירות אותו, וכך מאפשרות תמיכה במספר מחסניות חזרה בלי לבצע שינויים בקוד. כשמשתמשים ב-Navigation עם Fragments, זו הדרך המומלצת לשילוב עם כמה ערימות של היסטוריית חזרה. (Ie07ca)
ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים דרך מספר פלטפורמות:
ב-XML של הניווט, הרכיב
<action>
יכול עכשיו להשתמש במאפיינים הבוליאנייםapp:popUpToSaveState
ו-app:restoreState
כדי לשמור את המצב של כל היעדים שהוצגו באמצעותapp:popUpTo
ולשחזר את המצב שמשויך ליעד שהועבר כ-app:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
ב-
navOptions
Kotlin DSL, אפשר להוסיף את הנכס הבוליאניrestoreState
ואת הנכס הבוליאניsaveState
ב-popUpTo
builder:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
כשיוצרים אובייקט
NavOptions
באופן ידני באמצעותNavOptions.Builder
, אפשר להשתמש ב-setRestoreState()
וב-overload החדש כדיsetPopUpTo()
שדורש פרמטר נוסף שלsaveState
.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
עכשיו אפשר לכלול פרמטר נוסף בקריאות פרוגרמטיות אל
popBackStack()
.saveState
בכל המקרים, NavController
ישמור וישחזר את המצב של כל NavBackStackEntry
, כולל מופעים של ViewModel
שמוגדרים בהיקף של יעד ניווט. ממשקי ה-API של Navigator
עודכנו כדי לאפשר לכל Navigator
לתמוך בשמירה ובשחזור של המצב שלו.
ה-ComposeNavigator
שמשמש ליעדי composable
ב-Navigation Compose, וגם ה-FragmentNavigator
וה-DynamicFragmentNavigator
שמשמשים ליעדי <fragment>
ב-Navigation עם Fragments, עודכנו כך שישתמשו בממשקי ה-API החדשים של Navigator ויאפשרו שמירה ושחזור של מצב.
מסלולי ניווט
מסלול הוא String
שמזהה יעד באופן ייחודי. בעבר, נעשה שימוש במושג הזה רק ב-Navigation Compose, אבל עכשיו הוא הפך לחלק מממשקי ה-API הבסיסיים של Navigation. האפשרות הזו מספקת חלופה לשימוש במזהים מספריים כשיוצרים את הגרף באמצעות Navigation Kotlin DSL. (b/172823546)
לכל ממשקי ה-API שבעבר קיבלו רק מזהה יש עכשיו עומס יתר שמקבל נתיב String
. זה כולל את navigate()
, popBackStack()
, popUpTo()
ו-getBackStackEntry()
.
היו לכך השלכות על ה-API:
- המאפיין
popUpTo
kotlin ב-Kotlin DSL יצא משימוש, ועכשיו צריך להשתמש במאפייןpopUpToId
. (I59c73, b/172823546) - הוצאנו משימוש את API
getStartDestination()
, ועברנו להשתמש ב-getStartDestinationId()
. (I0887f, b/172823546)
למפתחים שמשדרגים מגרסאות קודמות של Navigation Compose ל-Navigation Compose 2.4.0-alpha01
, המשמעות היא שהייבוא הבא של שיטות ההרחבה כבר לא נחוץ וצריך להסיר אותו:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
הארגומנט KEY_ROUTE
הוחלף במאפיין route
ב-NavDestination
, כך שאפשר לקרוא ישירות ל-navBackStackEntry.destination.route
.
שינויים ב-API
- כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של Navigation נכתבו מחדש ב-Kotlin. השינוי הזה שיפר את האפשרות להגדיר ערך null למחלקות באמצעות generics (כמו מחלקות משנה של
NavType
). כל פונקציות ההרחבה של Kotlin שהיו חלק מארטיפקטים של-ktx
הועברו לארטיפקטים הראשיים המתאימים. פריטי ה--ktx
ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. (b/184292145) -
NavDeepLinkBuilder
תומך עכשיו בהוספה של כמה יעדים שונים למערך הפעולות הקודמות שנוצר. (I3ee0d, b/147913689) - הוספת פונקציות factory ל-
DynamicNavHostFragment
(Icd515, b/175222619) - המזהה הייחודי של
NavBackStackEntry
מוצג עכשיו כחלק מה-API הציבורי שלו. (Ie033a) - השדות
name
ו-argument
ופונקציות הפירוק שלNamedNavArgument
הם עכשיו ציבוריים. (#174, b/181320559) - הוספנו תוסף חדש,
NavBackStackEntry#provideToCompositionLocals
, שמספק אתNavBackStackEntry
ללוקאלים הרלוונטיים של היצירה. (#175, b/187229439)
Safe Args
הכלי Safe Args יוצר עכשיו שיטה
fromSavedStateHandle()
לכל מחלקהNavArgs
. (מס' 122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
העדכון של Safe Args תלוי ב-KotlinPoet
1.8.0
. (#172, b/183990444)
שינויים בהתנהגות
- הניווט תלוי עכשיו במחזור החיים
2.3.1
, ועכשיו מסומניםsetGraph()
,popBackStack()
,navigateUp()
ו-navigate()
, השיטות שמעדכנות אתNavBackStackEntry
Lifecycle
, בתור@MainThread
, בהתאם לאכיפה של השרשור הראשי שהוצגה במחזור החיים2.3.0
. (b/171125856) - ניתוח של ארגומנטים מסוג Enum מקישורי עומק הוא עכשיו לא תלוי באותיות רישיות, כך שקישור עומק כמו
http://www.example.com/red
יכול להתאים לקישור עומקwww.example.com/{color}
גם אם ה-Enum מכיל את הערךRED
. (מס' 152, b/135857840)
תאימות של Compose
-
androidx.navigation:navigation-compose:2.4.0-alpha01
תואם רק ל-Compose מגרסה1.0.0-beta07
ואילך.
תיקוני באגים
- תוקנה בעיה שבה מצייני מיקום של ארגומנטים מסוג trailing קיבלו עדיפות על פני קישורי עומק עם סיומת תואמת. (מס' 153, b/184072811)
-
NavHostFragment
תומך עכשיו ב-Navigators מותאמים אישית שמשתמשים באותו@Navigator.Name("dialog")
כמוDialogFragmentNavigator
שמוגדר כברירת מחדל. (Ib1c2c, b/175979140) - שופרה ההתנהגות של
NavigatorProvider#addNavigator
כדי לוודא שקריאה חוזרת לאותו מופע לא תגרום לבעיות. (מס' 176, b/187443146)
פריטי תוכן חיצוניים שהוספת
- תודה ל-simonschiller על הוספת תמיכה ב-Safe Args, שיוצרת שיטה
fromSavedStateHandle()
לכל מחלקהNavArgs
. (מס' 122, b/136967621) - תודה ל-Bradleycorn על כך שדאג שניתן יהיה לנתח ארגומנטים של Enum מקישורי עומק בלי להתחשב באותיות רישיות או קטנות. (מס' 152, b/135857840)
- תודה ל-osipxd על תיקון בעיה שבה 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)
ניווט ב-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
מאכלס עכשיו אתLocalSavedStateRegistryOwner
CompositionLocal עםNavBackStackEntry
של היעד הזה, וכך מוודא שכל מצב שנשמר ישירות ב-SavedStateRegistry
יישמר וישוחזר לצד היעד. (I435d7, b/179469431)
גרסה 1.0.0-alpha07
10 בפברואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
משוחרר. גרסה 1.0.0-alpha07 מכילה את הקומיטים האלה.
עדכונים של יחסי תלות
- 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
- נוספה שיטת הרחבה
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 נוספה ל-Navigation Compose (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 Compose. היא משתמשת בפונקציות @Composable
כיעדים באפליקציה.
הגרסה הראשונית הזו כוללת:
- רכיב
NavHost
שאפשר להשתמש בו כדי ליצור גרף ניווט באמצעות Kotlin DSL. - הגדרת ההיקף של מחזור החיים,
ViewModel
והמצב שנשמר ברמת היעד. - שילוב אוטומטי עם כפתור החזרה של המערכת.
- תמיכה בהעברת ארגומנטים, בצירוף קישורי עומק ליעדים ובהחזרת תוצאה ליעדים קודמים.
- אפשר ליצור פונקציות עזר ספציפיות ב-
rememberNavController()
וב-currentBackStackEntryAsState()
כדי לאפשר העברת מצב וחיבור שלNavController
לרכיבים שאפשר להרכיב מחוץ ל-NavHost
(כמו סרגל ניווט תחתון).
מידע נוסף זמין במדריך בנושא ניווט ב-Compose.
גרסה 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, ועכשיו הוא מיירט כראוי את הפעולה 'חזרה' אחרי שה-Activity Lifecycle הואSTOPPED
, ואזSTARTED
(Iff94f, b/182284739) - ניתוח של דומיין קישור עומק לא תלוי יותר באותיות רישיות, כך ש-
www.example.com
תואם גם ל-www.example.com
וגם ל-www.Example.com
. חשוב לזכור שבשמות של פרמטרים של שאילתות עדיין יש הבחנה בין אותיות רישיות לרגילות. (מס' 144, b/153829033) - תוקנה בעיה
NullPointerException
שיכולה להתרחש כשליעד יש כמה ארגומנטים שאי אפשר להגדיר להם ערך null, ואתם עוברים ליעד הזה תוך כדי החלפה של קבוצת משנה של הארגומנטים האלה. (aosp/1644827)
עדכונים של יחסי תלות
- הפלאגין Navigation Safe Args Gradle תלוי עכשיו בפלאגין Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
External Contribution
- תודה
bentrengrove
על בקשת המיזוג שגורמת לניתוח של דומיין קישור עומק להיות לא תלוי באותיות רישיות. (מס' 144, b/153829033)
גרסה 2.3.4
גרסה 2.3.4
10 במרץ 2021
androidx.navigation:navigation-*:2.3.4
משוחרר. גרסה 2.3.4 מכילה את הקומיטים האלה.
תכונות חדשות
- אפשר עכשיו לנתח ארגומנטים של
ReferenceType
בצורה תקינה כשהם נשלחים כחלק מ-URI של קישור עמוק. הפונקציה תומכת גם בערך השלם הגולמי וגם בערכים הקסדצימליים עם הקידומת0x
. (#127, b/179166693) - הפונקציה
android:defaultValue
לארגומנט עםapp:argType="float"
תומכת עכשיו בערכי ברירת מחדל של מספרים שלמים, כך שאפשר להשתמש ב-android:defaultValue="0"
במקום ב-0.0
. (#117, b/173766247)
תיקוני באגים
- תיקון התקדמות התקנה תקועה כשמשתמשים בתמיכה של Navigation בתכונות דינמיות. (Ib27a7, b/169636207)
- שיחה אל
setViewModelStore
או אלsetLifecycleOwner
עם אותו אובייקט שכבר הוגדר תהיה עכשיו פעולה שלא תתבצע (Idf491, b/177825470) - הספרייה Safe-Args מוסיפה עכשיו הערות לביטול אזהרות בשיטות המתאימות כשמשתמשים ב-Java. (I8fbc5, b/179463137)
פריטי תוכן חיצוניים שהוספת
- תודה
JvmName
על בקשת המיזוג כדי לוודא שאפשר עכשיו לנתח כמו שצריך את הארגומנטים שלReferenceType
כששולחים אותם כחלק ממזהה URI של קישור עומק. (#127, b/179166693) - תודה
tatocaster
על בקשת המיזוג שמאפשרת ל-defaultValue
לארגומנט עםapp:argType=”float”
לתמוך עכשיו בערכי ברירת מחדל של מספרים שלמים. (#117, b/173766247)
גרסה 2.3.3
גרסה 2.3.3
27 בינואר 2021
androidx.navigation:navigation-*:2.3.3
משוחרר. גרסה 2.3.3 מכילה את הקומיטים האלה.
תיקוני באגים
- אין יותר קריסה כשמציגים
NavBackStackEntry
לפני ש-Lifecycle
שלו מועבר אלCREATED
. (Ie3ba3) - תוקנה רגרסיה שנגרמה בגלל b/171364502, שבה ניווט לפעילות עם ערך משאב אנימציה של
0
גרם ל-ResourceNotFoundException
. (I7aedb, b/176819931)
גרסה 2.3.2
גרסה 2.3.2
2 בדצמבר 2020
androidx.navigation:navigation-*:2.3.2
משוחרר. גרסה 2.3.2 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה רגרסיה ב-
NavigationUI
שבה ניסיון להשתמש ביעד<activity>
עםonNavDestinationSelected
נכשל בניסיון לנווט אל הפעילות. (I22e34, b/171364502) - תוקנה בעיה שבה לחיצה על
navigation-dynamic-features-fragment
הייתה גורמת למעבר ליעד שהותקן לאחרונה מספר פעמים. (aosp/1486056, b/169636207) - תוקנה הבעיה שבה ארגומנטים שמוגדרים כברירת מחדל לא נשלחו למופעים של
OnDestinationChangedListener
כשנעשה שימוש ב-launchSingleTop
. (I2c5cb) - תוקנה בעיה שבה ניווט לתרשים ניווט מקונן לא יצר מופע תרשים חדש במחסנית הקודמת. (Ifc831)
- תוקנה הבעיה שבה שימוש ב-
navigate()
עםpopUpTo
שהסיר את היעד האחרון בתרשים ניווט לא גרם להרס מיידי של תרשים הניווט עצמו ולהסרתו ממחסנית החזרה. (I910a3) - Navigation SafeArgs משתמש עכשיו ב-KotlinPoet בגרסה 1.7.2, שמוסיפה תמיכה במצב ה-API המפורש של Kotlin. (I918b5)
-
NavHostFragment.findNavController(Fragment)
בודק עכשיו גם את תצוגת העיצוב של רכיב DialogFragment, בנוסף לבדיקות הקיימות של היררכיית Fragment והיררכיית התצוגה של Fragment. כך תוכלו לבדוק קטעי דיאלוג שמשתמשים ב-Navigation עםFragmentScenario
ו-Navigation.setViewNavController()
. (I69e0d)
גרסה 2.3.1
גרסה 2.3.1
14 באוקטובר 2020
androidx.navigation:navigation-*:2.3.1
משוחרר. גרסה 2.3.1 מכילה את הקומיטים האלה.
תכונות חדשות
- משאבי ברירת המחדל של Animator נוספו לממשק המשתמש של Navigation, ומומלץ להשתמש בהם במקום במשאבי ברירת המחדל של האנימציה. (b/167430145)
- האובייקט NavOptions מחליף עכשיו את השיטות hashcode ו-equals (b/161586466)
- הניווט כולל עכשיו את היעד הנוכחי ב-IllegalArgumentException 'אין יעד עם מזהה', מה שאמור לשפר את חוויית הניפוי באגים של המפתחים. (b/168311416)
תיקוני באגים
- הפונקציה Safe Args לא תעטוף יותר את שורת ההחזרה, גם אם שם מחלקת הארגומנט שנוצר ארוך מ-100 תווים. (b/168584987)
שינויים בתלות
-
navigation-ui
תלויה עכשיו ב-DrawerLayout 1.1.1, מה שמבטיח ש-NavigationUI
יכולה לפתוח את חלונית ההזזה גם כשמשתמשים ב-LOCK_MODE_LOCKED_CLOSED
או ב-LOCK_MODE_LOCKED_OPEN
. (b/162253907) - Safe Args תלוי עכשיו ב-KotlinPoet 1.6.0 (aosp/1435911)
- התלות של Safe Args היא עכשיו ב-AGP 4.0.1 (aosp/1442337)
גרסה 2.3.0
גרסה 2.3.0
24 ביוני 2020
androidx.navigation:navigation-*:2.3.0
משוחרר. גרסה 2.3.0 מכילה את הקומיטים האלה.
שינויים משמעותיים מאז גרסה 2.2.0
- שילוב של מודול תכונות: ארטיפקטים מסוג
navigation-dynamic-features-runtime
ו-navigation-dynamic-features-fragment
מאפשרים לנווט ליעדים שמוגדרים במודולים של תכונות, ומטפלים אוטומטית בהתקנה של מודולים של תכונות לפי הצורך. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות. - בדיקת ניווט: ארטיפקט
navigation-testing
מספקTestNavHostController
שמאפשר להגדיר את היעד הנוכחי ולאמת את מחסנית החזרה אחרי פעולות ניווט. מידע נוסף זמין במאמר בדיקת ניווט. - החזרת תוצאה: ה-
NavBackStackEntry
שמשויך לכל יעד במחסנית הקודמת של הניווט מאפשר עכשיו גישה אלSavedStateHandle
שמתאים לאחסון של כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במחסנית הקודמת. מידע נוסף זמין במאמר החזרת תוצאה ליעד הקודם. - תמיכה ב-
NavigationUI
Openable
: כל השימושים ב-DrawerLayout
ב-NavigationUI
הוחלפו בממשק הגנרי יותרOpenable
שנוסף ב-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) -
OnDestinationChangedListener
instances שנרשמו לפני הקריאה ל-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
שהיה זמין קודם. המחלקות החדשותNavDeepLinkRequest
מאפשרות ל-NavController לתמוך בניווט בכל שילוב של השדות האלה. (b/136573074, b/135334841)
שינויים ב-API
- הרחבנו מאוד את התמיכה ב-Kotlin DSL ליעדי ניווט דינמיים. (b/148969800)
תיקוני באגים
- תוקנה בעיה שגרמה להתעלמות מ-Intents של קישורי עומק כשמשתמשים ביעד התחלה מקונן. (b/154532067)
גרסה 2.3.0-alpha05
15 באפריל 2020
androidx.navigation:navigation-*:2.3.0-alpha05
משוחרר. גרסה 2.3.0-alpha05 מכילה את הקומיטים האלה.
תכונות חדשות
- בגרפים דינמיים שכוללים שימוש ב-
<include-dynamic>
, כבר לא צריך לציין אתapp:graphPackage
, והמערכת תשתמש בברירת מחדל על ידי הוספת הסיומתmoduleName
ל-applicationId
אחרי נקודה. אם אתם צריכים להתאים אישית אתgraphPackage
, עכשיו יש תמיכה ב-placeholder של${applicationId}
. (b/152696768) - Kotlin DSL של Navigation Graph חושף עכשיו
defaultArguments
Map
לפעולות, ומשקף את היכולת להגדיר ערכי ברירת מחדל באלמנטים<action>
בקובצי XML של Navigation. (b/150345605)
תיקוני באגים
- ב-Navigation 2.2.2: תוקן באג
IllegalStateException
שקשור לקישורי עומק ליעד ההתחלתי של הגרף כשיש כמה מופעים שלNavHostFragment
בפעילות. (b/147378752)
עדכונים של תלות
- הניווט תלוי עכשיו ב-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) - ה-constructor של
DynamicActivityNavigator
מקבל עכשיוContext
במקום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-ktx
הכללים של ProGuard שומרים עכשיו רק את המחלקות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
שמתאים לאחסון כמויות קטנות של מצב שמור שצריך להיות משויך לרשומה מסוימת במחסנית החזרה. במאמר החזרת תוצאה מופיע תרחיש לדוגמה. (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
כשבודקים ניווט, ומאפשר להגדיר את היעד הנוכחי ולאמת את היסטוריית החזרה אחרי פעולות ניווט. (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-ui
ProGuard rules forDrawerArrowDrawable
have been updated to ensure thatandroid.enableJetifier=true
is 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-ktx
הכללים של ProGuard שומרים עכשיו רק את המחלקות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()
ולהעביר את המזהה של יעד או של תרשים ניווט במחסנית הקודמת. הערך המוחזרNavBackStackEntry
מספקLifecycleOwner
שמבוסס על ניווט,ViewModelStoreOwner
(אותו ערך שמוחזר על ידיNavController.getViewModelStoreOwner()
) ו-SavedStateRegistryOwner
, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. - שילוב של Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
הוא עכשיו ברירת המחדל של factory שמשמשת כשמשתמשים ב-by navGraphViewModels()
או בבונהViewModelProvider
עםViewModelStoreOwner
שמוחזר על ידיNavController.getBackStackEntry()
אוNavController.getViewModelStoreOwner()
. - תמיכה בפרמטרים של שאילתות לקישורי עומק: קישורי עומק עם פרמטרים של שאילתות תומכים עכשיו בפרמטרים של שאילתות שסודרו מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שהם יכולים להיות null הם עכשיו אופציונליים כשמבצעים התאמה לקישורי עומק.
- שיפור התמיכה באנימציות:
NavHostFragment
משתמש עכשיו ב-FragmentContainerView
מ-Fragment 1.2.0, ומתקן בעיות של סדר Z באנימציות ושליחה של חלונות שוליים ל-Fragments.
גרסה 2.2.0-rc04
18 בדצמבר 2019
androidx.navigation:navigation-*:2.2.0-rc04
משוחרר. גרסה 2.2.0-rc04 מכילה את הקומיטים האלה.
תיקוני באגים
- התאמנו את אנימציות המעבר ההדרגתי שמשמשות את
navigation-ui
כך שיתאימו לאנימציות המעבר ההדרגתי המותאמות ב-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
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
- קישורי עומק עם פרמטרים של שאילתה תומכים עכשיו בפרמטרים של שאילתה שסודרו מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שהם ניתנים לביטול הם עכשיו אופציונליים כשמבצעים התאמה של קישורי עומק. (b/133273839)
- עכשיו אפשר להתקשר אל
NavController.getBackStackEntry()
ולהעביר את המזהה של יעד או של גרף ניווט במחסנית האחורית. הערך המוחזרNavBackStackEntry
מספקLifecycleOwner
שמבוסס על ניווט,ViewModelStoreOwner
(אותו ערך שמוחזר על ידיNavController.getViewModelStoreOwner()
) ו-SavedStateRegistryOwner
, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. (aosp/1101691, aosp/1101710)
תיקוני באגים
- תוקנה בעיה שבה הוספה של
NavHostFragment
אלViewPager2
נכשלה עםIllegalArgumentException
. (b/133640271) -
NavInflater
עכשיו לא קורא ל-getResourceName()
שלא לצורך, וכך מקצר את זמן הניפוח בעד 40%. (b/139213740)
גרסה 2.2.0-alpha01
7 באוגוסט 2019
androidx.navigation:navigation-*:2.2.0-alpha01
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
-
SavedStateViewModelFactory
היא עכשיו ברירת המחדל של המפעל שמשמש כשמשתמשים ב-by navGraphViewModels()
או ב-constructor שלViewModelProvider
עםViewModelStoreOwner
שמוחזר על ידיNavController.getViewModelStoreOwner()
. (b/135716331)
שינויים ב-API
- מתוך Navigation
2.1.0-rc01
: הוסר ה-API getViewModelStore()
שהוצא משימוש ב-NavController
, שהוצג ב-2.1.0-alpha02
. (aosp/1091021)
תיקוני באגים
NavHostFragment
עכשיו משתמש ב-NavHostFragment
, וכך נפתרות בעיות של סדר שכבות באנימציה ובעיות של שליחת חלונות ל-Fragments.FragmentContainerView
(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
, או באמצעותgetViewModelStoreOwner()
API שנוסף ל-NavController
. מידע נוסף זמין במאמר בנושא שיתוף נתונים שקשורים לממשק המשתמש בין יעדים. - יעדים לדיאלוג: עכשיו אפשר ליצור
<dialog>
יעדים שיוצג בהםDialogFragment
כשnavigate
אליהם. ב-NavHostFragment
יש תמיכה ביעדים של תיבות דו-שיח כברירת מחדל. מידע נוסף זמין במאמר יצירת יעד מ-DialogFragment. - ניווט באמצעות URI: עכשיו אפשר
navigate
באמצעותUri
, שמשתמש ב<deepLink>
שהוספתם ליעד כדי לנווט אליו. מידע נוסף זמין במאמר בנושא ניווט באמצעות URI. - NavHostController: ממשקי ה-API שמשמשים ליצירת
NavHost
בהתאמה אישית הועברו אלNavHostController
, וכך אפשר לחבר את ההטמעות אל המארחLifecycleOwner
,OnBackPressedDispatcher
ו-ViewModelStore
.NavController
גרסה 2.1.0-rc01
7 באוגוסט 2019
androidx.navigation:navigation-*:2.1.0-rc01
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
שינויים ב-API
- ממשק ה-API
getViewModelStore()
שהוצא משימוש ב-NavController
והוצג ב-2.1.0-alpha02
הוסר. (aosp/1091021)
גרסה 2.1.0-beta02
19 ביולי 2019
androidx.navigation:*:2.1.0-beta02
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תיקוני באגים
- הוסרה תלות לא מכוונת ב-jacoco שהתווספה ב-
2.1.0-beta01
. (b/137782950)
גרסה 2.1.0-beta01
17 ביולי 2019
androidx.navigation:*:2.1.0-beta01
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
NavigationUI
מעכשיו יש אנימציה להסרה של הלחצן 'למעלה' כשמשתמשים ב-setupWithNavController()
עםToolbar
אוCollapsingToolbarLayout
. (b/131403621)
תיקוני באגים
- תוקנה בעיה בתזמון כשמשתמשים בכמה רכיבי NavHostFragment עם אותו מאגר באמצעות
findNavController()
. (b/136021571)
גרסה 2.1.0-alpha06
2 ביולי 2019
androidx.navigation:*:2.1.0-alpha06
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
- המאפיין
app:navGraph
שבו נעשה שימוש ב-NavHostFragment הועבר עכשיו אל ארטיפקטnavigation-runtime
. כדי להוסיף רכיבי ניווט מותאמים אישית באמצעות XML, צריך להשתמש במאפיין הזה כדי לשלב אותם בחלונית Host (מארח) בכלי לעריכת ניווט. (b/133880955)
שינויים ב-API
- הוצאנו משימוש את
getViewModelStore()
API ב-NavController
, ועברנו לשימוש בשיטה החדשהgetViewModelStoreOwner()
שמחזירהViewModelStoreOwner
. (aosp/987010) - ההטמעה של יעדים בחלון צף, כמו יעדי
<dialog>
, עברה הכללה לממשק סמן,FloatingWindow
, שכל יעדי<dialog>
מטמיעים עכשיו. השיטות של NavigationUI לאינטראקציה עם סרגל האפליקציות העליון מתעלמות עכשיו מיעדים מסוגFloatingWindow
. (b/133600763)
שינויים בהתנהגות
- הניווט שומר עכשיו על סנכרון המצב שלו עם מה שמוצג במסך כשמשתמשים ביעד
<dialog>
. כתוצאה מכך, עכשיו כשמנווטים ליעד שאינו דיאלוג או פעילות, כמו יעד<fragment>
, מופיע באופן אוטומטי חלון קופץ עם היעד.<dialog>
(b/134089818)
תיקוני באגים
- הניווט מדכא עכשיו את האנימציה שמתרחשת כשיוצרים מחדש את הפעילות בזמן טיפול בקישור עומק, וכך נפתרה בעיה של הבהוב חזותי. (b/130362979)
- תוקן באג שגרם לכך שמחסנית הניווט לא הייתה מסונכרנת כשמבטלים את ההוספה של Fragment בתור ה-Fragment הראשוני. (b/133832218)
גרסה 2.1.0-alpha05
5 ביוני 2019
androidx.navigation:*:2.1.0-alpha05
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
שינויים ב-API
- ממשקי API שקשורים למארח ב-
NavController
עברו שינוי שם והועברו למחלקה משנית חדשה שלNavController
, NavHostController
. (aosp/966091) - השיטה
NavController
setHostOnBackPressedDispatcherOwner()
הוחלפה בשיטהsetOnBackPressedDispatcher()
שלNavHostController
, ועכשיו צריך לבצע קריאה ל-setLifecycleOwner()
לפני הקריאה לשיטה הזו. (aosp/965409) -
NavHostController
כולל עכשיו שיטהenableOnBackPressed(boolean)
שמחליפה את המחלקהNavHostOnBackPressedManager
שהוחזרה קודם על ידיsetHostOnBackPressedDispatcherOwner()
. (aosp/966091)
תיקוני באגים
- תוקנה בעיה שבה מחסנית החזרה לא הייתה נכונה אחרי ניווט באמצעות URI. (b/132509387)
- קישורי עומק שמטופלים אוטומטית על ידי NavController מופעלים עכשיו רק פעם אחת. (b/132754763)
גרסה 2.1.0-alpha04
16 במאי 2019
androidx.navigation:*:2.1.0-alpha04
משוחרר. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תיקוני באגים
-
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
זו גרסת האלפא הראשונה של Navigation 2.1.0
.
שינויים בתלות
- הניווט תלוי עכשיו ב-
androidx.core:core:1.0.1
וב-androidx.fragment:fragment:1.1.0-alpha05
. בנוסף, בגרסה הזו הוסרה התלות ב-androidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
שינויים ב-API
- נוספה
Navigation.createNavigateOnClickListener(NavDirections)
שיטה חדשה כחלופה ליצירת מאזין קליקים עם מזהה משאב וחבילה. b/127631752 - המאפיין
FragmentNavigator.instantiateFragment
הוצא משימוש. ההטמעה שמוגדרת כברירת מחדל משתמשת עכשיו ב-FragmentFactory
כדי ליצור מופעים של Fragments. b/119054429
תיקוני באגים
- הניווט לא שולח יותר ערך null
Bundle
כשיש ארגומנטים שמצורפים ליעד, וכך נפתרה בעיה בשימוש ב-android:defaultValue="@null"
. b/128531879 - הספרייה Safe Args תלויה עכשיו ב-KotlinPoet 1.1.0, ומתקנת בעיה בשמות חבילות ארוכים במיוחד. b/123654948
גרסה 2.0.0
גרסה 2.0.0
14 במרץ 2019
הניווט 2.0.0
יוצא ללא שינויים מגרסה 2.0.0-rc02
.
גרסה 2.0.0-rc02
6 במרץ 2019
Navigation 2.0.0-rc02 מספקת ארטיפקטים חדשים עם מזהה הקבוצה androidx.navigation
ומשנה את התלות שלה למקבילות ב-AndroidX.
ההתנהגות של גרסה 2.0.0-rc02 זהה להתנהגות של גרסה Navigation 1.0.0-rc02, ולא אמורים להידרש שינויים בקוד כדי לעדכן מגרסה 1.0.0-rc02, מלבד עדכון התלות כך שתתאים לתלויות החדשות.
כדי להשתמש בגרסאות 2.X של Navigation, צריך להעביר את הפרויקט ל-AndroidX. Navigation 1.0 stable תהיה הגרסה האחרונה שמשתמשת בתלות של Support Library. כל הפיתוח העתידי מעבר לגרסה 1.0 יתבסס על AndroidX וייבנה על גרסה 2.0 stable.
Pre-AndroidX Dependencies
בגרסאות של Navigation לפני AndroidX, צריך לכלול את יחסי התלות הבאים:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
בקטע Safe args, מוסיפים את classpath הבא בקובץ build.gradle
ברמה העליונה
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
גרסה 1.0.0
גרסה 1.0.0
14 במרץ 2019
הניווט 1.0.0
יוצא ללא שינויים מגרסה 1.0.0-rc02
.
גרסה 1.0.0-rc02
26 בפברואר 2019
זו הגרסה השנייה מועמדת להפצה של גרסה 1.0.0 היציבה של Navigation. הגרסה הזו כוללת מספר תיקוני באגים.
תיקוני באגים
- תוקנה בעיה שבה המערכת התעלמה מהתג
popBackStack()
אם לגרף הבסיסי לא היה מזהה b/126251695 -
navigateUp()
עכשיו יש טיפול נכון בניווט חזרה למשימה של האפליקציה כשמתבצעת קריאה אחרי טיפול בקישור עומק ללאFLAG_ACTIVITY_NEW_TASK
b/126082008 - תוקנה בעיה שבה
ActivityNavigator.applyPopAnimationsToPendingTransition
לא הופעלה האנימציה הנכונה של יציאה מהחלון הקופץ b/126237567 - קוד Kotlin שנוצר על ידי Safe Args כולל עכשיו escape של מילות מפתח ב-Kotlin, כמו
in
ו-fun
בשם החבילה שמשויכת למחלקהR
. b/126020455
גרסה 1.0.0-rc01
21 בפברואר 2019
זוהי גרסה מועמדת להפצה של גרסה יציבה 1.0.0 של Navigation. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- תוקנה בעיה שהתרחשה כשמשתמשים ב-Fragments ובפעולות ניווט של
singleTop
b/124294805
גרסה 1.0.0-beta02
12 בפברואר 2019
הגרסה הזו כוללת מספר שיפורים קלים ותיקוני באגים חשובים.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
0
כandroid:defaultValue
לארגומנטים שלreference
. b/124248602
שינויים בהתנהגות
- קישורי עומק בהתאמה מדויקת מקבלים עכשיו עדיפות על פני קישורי עומק עם
.*
או התאמות של ארגומנטים. b/123969518
תיקוני באגים
- הפונקציות
popBackStack()
ו-navigateUp
מחזירות עכשיו את הערךfalse
בצורה נכונה כשמוציאים את היעד האחרון ממחסנית החזרה, וכך מתקנים באג שנוצר בגרסה1.0.0-beta01
. b/123933201 - הניווט מגדיר עכשיו את
ClassLoader
בצורה נכונה במהלך השחזור של מצב שמור של מופע, וכך נמנעות בעיות בשימוש במחלקות בהתאמה אישית במצב שמור שלNavigator
או בארגומנטים שנשלחים אלNavDestination
. b/123893858 - מחלקות NavArgs שנוצרו על ידי Safe Args לא גורמות יותר לקריסה כשמשחזרים ארגומנט
Parcelable[]
ממצב מופע שנשמר. b/123963545 - Safe Args מנקה עכשיו כמו שצריך מחלקות Kotlin מיותרות שנוצרו. 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
- תוקנה רגרסיה שגרמה לפעולה יחידה של
popBackStack()
להוציא את כל העותקים של יעד מהחלק העליון של מחסנית החזרה, במקום רק יעד אחד בכל פעם. b/123552990 - תוקנה בעיה שבה המצב של
FragmentNavigator
לא היה מסונכרן עם המצב שלNavController
, מה שגרם ל-IllegalStateException
כשניסו לשחזר את היסטוריית הפעולות. b/123803044 - תוקנה הבעיה שבה החץ אחורה
NavigationUI
לא הופיע כשנעשה שימוש ב-ProGuard עם טשטוש. b/123449431 - הקוד שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בשימוש ב-
app:argType
שמפנה למחלקה פנימית סטטית בפורמט.OuterClass$InnerClass
. b/123736741 - קוד ה-Java שנוצר על ידי Safe Args מטפל עכשיו בצורה נכונה בפעולות גלובליות וביעדים מוטמעים עמוק. b/123347762
גרסה 1.0.0-alpha11
23 בינואר 2019
זוהי גרסת תיקון חם של 1.0.0-alpha10
שמתקנת בעיה ב-Safe Args.
תיקוני באגים
- תוקנה בעיה שבה לא ניתן היה לייבא את המחלקה Directions שמשויכת לפעולות גלובליות באמצעות Safe Args. b/123307342
גרסה 1.0.0-alpha10
23 בינואר 2019
בעיות מוכרות
- הייבוא של המחלקה Directions שמשויכת לפעולות גלובליות נכשל ב-Safe Args. b/123307342
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף מופיע בקטע שינויים שעלולים לגרום לכשל בהמשך.
תכונות חדשות
- משתמשי Kotlin יכולים עכשיו להשתמש בנציג המאפיין
by navArgs()
כדי לקבל באופן עצלני הפניה למחלקתNavArgs
שנוצרה על ידי Safe Args ב-Activity
או ב-Fragment
. b/122603367 - הספרייה Safe Args מאפשרת עכשיו ליצור קוד Kotlin באמצעות הפלאגין
androidx.navigation.safeargs.kotlin
. קוד Kotlin נוצר במיוחד למודולים של Kotlin בלבד, באמצעות ארגומנטים שמוגדרים כברירת מחדל ומחלקות שלא ניתן לשנות, במקום תבנית ה-builder שעדיין זמינה דרך התוסף הקודםandroidx.navigation.safeargs
.b/110263087
שינויים בהתנהגות
- קישורי עומק תואמים מוטים עכשיו לקישור העומק עם הכי הרבה ארגומנטים תואמים. b/118393029
- כשמתקשרים אל
setGraph()
בNavController
, מעכשיו מחסנית החזרה מאופסת. b/111450672 - קישורי עומק לא ידועים לא גורמים יותר לשגיאה
IllegalStateException
, אלא מתעלמים מהם. כך נפתרות בעיות שקשורות לקישורי עומק מוטמעים או מרובים מסוגNavHostFragment
. b/121340440
שינויי תוכנה שעלולים לגרום לכשלים
- השיטה
NavOptions.applyPopAnimationsToPendingTransition()
להחלת אנימציות של חלונות קופצים על פעילות הועברה אלActivityNavigator
. b/122413117 - הספרייה Safe Args לא משכפלת יותר מחלקות זהות לפעולות בלי ארגומנטים. סוג ההחזרה של שיטות ללא ארגומנטים במחלקות NavDirections שנוצרו הוא עכשיו
NavDirections
. b/123233147 - למחלקות Directions שנוצרו על ידי Safe Args אין יותר בנאי ציבורי – צריך להשתמש רק בשיטות סטטיות שנוצרו. b/123031660
- למחלקות
NavDirections
שנוצרו על ידי Safe Args אין יותר בנאי ציבורי – הן צריכות להיווצר רק באמצעות השיטות הסטטיות במחלקות Directions שנוצרו. b/122963206 - הערך
Bundle
שמוחזר מהערךNavDirections
'getArguments()
מסומן עכשיו כ-@NonNull
ולא כ-@Nullable
. b/123243957
תיקוני באגים
-
NavDeepLinkBuilder
עכשיו מטפלת נכון בכמה קריאות בו-זמניותPendingIntent
לאותו יעד באמצעות הארגומנטים שמעבירים כדי לקבוע את הייחודיות. b/120042732 -
NavController
מטפל עכשיו בצורה נכונה בפעולותpopBackStack()
כשמשתמשים ב-NavHostFragment
מקונן או ב-Fragments אחרים של צאצא עם מחסנית חזרה. b/122770335 -
NavigationUI
now correctly sets the content description of the Up button. b/120395362 - מחלקות Directions שנוצרו על ידי Safe Args מטפלות עכשיו בצורה נכונה בפעולות גלובליות עם אותו מזהה כמו פעולה ביעד. b/122962504
- מחלקות
NavDirections
שנוצרו על ידי Safe Args כוללות עכשיו ערכים שווים שלhashCode()
כש-equals()
מחזירה את הערך true. b/123043662 -
FragmentNavigator
מוצגת עכשיו הודעת שגיאה טובה יותר אם מנסים לבצע התאמה אישית שלFragmentTransactions
ב-NavHostFragment
'sFragmentManager
. תמיד צריך להשתמש ב-getChildFragmentManager()
. b/112927148
גרסה 1.0.0-alpha09
18 בדצמבר 2018
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף מופיע בקטע שינויים שעלולים לגרום לכשל בהמשך.
החלטנו שלא להמשיך בפיתוח של ארטיפקט android.arch.navigation:navigation-testing
. התכונה הזו הוכחה כמועילה לבדיקות פנימיות של NavController
, אבל אנחנו ממליצים מאוד להשתמש בשיטות בדיקה חלופיות, כמו יצירת מוקאפ של מופע NavController
כדי לוודא שמתבצעות קריאות נכונות ל-navigate()
. הגישה הזו מוסברת בפירוט בהרצאה בנושא Single Activity ב-AndroidDevSummit 2018, ואנחנו עובדים על תיעוד נוסף בנושא בדיקות באמצעות Navigation.
תכונות חדשות
-
MenuItem
s עםmenuCategory="secondary"
לא יציגו יותר את ערימת הפעולות הקודמות כשמשתמשים בהם עם שיטותNavigationUI
. b/120104424 -
AppBarConfiguration
מאפשרת עכשיו להגדיר מופעOnNavigateUpListener
חלופי שיופעל כש-navController.navigateUp()
מחזירהfalse
. b/79993862 b/120690961
שינויי תוכנה שעלולים לגרום לכשלים
- כשמשתמשים ב-
<argument>
עםargType="reference"
, הניתוח של ההפניה כבר לא מתבצע על ידי Navigation, אלא מסופק מזהה המשאב הגולמי עצמו. b/111736515 onNavDestinationSelected()
עכשיו, כברירת מחדל, הפונקציות האלה חוזרות ליעד ההתחלתי של גרף הניווט, כך שהן עקביות עם השיטות שלsetup
. כדי למנוע את הפעלת ה-back stack, צריך להוסיף אתmenuCategory="secondary"
אלMenuItem
. aosp/852869- השיטות
fromBundle()
של מחלקותArgs
שנוצרו מקבלות עכשיוBundle
שאינו null במקוםBundle
שניתן להיות null aosp/845616
תיקוני באגים
- הארגומנטים מנותחים עכשיו בצורה תקינה מקישורי עומק כערך הנכון
argType
במקום תמיד כמחרוזות b/110273284 - הניווט מייצא עכשיו בצורה נכונה את המשאבים הציבוריים שלו b/121059552
- Safe Args תואם עכשיו ל-Android Gradle Plugin 3.4 Canary 4 ומעלה b/119662045
גרסה 1.0.0-alpha08
6 בדצמבר 2018
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. מידע נוסף מופיע בקטע שינויים שעלולים לגרום לכשל בהמשך.
תכונות חדשות
- כשמשתמשים בתוויות של כתובות אתרים ליעד עם שיטות
NavigationUI
, המערכת מחליפה עכשיו באופן אוטומטי מופעים של{argName}
ב-android:label
בארגומנט הנכון b/80267266 - הניווט תלוי עכשיו בספריית התמיכה 28.0.0 b/120293333
שינויי תוכנה שעלולים לגרום לכשלים
- השם של
OnNavigatedListener
שונה לOnDestinationChangedListener
b/118670572 -
OnDestinationChangedListener
מעביר עכשיו גם אתBundle
של הארגומנטים aosp/837142 - הוסרו התכונות
app:clearTask
ו-app:launchDocument
והשיטות שמשויכות אליהן. כדי להסיר את כל היעדים ממחסנית החזרה, משתמשים ב-app:popUpTo
עם השורש של הגרף. b/119628354 -
ActivityNavigator.Extras
משתמש עכשיו בתבניתBuilder
ומוסיף את האפשרות להגדיר כל דגלIntent.FLAG_ACTIVITY_
.aosp/828140 - השם של
NavController.onHandleDeepLink
שונה ל-handleDeepLink
aosp/836063 - הרבה מחלקות ושיטות שלא מיועדות ליצירת מחלקות משנה, כמו
NavOptions
,NavInflater
,NavDeepLinkBuilder
ו-AppBarConfiguration
, הפכו ל-final
aosp/835681 - השיטה
NavHostFragment.setGraph()
שהוצאה משימוש הוסרה aosp/835684 - הוצאנו משימוש את השיטה
NavigationUI.navigateUp(DrawerLayout, NavController)
והסרנו אותה. aosp/835684 - העברנו את יצירת הפרגמנטים אל
FragmentNavigator
, כדי שיהיה קל יותר להקצות את יצירת הפרגמנטים ל-FragmentFactory
. b/119054429 - ה-constructor של
NavGraphNavigator
לא מקבל יותרContext
aosp/835340 - NavigatorProvider הוא עכשיו מחלקה ולא ממשק. הפונקציה
NavigatorProvider
שמוחזרת על ידיgetNavigatorProvider()
לא השתנתה. aosp/830660 NavDestination.navigate()
הוסר. במקום זאת, התקשר אלnavigate()
במספרNavigator
. aosp/830663- בוצע רפקטורינג משמעותי של
Navigator
, כך שלא צריך יותר להשתמש ב-OnNavigatorNavigatedListener
. במקום זאת, הפונקציהnavigate
מחזירה אתNavDestination
שאליו בוצעה הניווט. - אי אפשר יותר לשלוח מופעים של
Navigator
אירועים קופצים אלNavController
. כדאי להשתמש ב-OnBackPressedCallback
כדי ליירט לחיצות על לחצן החזרה ולהתקשר אלnavController.popBackStack()
. aosp/833716
תיקוני באגים
-
popUpTo
פועל עכשיו באופן עקבי כשהיעד הוא רכיב<navigation>
b/116831650 - תוקנו מספר באגים שגרמו לשגיאה
IllegalArgumentException
בשימוש בתרשימים מקוננים b/118713731 b/113611083 b/113346925 b/113305559 - המאפיין
dataPattern
של יעדי<activity>
יאוכלס עכשיו בארגומנטים מארגומנטים שאינם מחרוזת על ידי קריאה ל-toString()
b/120161365
Safe Args
- Safe Args תומך באובייקטים שניתנים לסריאליזציה, כולל ערכי Enum. אפשר להגדיר ערך ברירת מחדל לטיפוסים מסוג enum באמצעות enum literal בלי שם המחלקה (לדוגמה,
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. מידע נוסף זמין במאמר Implement navigation with the Navigation Architecture Component (הטמעה של ניווט באמצעות רכיב ארכיטקטורת הניווט) באתר למפתחים.
- בחירה של פריט ב-
NavigationView
תסגור עכשיו את הגיליון התחתון שמכיל אותו b/112158843
שינויים ב-API
- שינוי שעלול לגרום לבעיות: השיטה
navigate()
של Navigator כוללת עכשיו פרמטרNavigator.Extras
. - השיטה
getGraph()
של NavController היא עכשיוNonNull
b/112243286
תיקוני באגים
NavigationUI.setupWithNavController()
לא עוד דליפות של תצוגות אם משתמשים בה עם תצוגות מיעדים ספציפיים b/111961977- הפונקציה Navigator
onSaveState()
נקראת עכשיו רק פעם אחת b/112627079
Safe Args
- מחלקות של הוראות ניווט מרחיבות עכשיו את מחלקת ההוראות של האב אם היא קיימת b/79871405
- במחלקות Directions ו-Args יש עכשיו הטמעה שימושית
toString()
b/111843389
גרסה 1.0.0-alpha05
10 באוגוסט 2018
תיקוני באגים
- תוקן באג שגרם להתנהגות שגויה של מחסנית החזרה. b/111907708
- תוקן באג ב-
equals()
של מחלקות Generated Args. b/111450897 - תיקון של כשל ב-build ב-Safe Args. b/109409713
- תיקון המרה ממזהי משאבים לשמות Java b/111602491
- תיקון הודעות שגיאה לגבי אפשרות קבלת ערך null בתוסף Safe Args.
- הוספת הערות לגבי ערכי null חסרים.
גרסה 1.0.0-alpha04
19 ביולי 2018
Navigation 1.0.0-alpha04
ותוסף ה-Safe Args gradle המשויך מכילים מספר שינויים בממשקי ה-API, שינויים בהתנהגות ותיקוני באגים.
API / Behavior Changes
- 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 / Behavior Changes
- נוספה שיטה NavigationUI.setupWithNavController עבור סרגל הכלים b/109868820
- נוספה שיטה NavigationUI.setupWithNavController ל-CollapsingToolbarLayout b/110887183
- הפונקציה popBackStack() מחזירה עכשיו false כשהמחסנית הקודמת ריקה או כשמזהה היעד שצוין לא נמצא במחסנית הקודמת b/110893637
- FragmentNavigator מתעלם עכשיו מפעולות ניווט אחרי ש-FragmentManager שמר את המצב, וכך נמנעים חריגים מסוג Can not perform this action after onSaveInstanceState b/110987825
Safe Args
- שינוי שעלול לשבור את הקוד: תווים לא אלפאנומריים בשמות של פעולות וארגומנטים יוחלפו בשיטת CamelCase בשמות של שיטות NavDirections המתאימות
- לדוגמה,
DemoController.index
יהפוך ל-setDemoControllerIndex
b/79995048 - לדוגמה,
action_show_settings
יהפוך ל-actionShowSettings
b/79642240
- לדוגמה,
- שינוי משמעותי: ארגומנטים נחשבים עכשיו כלא ריקים כברירת מחדל. כדי לאפשר ערכי null בארגומנטים של מחרוזות ושל parcelable, מוסיפים
app:nullable="true"
b/79642307 - עכשיו אפשר להשתמש ב-
app:type="long"
עם defaultValues בפורמט “123L” b/79563966 - מעכשיו יש תמיכה בארגומנטים מסוג Parcelable, באמצעות שם מחלקה שמוגדר במלואו עבור
app:type
. ערך ברירת המחדל הנתמך היחיד הוא"@null"
b/79563966 - מחלקות Args מיישמות עכשיו את
equals()
ואתhashCode()
b/79642246 - מעכשיו אפשר להחיל את התוסף Safe Args על פרויקטים של ספריות b/80036553
- מעכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של תכונות b/110011752
תיקוני באגים
- תוקנו בעיות בניווט במהלך שימוש בשיטות של מחזור החיים של Fragment b/109916080
- תוקנו בעיות בניווט בגרפים מוטמעים כמה פעמים b/110178671
- נפתרו בעיות בשימוש ב-
setPopUpTo
עם היעד הראשון בתרשים b/109909461 - תוקנה בעיה שבה כל הערכים של
app:defaultValue
הועברו כמחרוזות b/110710788 - aapt2 שצורף ל-Android Gradle Plugin 3.2 Beta 01 מוסיף עכשיו כללי שמירה לכל מאפיין
android:name
בקובצי XML של Navigation b/79874119 - תוקן דליפת זיכרון בהחלפת FragmentNavigator שמוגדר כברירת מחדל b/110900142
גרסה 1.0.0-alpha02
7 ביוני 2018
שינויים בהתנהגות
הבית
FragmentNavigator
משתמש עכשיו במינויsetReorderingAllowed(true)
. b/109826220הניווט מפענח עכשיו את הארגומנטים שנותחו מכתובות URL של קישורי עומק. b/79982454
תיקוני באגים
תוקנה שגיאה
IllegalStateException
כשמתקשרים אל navigate משיטות של מחזור החיים של Fragment. b/79632233הניווט תלוי עכשיו בספריית התמיכה 27.1.1 כדי לתקן הבהובים כשמשתמשים באנימציות. b/80160903
תוקן באג
IllegalArgumentException
כשמשתמשים ב-defaultNavHost="true" כקטע צאצא. b/79656847תוקנה בעיה
StackOverflowError
בשימוש ב-NavDeepLinkBuilder. b/109653065תוקנה בעיה שקשורה ל-
IllegalArgumentException
כשחוזרים לתרשים מוטבע. b/80453447תוקנה בעיה שקשורה לחפיפה של 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
Navigation מספק מסגרת לבניית ניווט בתוך האפליקציה. הגרסה הראשונה הזו היא 1.0.0-alpha01
.