ניווט
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
30 באוקטובר 2024 | 2.8.3 | - | - | 2.9.0-alpha02 |
הצהרת יחסי תלות
כדי להוסיף תלות ב-Navigation, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
dependencies { def nav_version = "2.8.3" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" }
Kotlin
dependencies { val nav_version = "2.8.3" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") }
Safe Args
To add Safe Args
to your project, include the following classpath
in your top level build.gradle
file:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.8.3" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.3" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
You must also apply one of two available plugins.
To generate Java language code suitable for Java or mixed Java and Kotlin modules, add
this line to your app or module's build.gradle
file:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
You must have android.useAndroidX=true
in your
gradle.properties
file as per
Migrating to AndroidX.
מידע על שימוש בתוספים של Kotlin זמין במסמכי התיעוד של ktx.
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 2.9
גרסה 2.9.0-alpha02
30 באוקטובר 2024
androidx.navigation:navigation-*:2.9.0-alpha02
משוחרר. הגרסה 2.9.0-alpha02 מכילה את ההוספות האלה.
תרומה חיצונית
- שיטה נפוצה חדשה של
NavController.handleDeepLink(request: NavDeepLinkRequest)
. תודה Konstantin Tskhovrebov! (I3e228)
גרסה 2.9.0-alpha01
16 באוקטובר 2024
androidx.navigation:navigation-*:2.9.0-alpha01
משוחרר. הגרסה 2.9.0-alpha01 מכילה את ההוספות האלה.
תכונות חדשות
- מעכשיו, יוצרים של כלי ניווט מותאמים אישית יכולים לסמן את היעדים שלהם כמיישמים את הממשק
SupportingPane
. כך הם מציינים ל-NavController
שהיעדים האלה יוצגו לצד יעדים אחרים. באמצעות הממשק הזה, אפשר למשל להגדיר כמה יעדים כRESUMED
בו-זמנית. (Id5559) - מ-Navigation
2.8.3
: נוספו בדיקות איתור שגיאות בקוד חדשות למודולnavigation-common
, למודולnavigation-runtime
ולמודולnavigation-compose
כדי לזהות מסלולים בטוחים מבחינת סוגים שלא סומנו בצורה נכונה באמצעות@Serializable
. הבדיקה הזו חלה על כל פונקציות התוספיםNavGraphBuilder
ו-NavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - מ-Navigation
2.8.3
: נוספו בדיקות איתור שגיאות בקוד חדשות למודולnavigation-common
, למודולnavigation-runtime
ולמודולnavigation-compose
כדי לזהות מסלולים בטוחים מבחינת סוגים עם ארגומנטים של Enum שלא סומנו בצורה נכונה באמצעות@Keep
. הבדיקה הזו חלה על כל פונקציות התוספיםNavGraphBuilder
ו-NavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
שינויים בהתנהגות
- ניסיון להשתמש ב-
NavController
שעברDESTROYED
יגרום עכשיו ל-IllegalStateException
. (I520da, b/369616172)
תיקוני באגים
- עדכון של חריגה מסוג Enum class not found, עם הצעה לשימוש בהערה
@Keep
למקרה שמחלקת Enum נמחקת בגרסאות build מקוצרות. (I90e79, b/358137294)
בעיות מוכרות
- יש בעיה עם כללי ה-lint החדשים שנוספו ב-
Navigation 2.8.*
, שגורמים לשגיאהObsolete custom lint check
כשמנסים להריץ את ה-lint עם Android Gradle Plugin מגרסה 8.4 ואילך. (b/368070326, b/371463741)
גרסה 2.8
גרסה 2.8.3
16 באוקטובר 2024
androidx.navigation:navigation-*:2.8.3
משוחרר. גרסה 2.8.3 כוללת את ההתחייבויות האלה.
תכונות חדשות
- נוספו בדיקות איתור שגיאות חדשות למודול
navigation-common
,navigation-runtime
ו-navigation-compose
כדי לזהות מסלולים בטוחים מבחינת סוגים שלא סומנו בצורה נכונה באמצעות@Serializable
. הבדיקה הזו חלה על כל פונקציות התוספיםNavGraphBuilder
ו-NavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - נוספו בדיקות איתור שגיאות חדשות במודולים
navigation-common
,navigation-runtime
ו-navigation-compose
כדי לזהות מסלולים בטוחים מבחינת סוגים עם ארגומנטים של Enum שלא סומנו בצורה נכונה באמצעות@Keep
. הבדיקה הזו חלה על כל פונקציות התוספיםNavGraphBuilder
ו-NavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
תיקוני באגים
- תוקנה בעיה שבה כללי השגיאות החדשים שנוספו ב-
Navigation 2.8.*
גרמו לשגיאתObsolete custom lint check
בניסיון להפעיל איתור שגיאות בקוד עם Android Gradle Plugin בגרסה 8.4 ואילך. (I1be3d, b/368070326, b/371463741)
בעיות מוכרות
- כשהמערכת מנסה להפעיל איתור שגיאות בקוד, היא תגרום לשגיאה של בדיקת שגיאות בקוד בהתאמה אישית בגרסה 16 (AGP 8.7) ואילך. (b/371926651)
גרסה 2.8.2
2 באוקטובר 2024
androidx.navigation:navigation-*:2.8.2
משוחרר. גרסה 2.8.2 כוללת את ההתחייבויות האלה.
תכונות חדשות
- התכונה 'בטיחות בסוג הניווט' תומכת עכשיו במחלקות שמאפשרות הצגה טורית וכוללות
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
וList<Double>?
, ללא צורך ב-NavType
בהתאמה אישית. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
תיקוני באגים
- שיפרנו את הודעת השגיאה במקרה שהמערכת לא מצליחה למפות ארגומנט של מסלול ל-
NavType
. הודעת השגיאה החדשה תכלול את שם הארגומנט, את השם המלא והמפורט של הארגומנט ואת השם המלא והמפורט של המסלול. (Id8416, b/346264232)
גרסה 2.8.1
18 בספטמבר 2024
androidx.navigation:navigation-*:2.8.1
משוחרר. גרסת 2.8.1 כוללת את ההוספות האלה.
תכונות חדשות
- הוספנו כלל איתור שגיאות חדש כדי לוודא שייעשה שימוש בפונקציה
popBackStack
שמקבלת סוג של כיתה מופחתת כשמנסיםpopBackStack
באמצעות ממשקי API בטוחים מבחינת סוגים. (Ief161, b/358095343)
תיקוני באגים
- מעכשיו, הניווט מחייב שהנתיב שמועבר אל
startDestination
שלNavGraph
יכיל את הערכים של כל הארגומנטים הנדרשים, כולל ארגומנטים שאינם ערכי null ואין להם ערך ברירת מחדל. (I18e74, b/362594265) - נוספה תמיכה במחרוזות שלא יכולות להיות null ל-Navigation safe args, כך שערכים null ימוינו ויאוחסנו בחבילה כפי שהם. זה שונה מההתנהגות הקיימת, שבה ערכים null מפורקים לאובייקט null. השינוי הזה חל רק על סוגי מחרוזות שאינם ניתנים ל-null. מחרוזות שניתן להגדיר להן ערך null לא משתנות. (I08b4a, b/348936238)
- אי אפשר יותר להוסיף קישור עומק ל-
NavDestination
, אלא רק דרך קישור עומק שנוסף במפורש ליעד. המשמעות היא שאפשר לנווט למסלול של יעד רק באמצעות עומס יתר של פונקציית הניווט שמקבלת מסלול מחרוזת. התיקון הזה מתקן נקודת חולשה שאפשרה ליצור קישור עומק ליעד שעשוי להיות מוגן. (Ie30e6)
עדכון יחסי תלות
- Navigation Safe Args תלוי עכשיו ב-Kotlin 1.9.24, במקום ב-Kotlin 2.X, כדי למנוע מהמפתחים צורך לעדכן את הקוד. (a4129a)
- עכשיו, כדי לכתוב אימייל חדש, צריך ללחוץ על כתיבה
1.7.2
.
גרסה 2.8.0
4 בספטמבר 2024
androidx.navigation:navigation-*:2.8.0
משוחרר. גרסה 2.8.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז גרסה 2.7.0
בטיחות סוגים ב-Navigation Kotlin DSL
- מעכשיו, Navigation מספק תמיכה ב-type safety ל-DSL של Kotlin (שמשמש את Navigation Compose) באמצעות Kotlin Serialization, כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים וסיווגים של נתונים בטוחים מבחינת סוגים:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
מידע נוסף זמין בפוסט בבלוג עם התכונה 'ניווט ב-Meet בנושא בטיחות'.
ניווט כתיבה חיזוי חזרה
- התכונה 'ניווט בכתיבה' תומכת עכשיו באפליקציה חזויה בחזרה באמצעות ממשקי ה-API החדשים של
SeekableTransitionState
מהאנימציה של הכתיבה. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית לפני שמחליטים אם לבצע את העסקה באמצעות התנועה שהושלמה או לבטל.
Navigation Fragment Composable
- הוספנו ארטיפקט
navigation-fragment-compose
חדש שכולל חלופה ל-ComposableNavHostFragment
שלNavHostFragment
, שמאפשרת להוסיף יעדים שניתנים ליצירה לקבצי ה-XML של הניווט. כל יעדcomposable
צריך להביע כשיטת@Composable
ברמה העליונה ללא ארגומנטים, שהשם המלא שלה משמש כמאפייןandroid:name
בכל יעד. כשמנווטים לאחד מהיעדים האלה, נוצר מקטע מכיל כדי להציג את התוכן הקומפוזבילי.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים אחרים
- Navigation Compose תלוי עכשיו ב-Compose 1.7.0.
- ב-Navigation יש עכשיו סוג חדש,
CollectionNavType<T>
, שהוא תת-סוג שלNavType<T>
לארגומנטים שמבוססים על אוספים, כמו רשימות, מערכי נתונים ומפות. כל מערכי ברירת המחדל שלNavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
ו-StringArrayType
) יורשים עכשיו את המחלקה החדשה הזו. NavType
כולל עכשיו תמיכה מובנית ברשימות של Int, String, Boolean, Float ו-Long.
גרסה 2.8.0-rc01
21 באוגוסט 2024
androidx.navigation:navigation-*:2.8.0-rc01
משוחרר. גרסת 2.8.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון קריסת הניווט כשמעבירים מחלקות Enum ברמה העליונה כארגומנטים בטוחים מסוג סוג. (I0ba76, b/358137294)
- ניווט בגרסה 2.8 פועל עכשיו בצורה נכונה עם SDK 34 ולא יוחלף ל-SDK 35 עד למהדורת 2.9 יחד עם שאר ספריות AndroidX. (b/358798728)
גרסה 2.8.0-beta07
7 באוגוסט 2024
androidx.navigation:navigation-*:2.8.0-beta07
משוחרר. גרסה 2.8.0-beta07 כוללת את ההתחייבויות האלה.
בעיות מוכרות
- עקב הבעיה ב-b/358137294, יש תמיכה מובנית רק ב-Enums שמוטמעים בתוך כיתה אחרת. תמיכה ב-Enums ברמה העליונה תתווסף במהדורה הבאה.
תיקוני באגים
- כשמנווטים ליעדי כפולים או משותפים, המערכת תעדיף את היעד הקרוב ביותר שמתאים למיקום הנוכחי בתרשים. (Ic89a4, b/352006850)
- הוספנו עכשיו
NavType.EnumType
חדש לניווט ב-safe args. המשמעות היא שלא צריך יותר פרמטרים מותאמים אישית שלNavType
בסוגים שלEnum
. לתשומת ליבך:SerialName
שלEnum
חייב להיות שם ברירת המחדל שמוגדר במלואו. (I66d22, b/346475493) - הוספנו תמיכה מובנית בניווט ב-safe args לסוגים של ארגומנטים nullable,כולל
Int?
, Long?
, Float?
, Boolean?
ו-Enum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - ה-
startDestination
שלNavGraph
ישתמש עכשיו בערכי הארגומנטים שמוגדרים כברירת מחדל אם הנתיבstartDestination
שמועבר אלNavGraph
שווה בדיוק ל-startDestination.route
. (I13762, b/354046047)
גרסה 2.8.0-beta06
24 ביולי 2024
androidx.navigation:navigation-*:2.8.0-beta06
משוחרר. גרסת 2.8.0-beta06 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה בבדיקות השגיאות בקוד
WrongStartDestinationType
של (I92b09)
גרסה 2.8.0-beta05
10 ביולי 2024
androidx.navigation:navigation-*:2.8.0-beta05
משוחרר. גרסת 2.8.0-beta05 כוללת את ההוספות האלה.
תיקוני באגים
- תיקון קריסה של ניווט ב-
singleTop
כש-NavGraphs
בתצוגת עץ משתפים את אותו מסלולstartDestination
. (I17b94, b/294408596)
גרסה 2.8.0-beta04
26 ביוני 2024
androidx.navigation:navigation-*:2.8.0-beta04
משוחרר. גרסת 2.8.0-beta04 כוללת את ההוספות האלה.
תיקוני באגים
- עכשיו יש תמיכה בניווט באמצעות מחרוזות ריקות בארגומנטים של נתיב. (Ic5dbd, b/339481310)
- שיפור הודעת השגיאה של סריאליזטורים מותאמים אישית שמוגדרים ישירות בשדות הכיתה באמצעות
@Serializable(with =...)
, כדי להבהיר שזו תכונה שאין לה תמיכה כרגע. (I052b0, b/341319151) - עכשיו אפשר להשתמש ב-API לבדיקה של
SavedStateHandleFactory
בבדיקות שאינן ל-Android, אבל הוא ידרוש Robolectric לתמוך בניתוח ארגומנטים באמצעות Bundles. (I76cdc, b/340966212) - תוקן קריסה שנגרמה כתוצאה משחזור המצב כשממשיכים את האפליקציה אחרי מוות של תהליך באמצעות ניווט בטוח לסוגים ב-Compose. (Ia8f38, b/341801005)
- תוקנה בעיה בתכונה 'ניווט בזמן כתיבת אימייל', שבה אחרי ביטול התנועה החזויית לאחור,
NavBackStackEntry
שאליו המשתמש חוזר אף פעם לא חוזר למצב מחזור החייםRESUMED
. כך ניתן גם לוודא שהאנימציה של היעד שחוזרת משתנה כמו שצריך, במקום להיצמד למקומו לאחר הנביטה. (I97a0c, b/346608857) - כשמשתמשים בתכונה 'חזרה חזוי' עם 'כתיבה בזמן ניווט', ליעד שיוצג בחלון קופץ תהיה עכשיו רמת z מתאימה, והוא יוצג באנימציה נכונה מעל היעד הנכנס. (I2077b, b/345993681)
גרסה 2.8.0-beta03
12 ביוני 2024
androidx.navigation:navigation-*:2.8.0-beta03
משוחרר. גרסת 2.8.0-beta03 כוללת את ההוספות האלה.
שינויים ב-API
- ל-
CollectionNavType
יש שיטהemptyCollection()
חדשה וחוסמת. אפשר לשנות את הגדרת ברירת המחדל הזו כדי לטפל באוסף ריק שמוענק כארגומנט. (Ie4d84, b/341723133)
תיקוני באגים
- הוספנו מסמך תיעוד לגבי
NavType.serializeAsValue
ו-serializeAsValues
כדי להדגיש שצריך לקודד את הפלט הסופי ב-Uri. (Ida6bd, b/344943214) - תוקנה קריסה שהתרחשה בקריאה ל-
toRoute<T>
עם ארגומנטCollectionNavType
null. כשמנווטים עםCollectionNavType
null, ארגומנט הפלט יהיה ערך ברירת המחדל שהוצהר בכיתה Serializable, או ערך ההחזרה שלemptyCollection()
אם אין ערך ברירת מחדל. (I84158, Id630f, b/342672856)
גרסה 2.8.0-beta02
29 במאי 2024
androidx.navigation:navigation-*:2.8.0-beta02
משוחרר. גרסה 2.8.0-beta02 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה קריסת
ClassCastException
במהלך השימוש ב-NavBackStackEntry.toRoute
עםNavType
בהתאמה אישית שניתן לבטל. (I1c29b, b/342239473) - תוקנו בעיות בשחזור המצב של סטאק העורפי של הניווט שנגרמו כשמנסים לשחזר רשומה בסטאק העורפי שלא ניתן להגיע אליה באמצעות מזהה מהיעד הנוכחי. מאחר שהנתיבים נתמכים במזהים, גם יעדים שנוצרו באמצעות נתיבים הושפעו מהבעיה. התיקון הזה מתקן גם קריסה שנגרמה על ידי קריאה ל-
clearBackStack()
עם אותה בעיה בסיסית. (I423c3, b/339908057)
גרסה 2.8.0-beta01
14 במאי 2024
androidx.navigation:navigation-*:2.8.0-beta01
משוחרר. גרסה 2.8.0-beta01 כוללת את ההתחייבויות האלה.
שינויים ב-API
SavedStateHandle.toRoute()
מקבל עכשיו פרמטרtypeMap
לסוגי ארגומנטים מותאמים אישית. (Ie39fb, b/339026523)- הוספנו ממשק API לבדיקה ל-
navigation-testing
כדי ליצורSavedStateHandle
מאובייקט Serializable ב-Kotlin. (Id4867, b/339080702)
תיקוני באגים
- נוספו מסמכי עזרה לגבי פרמטרים חסרים בפונקציות של Navigation Kotlin DSL. (I26a36)
גרסה 2.8.0-alpha08
1 במאי 2024
androidx.navigation:navigation-*:2.8.0-alpha08
משוחרר. גרסה 2.8.0-alpha08 מכילה את התחייבויות אלה.
Safe Args ב-Navigation Compose
- העבודה על תמיכה בבטיחות סוגים בזמן הידור עבור 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 Serialization כדי לאפשר לכם להגדיר יעדים בתרשים הניווט באמצעות אובייקטים בטוחים לסוג וסיווגים של נתונים:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
מידע נוסף זמין בפוסט Navigation Compose meet Type Safety.
תכונות חדשות
- ארטיפקט
navigation-fragment-compose
מספק עכשיו הרכבהLocalFragment
מקומית לשיטות קומפוזביליות בתוךComposableFragment
. (If35e5) NavType
כולל עכשיו תמיכה מובנית ברשימות של Int, String, Boolean, Float ו-Long. (I4b6dd, Ia914c, b/188693139)
גרסה 2.8.0-alpha07
17 באפריל 2024
androidx.navigation:navigation-*:2.8.0-alpha07
משוחרר. גרסת 2.8.0-alpha07 מכילה את ההוספות האלה.
תכונות חדשות
הוספת פריט
navigation-fragment-compose
חדש שכולל חלופה שלComposableNavHostFragment
ל-NavHostFragment
, שמאפשרת להוסיף יעדים מסוגcomposable
לקובצי ה-XML של הניווט. כל יעדcomposable
צריך להביע כשיטת@Composable
ברמה העליונה ללא ארגומנטים, שהשם המלא שלה משמש כמאפייןandroid:name
בכל יעד. כשמנווטים לאחד מהיעדים האלה, נוצר קטע מכיל כדי להציג את התוכן הקומפוזבילי. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
שינויים ב-API
- התמיכה ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Serialization ב-Kotlin נמשכת. ממשקי ה-API האלה לא הסתיימו ומסומנים בהערה
ExperimentalSafeArgsApi
. ההערה הזו תוסר כשכל ממשק ה-API יושלם בגרסה עתידית. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
גרסה 2.8.0-alpha06
3 באפריל 2024
androidx.navigation:navigation-*:2.8.0-alpha06
משוחרר. גרסת 2.8.0-alpha06 כוללת את ההוספות האלה.
שינויים ב-API
- התחלנו לתמוך ב-Safe Args ב-Navigation Compose באמצעות גישה שמבוססת על Serialization ב-Kotlin. ממשקי ה-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
כארגומנט ברירת המחדל של contentיישור. הפעולה הזו מאפשרת לקבוע את ברירת המחדל שלAnimatedContent
ולתקן מקרים מסוימים של קנה מידה לא צפוי מהמעבר למרכז. (I09e72, b/330111602) - כשמבצעים את המחווה החזרה החזוייה בזמן השימוש בתכונה 'ניווט בזמן כתיבת אימייל', הלחצן
NavHost
ישלים עכשיו את המעבר המותאם אישית בצורה נכונה במקום לסיים מיד. (I99017, b/327292110)
גרסה 2.8.0-alpha05
20 במרץ 2024
androidx.navigation:navigation-*:2.8.0-alpha05
משוחרר. גרסת 2.8.0-alpha05 כוללת את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר להעביר ארגומנטים ל-
startDestination
שלNavGraph
ישירות במסלולstartDestination
בלי להסתמך עלdefaultValue
. הכלל הזה חל גם עלNavGraph
startDestinations
בתצוגת עץ. (I0e0b5, b/109505019, b/188693139)
שינויים ב-API
- נוספה מחלקה מופשטת חדשה
CollectionNavType<T>
, מחלקה שלNavType<T>
לארגומנטים מבוססי-אוספים כמו רשימה, מערכים, מפות. (Ic6d63, b/188693139) - כל מערכי ברירת המחדל של
NavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
ו-StringArrayType
) הם עכשיו מסוגCollectionNavType
(Idcf79, b/188693139) NavType
מספק עכשיו ממשקvalueEquals
API פתוח חדש שקובע אם שני ערכים מאותו סוג שווים זה לזה. (I6cb97, b/327229511)
תיקוני באגים
- פרמטרים של שאילתות בקישורי עומק מאפשרים עכשיו ערכים בצורת סוגריים מסולסלים מסביב לשם הארגומנט (כלומר
{argName}
) כערכים חוקיים שלNavTypes
שמבוסס על מחרוזות. הפתרון הזה פותר בעיה שבה ערך כזה ייחשב כלא חוקי (או כחסר ערך) לכל הסוגים. (I18302, b/327274038) - פונקציות
NavController
שתומכות במסלולים כמוnavigate
אוpopBackStack
יכולות עכשיו להתאים בצורה נכונה למסלולים שמולאו בארגומנטים של המערךNavTypes
. (Iea805, b/327229511)
גרסה 2.8.0-alpha04
6 במרץ 2024
androidx.navigation:navigation-*:2.8.0-alpha04
משוחרר. גרסת 2.8.0-alpha04 מכילה את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר לציין את
SizeTranform
למעברים ב-Navigation Compose על ידי הגדרה שלהם כחלק מההפעלה של הפונקציותcomposable
ו/אוnavigation
. (I91062, b/296912651)
תיקוני באגים
- תוקנה בעיה שבה הסמל
NavHost
בתפריט הניווט של כתיבת האימייל לא הציג את המעבר בצורה תקינה כשמשתמשים ב'חזרה אחורה' במערכת בלי מחווה. (Iceeae, b/325998468)
גרסה 2.8.0-alpha03
21 בפברואר 2024
androidx.navigation:navigation-*:2.8.0-alpha03
משוחרר. גרסה 2.8.0-alpha03 מכילה את ההוספות האלה.
שינויים ב-API
- השם
NavBackStackEntry.savedStateHandle
מסומן עכשיו בתור@MainThread
כי נעשה בו שימוש בקוד שנדרש בכל זאת מתוך ה-thread הראשי. (Ibb988, b/299523245)
תיקוני באגים
- תוקנה בעיה בניווט שגרמה ל-
NavGraph
ViewModels להיותDESTROYED
מוקדם מדי כיViewModel
של הרשומה המשויכת לא היה חלק מהמצב השמור. (Ib6b7, b/317581849)
עדכון יחסי תלות
- הפעלת הניווט לכתיבה תלויה בכתיבת גרסה 1.7.0-alpha03.
גרסה 2.8.0-alpha02
7 בפברואר 2024
androidx.navigation:navigation-*:2.8.0-alpha02
משוחרר. גרסה 2.8.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- התכונה 'ניווט בכתיבה' תומכת עכשיו באפליקציה חזויה בחזרה באמצעות ממשקי ה-API החדשים של
SeekableTransitionState
מהאנימציה של הכתיבה. כך תוכלו להשתמש בתנועת החזרה כדי לראות את היעד הקודם עם המעבר המותאם אישית לפני שמחליטים אם לבצע את העסקה באמצעות התנועה שהושלמה או לבטל. (I8b8e9)
גרסה 2.8.0-alpha01
24 בינואר 2024
androidx.navigation:navigation-*:2.8.0-alpha01
משוחרר. גרסה 2.8.0-alpha01 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקן דליפת
BackStackState
שבה מספר קריאותsaveState
ליעד גרמו לשמירת כמה מצבים, אבל ניתן היה לשחזר רק את המצב הראשון. (I598b0, b/309559751) - תוקנה בעיה שבה ארגומנטים שאינם מחרוזות לא הוצגו כראוי כשמשתמשים בעזרים של
NavigationUI
כדי לאכלס את השם של שורת האפליקציה. (#636, b/316676794)
עדכון יחסי תלות
- עכשיו, התכונה 'ניווט ב-Compose' תלויה בתיקון של בעיה ב-Compose
1.7.0-alpha01
שעלולה לגרום לאנימציית שינוי קנה מידה בלתי צפויה. (b/297258205)
תרומה חיצונית
- תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שאינם מחרוזות כשמשתמשים בעזרים של
NavigationUI
כדי לאכלס את השם של שורת האפליקציה.
גרסה 2.7.7
גרסה 2.7.7
7 בפברואר 2024
androidx.navigation:navigation-*:2.7.7
משוחרר. גרסה 2.7.7 כוללת את ההצהרות האלה.
תיקוני באגים
- הוטמעה גרסה קודמת מ-Navigation
2.8.0-alpha01
: תוקן דליפתBackStackState
שבה מספר קריאותsaveState()
ל-NavBackStackEntry
יחיד היו גורמות לשמירת כמה מצבים, אבל ניתן היה לשחזר רק את המצב הראשון שנשמר. (I598b0, b/309559751) - הוספה לאחור מ-Navigation
2.8.0-alpha01
: תוקנה בעיה שבה ארגומנטים שאינם מחרוזות לא הוצגו כראוי כשמשתמשים בעזרים שלNavigationUI
כדי לאכלס את השם של שורת האפליקציות. (#636, b/316676794)
תרומה חיצונית
- תודה ל-SimonMarquis על תיקון בעיית התצוגה של ארגומנטים שאינם מחרוזות כשמשתמשים בעזרים של
NavigationUI
כדי לאכלס את השם של שורת האפליקציה.
גרסה 2.7.6
גרסה 2.7.6
13 בדצמבר 2023
androidx.navigation:navigation-*:2.7.6
משוחרר. גרסה 2.7.6 מכילה את ההוספות האלה.
תיקוני באגים
- הפונקציה
NavGraph
equals()
מביאה עכשיו בחשבון בצורה נכונה את הצמתים של התרשים השני, במקום רק את התרשים שממנו היא נקראת. כך תוכלו לוודא שגרפים עם צמתים עם מזהים שונים לא ייחשבו יותר כזהים (I401cb, b/311414915)
גרסה 2.7.5
גרסה 2.7.5
1 בנובמבר 2023
androidx.navigation:navigation-*:2.7.5
משוחרר. גרסה 2.7.5 כוללת את השינויים האלה.
שיפורי ביצועים
- שיפור משמעותי בביצועים (גם מבחינת זמן וגם מבחינת מספר ההקצאות) של השוואה בין שני תרשימים. המשמעות היא שקריאות כמו
setGraph
, שמבצעות השוואה פנימית בין התרשים החדש לבין התרשים הקיים, מהירות הרבה יותר וכתוצאה מכך יש פחות פריימים מושמטים. תודה ל-Michał Z על הניתוח המקיף שהוביל לשיפור הזה. (I6ad62) NavHost
ייצור עכשיו את יעד ההתחלה במעבר הראשון של ה-composition, במקום להמתין למעבר השני כדי לקרוא את המצב המעודכן. (I439a7, b/304852206)
תיקוני באגים
- תוקנה בעיה שבה הערימה האחורית הייתה קופצת אם התקשרתם אל
setGraph
יותר מפעם אחת עם אותו תרשים בדיוק אם היה יעד בתרשים שמכיל פעולה לקישור שני יעדים. (Ieaed7) - תיבת דו-שיח שעברתם אליה וביטלת אותה ברצף מהיר לא תופיע יותר ברשימה של
NavController.visibleEntries
. (I67586, b/287969970) - כשהערך של
saveState
הוא false, עכשיוViewModel
של הערך יימחק כראוי אחרי שהערך יוסר מהמצב. (Idf242, b/298164648) - תוקנה בעיה שבה
NavController
יכול לטפל באותו קישור עומק יותר מפעם אחת אם סטאק החזרה לאחור היה ריק לחלוטין לפני שינוי הגדרה או קריאה ל-setGraph
, רק אם הדגלFLAG_ACTIVITY_NEW_TASK
הוגדר ב-Intent הנכנס. (I73c7f)
עדכוני יחסי תלות
- הניווט באמצעות קטעי קוד (Fragments) תלוי עכשיו ב-Fragment 1.6.2, ותוקנה בעיה שבה המופעים
ViewModel
של קטעי קוד בתצוגת עץ לא נמחקו כשקוראים ל-clearBackStack
.
גרסה 2.7.4
גרסה 2.7.4
4 באוקטובר 2023
androidx.navigation:navigation-*:2.7.4
משוחרר. גרסה 2.7.4 כוללת את השמירות האלה.
תכונות חדשות
- נוספה תמיכה ב-
popUpTo
כדי להשתמש במסלולים עם ארגומנטים כדי לאפשר חלון קופץ חזרה לרשומה ספציפית שמשתמשת בארגומנטים האלה בדיוק, בהתאם לתמיכה שנמצאה בpopBackStack
. (I731f4, b/299255572)
תיקוני באגים
- תוקנה בעיה שבה הפרעה לניווט באמצעות ניווט אחר באמצעות
popUpTo
גורמת לקריסה שלFragmentNavigator
. (I3c848, b/301887045) - תוקנה בעיה שבה לחיצה על לחצן החזרה לאחור במערכת גרמה לכך שה-
currentDestination
לא יתעדכן בצורה נכונה בהתאם ל-Fragment המוצג. (Id0d6c, b/289877514) - מחזור החיים של
DialogFragment
יעבור עכשיו למצבRESUMED
כשתיבת הדו-שיח שמעליו תיסגר. (I88f0d, b/301811387)
גרסה 2.7.3
גרסה 2.7.3
20 בספטמבר 2023
androidx.navigation:navigation-*:2.7.3
משוחרר. גרסה 2.7.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה בניווט באמצעות קטעים שגרמה לכך שהרשימה
visibleEntries
מכילה רשומות שגויות. (I5caa9, b/288520638) - תוקנה בעיה שגרמה לכך שהיעד 'חלון צף' (כלומר,
Dialogs
, Bottomsheets
וכו') אף פעם לא מקבל קריאה חוזרת ל-Lifecycle שלRESUMED
. (I3b866, b/287505132)
גרסה 2.7.2
גרסה 2.7.2
6 בספטמבר 2023
androidx.navigation:navigation-*:2.7.2
משוחרר. גרסה 2.7.2 כוללת את השינויים האלה.
תיקוני באגים
- הניווט תלוי עכשיו במחזור החיים
2.6.2
. תיקון האינטראקציה ביןrememberSaveable
לביןNavHost
של התכונה 'ניווט' שתוביל לשחזור תקין של מצב היעדיםrememberSaveable
וכל מכונה שלSavedStateHandle
שנמצאת בבעלותViewModel
אחרי מוות או הפקה מחדש של התהליך. (b/298059596, b/289436035) - תוקנה בעיה שבה מוצגות בו-זמנית כמה תיבות דו-שיח בחלונית הניווט לכתיבה, כאשר תיבות הדו-שיח המוסתרות חלקית (למשל, לא תיבת הדו-שיח העליונה) נמצאות בסטטוס
CREATED
של מחזור חיים במקום בסטטוסSTARTED
. (aosp/2728520, b/289257213) - תוקנה בעיה שבה מוצגות בו-זמנית כמה תיבות דו-שיח ב'ניווט לכתיבה', וכאשר סוגרים את תיבת הדו-שיח העליונה, תיבת הדו-שיח העליונה החדשה נתקעת במצב
STARTED
במחזור החיים במקום לעבור כראוי ל-RESUMED
. (aosp/2629401, b/286371387) - התכונה 'ניווט בטוח' כבר לא יוצרת את המשימה באופן יזום אם היא לא מתבצעת בפועל. (I0e385, b/260322841)
עדכון יחסי תלות
- התכונה 'כתיבה מהירה' בניווט תלויה עכשיו ב-Compose 1.5.1.
גרסה 2.7.1
גרסה 2.7.1
23 באוגוסט 2023
androidx.navigation:navigation-*:2.7.1
משוחרר. גרסה 2.7.1 כוללת את השמירות האלה.
תיקוני באגים
- תוקנו בעיות בניווט עם 'כתיבה', כאשר שימוש ב-
Scaffold
היה אפשר לקבל שגיאה במהלך ניסיון לגשת ל-ViewModel
שלLifecycle.State.DESTROYED
. (I1dc11, b/268422136)
גרסה 2.7.0
גרסה
9 באוגוסט 2023
androidx.navigation:navigation-*:2.7.0
משוחרר. גרסה 2.7.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 2.6.0
אנימציות של מלווה
עכשיו, כש-AnimatedContent
יציב, הצלחנו להעביר את הקוד מ-אנימציית הניווט של 'התכונת 'הנחיה'' חזרה ל-Navigation Compose עצמו.
המשמעות היא שכל התמיכה בהגדרת מעברים בהתאמה אישית שקיימים ב-AnimatedNavHost
נתמכת ישירות ב-NavHost
.
לא יבוצעו שינויים נוספים באנימציית הניווט של Accompanist, ואנחנו נפסיק את השימוש בה רשמית בקרוב, יחד עם הנחיות למעבר בחזרה ל-Navigation Compose עצמו. עם זאת, ההנחיות יהיו הפוכות למדריך ההעברה, ולא נדרשים שינויים אחרים בממשק ה-API אם אתם כבר משתמשים בגרסת האלפא האחרונה של Accompanist (0.31.2-alpha
). (b/197140101)
תיקוני באגים
- NavHost בתכונה 'כתיבה בזמן ניווט' עכשיו מיירט כראוי קריאות חזרה למערכת גם אחרי שהפעילות הופסקה והמשיכה. (Icb6de, b/279118447)
עדכוני יחסי תלות
- הניווט תלוי עכשיו בסמל הכתיבה
1.5.0
למעלה מ-1.1.0
.
גרסה 2.7.0-rc01
26 ביולי 2023
androidx.navigation:navigation-*:2.7.0-rc01
משוחרר. גרסה 2.7.0-rc01 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה בעיה שבה פונקציות הלוגריתם הרגילות (lambda)
EnterTransition
ו-ExitTransition
שנוצרו כחלק מ-NavHost
עלולות להישאר בזיכרון גם אחרי שה-NavHost
יוסר מההרכב. (I893d0)
בעיות מוכרות
- יש בעיה בניווט עם גרסה 2.6.x שכשמנווטים עם חלון קופץ ייתכן שגורמת ל
IllegalArgumentException
. יכול להיות שאפשר למנוע את החריג הזה על ידי שינוי המבנה של התרשים, בדומה לטיפים שמופיעים כאן. (b/287133013)
גרסה 2.7.0-beta02
28 ביוני 2023
androidx.navigation:navigation-*:2.7.0-beta02
משוחרר. גרסה 2.7.0-beta02 כוללת את התחייבויות אלה.
תיקוני באגים
- ל'כתיבה מהירה' יש עכשיו את הסדר הנכון למעברים מותאמים אישית שמשתמשים באפשרות
popUpTo
.(/Ib1c3a, b/285153947)
גרסה 2.7.0-beta01
7 ביוני 2023
androidx.navigation:navigation-*:2.7.0-beta01
משוחרר. גרסה 2.7.0-beta01 מכילה את ההצהרות האלה.
תיקוני באגים
NavHost
בתפריט הניווט 'כתיבה' עכשיו מאפשרת ליירט כראוי שיחות חזרה מהמערכת, גם אחרי שActivity
STOPPED
וRESUMED
. (Icb6de, b/279118447)
גרסה 2.7.0-alpha01
24 במאי 2023
androidx.navigation:navigation-*:2.7.0-alpha01
משוחרר. גרסה 2.7.0-alpha01 מכילה את התחייבויות אלה.
אנימציות מ-Accompanist
עכשיו, כש-AnimatedContent
יציב, הצלחנו להעביר את הקוד מ-אנימציית הניווט של 'התכונת 'הנחיה'' חזרה ל-Navigation Compose עצמו.
כלומר, כל התמיכה בהגדרת מעברים מותאמים אישית שהיתה ב-AnimatedNavHost
קיימת ישירות ב-NavHost
.
לא יבוצעו שינויים נוספים באנימציה של ניווט עם Accompanist, ובקרוב נוציא אותה משימוש באופן רשמי, יחד עם הנחיות לגבי תהליך ההעברה בחזרה לכתיבת 'ניווט' עצמו. עם זאת, מדובר בשינוי ההפוך למדריך להעברת נתונים (מיגרציה) ללא צורך בשינויים נוספים ב-API אם כבר השתמשת בגרסת האלפא האחרונה של Accompanist (0.31.2-alpha
). (b/197140101)
תיקוני באגים
- מניווט
2.6.0-rc02
: תוקנה בעיה בניווט במקטעים שבה ניווט באמצעותpopUpTo
והפצת מקטע מהמקבץ האחורי בלי ליצור מחדש את התצוגה גרמה למערכת להפסיק לעבוד. (Ieb8d4, b/281726455)
עדכוני יחסי תלות
- הניווט תלוי עכשיו באפשרות 'אימייל חדש'
1.5.0-beta01
.
גרסה 2.6.0
גרסה 2.6.0
7 ביוני 2023
androidx.navigation:navigation-*:2.6.0
משוחרר. גרסה 2.6.0 כוללת את השמירות האלה.
שינויים חשובים בניווט מאז גרסה 2.5.0
- הנתונים
arguments
שלNavBackStackEntry
והarguments
שהועברו אלOnDestinationChangedListener
הם עכשיו רק עותק של הארגומנטים הלא ניתנים לשינוי שנוצרו כשניווטת ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישה הבאה ל-arguments
או למכונותOnDestinationChangedListener
אחרות. - עכשיו יש ב-
NavDeepLink
תמיכה בערכי ברירת מחדל למערכים, שמאפשרת תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט.NavType
כולל עכשיו גם שיטת ברירת מחדל שניתנת לביטול כדי לשלב שני ערכים מנותחים. - מעכשיו, תתי-כיתות בהתאמה אישית של
NavType
יכולות לשנות אתserializeAsValue
כדי לסריאליזציה ערך למחרוזת, וכך לאפשר את האנקפסולציה המלאה של הסריאליזציה וההמרה מהסריאליזציה (דרךparseValue
) בכיתהNavType
.StringType
משנה עכשיו את השיטה הזו כדי לקרוא ל-Uri.encode
ב-String
הנתון.
שינויים חשובים ב-Navigation Compose מגרסה 2.5.0
- כשמציגים תצוגה מקדימה של רכיב מורכב באמצעות
NavHost
, עכשיו מוצג כברירת מחדלstartDestination
של NavGraph. - עכשיו אפשר להשתמש ב-
NavController.popBackStack(route)
, ב-NavController.getBackStackEntry(route)
וב-NavController.clearBackStack(route)
כדי לשלוח מסלולים עם ארגומנטים שממולאים חלקית או במלואם. חשוב לזכור שהארגומנטים חייבים להתאים בדיוק לארגומנטים של הרשומה. - ניסיון ליצור
NavDeepLink
ריק באמצעותnavDeepLink
Kotlin DSL יוביל עכשיו לאזהרת איתור שגיאות בקוד (lint) שמציינת שלקישור עומק צריכים להיות uri, פעולה ו/או mimetype כדי שהוא יהיה תקף.
שינויים חשובים בניווט באמצעות קטעים מאז גרסה 2.5.0
NavHostFragment
כבר לא מיירט את לחצן החזרה אחורה במערכת עצמו. כך ה-FragmentManager
הבסיסי יכול לטפל בלחצן החזרה למערכת. כך, Fragment1.7.0-alpha01
ומעלה יכול לספק אנימציית חזרה חזויה בתוך האפליקציה במכשירי Android U.- כשמשתמשים בניווט עם קטעי קוד, ניסיון לבצע
FragmentTransaction
באופן ידני שמוסיף קטע קוד למחסנית הקוד הקודמת שלFragmentManager
יגרום להפעלתIllegalArgumentException
. תמיד צריך להוסיף מקטעים דרך ה-API שלnavigate()
. - כשמשתמשים במחרוזת המדויקת
${applicationId}
כתובת Placeholder במאפייניםapp:data
ו-app:dataPattern
ברכיב הפעילות בקובץ XML של הניווט,packageName
של ההקשר יאוכלס באופן אוטומטי ב-Placeholder במהלך ההנפה. FragmentNavigator
משתמש עכשיו בממשקי ה-API של המעבר כשמנווטים ב-NavBackStackEntries
ומציגים אותו בחלון קופץ. המשמעות היא שה-NavBackStackEntry
Lifecycle
יחכה עכשיו עד שהאפקטים המיוחדים של החלק שנכנס והחלק שיוצא יסתיימו, לפני שהוא יעביר את ה-Lifecycle.State
הסופי.DialogFragmentNavigator
משתמש עכשיו בממשקי ה-API של המעבר כשמנווטים ב-NavBackStackEntries
ומציגים אותו בחלון קופץ. המשמעות היא ש-NavBackStackEntry
Lifecycle
ימתין עכשיו עד שDialogFragment
Lifecycle
יעבור אלDESTROYED
לפני שיעבור אלDESTROYED
.- עכשיו אפשר לאחזר את
NavController
דרךNavHostFragment
ברגע שה-NavHostFragment
מצורף ל-FragmentManager
, ולא רק אחריonCreate()
. - התמיכה של התכונה 'ניווט' במודולים של פיצ'רים דינמיים תלויה עכשיו בספרייה המפורטת של Play Feature Delivery.
- Navigation Safe Args תלוי עכשיו בפלאגין Android Gradle בגרסה 7.3.0. המשמעות היא שהוא תואם עכשיו רק לגרסאות 7.3.0 ומעלה.
שינויים חשובים בממשק המשתמש של הניווט מאז 2.5.0
- כשמעבירים את המזהה של תרשים ניווט אל
AppBarConfiguration
(למשל דרךMenu
),NavigationUI
מתייחס עכשיו ליעד ההתחלה של תרשים הניווט הזה בלבד בתור יעד ברמה העליונה, במקום לסמן בטעות כל יעד בתרשים בתור יעד ברמה העליונה. אין שינוי בהתנהגות של העברת המזהה של יעד ספציפי. אותה פונקציונליות זמינה לקוד שלכם באמצעות הפונקציה החדשהisTopLevelDestination
ב-AppBarConfiguration
. - עכשיו, שילובי
setupWithNavController
ב-NavigationUI
לעבודה עם סרגל האפליקציה העליון ינתחו ערכיR.string
שלReferenceType
ארגומנטים שמופיעים ב-android:label
בערכי המחרוזת שלהם, במקום פלט של המספר השלם של המשאב שנוצר באופן אוטומטי. NavigationUI
מספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItem
שנבחר.
גרסה 2.6.0-rc02
24 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc02
משוחרר. גרסה 2.6.0-rc02 כוללת את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בניווט ב-Fragments, שבה ניווט באמצעות
popUpTo
והוצאה של fragment מסטאק העורפי בלי ליצור מחדש את התצוגה שלו גרמו למערכת להפסיק לפעול. (Ieb8d4, b/281726455)
גרסה 2.6.0-rc01
10 במאי 2023
androidx.navigation:navigation-*:2.6.0-rc01
משוחרר. גרסה 2.6.0-rc01 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה בניווט עם קטעי קוד, שבה הסרת קטע קוד באמצעות navigate עם
popUpTo
בקריאה החוזרת ל-lifecycleonResume()
גורמת ל-IllegalStateException
. (I21884, b/279644470)
גרסה 2.6.0-beta01
19 באפריל 2023
androidx.navigation:navigation-*:2.6.0-beta01
משוחרר. גרסה 2.6.0-beta01 מכילה את ההתחייבויות האלה.
תכונות חדשות
NavBackStackEntry
מספק עכשיו הטמעה בהתאמה אישית שלtoString
. (Iff00b)
תיקוני באגים
- כשמשתמשים בניווט עם קטעי קוד, ניסיון לבצע
FragmentTransaction
באופן ידני שמוסיף קטע קוד למחסנית הקוד הקודמת שלFragmentManager
יגרום להפעלתIllegalArgumentException
. תמיד צריך להוסיף מקטעים דרך ה-API שלnavigate()
. (I6d38e) - כשיש
navigate
שמוסיף ערך ו-popBackStack
שמסיר אותה באותה פריים, הרשומה העליונה שתתקבל במקבץ האחורי תחזיר אותה באופן עקבי אלRESUMED
Lifecycle.State
. (Id8067, b/276495952)
גרסה 2.6.0-alpha09
5 באפריל 2023
androidx.navigation:navigation-*:2.6.0-alpha09
משוחרר. גרסה 2.6.0-alpha09 מכילה את ההוספות האלה.
תיקוני באגים
- תיקנו את הבדיקות למסלול לא תקין, כך שאם
NavDestination
מכילNavArgument
שאינו nullable, המסלול של היעד הזה חייב להכיל placeholders ל-args ששמותיהם זהים לשם שלNavArgument
שאינו nullable. (Ic62bf, b/274697949) - מעכשיו, ניווטים של קישורי עומק שמבוססים על
Action/MimeType
ייכשלו אם בפעולת הניווט חסרNavArgument
שאינו אפס, שנדרש על ידיNavDestination
שה-Action/MimeType
תואם לו. (Ibfa17, b/271777424) - כש-
NavController
מגדיר גרף עם אותו מסלול ויעדים כמו בגרף הקודם, הוא מחליף עכשיו בצורה תקינה את צמתים הגרף הנוכחיים ואת היעדים בסטאק העורפי במופעים חדשים. התיקון הזה מטפל בקריסה שמתרחשת כשמשתמשים ב-onLaunchSingleTop
בלי לשמור את המצב ב'כתיבה בזמן ניווט'. התיקון הזה גם מתקן שגיאה שבה מנווטים ליעדי build שמשויכים לגרף הבסיס, וכן סטאק לא תקין של חזרה אחורה. (I5bc58, b/275258161, b/275407804)
גרסה 2.6.0-alpha08
22 במרץ 2023
androidx.navigation:navigation-*:2.6.0-alpha08
משוחרר. גרסה 2.6.0-alpha08 מכילה את ההוספות האלה.
תכונות חדשות
- עכשיו יש לך אפשרות לאחזר את
NavController
ב-NavHostFragment
ברגע שה-NavHostFragment
מצורף אלFragmentManager
, ולא רק אחריonCreate()
. (Ic6382, b/220186282)
תיקוני באגים
- תוקנה בעיה ב-
NullPointerException
כשפופ מגרף בתצוגת עץ שכולל ארגומנט שאינו nullable. (6b3581, b/249988437) - כשמשתמשים ב'חזרה' במערכת אחרי ניווט באמצעות
popUpTo
, המצב שלNavController
יופיע ברשומה הנכונה. (I3a8ec, b/270447657) - עכשיו
FragmentNavigator
יקפוץ כמו שצריך רשומות כשהמחסנית האחורית קופץת דרך המערכת חזרה אוpopBackStack()
ואם העסקה משתמשת באפקטים עבור המקטע. (I81bdf) - הוספת קטעים ל-
FragmentNavigator
'sFragmentManager
בלי להשתמש בניווט לא תגרום יותר לקריסה. (b17204, b/274167493)
עדכוני יחסי תלות
- הניווט תלוי עכשיו במחזור החיים
2.6.1
. (586fe7) - הניווט תלוי עכשיו ב-SavedState
1.2.1
. (078e4e) - הניווט תלוי עכשיו ב-ProfileInstaller
1.3.0
. (512f0c)
גרסה 2.6.0-alpha07
8 במרץ 2023
androidx.navigation:navigation-*:2.6.0-alpha07
משוחרר. גרסה 2.6.0-alpha07 מכילה את ההצהרות האלה.
תיקוני באגים
- הוספנו ל-API של
getBackStackEntry
,popBackStack
ו-clearBackStack
, שמקבל מסלולים, תמיכה בתבניות של מסלולים עם ארגומנטים nullable ועם פרמטרים של שאילתה nullable (I22294, b/269302500) - תוקנה בעיה שבה קריאה ל-
clearBackStack()
מ-NavController
לא מנקה את המצב השמור במנהל הקטעים המשויך ל-back stack שנמחק. (Ic1cce, b/271190202) - תוקנה נסיגה בגרסה 2.6.0-alpha06 שגרמה להדגשה של
MenuItem
הלא נכון ב-BottomNavigationView
כשמשתמשים ב'חזרה למערכת' בין כרטיסיות. (I634f6, b/270447657) - תוקנה נסיגה בגרסה 2.6.0-alpha06 שגרמה לכך ש-
NavBackStackEntry
לא הועברו לסטטוס 'המשך' כשנעשה שימוש ב-Animation
. (Ib3589, b/269646882)
גרסה 2.6.0-alpha06
22 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha06
משוחרר. גרסה 2.6.0-alpha06 מכילה את ההצהרות האלה.
תכונות חדשות
- מעכשיו, כשבודקים תוכן קומפוזבילי עם
NavHost
בתצוגה מקדימה, יוצגstartDestination
של Nav Graph כברירת מחדל. (I2b89f)
שינויים ב-API
- כל עומסי יתר של
NavController
navigate
מסומנים עכשיו ב-@MainThread
כדי להבטיח שהם יישלחו בקריאה לשרשור הראשי. (I2c0b0, b/263427111)
תיקוני באגים
- תוקנה קריסה שנגרמה בניסיון לנווט בזמן שימוש בניווט דינמי לפי קטעים. (I3ee29, b/268360479)
- תוקן באג שבו ניווט לקטע אחר באמצעות לחצן החזרה לאחור במערכת לא מעדכן את הסרגל התחתון כך שיציג את הפריט הנבחר הנכון (If559f, b/269044426)
בעיות מוכרות
- כשמשתמשים בניווט עם קטעי קוד, מחזור החיים של
NavBackStackEntry
לא מצליח להגיע ל-RESUMED
כשמשתמשים בממשקי ה-API שלAnimation
. (b/269646882) - כשמשתמשים בניווט באמצעות קטעי קוד (fragments) ועוברים בין המסכים באמצעות
BottomNavigation
, אם מנסים לשחזר סטאק אחורה עם כמה רשומות, ה-BottomMenuItem
לא מתעדכן בצורה נכונה. (b/270447657) - כשמשתמשים בניווט עם מקטעים, אחרי שחזור המצב,
NavBackStackEntry
Lifecycle
לא מקבלDESTROYED
כשהמקטע שלו הואDESTROYED
. (b/270610768)
גרסה 2.6.0-alpha05
8 בפברואר 2023
androidx.navigation:navigation-*:2.6.0-alpha05
משוחרר. גרסה 2.6.0-alpha05 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
- ב-
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
יש עכשיו תמיכה במסלולים עם מילוי חלקי או מלא של הארגומנטים. חשוב לזכור שהארגומנטים חייבים להתאים בדיוק לארגומנטים של הרשומה. (Iebd28, Ic678c, I3b37b, b/257514373) FragmentNavigator
משתמש עכשיו בממשקי ה-API של המעבר כשמנווטים ב-NavBackStackEntries
ומציגים אותו בחלון קופץ. פירוש הדבר הוא ש-NavBackStackEntry
Lifecycle
ימתין עכשיו להשלמת האפקטים המיוחדים של המקטע שהכניסה אליו והיציאה שלו תסתיים לפני העברת ה-Lifecycle.State
הסופי. (I3cb19, b/238686802)DialogFragmentNavigator
משתמש עכשיו בממשקי ה-API של המעבר כשמנווטים ב-NavBackStackEntries
ומציגים אותו בחלון קופץ. המשמעות היא ש-NavBackStackEntry
Lifecycle
ימתין עכשיו עד שDialogFragment
Lifecycle
יעבור אלDESTROYED
לפני שיעבור אלDESTROYED
. (I53ee5, b/261213893)
שינויים ב-API
NavigatorState
מספק עכשיו את ה-API שלprepareForTransition
כדי לאפשר ל-Navigator
להעבירNavBackStackEntries
ל-Lifecycle.State
ביניים. (I42c21, b/238686802)- עכשיו אפשר לגשת למחסנית הקודקודית הקודמת שמשויכת ל-
NavGraphNavigator
או ל-ComposeNavigator
דרך נכסbackstack
.ComposeNavigator
חושף עכשיו גם את פונקציית ה-callbackonTransitionComplete()
כדי לסמן כ'הושלמה'NavBackStackEntry
שהפעילה פעולת ניווט או פעולתpopBackStack
. (I02062, I718db, b/257519195)
תיקוני באגים
- מצב הניווט לא יפעל כעת כשמשתמשים בממשקי ה-API של
push/popWithTransition
והרשומה כבר מטופלת. (Iadbfa, b/261213893) - כשמשתמשים ב-
launchSingleTop
עםNavGraph
בתצוגת עץ, כל היעדים, החל מהיעד המקורי ועד ל-startDestination
שלו, יתווספו בצורה תקינה לחלק העליון של סטאק החזרה. (Id4bea, b/253256629) - עכשיו, מערכת הניווט תחליף כראוי את מופע
DialogFragment
כשמנווטים לאותו יעד, כאשר הדגלlaunchSingleTop
מוגדר כ-true. (I45b5a, b/149572817) - Navigation SafeArgs לא יגרום יותר לשגיאת הידור כשמשתמשים בארגומנטים באורך 19 תווים בדיוק. (Id60bc, b/257110095)
גרסה 2.6.0-alpha04
9 בנובמבר 2022
androidx.navigation:navigation-*:2.6.0-alpha04
משוחרר. גרסה 2.6.0-alpha04 מכילה את התחייבויות אלה.
תכונות חדשות
- מעכשיו, תתי-כיתות בהתאמה אישית של
NavType
יכולות לשנות אתserializeAsValue
כדי לסריאליזציה ערך למחרוזת, וכך לאפשר את האנקפסולציה המלאה של הסריאליזציה וההמרה מהסריאליזציה (דרךparseValue
) בכיתהNavType
.StringType
משנה עכשיו את השיטה הזו כדי לקרוא ל-Uri.encode
ב-String
הנתון. (Ie5213, b/247637434) NavigationUI
מספק עכשיו יומנים כשהוא לא מצליח לנווט דרךMenuItem
שנבחר. (I2af5a, b/247730357)
תיקוני באגים
- קישורי עומק לניווט מנותחים עכשיו באופן עצלני במקום במהלך האימות של הגרף, מה שעשוי לשפר את ביצועי האפליקציה בזמן ההפעלה. (Iab0ab)
- תוקנה הקריסה שנגרמה כתוצאה מניווט למעלה אחרי קישור עומק ליעד עם ארגומנטי ברירת מחדל שהם null. (I51c24, b/243183636)
עדכון יחסי תלות
- התמיכה של התכונה 'ניווט' במודולים של פיצ'רים דינמיים תלויה עכשיו בספרייה המפורטת של Play Feature Delivery. (Ib4ddc)
- Navigation Safe Args תלוי עכשיו בפלאגין Android Gradle בגרסה 7.3.0. המשמעות היא שהיא תואמת עכשיו רק לגרסאות 7.3.0 ואילך. (I47e49)
גרסה 2.6.0-alpha03
24 באוקטובר 2022
androidx.navigation:navigation-*:2.6.0-alpha03
משוחרר. גרסה 2.6.0-alpha03 מכילה את התחייבויות אלה.
תיקוני באגים
- מניווט
2.5.3
:NavHost
לא יגרום יותר ל-NoSuchElementException
כשאין יעד זמין ל-Crossfade
לכתוב. עכשיו הוא פשוט ידלג על היצירה. (Ieb46e, b/253299416) - מניווט
2.5.3
: תוקנה בעיה שבה המצב השמור של Compose (למשל, שימושים ב-rememberSaveable
) לא נשכח והוסר כשיעד הוסר מהמקבץ האחורי. (I64949)
עדכונים בנושא תלות
גרסה 2.6.0-alpha02
5 באוקטובר 2022
androidx.navigation:navigation-*:2.6.0-alpha02
משוחרר. גרסה 2.6.0-alpha02 מכילה את ההצהרות האלה.
שינויים בהתנהגות
- כשמעבירים את המזהה של תרשים ניווט אל
AppBarConfiguration
(למשל דרךMenu
), עכשיוNavigationUI
מתייחס רק ליעד ההתחלה של תרשים הניווט הזה כיעד ברמה העליונה, ולא לסמן בטעות כל יעד בתרשים כיעד ברמה העליונה. ההתנהגות של העברת המזהה של יעד ספציפי לא השתנתה. הפונקציונליות הזו זמינה לקוד שלכם באמצעות פונקצייתisTopLevelDestination
החדשה ב-AppBarConfiguration
. (Ie936e, b/238496771)
תיקוני באגים
- הרכיב
navigation:navigation-fragment
תלוי עכשיו בגרסה1.5.2
של ה-Fragment. (I00ba4) - האפשרות שנבחרה בתפריט לא תתעדכן יותר כשמנווטים ליעד
FloatingWindow
, כמו תיבת דו-שיח. (I4cde8, b/240308330)
גרסה 2.6.0-alpha01
7 בספטמבר 2022
androidx.navigation:navigation-*:2.6.0-alpha01
משוחרר. גרסה 2.6.0-alpha01 מכילה את ההוספות האלה.
תכונות חדשות
- עכשיו, שילובי
setupWithNavController
ב-NavigationUI
לעבודה עם סרגל האפליקציה העליון ינתחו ערכיR.string
שלReferenceType
ארגומנטים שמופיעים ב-android:label
בערכי המחרוזת שלהם, במקום פלט של המספר השלם של המשאב שנוצר באופן אוטומטי. (I5f803, b/167959935) - עכשיו יש ב-
NavDeepLink
תמיכה בערכי ברירת מחדל למערכים, שמאפשרת תמיכה בפרמטרים חוזרים של שאילתות שימופו לסוג המערך של הארגומנט.NavType
כולל עכשיו גם שיטת ברירת מחדל שאפשר לשנות כדי לשלב שני ערכים שעברו ניתוח. (Id68c3, b/209977108) - כשמשתמשים במחרוזת המדויקת
${applicationId}
כתובת Placeholder במאפייניםapp:data
ו-app:dataPattern
ברכיב הפעילות בקובץ XML של הניווט,packageName
של ההקשר יאוכלס באופן אוטומטי ב-Placeholder במהלך ההנפה. (Iaabde, b/234223561) - ניסיון ליצור
NavDeepLink
ריק באמצעותnavDeepLink
Kotlin DSL יוביל עכשיו לאזהרת איתור שגיאות בקוד (lint) שמציינת שלקישור עומק צריכים להיות uri, פעולה ו/או mimetype כדי שהוא יהיה תקף. (I08d2f, b/154038883)
שינויים ב-API
- נוספה פונקציית תוסף חדשה
NavDestination
לניתוח תוויות דינמיות עם ארגומנטים בצורתandroid:label="{arg}"
למחרוזת. תמיכה בארגומנטים מסוגReferenceType
על ידי ניתוח הערכים שלR.string
לערכי המחרוזת שלהם. (I07d89, b/236269380)
שינויים בהתנהגות
- הערכים
arguments
של NavBackStackEntry והarguments
שהועברו אלOnDestinationChangedListener
הם עכשיו רק עותק של הארגומנטים שלא ניתנים לשינוי שנוצרו כשניווטת ליעד. המשמעות היא ששינויים שתבצעו בחבילות האלה לא ישתקפו בגישה הבאה ל-arguments
או למכונותOnDestinationChangedListener
אחרות. (I676f5)
תיקוני באגים
- מניווט
2.5.2
: הניווט הדינמי מנסה להתקין יעדי פעילות ממודולים אחרים לפני הניווט אליהם. (Ia2c16, b/240292838) - מניווט
2.5.2
: מערכת הניווט תחליף עכשיו כראוי את מופע הפלח כשמנווטים לאותו יעד ומגדירים את הדגלlaunchSingleTop
כ-true. (I5a2f1, b/237374580) - מניווט
2.5.2
: תוקן הבעיהIllegalStateException
שנגרמה כתוצאה מהניווט לתרשים עם עץ כפול שמשתף הורה עם יעד חדש שנפתח. (I9f7cb, b/243778589)
גרסה 2.5
גרסה 2.5.3
24 באוקטובר 2022
androidx.navigation:navigation-*:2.5.3
משוחרר. גרסה 2.5.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
NavHost
לא יגרום יותר ל-NoSuchElementException
כשאין יעד זמין ל-Crossfade
לכתיבה. עכשיו הוא פשוט ידלג על היצירה. (Ieb46e, b/253299416)- תוקנה בעיה שבה מצב כתיבה שנשמר (למשל, שימושים ב-
rememberSaveable
) לא נשכח והוסר כשיעד הוסר מהמקבץ האחורי. (I64949)
גרסה 2.5.2
7 בספטמבר 2022
androidx.navigation:navigation-*:2.5.2
משוחרר. גרסה 2.5.2 כוללת את השמירות האלה.
תיקוני באגים
- התכונה 'ניווט דינמי' מנסה עכשיו להתקין כראוי יעדים של פעילויות ממודולים אחרים לפני שהיא מנווטת אליהם. (Ia2c16, b/240292838)
- הניווט יחליף עכשיו בצורה תקינה את מופע המקטע כשמנווטים לאותו יעד ומגדירים את הדגל
launchSingleTop
כ-True. (I5a2f1, b/237374580) - תוקנה השגיאה
IllegalStateException
שנגרמה כתוצאה מניווט לתרשים עם עץ כפול שמשתף הורה עם יעד חדש שנפתח. (I9f7cb, b/243778589)
עדכון יחסי תלות
- הניווט
2.5.2
תלוי עכשיו בקטע1.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)
עדכוני יחסי תלות
- ספריית הניווט תלויה עכשיו בקטע מחזור החיים
2.5.1
. (Ib4451) - ספריית הניווט תלויה עכשיו בפעילות
1.5.1
. (I3efe8) - ספריית הניווט תלויה עכשיו בקטע
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
ללא מצב (stateless) דרךCreationExtras
של2.5.0
לניהול מחזור חיים.
Navigation SafeArgs
Navigation Safe Args
שדרג את התלות שלAndroid Gradle Plugin
כך שתסתמך על7.0.4
, והפסיק את התאימות לגרסאות AGP שקדמו ל-7.0
.- נוספה תמיכה במאפיין build.gradle של מרחב השמות, לשימוש במקום applicationId.
שינויים אחרים
- ממשק ה-API של
visibleEntries
כבר לא ניסיוני ומספק פונקציה לאחזור כל הרשומות שהיעד שלהן גלוי כרגע בהתאם ל-NavController
.
גרסה 2.5.0-rc02
15 ביוני 2022
androidx.navigation:navigation-*:2.5.0-rc02
משוחרר. גרסה 2.5.0-rc02 כוללת את ההוספות האלה.
תיקוני באגים
- תוקנה קריסה שנגרמה כתוצאה ממעבר מהיר בין יעדים תחתונים כשהשתמשת בניסוח ניווט
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
לא יתרסק יותר כשמשתמשים ב-applicationIdSuffix
ובמרחב שמות בליapplicationId
, או כשה-applicationId
והמרחב השמות שונים. (I754b1, b/233119646)- ל-
NavArgument
יש עכשיו פונקצייתtoString()
בהתאמה אישית כדי להציג את הערכים הפנימיים של הארגומנט. (I900a8)
גרסה 2.5.0-rc01
11 במאי 2022
androidx.navigation:navigation-*:2.5.0-rc01
משוחרר. גרסה 2.5.0-rc01 כוללת את ההצהרות האלה.
תכונות חדשות
- הוספנו כלל חדש לאיתור שגיאות בקוד כדי להזהיר מפני הצבת רכיבי
<deeplink>
בתוך רכיבי<activity>
בקובץnavigation.xml
.(Ic15a5, b/178403185)
תיקוני באגים
- היקפי ה-Composable ב-
NavHost
וב-DialogHost
נהרסים עכשיו בסדר הצפוי, כלומר ה-Composable הפנימיים נהרסים לפני ה-Composable החיצוניים. (I157e6) - עכשיו, ב-Navigation SafeArgs נעשה שימוש ב-
PathSensitivity.RELATIVE
ב-ArgumentsGenerationTask
כדי לאפשר העברה של מטמון. המשמעות היא שאפשר להשתמש שוב ברשומה במטמון מ-build ב-CI ל-build מקומי. (I5f67c, b/173420454) - כלל השגיאות בקוד
UnrememberedGetBackStackEntryDetector
עודכן כדי לוודא שהקריאה לפונקציהremember
סביב הקריאה ל-getBackStackEntry()
עוברת גם באובייקטNavBackStackEntry
כמפתח.(Ib7081, b/227382831)
גרסה 2.5.0-beta01
20 באפריל 2022
androidx.navigation:navigation-*:2.5.0-beta01
משוחרר. גרסה 2.5.0-beta01 כוללת את ההצהרות האלה.
תיקוני באגים
DialogNavigator
משתמש עכשיו ב-popWithTransition
כשמפעיל קריאה ל-dismiss()
. התיקון הזה מתקן מצב מרוץ (race condition) כשמשתמשים ב-ViewModel
בתוך יעדdialog
, שגורם ל-IllegalStateException
כשסוגרים את תיבת הדו-שיח באמצעות לחצן החזרה למערכת או בהקשה מחוץ לתיבת הדו-שיח כדי לצאת. (Id7376, b/226552301)
עדכוני יחסי תלות
- הניווט תלוי עכשיו במחזור החיים
2.5.0-beta01
. אם ממקמים אתNavHost
בתוךNavHost
אחר בכרטיסיית הניווט התחתונה שאינה ראשית, אפשר לתקןIllegalStateException
.
גרסה 2.5.0-alpha04
6 באפריל 2022
androidx.navigation:navigation-*:2.5.0-alpha04
משוחרר. גרסה 2.5.0-alpha04 מכילה את ההצהרות האלה.
שינויים ב-API
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
עם פרמטר שאילתה אחד ללא ערך. (I0efe8, b/148905489) - מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, b/217399862)
Navigation Safe Args
לא יתקרוס יותר כשמשתמשים במרחבי שמות ואיןAndroidManifest.xml
. (I17ccf, b/227229815)
גרסה 2.5.0-alpha03
23 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha03
משוחרר. גרסה 2.5.0-alpha03 מכילה את ההצהרות האלה.
שינויים ב-API
- עכשיו אפשר להעביר את
CreationExtras
אלby navGraphViewModels
כדי ליצורViewModel
. (I29217, b/217618359)
תיקוני באגים
- ב-
NavDeepLinks
יש עכשיו תמיכה תקינה בתווי שורה חדשים מקודדים שמוטמעים בנתיבים/במזהי URI של קישורי עומק. (I513d1, b/217815060) CreationExtras
יפעל עכשיו בצורה תקינה כשמשתמשים בו עםNavBackStackEntries
כדי ליצור ViewModels. (I69161, b/217617710)- עכשיו יש תמיכה ב'ארגומנטים בטוחים' בניווט באמצעות מרחב השמות שמוגדר ב-
build.gradle
במקום החבילה ב-AndroidManifest. (I659ef, b/217414933)
גרסה 2.5.0-alpha02
9 בפברואר 2022
androidx.navigation:navigation-*:2.5.0-alpha02
משוחרר. גרסה 2.5.0-alpha02 מכילה את התחייבויות אלה.
תיקוני באגים
- מNavigation
2.4.1
: עכשיו ה-NavHostFragment
מגדיר בצורה נכונה את ה-OnBackPressedDispatcher
כשמשתמשים ב-viewbinding עם תרשימים בתצוגת עץ. (Ifbb51, b/214577959) - מניווט
2.4.1
: עכשיו, כשמקשרים עומק דרך כמה מחרוזותNavGraph
בתצוגת עץ, המקבץ האחורי יכלול נכון יעדי ביניים. (I504c0, b/214383060)
גרסה 2.5.0-alpha01
26 בינואר 2022
androidx.navigation:navigation-*:2.5.0-alpha01
משוחרר. גרסה 2.5.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
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 תלוי עכשיו ב-Android Gradle Plugin בגרסה 7.0.4. המשמעות היא ש-Navigation Safe Args לא יהיה תואם יותר לגרסאות Android Studio שקודמות לגרסה 7.0, אבל הוא תואם עכשיו ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)
גרסה 2.4.2
גרסה 2.4.2
6 באפריל 2022
androidx.navigation:navigation-*:2.4.2
משוחרר. גרסה 2.4.2 כוללת את ההצהרות האלה.
תיקוני באגים
- הוספה לאחור מ-Navigation
2.5.0-alpha03
: עכשיו יש ב-NavDeepLinks
תמיכה נכונה בתווים מקודדים של שורות חדשות שמוטמעים במסלולים או ב-URI של קישורים עמוקים. (I513d1, b/217815060) - הוטמעו מ-Navigation
2.5.0-alpha03
: מעכשיו, Navigation SafeArgs תומך בשימוש במרחב השמות שמוגדר ב-build.gradle
במקום בחבילה ב-AndroidManifest. (I659ef, b/217414933) - בעקבות ההעברה לאחור מניווט
2.5.0-alpha04
:Navigation Safe Args
לא תקרוס יותר בשימוש במרחבי שמות ואיןAndroidManifest.xml
קיים. (I17ccf, b/227229815) - הוספה לאחור מ-Navigation
2.5.0-alpha04
: מחרוזות ריקות נחשבות עכשיו לארגומנטים תקינים בקישורי עומק. (I70a0d, b/217399862)
גרסה 2.4.1
גרסה 2.4.1
9 בפברואר 2022
androidx.navigation:navigation-*:2.4.1
משוחרר. גרסה 2.4.1 מכילה את ההוספות האלה.
תיקוני באגים
- עכשיו, כשמשתמשים ב-viewbinding עם תרשימים בתצוגת עץ, ה-
NavHostFragment
מגדיר את ה-OnBackPressedDispatcher
בצורה נכונה. (Ifbb51, b/214577959) - עכשיו, כשמקשרים עומק דרך כמה
NavGraph
s מקוננים, המקבץ האחורי יכלול נכון יעדי התחלה ברמת ביניים. (I504c0, b/214383060) - הוטמעו גרסאות קודמות מ-Navigation
2.5.0-alpha01
: תוקנה בעיה שבה הגישה ל-ViewModel שנוצר באמצעותby navGraphViewModels()
מ-onCreate()
של Fragment נכשלה עםIllegalStateException
. (I8a14d) - בוצעה העברה לאחור מהניווט
2.5.0-alpha01
: פונקציותNavDeepLink
כבר לא מפענחים ארגומנטים פעמיים שלא לצורך, כלומר, הארגומנטים שמפענחו בצורה נכונה מועברים עכשיו ליעד הסופי. (I31b0a, b/210711399) - הוטמע מ-Navigation
2.5.0-alpha01
: Safe Args תלוי עכשיו ב-Android Gradle Plugin בגרסה 7.0.4. פירוש הדבר הוא ש-Navigation Safe Args לא יהיה תואם יותר לגרסאות Android Studio שקודמות לגרסה 7.0, אבל הוא תואם עכשיו ל-Android Gradle Plugin מגרסה 7.1.0 ואילך. (I41c88, b/213086135, b/207670704)
גרסה
גרסה
26 בינואר 2022
androidx.navigation:navigation-*:2.4.0
משוחרר. גרסה 2.4.0 כוללת את השמירות האלה.
שינויים חשובים מאז 2.3.0
- כל פריטי המידע שנוצרו בתהליך הפיתוח (artifacts) של Navigation נכתבו מחדש ב-Kotlin. בעקבות זאת, חל שיפור ביכולת של כיתות להחזיק ערך null באמצעות גנריקים (כמו תת-כיתות של
NavType
). כל הפונקציות של תוספים ל-Kotlin שהיו חלק מפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של-ktx
הועברו אל פריטי המידע העיקריים התואמים שלהם. הארטיפקטים של-ktx
ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. - ארטיפקט
navigation-fragment
כולל עכשיו הטמעה מוגדרת מראש של פריסת שתי חלוניות דרךAbstractListDetailFragment
החדש. בקטע הזה נעשה שימוש ב-SlidingPaneLayout
כדי לנהל חלונית רשימה (שסופקת על ידי תת-הסוג) וחלונית פרטים, שבה נעשה שימוש ב-NavHostFragment
כהטמעה שלה, כפי שמוצג בהטמעת הדוגמה. - ה-method
currentBackStackEntryAsFlow()
ב-NavController
מספקתFlow
שפולט בכל פעם שהNavBackStackEntry
הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהול ידני שלOnDestinationChangedListener
. - עכשיו יש ב-NavController אפשרות לאחזר רשימה של כל המופעים הגלויים של
NavBackStackEntry
כ-StateFlow
דרך המאפיין הניסיוניvisibleEntries
. - עכשיו אפשר להרחיב את הכיתה
NavType
כדי ליצור NavTypes מותאמים אישית. יש תמיכה בסוגי נתונים מותאמים אישית רק כשיוצרים את תרשים הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. רכיב הניווט מספק עכשיו ממשקי API של
findStartDestination()
ו-getHierarchy()
שאפשר להשתמש בהם כדי להטמיע ממשק משתמש מותאם אישית של Navigation.findStartDestination()
היא פונקציית תוסף ב-NavGraph
שמאתרת את יעד ההתחלה בפועל שיוצג כשמנווטים לתרשים, גם אםstartDestination
הוא בעצמוNavGraph
מקונן.getHierarchy()
היא פונקציה ב-NavDestination
שאפשר להשתמש בה כדי לוודא אם יעד נתון נמצא בהיררכיה של יעד אחר.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
שיטות
NavigationUI
שהשתמשו ב-BottomNavigationView
עודכנו כך שישתמשו במקום זאת בסיווג ההורה שלהן,NavigationBarView
, שהוצג בחומר1.4.0
. כך ניתן להשתמש בשיטות האלה עםNavigationRailView
.כשמנפחים רכיב
<action>
באמצעות XML, מאפייני האנימציה יכולים להשתמש במאפיינים שחולצו מהעיצוב באמצעות התחבירapp:enterAnim="?attr/transitionEnter"
.Safe Args יוצר עכשיו שיטה
fromSavedStateHandle()
לכל כיתהNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
מסלולי ניווט ו-Kotlin DSL
בגרסאות קודמות של 'ניווט', לכל יעד היה מזהה מספר שלם קבוע שאפשר לזהות אותו באופן ייחודי מבין היעדים האחרים באותו רמה, ולאפשר לכם navigate()
ליעד הזה באופן ישיר או באמצעות פעולה. המערכת הזו עדיין תקפה ומועילה, במיוחד במקרים שבהם מגדירים את תרשים הניווט ב-XML ואפשר להשתמש בערכי קבועים מסוג R.id
שנוצרו באופן אוטומטי או ב-Safe Args (שנעשה בהם שימוש בערכי הקבועים האלה כדי ליצור קוד בזמן ה-build), אבל המערכת הזו של מספרים שלמים ייחודיים לא תיעדה את המשמעות הסמנטית ואת היכולת לבטא את הצורך לתמוך בתרשים דינמי לחלוטין שנוצר באופן פרוגרמטי בזמן הריצה באמצעות Navigation Kotlin DSL.
בגרסה הזו נוספה אפשרות חדשה לזיהוי ייחודי של יעד בתרשים ניווט לפי הנתיב שלו. נתיב הוא String
שמגדיר את הנתיב הייחודי ליעד. כל השיטות של Kotlin DSL שדרשו מזהה יעד הוצאו משימוש והוחלפו ב-API מקביל שדורש מסלול.
צריך להתייחס לכל מסלול כחלק 'path' של Uri
שמגדיר את היעד הזה, למשל: home
, profile/{userId}
, profile/{userId}/friends
וכו'. כשהזהות של יעד משויכת לחלק ספציפי של תוכן, הארגומנטים הדינמיים האלה צריכים להיות חלק מהמסלול, בהתאם לאותם כללים שחלים על קישורי עומק מרומזים.
לכל ממשקי ה-API של NavController
, שבעבר קיבלו רק מזהה, יש עכשיו עומס יתר שמקבל מסלול String
. כולל navigate()
, popBackStack()
, popUpTo()
ו-getBackStackEntry()
.
היו לכך כמה השלכות על ה-API:
- המאפיין
popUpTo
ב-Kotlin DSL יצא משימוש לטובתpopUpToId
. - ממשק ה-API
getStartDestination()
הוצא משימוש והוחלף על ידיgetStartDestinationId()
.
בניגוד לניווט לפי מזהה, ניווט לפי מסלול פועל לפי אותם כללים כמו קישורי עומק מרומזים, כלומר אפשר לנווט ישירות לכל יעד בכל תרשים בתצוגת עץ. כך אפשר להשתמש בנתיבים האלה בפרויקטים עם כמה מודולים בלי להוסיף באופן מפורש קישור עומק גלוי מבחוץ לכל יעד.
כתיבה מהירה בזמן ניווט
הארטיפקט navigation-compose
מספק שילוב בין רכיב הניווט לבין Jetpack פיתוח נייטיב. הוא משתמש בפונקציות @Composable
בתור היעדים באפליקציה.
בגרסה הזו יש:
- רכיב
NavHost
שאפשר להרכיב, שמאפשר ליצור את תרשים הניווט באמצעות DSL של Kotlin, באמצעות יעדים מסוגcomposable
ו-dialog
, וגם תמיכה ב-Navigators אופציונליים כמו אלה מ-Accompanist Navigation Material. - תמיכה חובה במעבר חלק בין יעדים. אפשר להשתמש באנימציית ניווט של כלי נלווה כדי לשלוט במעברים של הכניסה והיציאה באמצעות ממשקי API ניסיוניים של Compose.
- הגדרת ההיקף של
Lifecycle
לכל יעד שאפשר ליצור ממנו קומפוזיציה. כל יעד מגיע למצבRESUMED
רק כשהטרנזיציות של הכניסה מסתיימות, ויורד מיד ל-STARTED
כשהטרנזיציות של היציאה מתחילות. כך תוכלו להימנע מכל הבעיות שקשורות ל-IllegalStateException
ולמגע בכמה נקודות על ידי הפעלת קריאה ל-navigate
רק כשה-Lifecycle
הואRESUMED
. - הגדרת היקף של
ViewModel
(דרך ה-APIviewModel()
של Lifecycle ViewModel Compose2.4.0
אוhiltViewModel()
של Hilt Navigation Compose1.0.0
ברמת היעד, שמספק היקף ששרוי במצב תקין גם אחרי שינויים בהגדרות וגם כשהוא נמצא בסטאק האחורי (כשתוכן Composable מסוים מושמד בדרך אחרת), וכן אות ב-onCleared()
של ViewModel שמציין את ההשמדה הקבועה והניקוי של המצב המשויך ל-NavBackStackEntry
הזה. - ההיקף של מצב
rememberSaveable
ברמת היעד, שמבטיח שכל המצב הקומפוזבילי יישמר וישוחזר באופן אוטומטי כשחוזרים ליעד. - תמיכה מלאה בשמירה ובשחזור של המצב של
NavController
ושל היעד שלו אחרי סיום התהליך ויצירתו מחדש. - שילוב אוטומטי עם לחצן החזרה של המערכת.
תמיכה בהעברת ארגומנטים, בהצמדת קישורי עומק ליעדים ובחזרת תוצאה ליעדים קודמים.
כותבים פונקציות עזר ספציפיות ב-
rememberNavController()
וב-currentBackStackEntryAsState()
כדי לאפשר העלאת מצב ולחבר אתNavController
לרכיבים שניתנים ליצירה מחוץ ל-NavHost
(כמו סרגל ניווט תחתון).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
מידע נוסף זמין במדריך לניווט ב-Compose.
ריבוי מקבצים
ה-NavController אחראי לניהול סטאק החזרה לאחור של היעדים, להוספת יעדים לסטאק החזרה לאחור כשאתם navigate()
אליהם ולהסרתם כשאתם קוראים ל-popBackStack()
או מפעילים את לחצן החזרה לאחור במערכת. הכיתה הקיימת NavOptions
והשילוב ברכיבי <action>
ב-XML של גרף הניווט הורחבו כדי לתמוך בשמירה ובשחזור של סטאק החזרה אחורה.
כחלק מהשינוי הזה, השיטות NavigationUI
של onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ו-NavigationView.setupWithNavController()
שומרות ומשחזרות באופן אוטומטי את המצב של יעדים שהוצאו מהמקבץ, ומאפשרות תמיכה במספר מקבצים של 'חזרה אחורה' בלי שינויים בקוד. כשמשתמשים בניווט עם קטעי קוד, זו הדרך המומלצת לשילוב עם כמה סטאקים של היסטוריית חזרה.
ממשקי ה-API הבסיסיים לשמירה ולשחזור המצב גלויים במספר פלטפורמות:
ב-Navigation XML, הרכיב
<action>
יכול עכשיו להשתמש במאפיינים הבוליאניים שלapp:popUpToSaveState
ו-app:restoreState
כדי לשמור את המצב של כל יעד שמוצג באמצעותapp:popUpTo
ולשחזר את המצב המשויך ליעד שהוענק כ-app:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
ב-
navOptions
Kotlin DSL, אפשר להוסיף את הנכס הבוליאניrestoreState
ואת המאפיין הבוליאניsaveState
ב-builder שלpopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
כשיוצרים ידנית אובייקט
NavOptions
דרךNavOptions.Builder
, אפשר להשתמש ב-setRestoreState()
ובעומס יתר חדש ל-setPopUpTo()
שמקבל פרמטרsaveState
נוסף.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
עכשיו קריאות פרוגרמטיות אל
popBackStack()
יכולות לכלול פרמטרsaveState
נוסף.אפשר להשתמש בשיטה
clearBackStack()
כדי למחוק מצב שנשמר באמצעותpopBackStack()
אוpopUpToSaveState
.
בכל המקרים, ה-NavController
ישמור וישחזר את המצב של כל NavBackStackEntry
, כולל כל המופעים של ViewModel
ברמת יעד הניווט. ממשקי ה-API של Navigator
עודכנו כדי לאפשר לכל Navigator
לתמוך בשמירה ובשחזור של המצב שלו.
שינויים בהתנהגות
NavDeepLinkBuilder
מוסיף עכשיו אתPendingIntent.FLAG_IMMUTABLE
ל-PendingIntent
שמוחזר על ידיcreatePendingIntent()
, כדי לוודא שממשק ה-API הזה פועל כצפוי כשמטרגטים ל-Android 12.- הניווט תלוי עכשיו ב-Lifecycle
2.3.1
, ומסמן אתsetGraph()
,popBackStack()
,navigateUp()
ו-navigate()
, השיטות שמעדכנות אתNavBackStackEntry
Lifecycle
, בתור@MainThread
. כך הניווט תואם לאכיפה של פעילות השרשור הראשי שהוצגה ב-Lifecycle2.3.0
. - קישורי עומק מוודאים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) נמצאים ב-
Uri
. - ארגומנטים שעברו ניתוח של
NavDeepLink
נחשבים עכשיו כמפריד בין קטעי הנתיב, בדיוק כמו סימני השאלה, כדי למנוע מצב שבו ארגומנט חוצה את סימן הפלוס. - כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args מוסיף עכשיו ארגומנטים בלי ערכי ברירת מחדל לפני הערכים עם ערכי ברירת המחדל כפרמטרים.
- כשיוצרים ארגומנטים, מערכת Safe Args מוסיפה פרמטרים ללא ערכי ברירת מחדל לפני הערכים עם ערכי ברירת המחדל.
- Safe-Args תלוי עכשיו בפלאגין של Android Gradle מגרסה 4.2.0. המשמעות היא שאמורה להפסיק להופיע האזהרה לגבי השימוש ב-
applicationIdTextResource
.
בעיות מוכרות
- תוקנה ב-Navigation
2.5.0-alpha01
: הגישה ל-ViewModel
שנוצר באמצעותby navGraphViewModels()
מ-onCreate()
של Fragment תיכשל עםIllegalStateException
. (b/213504272) - תוקנה ב-Navigation
2.5.0-alpha01
: Safe Args 2.4.0 לא תואם לפלאגין Android Gradle מגרסה 7.1.0 ואילך. (b/213086135) - קישורי עומק עם כמה תרשימי ניווט בתצוגת עץ לא יוצרים בצורה נכונה את סטאק החזרה המלא. (b/214383060)
גרסה 2.4.0-rc01
15 בדצמבר 2021
androidx.navigation:navigation-*:2.4.0-rc01
משוחרר. גרסה 2.4.0-rc01 כוללת את ההצהרות האלה.
שינויים בהתנהגות
- עכשיו, כש
NavDeepLink
מנתח ארגומנטים, הוא מתייחס לסימנים של לירה שטרלינג באותו אופן שבו הוא מתייחס לסימנים שאלה כמפרידים בין ארגומנטים. (I21309, b/180042703)
תיקוני באגים
- קישורי עומק לא יתעלמו יותר מארגומנטים עם ערכים זהים לשם של placeholder. (If8017, b/207389470)
NavController
לא תקרוס יותר במהלך יצירת יעד מקונן באמצעות מעברים אחרי שחזור ה-NavController
. (I0f7c9, b/205021623)- הודעת השגיאה שמופיעה כשמשתמשים ב-
startDestination
לא תקין תהיה עכשיו ברירת המחדל למסלול של יעד ההתחלה, אם יש כזה. (I86b9d, b/208041894)
תיקוני באגים בכתיבת ניווט
- תוקנה קריסה פוטנציאלית שנגרמה ממעבר מהיר בין יעד ההתחלה ליעד אחר באמצעות אפשרויות בתפריט הניווט שלמטה. (Ic8976, b/208887901)
- עכשיו יעד הדו-שיח משוחזר כראוי בחלק העליון של המסך אחרי שינויים בהגדרות או סגירת תהליך. (I4c0dc, b/207386169)
- תוקנה בעיה שבה ניסיון לאחזר
ViewModel
מ-NavBackStackEntry
של תיבת דו-שיח נכשל כשתיבת הדו-שיח נסגרה. (I6b96d, b/206465487) - תוקנה בעיה שקשורה לשימוש ביעדי
activity
עם ההנחיהNavHost
של 'כתיבה מהירה', שגרמה למספר אינסופי של הרכבים מחדש. (I8f64c) - תוקנה דליפה ב-'ניווט בכתיבה' שבה היא שומרת קובץ עזר של הפעילות הישנה אחרי שינוי הגדרה או מוות של תהליך. (I4efcb, b/204905432)
תיקוני באגים ב-Safe Args
SafeArgs
לא קורס יותר בניסיון לשחזר מערכים בהתאמה אישית שניתנים לחלוקה אחרי מוות של תהליך. (I618e8, b/207315994)- תוקן באג ב-safe args שלא איפשר למערכים בוליאניים לקבל ערך
null
. (I8c396, b/174787525)
גרסה 2.4.0-beta02
3 בנובמבר 2021
androidx.navigation:navigation-*:2.4.0-beta02
משוחרר. גרסה 2.4.0-beta02 כוללת את ההתחייבויות האלה.
שינויים ב-API
- הטיפול בקישורים עמוקים, מפורשים וביניים, מוסיף עכשיו באופן אוטומטי את הדגל
saveState
כשמנווטים לתרשים אחר. כך מובטח שקוד כמוNavigationUI.setupWithNavController
וקוד שמשתמש במספר סטאקים חוזרים יפעל כצפוי. (Ic8807)
שינויים בהתנהגות
- עכשיו, דפוסי קישורי העומק מקובצים באופן עצל ב-NavDeepLink במקום במהלך ההנפקה. הפעולה הזו אמורה לשפר את זמן ההנפקה של תרשימי הניווט שכוללים קישורי עומק. (b8d257, b/184149935)
תיקוני באגים
- תוקנה בעיה שבה רשומות NavBackStackEntries נדחפו למטה אל
Lifecycle.State.CREATED
אחרי המעבר אלLifecycle.State.STARTED
, כאשר ה-NavHost
נוסף ישירות ל-setContent()
של הפעילות. (Ia5ac1, b/203536683) - תוקנה בעיה של תנאי מרוץ (race condition) שבה הוצאה של יעד
DialogFragment
מהמקבץ האחורי לפני שהתיבת הדו-שיח הוצגה בפועל לא סגרה את תיבת הדו-שיח בפועל, וכתוצאה מכך התרחש קריסה כשהמשתמש סגר את תיבת הדו-שיח השגויה באופן ידני. (I687e5) - תוקנה בעיה שבה ה-API של
onNavDestinationSelected
ב-NavigationUI
היה מחזירtrue
גם אם לא הוספתnavigate()
בפועל לתרשים הניווט הזה. עכשיו הוא משתמש באותה לוגיקה שבהsetupWithNavController
משתמש באופן פנימי כדי לבחור רק אתMenuItem
שמשויך ליעד הנוכחי באמצעותhierarchy
של היעד. (I2b053)
גרסה 2.4.0-beta01
27 באוקטובר 2021
androidx.navigation:navigation-*:2.4.0-beta01
משוחרר. גרסה 2.4.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
by navGraphViewModel
עם נתיב כחלופה לשימוש במזהה, כדי לספק תמיכה טובה יותר בשימוש ב-Navigation Kotlin DSL עם 'קטעים'. (I901e3, b/201446416)
שינויים ב-API
- ממשק ה-API של
visibleEntries
הוא עכשיו ניסיוני. (I93f6f)
תיקוני באגים
- מודלים של תצוגת מידע לא יימחקו יותר כשמעבר בין מסכים מופרע על ידי ניווט הלוך ושוב בין אותם מסכים (Id52d8, b/200817333)
- לארגומנטים מסוג
NavDeepLink
שאינם ניתנים יותר אין יותר צורך בערך ברירת מחדל כשמוסיפים קישורי עומק ל-NavDestination
. (I5aad4, b/201320030) - כבר עכשיו, NavBackStackEntries עם מחזורי חיים שונים, לא נחשבים יותר שווים. המשמעות היא ש-NavHost ירכיב מחדש בצורה תקינה את כל היעדים במהלך ניווט עם singleTop ובמהלך בחירה מחדש של פריטים בתפריט התחתון. (I1b351, b/196997433)
- תוקנה בעיה ב-
AbstractListDetailFragment
שגרמה לטיפול שגוי או להתעלמות מהמאפייניםlayout_width
ו-layout_weight
בחלונית הרשימה שמוחזרת על ידיonCreateListPaneView()
. (f5fbf3) - המצב החזותי של יעדי התיבת הדו-שיח מסתנכרן עכשיו בצורה נכונה עם המצב של
DialogFragmentNavigator
. המשמעות היא שקריאה ידנית ל-APIdismiss()
האסינכרוני שלDialogFragment
מנקה עכשיו בצורה תקינה את כל היעדים של תיבת הדו-שיח שמעל תיבת הדו-שיח שנסגרה. האפשרות הזו לא משפיעה על מקרים שבהם משתמשים ב-popUpTo
או ב-popBackStack()
כדי לסגור את תיבת הדו-שיח. (I77ba2) AbstractAppBarOnDestinationChangedListener
כולל עכשיו הודעות שגיאה ברורות יותר לגביonDestinationChanged()
. (Ie742d)
גרסה 2.4.0-alpha10
29 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha10
משוחרר. גרסה 2.4.0-alpha10 מכילה את התחייבויות אלה.
תכונות חדשות
- NavController מציע עכשיו את היכולת לאחזר רשימה של כל המופעים הגלויים של
NavBackStackEntry
דרך StateFlow שלvisibleEntries
(Ia964e) - עכשיו
rememberNavController()
לוקחת קבוצה אופציונלית של מכונותNavigator
, שיתווספו למופעים שלNavController
שהוחזרו, כדי לספק תמיכה טובה יותר בניווטים אופציונליים, כמו אלה מחומר הניווט של המשתמש. (I4619e)
תיקוני באגים
- הניווט הדינמי לא יקרוס יותר לאחר יצירה מחדש של הפעילות. (Ifa6a3, b/197942869)
- תוקנה בעיה בלחצן החזרה אחורה במערכת, שמתרחשת רק אחרי חזרה לאחור ליעד שאפשר ליצור ממנו קובץ שמורכב מכמה רכיבים, שמכיל
NavHost
. (3ed148, b/195668143) - עכשיו, SafeArgs יוצר את הארגומנטים של
fromBundle()
ו-fromSavedStateHandle()
בסדר הפרמטרים הנכון. (I824a8, b/200059831)
גרסה 2.4.0-alpha09
15 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha09
משוחרר. גרסה 2.4.0-alpha09 מכילה את ההצהרות האלה.
תכונות חדשות
- עכשיו אפשר להשתמש ב-method
clearBackStack()
כדי למחוק כל מצב שנשמר באמצעותpopBackStack()
אוpopUpToSaveState
. (I80a0f) - עכשיו אפשר להעביר רשימה של ארגומנטים ו/או קישורים עומק ל-builder של תרשים הניווט המורכב, והם יתווספו באופן אוטומטי לתרשים שנוצר. (I8a470, b/182545357)
שינויים ב-API
- הפונקציה
navArgument
של Kotlin DSL היא עכשיו חלק מ-navigation-common
במקום מ-navigation-compose
. כדי להמשיך להשתמש בפונקציה הזו, תצטרכו לעדכן את הייבוא. (I1d095)
שינויים בהתנהגות
- כשיוצרים ארגומנטים, Safe Args מעביר עכשיו פרמטרים ללא ערכי ברירת מחדל לפני פרמטרים עם ערכי ברירת מחדל. (I89709, b/198493585)
תיקוני באגים
- כשמשתמשים ב-Navigation Compose, ה-NavGraphs יהיו
DESTROYED
רק אחרי שכל הצאצאים שלהם יהיוDESTROYED
. (I86552, b/198741720) - לא צריך יותר לציין ערך ברירת מחדל לארגומנטים
NavDeepLink
שניתנים לשינוי. (Ia14ef, b/198689811) - קריאה ל-
setGraph()
באמצעות תרשים חדש תמחק גם את כל המקבצים החוזרים שנשמרו, בנוסף להתנהגות הקודמת של פתיחת המקבץ הקודם. (I97f96) - תוקנה בעיה שבה מכונות
OnDestinationChangedListener
ו-currentBackStackEntryFlow
לא קיבלו התראות כשמשתמשים ב-launchSingleTop
. (Iaaebc)
עדכוני יחסי תלות
- הניווט לכתיבה תלוי כרגע בכתיבת פעילות 1.3.1. (I05829)
- Navigation Compose תלוי עכשיו ב-Lifecycle ViewModel Compose
2.4.0-beta01
. (Ib86a3)
גרסה 2.4.0-alpha08
1 בספטמבר 2021
androidx.navigation:navigation-*:2.4.0-alpha08
משוחרר. גרסה 2.4.0-alpha08 כוללת את ההצהרות האלה.
תכונות חדשות
- עכשיו אפשר להרחיב את הכיתה
NavType
כדי ליצור NavTypes מותאמים אישית. יש תמיכה בסוגי נתונים מותאמים אישית רק כשיוצרים את תרשים הניווט באופן פרוגרמטי, למשל באמצעות Navigation Graph Kotlin DSL. (I78440, b/196871885)
שינויים בהתנהגות
- כשיוצרים פעולות, קוד Kotlin שנוצר מ-Safe Args מוסיף עכשיו ארגומנטים בלי ערכי ברירת מחדל לפני הערכים עם ערכי ברירת המחדל כפרמטרים. (Idb697, b/188855904)
- קישורי עומק מוודאים עכשיו שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) נמצאים ב-
Uri
. (#204, b/185527157)
תיקוני באגים
- שימוש ב-
getBackStackEntry
וב-previousBackStackEntry
בתוך composable(), בשילוב עםremember()
, לא יגרום יותר לחריגה במקרה שאין יעד ב-back stack. (I75138, b/194313238) - עכשיו, כשמשנים ארגומנטים חזרה במקבץ, ועושים שימוש ב-
launchSingleTop=true
, צריך ליצור מחדש את ההצעות לכתיבה. (Iebd69, b/186392337) - לא תהיה יותר
ArrayIndexOutOfBoundsException
כשקוראים ל-setGraph
עם תרשים עם 13 או 29 יעדים. (I1a9f1, b/195171984) - מחולל הג'אווה SafeArgs לא אמור יותר לגרום לאזהרות איתור שגיאות בקוד (lint) במהלך יצירת מחלקות Args. (I1a666, b/185843837)
תרומה חיצונית
- תודה ל-ospixd על כך שווידא שכל הארגומנטים הנדרשים (אלה ללא ערכי ברירת מחדל) נמצאים ב-
Uri
בקישורי העומק. (#204, b/185527157)
גרסה 2.4.0-alpha07
18 באוגוסט 2021
androidx.navigation:navigation-*:2.4.0-alpha07
משוחרר. גרסה 2.4.0-alpha07 מכילה את ההצהרות האלה.
תיקוני באגים
- עכשיו, כשמשתמשים בתכונה 'עריכת נתיב ניווט', המצב נשמר כראוי אחרי שינויים בהגדרות וכשמשנים גרפים, גם אם משתמשים בכמה סטאקים של חזרה אחורה. (If5a3d, b/195141957)
- בחירת אותו כרטיסייה מחדש כשמשתמשים בתכונה 'ניווט בהרכבה' עם כמה ערימות חזרה לא תגרום יותר למסך ריק. (I860dc, b/194925622)
NavHost
מזהה עכשיו שינויים ב-Lifecycle.State
שלNavBackStackEntry
, כלומר שימוש ב-NavHost
בחלקיק יתבצע עכשיו מחדש כאשר מחזור החיים ישתנה, במקום להוביל למסך ריק. (I4eb85, b/195864489)- תוקנה בעיה שבה סגירת
DialogFragment
לא עדכנה כראוי את המצבNavController
אחרי יצירת מחדש של הפעילות (כלומר, אחרי שינוי בהגדרות). (Icd72b) - תוקנה בעיה שבה הצגת חלון דיאלוג לא מעדכנת את הטיפול של NavController בלחצן החזרה אחורה במערכת, וכתוצאה מכך יכול להיות ש-NavController יפריע ללחצן החזרה אחורה גם אם אין לו סטאק חזרה אחורה להצגה. (If3b34)
- Safe-args יוצר עכשיו באופן אוטומטי שיטה
toSavedStateHandle
למשתנים, שאפשר להשתמש בה כדי לבדוק את הקוד שלViewModel
. (If1e2d, b/193353880)
גרסה 2.4.0-alpha06
4 באוגוסט 2021
androidx.navigation:navigation-*:2.4.0-alpha06
משוחרר. גרסה 2.4.0-alpha06 מכילה את ההצהרות האלה.
שינויים ב-API
- השמות של השיטות
requireSlidingPaneLayout()
ו-requireDetailPaneNavHostFragment()
ב-AbstractListDetailFragment
השתנו ל-getSlidingPaneLayout()
ו-getDetailPaneNavHostFragment()
, בהתאמה. (I34a08)
שינויים בהתנהגות
- בניווט עם אנימציות (כמו
Crossfade
), ה-Lifecycle
של היעד החדש יגיע עכשיו רק אלRESUMED
כשהאנימציה תסתיים. (If0543, b/172112072, b/194301889) - עכשיו השדה
NavHost
של 'פיתוח נייטיב' מגדיר את התרשים כחלק מהיצירה הראשונה. (Ieb7be)
תיקוני באגים
- הצגת היעד האחרון של תרשים ניווט כבר לא מפעילה את השגיאה
ClassCastException
. (If0543, b/172112072, b/194301889) - תוקן
NullPointerException
שהתרחש כשמוסיפים קישור עומק ללאUri
ומנווטים דרך מסלול או קישור עומק. (938a0c, b/193805425) - תוקנה בעיה בתכונה 'כתיבה בזמן ניווט', שבה
NavBackStackEntry
עם קישור עומק לא הגיע למצבRESUMED
. (I192c5) - תוקנה בעיה שבה האפשרות לפתוח יעד של תיבת דו-שיח לא עדכנה את אופן הטיפול בלחצן 'הקודם' במערכת של NavController, מה שעלול לגרום ל-NavController ליירט את לחצן 'הקודם' אף על פי שאין בו מקבץ חזרה לפתיחה. (aosp/1782668)
גרסה 2.4.0-alpha05
21 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha05
משוחרר. גרסה 2.4.0-alpha05 מכילה את ההצהרות האלה.
שינויים בהתנהגות
- כשמשתמשים ב-
NavHost
בתכונה 'כתיבה בזמן ניווט', עכשיו תמיד נעשה שימוש במעברים חלקים בין קטעים כשעוברים בין יעדים. (I07049, b/172112072) - עכשיו אפשר לבצע שינויים בתרשים של NavHost. תרשים עם אותו startDestination ועם אותם יעדים בתרשים ייחשב כזהה, ולא ינקה את
NavController
back stack. (I0b8db, b/175392262)
תיקוני באגים
- תוקנה בעיה מסוג
NoSuchElementException
בקריאה ל-popBackStack()
מתוךLifecycleObserver
שמצורף ל-NavBackStackEntry
, שנגרמה כתוצאה מעדכונים חוזרים למצב של NavController. (I64621) AbstractListDetailFragment
מאפשר עכשיו להסיר אתSlidingPaneLayout
לחלוטין מה-APK כשלא משתמשים ב-AbstractListDetailFragment
. (I611ad)NavGraph
ו-NavDestination
מחליפים עכשיו את השיטה 'שווה ל', כך ששני אובייקטים עם אותם ערכים ייחשבו שווים. (I166eb, b/175392262)
גרסה 2.4.0-alpha04
1 ביולי 2021
androidx.navigation:navigation-*:2.4.0-alpha04
משוחרר. גרסה 2.4.0-alpha04 מכילה את התחייבויות אלה.
תכונות חדשות
- הארטיפקט
navigation-fragment
מכיל עכשיו הטמעה מוכנה מראש של פריסה עם שתי חלוניות באמצעותAbstractListDetailFragment
החדש. בקטע הזה נעשה שימוש ב-SlidingPaneLayout
כדי לנהל חלונית רשימה (שסופקת על ידי תת-הסוג) וחלונית פרטים, שבה נעשה שימוש ב-NavHostFragment
כהטמעה שלה, כפי שמוצג בהטמעת הדוגמה. (Iac4be, b/191276636) - ה-
NavHost
של הארטיפקטnavigation-compose
תומך עכשיו ביעדים מסוגdialog
בנוסף ליעדים מסוגcomposable
. כל אחד מהיעדים של תיבת הדו-שיח יוצג בתוךDialog
שאפשר לערוך, מרחף מעל היעד הנוכחיcomposable
. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
שינויים ב-API
- השם של הפונקציה
add
ב-NavigatorState
השתנה ל-push
. כל הקריאות הנוכחיות ל-add()
צריכות להשתנות ל-push(). (Ie89fc, b/172112072) - עכשיו אפשר להשתמש בממשקי ה-API
pushWithTransaction
ו-popWithTransition
ב-NavigatorState
במכונותNavigator
בהתאמה אישית כדי לדחוף או להוציא יעד באופן אסינכרוני. חשוב לדעת שעדיין אף אחד מהנווטים הכלולים לא משתמש בממשקי ה-API האלה. (Ic4d7c, b/172112072)
שינויים בהתנהגות
NavDeepLinkBuilder
מוסיף עכשיו אתPendingIntent.FLAG_IMMUTABLE
ל-PendingIntent
שמוחזר על ידיcreatePendingIntent()
, כדי לוודא שממשק ה-API הזה פועל כצפוי כשמטרגטים ל-Android 12. (If8c52)
תיקוני באגים
- תוקנה בעיה ב-
<include-dynamic>
שבה הארגומנטים שהועברו לתרשים לא הועברו בצורה נכונה לתרשים שנוסף באופן דינמי. I3e115 - תוקן
NullPointerException
כשמנווטים ליעד באמצעות ארגומנטstring[]
עם ערך ברירת מחדל של@null
. (I1fbe8) - הוספת כללי ProGuard ל-
@Navigator.Name
, לפתרון בעיות בשימוש במצב מלא של R8 3.1. (I2add9, b/191654433) - תוכנית SafeArgs לא תיכשל יותר במהלך פיתוח האפליקציה עם גרסאות
Kotlin
לפני1.5.0
. (Icd1ff, b/190739257)
גרסה 2.4.0-alpha03
16 ביוני 2021
androidx.navigation:navigation-*:2.4.0-alpha03
משוחרר. גרסה 2.4.0-alpha03 מכילה את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה שבה נדרשו שתי קריאות ל-
navigate()
כדי לנווט לגרף דינמי שכלול. (I7785c, b/188859835) - תוקנה נסיגה (regression) בניווט
2.4.0-alpha01
שבהsetupActionBarWithNavController()
לא הסיר כראוי את סמל למעלה כשנמצאים ביעד ברמה העליונה. (I5d443, b/189868637) - תוקן
IllegalStateException
בקריאה ל-popBackStack()
אחרי פתיחת תרשים הרמה הבסיסית (root) של NavController. (I2a330, b/190265699) - עכשיו כללי ProGuard ל-
by navArgs()
חלים כראוי כשמשתמשים ב-navigation-common
או בכל ארטיפקט שמבוסס עליו. (I68800, b/190082521) OnDestinationChangedListener
שמפעילnavigate()
בפעם הראשונה שהוא מקבל שיחה חוזרת מקבל עכשיו שיחה חוזרת שנייה עם היעד שאליו מנווט. (Ie5f9e, b/190228815)- Safe Args לא קורס יותר כשמשתמשים בו עם מודולים דינמיים של תכונות ו-AGP מגרסה 7.0 ואילך. (I69518, b/189966576)
בעיה ידועה
- כשמשתמשים ב-Gradle
6.7.0
, Safe Args נכשל עם שגיאהUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
בגלל תלות בגרסה ישנה יותר של Kotlin. אפשר לעקוף את הבעיה הזו על ידי עדכון ל-Gradle 7.0. (b/190739257)
גרסה 2.4.0-alpha02
2 ביוני 2021
androidx.navigation:navigation-*:2.4.0-alpha02
משוחרר. גרסה 2.4.0-alpha02 כוללת את ההצהרות האלה.
תכונות חדשות
- מעכשיו יש תמיכה במסלולים ליעדי Activity, Fragment ו-Dialog, וגם ב-DynamicNavigation Kotlin DSL. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
הוסיף באופן זמני ממשקי API ניסיוניים כדי לאפשר ביטול הסכמה לשמירת המצב שלך. אמנם תמיד כדאי לשמור את המצב, אבל עדיין יש שימושים בספריות שהוצאו משימוש (כלומר, קטעי קוד שנשמרו) שלא ניתן לתמוך בהם כששומרים את המצב. לכן, זו הזדמנות לאפליקציות לעבור בהדרגה ממשקי API שלא נתמכים. (Idf93c)רכיב הניווט מספק עכשיו ממשקי API של
findDestination()
ו-getHierarchy()
שאפשר להשתמש בהם כדי להטמיע ממשק משתמש מותאם אישית של Navigation.findDestination()
היא פונקציית תוסף שלNavGraph
שמאתרת יעד בתרשים.getHierarchy()
היא פונקציה ב-NavDestination
שניתן להשתמש בה כדי לבדוק אם יעד מסוים נמצא בהיררכיה של יעד אחר.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
שיטות NavigationUI שהשתמשו ב-
BottomNavigationView
עודכנו כך שישתמשו במקום זאת בסיווג ההורה שלו,NavigationBarView
, שהוצג ב-Material1.4.0
. כך אפשר להשתמש בשיטות האלה עםNavigationRailView
. (Ib0b36, b/182938895)כשמנפים רכיב
<action>
באמצעות XML, מאפייני אנימציה יכולים להשתמש במאפיינים שנשלפים מהעיצוב באמצעות התחבירapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
שינויים ב-API
- הוצאנו משימוש בוני DSL של Kotlin שמשתמשים במזהה, וצריך להחליף אותם בבוני נתיב (I85b42, b/188816479) (I9f58f, b/188816479)
תיקוני באגים
DialogFragmentNavigator
משתמש עכשיו ב-NavigatorState.pop()
API כדי להודיע ל-NavController
כשתיבת דו-שיח נסגרת על ידי לחיצה על לחצן החזרה למערכת או על ידי לחיצה מחוץ לתיבת הדו-שיח, וכך להבטיח שהמצב שלNavController
תמיד מסתנכרן עם המצב של Navigator. (I2ead9)הניווט כבר לא נותן
ConcurrentModificationException
כשמשתמשים במניפולציה של הרשימהOnDestinationChangedListeners
באמצעות קריאה חוזרת (callback) שלonDestinationChanged
. (Ib1707, b/188860458)Safe Args לא קורס יותר כשמנסים ליצור מאפייני כיוון ב-Kotlin. (Id2416, b/188564435)
ל-methodId ב-NavDestination יש עכשיו הערות תקינות עם
@IdRes
, כך שהיא מקבלת רק מזהי משאבים. (I69b80)הפרמטר int של
findNode
הוא עכשיוresId
במקוםresid
. (I7711d)
עדכון לגבי תלות
- השימוש ב-Safe-Args תלוי עכשיו ב-Android Gradle Plugin 4.2.0. המשמעות היא שאמורה להפסיק להופיע האזהרה לגבי השימוש ב-
applicationIdTextResource
. (I6d67b, b/172824579)
גרסה 2.4.0-alpha01
18 במאי 2021
androidx.navigation:navigation-*:2.4.0-alpha01
משוחרר. גרסה 2.4.0-alpha01 מכילה את ההצהרות האלה.
תכונות חדשות
- השיטה
currentBackStackEntryAsFlow()
ב-NavController
מספקתFlow
שמפיק אירוע בכל פעם ש-NavBackStackEntry
הנוכחי משתנה. אפשר להשתמש בתהליך הזה כחלופה לניהולOnDestinationChangedListener
באופן ידני. (I19c4a, #89, b/163947280)
מספר סטאקים של חזרה אחורה
ה-NavController אחראי לניהול סטאק החזרה לאחור של היעדים, להוספת יעדים לסטאק החזרה לאחור כשאתם navigate()
אליהם ולהסרתם כשאתם קוראים ל-popBackStack()
או מפעילים את לחצן החזרה לאחור במערכת. המחלקה הקיימת NavOptions
והשילוב עם הרשומות של <action>
ב-XML של תרשים הניווט הורחבו כדי לתמוך בשמירה ובשחזור של המקבץ האחורי. (b/80029773)
כחלק מהשינוי הזה, השיטות NavigationUI
של onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
ו-NavigationView.setupWithNavController()
שומרות ומשחזרות באופן אוטומטי את המצב של יעדים שהוצאו מהמקבץ, ומאפשרות תמיכה במספר מקבצים של 'חזרה אחורה' בלי שינויים בקוד. כשמשתמשים בניווט עם קטעי קוד, זו הדרך המומלצת לשילוב עם כמה סטאקים של היסטוריית חזרה. (Ie07ca)
ממשקי ה-API הבסיסיים לשמירה ולשחזור של המצב נחשפים במספר פלטפורמות:
ב-Navigation XML, הרכיב
<action>
יכול עכשיו להשתמש במאפיינים הבוליאניים שלapp:popUpToSaveState
ו-app:restoreState
כדי לשמור את המצב של כל יעד שמוצג באמצעותapp:popUpTo
ולשחזר את המצב המשויך ליעד שהוענק כ-app:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
ב-
navOptions
Kotlin DSL, אפשר להוסיף את הנכס הבוליאניrestoreState
ואת המאפיין הבוליאניsaveState
ב-builder שלpopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
כשיוצרים ידנית אובייקט
NavOptions
דרךNavOptions.Builder
, אפשר להשתמש ב-setRestoreState()
ובעומס יתר חדש ל-setPopUpTo()
שמקבל פרמטרsaveState
נוסף.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
קריאות פרוגרמטיות אל
popBackStack()
יכולות עכשיו לכלול פרמטרsaveState
נוסף.
בכל המקרים, ה-NavController
ישמור וישחזר את המצב של כל NavBackStackEntry
, כולל כל המופעים של ViewModel
ברמת יעד הניווט. ממשקי ה-API של Navigator
עודכנו כדי לאפשר לכל Navigator
לתמוך בשמירה ובשחזור של המצב שלו.
ה-ComposeNavigator
שמשמש ליעדי composable
בתכונה 'כתיבה בזמן ניווט', וה-FragmentNavigator
ו-DynamicFragmentNavigator
שמשמש ליעדי <fragment>
בתכונה 'ניווט באמצעות קטעים', עודכנו כך שישתמשו בממשקי ה-API החדשים של Navigator וישפרו את התמיכה בשמירה ובשחזור של המצב.
מסלולי ניווט
מסלול הוא String
שמזהה יעד באופן ייחודי. בעבר, המושג הזה שימש רק ב-Navigation Compose, אבל עכשיו הוא הפך לחלק מרכזי בממשקי ה-API של Navigation. התכונה הזו מהווה חלופה לשימוש במזהים של מספרים שלמים כשבונים את התרשים באמצעות Navigation Kotlin DSL. (b/172823546)
לכל ממשקי ה-API שהיו מקבלים בעבר רק מזהה יש עכשיו עומס יתר שמקבל מסלול String
. כולל navigate()
, popBackStack()
, popUpTo()
ו-getBackStackEntry()
.
לכך היו השלכות מסוימות על ממשקי ה-API:
- המאפיין
popUpTo
ב-Kotlin DSL יצא משימוש והוחלף במאפייןpopUpToId
. (I59c73, b/172823546) - ממשק ה-API
getStartDestination()
הוצא משימוש והוחלף על ידיgetStartDestinationId()
. (I0887f, b/172823546)
למפתחים שמשדרגים מגרסאות קודמות של 'כתיבה מהירה' ל'כתיבת ניווט' 2.4.0-alpha01
, המשמעות היא שפעולות הייבוא הבאות של שיטות תוספים כבר לא נחוצות וצריך להסיר אותן:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
הארגומנט KEY_ROUTE
הוחלף בנכס route
ב-NavDestination
, וכך אפשר לקרוא ל-navBackStackEntry.destination.route
ישירות.
שינויים ב-API
- כל פריטי המידע שנוצרו בתהליך הפיתוח (artifacts) של Navigation נכתבו מחדש ב-Kotlin. בעקבות זאת, חל שיפור ביכולת של כיתות להחזיק ערך null באמצעות גנריקים (כמו תת-כיתות של
NavType
). כל הפונקציות של תוספי Kotlin שהיו חלק מפריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של-ktx
הועברו אל פריטי המידע העיקריים התואמים שלהם. הארטיפקטים של-ktx
ימשיכו להתפרסם, אבל הם יהיו ריקים לחלוטין. (b/184292145) - ב-
NavDeepLinkBuilder
יש עכשיו תמיכה בהוספת יעדים נפרדים מרובים לסטאק הגיבוי שנוצר. (I3ee0d, b/147913689) - הוספת פונקציות המקוריות של
DynamicNavHostFragment
(Icd515, b/175222619) - המזהה הייחודי של
NavBackStackEntry
נחשף עכשיו כחלק מ-API הציבורי שלו. (Ie033a) - השדות
name
ו-argument
והפונקציות המרוסות שלNamedNavArgument
הם עכשיו ציבוריים. (#174, b/181320559) - הוספנו את התוסף החדש
NavBackStackEntry#provideToCompositionLocals
שמספק אתNavBackStackEntry
ל-locals הרלוונטיים של הקומפוזיציה. (#175, b/187229439)
Safe Args
Safe Args יוצר עכשיו שיטה
fromSavedStateHandle()
לכל כיתהNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
בוצע עדכון של Safe Args בהתאם ל-KotlinPoet
1.8.0
. (#172, b/183990444)
שינויים בהתנהגות
- הניווט תלוי עכשיו ב-Lifecycle
2.3.1
, ומסמן אתsetGraph()
,popBackStack()
,navigateUp()
ו-navigate()
, השיטות שמעדכנות אתNavBackStackEntry
Lifecycle
, בתור@MainThread
. כך הניווט תואם לאכיפה של פעילות השרשור הראשי שהוצגה ב-Lifecycle2.3.0
. (b/171125856) - ניתוח הארגומנטים של Enum מקישורי עומק לא תלוי עכשיו אותיות רישיות, כך שקישורי עומק כמו
http://www.example.com/red
יכולים להתאים לקישורי עומק כמוwww.example.com/{color}
גם אם הערך של Enum הואRED
. (#152, b/135857840)
תאימות ל-Compose
androidx.navigation:navigation-compose:2.4.0-alpha01
תואם רק ל-Compose בגרסה1.0.0-beta07
ואילך.
תיקוני באגים
- תוקנה בעיה שבה תוספי ארגומנטים נלווים נותנים עדיפות על פני קישורי עומק עם סיומת תואמת. (#153, b/184072811)
NavHostFragment
תומך עכשיו ב-Navigators מותאמים אישית שמשתמשים באותו@Navigator.Name("dialog")
כמוDialogFragmentNavigator
שמוגדרת כברירת מחדל. (Ib1c2c, b/175979140)- שיפרנו את ההתנהגות של
NavigatorProvider#addNavigator
כדי לוודא שקריאה חוזרת ונשנית אליו עם אותה מכונה לא גורמת לבעיות. (#176, b/187443146)
תרומות חיצוניות
- תודה ל-simonschiller על הוספת תמיכה ב-Safe Args ליצירת שיטת
fromSavedStateHandle()
לכל כיתה מסוגNavArgs
. (#122, b/136967621) - תודה ל-Bradleycorn על כך שהפך את הניתוח של ארגומנטים מסוג Enum מקישורים עומק ללא קשר לאותיות רישיות. (#152, b/135857840)
- תודה ל-osipxd על תיקון בעיה שבה placeholder לארגומנטים בסוף הטקסט מקבל עדיפות על פני קישורי עומק עם סיומת תואמת. (#153, b/184072811)
- תודה ל-tatocaster על עדכון Safe Args כך שיהיה תלוי ב-KotlinPoet
1.8.0
. (#172, b/183990444) - תודה ל-jossiwolf על כך שהפך את השדות
name
ו-argument
ואת פונקציות הפירוק שלNamedNavArgument
לציבוריות. (#174, b/181320559) - תודה ל-jossiwolf על הצגת התוסף החדש
NavBackStackEntry#provideToCompositionLocals
שמספק את הערך שלNavBackStackEntry
ל-locals הרלוונטיים של היצירה. (#175, b/187229439) - תודה ל-jossiwolf על שיפור ההתנהגות של
NavigatorProvider#addNavigator
כדי לוודא שהפעלה חוזרת של הפונקציה עם אותה מכונה לא גורמת לבעיות. (#176, b/187443146)
Navigation Compose גרסה 1.0.0
גרסה 1.0.0-alpha10
7 באפריל 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
משוחרר. גרסה 1.0.0-alpha10 מכילה את ההצהרות האלה.
שינויים ב-API
NavHost
מקבל עכשיוModifier
, שמועברים לקונטיינר הניתן לקיפול שמקיף את הרכיבים הניתנים לקיפול של היעד. (I85aca, b/175125483)
תיקוני באגים
NavHost
פועל עכשיו גם אם לא נמצאOnBackPressedDispatcherOwner
, למשל כשמציגים תצוגה מקדימה שלNavHost
. (I7d8b4)- עכשיו, 'כתיבה בזמן ניווט' תלויה בניווט
2.3.5
, וכך נפתרה בעיה שהתרחשה כשמשתמשים ב-BackHandler
בתוך יעדNavHost
. (I7e63b, b/182284739)
גרסה 1.0.0-alpha09
10 במרץ 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
משוחרר. גרסה 1.0.0-alpha09 מכילה את התחייבויות אלה.
שינויים ב-API
- הפונקציה
LocalViewModelStoreOwner.current
מחזירה עכשיוViewModelStoreOwner
שאפשר להעביר לו ערך null, כדי לקבוע טוב יותר אםViewModelStoreOwner
זמין בהרכב הנוכחי. ממשקי API שדורשיםViewModelStoreOwner
, כמוviewModel()
ו-NavHost
, עדיין גורמים להשלכת חריגה אם לא מגדיריםViewModelStoreOwner
. (Idf39a)
תיקוני באגים
- הניווט 'כתיבה' תלוי עכשיו בניווט 2.3.4 שכולל את התיקון לניסיון להגדיר את אותו אובייקט ViewModelStore לאחר הגדרת התרשים. (I65c24, b/177825470)
גרסה 1.0.0-alpha08
24 בפברואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
משוחרר. גרסה 1.0.0-alpha08 מכילה את ההצהרות האלה.
תכונות חדשות
NavHost
מאכלס עכשיו אתLocalSavedStateRegistryOwner
CompositionLocal ב-NavBackStackEntry
של היעד הזה, כדי להבטיח שכל מצב שנשמר ישירות ב-SavedStateRegistry
יישמר ויוחזר לצד היעד. (I435d7, b/179469431)
גרסה 1.0.0-alpha07
10 בפברואר 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
משוחרר. גרסה 1.0.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
עדכוני יחסי תלות
- 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
- עודכן לתאימות עם Compose
1.0.0-alpha09
.
גרסה 1.0.0-alpha03
2 בדצמבר 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
משוחרר. גרסה 1.0.0-alpha03 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה שבה הפונקציות
popBackStack()
ו-navigateUp()
לא עבדו אחרי שינוי בתצורה או אחרי שהתהליך הושבת ונוצר מחדש. (Icea47, b/173281473) - ניווט לתרשים בתוך תרשים מקונן בתוך NavHost ( עכשיו) פועל כראוי. (I0948d, b/173647694)
גרסה 1.0.0-alpha02
11 בנובמבר 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
משוחרר. גרסה 1.0.0-alpha02 מכילה את ההצהרות האלה.
שינויים ב-API
- התכונה 'אימייל חדש' בניווט תומכת עכשיו ב-NavOptions לצורך שימוש בפעולות PopUpTo ובהפעלת פעולותSingleTop (If96c3, b/171468994)
- נוספה פונקציית ניווט שמקבלת מסלול במקום מזהה, ומאפשרת ליצור תרשימים בתצוגת עץ ב-Navigation Compose DSL. (I1661d)
- עכשיו, startDestination מופיע לפני המסלול ברשימת הפרמטרים של NavHost (Ie620e)
- עכשיו אפשר ליצור תרשים באמצעות המסלול כיעד התחלה מחוץ ל-composable של NavHost. (Iceb75)
גרסה 1.0.0-alpha01
28 באוקטובר 2020
android.navigation:navigation-compose:1.0.0-alpha01
משוחרר. גרסה 1.0.0-alpha01 מכילה את ההצהרות האלה.
תכונות חדשות
הארטיפקט navigation-compose
מספק שילוב בין רכיב הניווט לבין Jetpack פיתוח נייטיב. הוא משתמש בפונקציות @Composable
בתור היעדים באפליקציה.
הגרסה הראשונית הזו כוללת:
- רכיב
NavHost
שאפשר להרכיב, שמאפשר ליצור את תרשים הניווט באמצעות DSL של Kotlin. - היקף מחזור החיים,
ViewModel
, והמצב הנצבר ברמת היעד. - שילוב אוטומטי עם לחצן החזרה של המערכת.
- תמיכה בהעברת ארגומנטים, בהצמדת קישורי עומק ליעדים ובחזרת תוצאה ליעדים קודמים.
- כותבים פונקציות עזר ספציפיות ב-
rememberNavController()
וב-currentBackStackEntryAsState()
כדי לאפשר העלאת מצב ולחבר אתNavController
לרכיבים שניתנים ליצירה מחוץ ל-NavHost
(כמו סרגל ניווט תחתון).
מידע נוסף זמין במדריך הניווט 'כתיבה'.
גרסה 2.3.5
גרסה 2.3.5
7 באפריל 2021
androidx.navigation:navigation-*:2.3.5
משוחרר. גרסה 2.3.5 כוללת את ההתחייבויות האלה.
תכונות חדשות
- כשמנווטים באמצעות
NavDeepLinkRequest
אוUri
, עכשיו אפשר לגשת ל-Uri
, לפעולה ולסוג ה-MIME ביעד שנוצר על ידי אחזור הכוונה מהארגומנטים דרךKEY_DEEP_LINK_INTENT
, כפי שאפשר לעשות כבר עם קישורי עומק חיצוניים. (I975c3, b/181521877)
תיקוני באגים
OnBackPressedCallbacks
נוסף למפזר עםNavBackStackEntry
, כי עכשיו LifecycleOwner מיירט בחזרה כראוי אחרי שמחזור החיים של הפעילות הואSTOPPED
ואזSTARTED
(Iff94f, b/182284739)- ניתוח הדומיין של קישור העומק לא תלוי עיצוב עכשיו, כך ש-
www.example.com
תואם גם ל-www.example.com
וגם ל-www.Example.com
. חשוב לזכור שעדיין יש הבחנה בין אותיות רישיות לקטנות בשמות של פרמטרים של שאילתות. (#144, b/153829033) - תוקנו
NullPointerException
שעלולים להתרחש כשביעד יש כמה ארגומנטים של ברירת מחדל שאינם ניתנים כ-null, ואתם עוברים ליעד הזה תוך שינוי על קבוצת משנה של הארגומנטים האלה בלבד. (aosp/1644827)
עדכוני יחסי תלות
- פלאגין Navigation Safe Args ל-Gradle תלוי עכשיו בפלאגין Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
תרומה חיצונית
- תודה
bentrengrove
על בקשת המשיכה, שלפיה ניתוח הדומיין של קישורי העומק לא תלוי-רישיות. (#144, b/153829033)
גרסה 2.3.4
גרסה 2.3.4
10 במרץ 2021
androidx.navigation:navigation-*:2.3.4
משוחרר. גרסה 2.3.4 מכילה את ההצהרות האלה.
תכונות חדשות
- עכשיו אפשר לנתח כראוי את הארגומנטים של
ReferenceType
כשהם נשלחים כחלק מ-URI של קישור עומק. אפשר להזין את הערך של המספר השלם הגולמי וגם ערכים הקסדצימליים עם הקידומת0x
. (#127, b/179166693) - השדה
android:defaultValue
לארגומנט עםapp:argType="float"
תומך עכשיו בערכי ברירת מחדל מסוג מספרים שלמים, ומאפשר להשתמש ב-android:defaultValue="0"
במקום לדרוש שימוש ב-0.0
. (#117, b/173766247)
תיקוני באגים
- תיקון בעיה שבה התקדמות ההתקנה נתקעה כשמשתמשים בתמיכה של 'ניווט' בתכונות דינמיות. (Ib27a7, b/169636207)
- קריאה ל-
setViewModelStore
או ל-setLifecycleOwner
עם אותו אובייקט שכבר הוגדר תהיה עכשיו פעולה ללא תוצאה (Idf491, b/177825470) - Safe-Args מוסיף עכשיו הערות להשתקה לשיטות המתאימות כשמשתמשים ב-Java. (I8fbc5, b/179463137)
תרומות חיצוניות
- תודה ל-
JvmName
על בקשת המשיכה (pull request) שבעזרתה אפשר עכשיו לנתח כראוי את הארגומנטים שלReferenceType
כשהם נשלחים כחלק ממזהה URI של קישור עומק. (#127, b/179166693) - תודה ל-
tatocaster
על בקשת המשיכה (pull request) שאפשרה ל-defaultValue
עבור ארגומנט עםapp:argType=”float”
לתמוך עכשיו בערכי ברירת מחדל שלמים. (#117, b/173766247)
גרסה 2.3.3
גרסה 2.3.3
27 בינואר 2021
androidx.navigation:navigation-*:2.3.3
משוחרר. גרסה 2.3.3 מכילה את ההוספות האלה.
תיקוני באגים
- לא מתרחש יותר קריסה כשפוצצים
NavBackStackEntry
לפני ש-Lifecycle
שלו מועבר ל-CREATED
. (Ie3ba3) - תוקנה רגרסיה שנגרמה על ידי b/171364502, שבה ניווט לפעילות עם ערך משאב אנימציה של
0
גרם ל-ResourceNotFoundException
. (I7aedb, b/176819931)
גרסה 2.3.2
גרסה 2.3.2
2 בדצמבר 2020
androidx.navigation:navigation-*:2.3.2
משוחרר. גרסה 2.3.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה רגרסיה ב
NavigationUI
שגרמה לכך ששימוש ביעד<activity>
עםonNavDestinationSelected
לא הצליח לנווט לפעילות. (I22e34, b/171364502) - תוקנה בעיה שבה הפקודה
navigation-dynamic-features-fragment
גרמה לניווט ליעד החדש שהותקן כמה פעמים. (aosp/1486056, b/169636207) - תוקנה בעיה שבה ארגומנטים שמוגדרים כברירת מחדל לא נשלחו למכונות
OnDestinationChangedListener
כשמשתמשים ב-launchSingleTop
. (I2c5cb) - תוקנה בעיה שבה ניווט לתרשים ניווט בתצוגת עץ לא יצר מופע תרשים חדש בסטאק העורפי. (Ifc831)
- תוקנה בעיה שבה שימוש ב-
navigate()
עםpopUpTo
שהסיר את היעד האחרון בתרשים ניווט לא גרם להרס מיידי של תרשים הניווט עצמו והסרה שלו מהמקבץ האחורי. (I910a3) - Navigation SafeArgs משתמש עכשיו ב-KotlinPoet בגרסה 1.7.2, שמוסיפה תמיכה במצב ה-API המפורש של Kotlin. (I918b5)
- מעכשיו,
NavHostFragment.findNavController(Fragment)
בודק גם את תצוגת העיצוב הבסיסית של DialogFragment, בנוסף לבדיקות הקיימות של היררכיית Fragment ו-Fragment. כך תוכלו לבדוק קטעי תיבת דו-שיח שמשתמשים בתכונה 'ניווט' באמצעותFragmentScenario
ו-Navigation.setViewNavController()
. (I69e0d)
גרסה 2.3.1
גרסה 2.3.1
14 באוקטובר 2020
androidx.navigation:navigation-*:2.3.1
משוחרר. גרסה 2.3.1 מכילה את השמירות האלה.
תכונות חדשות
- משאבי ברירת המחדל של Animator נוספו לממשק המשתמש של הניווט, והם מומלצים על פני משאבי האנימציה שמוגדרים כברירת מחדל. (b/167430145)
- NavOptions מבטלת את קוד הגיבוב (hash) ומגדירה שיטות (b/161586466)
- הניווט כולל עכשיו את היעד הנוכחי ב-DisallowArgumentהסרת 'ללא יעד עם מזהה'. הפעולה הזו אמורה לשפר את חוויית ניפוי הבאגים של המפתחים. (b/168311416)
תיקוני באגים
- Safe Args לא יקיף יותר את שורת ההחזרה, גם אם שם מחלקה של הארגומנטים שנוצר ארוך מ-100 תווים. (b/168584987)
שינויים ביחסי התלות
navigation-ui
תלוי עכשיו ב-DrawerLayout 1.1.1, כדי לוודא ש-NavigationUI
יוכל לפתוח את חלונית ההזזה גם כשמשתמשים ב-LOCK_MODE_LOCKED_CLOSED
או ב-LOCK_MODE_LOCKED_OPEN
. (b/162253907)- Safe Args תלוי עכשיו ב-KotlinPoet 1.6.0 (aosp/1435911)
- Safe Args תלוי עכשיו ב-AGP 4.0.1 (aosp/1442337)
גרסה 2.3.0
גרסה 2.3.0
24 ביוני 2020
androidx.navigation:navigation-*:2.3.0
משוחרר. גרסה 2.3.0 כוללת את ההצהרות האלה.
שינויים משמעותיים מאז גרסה 2.2.0
- שילוב של מודול תכונות: הארטיפקטים
navigation-dynamic-features-runtime
ו-navigation-dynamic-features-fragment
מאפשרים לנווט ליעדים שמוגדרים במודולי התכונות, תוך טיפול אוטומטי בהתקנה של מודול התכונות לפי הצורך. למידע נוסף, ראו ניווט באמצעות מודולים של תכונות. - בדיקת הניווט: הארטיפקט
navigation-testing
מספקTestNavHostController
שמאפשר להגדיר את היעד הנוכחי ולאמת את סטאק החזרה לאחר פעולות הניווט. מידע נוסף זמין במאמר בדיקת הניווט. - החזרת תוצאה: עכשיו אפשר לגשת ל-
NavBackStackEntry
שמשויך לכל יעד ב-Navigation back stack באמצעותSavedStateHandle
, שמתאים לאחסון כמויות קטנות של מצב ששמור וצריך לשייך לרשומה מסוימת ב-back stack. ניתן למצוא מידע נוסף במאמר החזרת תוצאה ליעד הקודם. - תמיכה ב-
NavigationUI
ב-Openable
: כל השימושים ב-DrawerLayout
ב-NavigationUI
הוחלפו בממשקOpenable
הגנרי יותר שנוסף ב-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 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה ב-
NullPointerException
כשמחליפים מופע של יעד ללא ארגומנטים במופע אחר עם ארגומנטים באמצעותsingleTop
. (b/158006669) - לכל החריגים מסוג
destination is unknown
שהופרו על ידיNavController
יש עכשיו מידע נוסף על תוצאות ניפוי הבאגים, שעוזר לקבוע את המצב שלNavController
. (b/157764916)
גרסה 2.3.0-beta01
20 במאי 2020
androidx.navigation:navigation-*:2.3.0-beta01
משוחררים. גרסה 2.3.0-beta01 מכילה את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה שבה
Lifecycle
שלNavBackStackEntry
לא התעדכן כראוי אחרי מותו של התהליך. (b/155218371) - מכונות
OnDestinationChangedListener
שנרשמו לפני הקריאה ל-setGraph()
נשלחות עכשיו כראוי ליעד המשוחזר אחרי מוות של תהליך. (b/155218371) - כשמשתמשים ב-
singleTop
, הארגומנטים שלNavBackStackEntry
מתעדכנים בצורה נכונה, והארגומנטים המעודכנים נשלחים לכל המופעים שלOnDestinationChangeListener
. (b/156545508)
עדכוני יחסי תלות
- הארטיפקט
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
. (b/136573074, b/135334841)
שינויים ב-API
- הרחבנו בצורה משמעותית את התמיכה ב-Kotlin DSL ליעדי ניווט דינמי. (b/148969800)
תיקוני באגים
- תוקנה בעיה שבה מערכת Google Ads התעלמה מ-Intents של קישורי עומק כשנעשה שימוש ביעד התחלה בתצוגת עץ. (b/154532067)
גרסה 2.3.0-alpha05
15 באפריל 2020
androidx.navigation:navigation-*:2.3.0-alpha05
משוחרר. גרסה 2.3.0-alpha05 מכילה את ההצהרות האלה.
תכונות חדשות
- עבור התרשים הדינמי כולל באמצעות
<include-dynamic>
, אין יותר צורך לצייןapp:graphPackage
, וברירת המחדל תשמש על ידי הוספת הסיומתmoduleName
ל-applicationId
אחרי נקודה. אם צריך להתאים אישית אתgraphPackage
, עכשיו יש תמיכה ב-placeholder של${applicationId}
. (b/152696768) - עכשיו, DSL של Kotlin עם תרשים ניווט חושף
defaultArguments
Map
לפעולות, מה שמשקף את היכולת להגדיר ערכי ברירת מחדל לרכיבי<action>
בקובצי XML של הניווט. (b/150345605)
תיקוני באגים
- מניווט 2.2.2: תוקן
IllegalStateException
במהלך קישור עומק ליעד ההתחלה של התרשים, כשיש מספר מופעים שלNavHostFragment
בפעילות. (b/147378752)
עדכונים בנושא תלות
- הניווט תלוי עכשיו במקטע
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
כבר לא נעשה שימוש בתבנית build, ועכשיו אפשר ליצור אותה ישירות. (aosp/1253671) - עכשיו ה-constructor של
DynamicActivityNavigator
מקבלContext
במקוםActivity
. (aosp/1250252)
תיקוני באגים
NavigationUI
כבר לא מתעלם מתויות ריקות (כלומר, יעד עםandroid:label=””
), והוא מגדיר עכשיו את הכותרת כמחרוזת ריקה בצורה נכונה. (b/148679860)
עדכוני יחסי תלות
- פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של התכונות הדינמיות של הניווט תלויים עכשיו ב-Play Core
1.6.5
. (b/149556401)
גרסה 2.3.0-alpha03
4 במרץ, 2020
androidx.navigation:navigation-*:2.3.0-alpha03
משוחרר. גרסה 2.3.0-alpha03 מכילה את ההוספות האלה.
שינויים ב-API
- במקום להסתמך על המחלקה הקונקרטית
DrawerLayout
,AppBarConfiguration
משתמש עכשיו בממשקOpenable
שהוצג ב-CustomView1.1.0-alpha02
(ש-DrawerLayout
מטמיע החל מ-DrawerLayout1.1.0-alpha04
), ומאפשר לכם להשתמש בהטמעות בהתאמה אישית שלOpenable
עםNavigationUI
. (b/129030452)
תיקוני באגים
- כללי ProGuard של
navigation-common-ktx
שומרים עכשיו בצורה נכונה רק את הכיתות שלNavArgs
שבהן נעשה שימוש, ולא את כל המופעים שלNavArgs
. (b/150213558)
שינויים ביחסי התלות
- המערכת הניווטית חזרה לשימוש ב-Core
1.2.0
, והיא תלויה עכשיו ב-Core1.1.0
כדי למנוע מהמפתחים לעבור לשימוש ביחסי תלות חדשים יותר, מאחר שהמערכת הניווטית לא תלויה בממשקי API חדשים ב-Core1.2.0
.
גרסה 2.3.0-alpha02
19 בפברואר 2020
androidx.navigation:navigation-*:2.3.0-alpha02
משוחרר. גרסה 2.3.0-alpha02 מכילה את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
NavBackStackEntry
כדי לגשת ל-SavedStateHandle
שמתאים לאחסון כמויות קטנות של מצב שמור שצריך לשייך לרשומה מסוימת ב-back stack. החזרת תוצאה – דוגמה לתרחיש לדוגמה. (b/79672220)
שינויים ב-API
- נוספו שיטות נוחות של
getCurrentBackStackEntry()
ו-getPreviousBackStackEntry()
כדי שיהיה קל יותר לאחזרNavBackStackEntry
ליעדים הנוכחיים והקודמים. (b/79672220)
תיקוני באגים
- כשמפעילים את האפליקציה בסטאק המשימות שלכם,
navigateUp()
מעביר עכשיו את הארגומנטים של היעד הנוכחי ואתKEY_DEEP_LINK_INTENT
ליעד הקודם. (b/147456890)
שינויים ביחסי התלות
- הניווט תלוי עכשיו ב-Core
1.2.0
.
גרסה 2.3.0-alpha01
5 בפברואר 2020
androidx.navigation:navigation-*:2.3.0-alpha01
משוחרר. גרסה 2.3.0-alpha01 מכילה את ההוספות האלה.
תכונות חדשות
- הארטיפקט החדש
navigation-testing
מספק את הכיתהTestNavHostController
. הכיתה הזו מספקת חלופה לשימוש ב-mock שלNavController
בזמן בדיקת הניווט, ומאפשרת להגדיר את היעד הנוכחי ולאמת את סטאק החזרה אחרי פעולות הניווט. (b/140884273) - המאפיין החדש
navigation-dynamic-features-fragment
(והתלות הטרנזיטיבית שלו,navigation-dynamic-features-runtime
) מאפשר לכלול יעדים או גרפי ניווט שלמים (דרך<include-dynamic>
) ממודולים של תכונות, ומספק התקנה חלקה של מודולים של תכונות על פי דרישה כשמנווטים ליעדים האלה. מידע נוסף זמין במאמר ניווט באמצעות מודולים של תכונות. (b/132170186)
תיקוני באגים
- מניווט
2.2.1
: קישורי עומק ללא פרמטרים של שאילתה מתעלמים עכשיו כמו שצריך מפרמטרים של שאילתה, במקום לצרף אותם לרכיבי{argument}
בסוף או לא תואמים לקישור העומק. (b/147447512) - מNavigation
2.2.1
: כללי ProGuard שלnavigation-ui
עבורDrawerArrowDrawable
עודכנו כדי להבטיח ש-android.enableJetifier=true
לא נדרש. (b/147610424) - מניווט
2.2.1
: למודולnavigation-common-ktx
יש עכשיו שם חבילה ייחודי של מניפסט, במקום לשתף את אותו שם חבילה של מניפסט כמוnavigation-runtime-ktx
. (aosp/1141947)
עדכוני יחסי תלות
- מניווט
2.2.1
: הניווט2.2.1
תלוי עכשיו ב-Lifecycle ViewModelSavedState2.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)- כללי ProGuard של
navigation-common-ktx
שומרים עכשיו בצורה נכונה רק את הכיתות שלNavArgs
שבהן נעשה שימוש, ולא את כל המופעים שלNavArgs
. התכונה הזו שוחררה בעבר ב-Navigation 2.3.0-alpha03. (b/150213558
עדכוני יחסי תלות
- הניווט תלוי עכשיו בקטע
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) - כללי ProGuard של
navigation-ui
עבור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
22 בינואר 2020
androidx.navigation:navigation-*:2.2.0
משוחרר. גרסה 2.2.0 כוללת את ההצהרות האלה.
שינויים חשובים מאז גרסה 2.1.0
- NavBackStackEntry: עכשיו אפשר להפעיל את
NavController.getBackStackEntry()
ולהעביר את המזהה של יעד או תרשים ניווט בסטאק העורפי. הערך המוחזר שלNavBackStackEntry
מספק את הערכיםLifecycleOwner
,ViewModelStoreOwner
(הערך שמוחזר על ידיNavController.getViewModelStoreOwner()
) ו-SavedStateRegistryOwner
שמבוססים על ניווט, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. - שילוב של מצב SaveState של תצוגת מחזור החיים:
SavedStateViewModelFactory
הוא עכשיו היצרן המוגדר כברירת מחדל לשימוש כשמשתמשים ב-by navGraphViewModels()
או ב-constructor שלViewModelProvider
עםViewModelStoreOwner
שהוחזר על ידיNavController.getBackStackEntry()
אוNavController.getViewModelStoreOwner()
. - תמיכה בפרמטרים של שאילתות בקישורי עומק: עכשיו יש תמיכה בפרמטרים של שאילתות בקישורי עומק עם שינוי הסדר של הפרמטרים. עכשיו אפשר להשתמש בארגומנטים עם ערך ברירת מחדל או עם אפשרות ל-null כשמתבצעת התאמה של קישורי עומק.
- שיפור התמיכה באנימציה:
NavHostFragment
משתמש עכשיו ב-FragmentContainerView
מ-Fragment 1.2.0, ותוקנות בעיות שקשורות לסדר ה-Z של אנימציות ולשליחת חלונות משנה ל-Fragments.
גרסה 2.2.0-rc04
18 בדצמבר 2019
androidx.navigation:navigation-*:2.2.0-rc04
משוחרר. גרסה 2.2.0-rc04 כוללת את ההוספות האלה.
תיקוני באגים
- שינינו את אנימציות ברירת המחדל של העמעום שבהן משתמש
navigation-ui
כך שיתאיימו לאנימציות העמעום שהותאמו בקטע1.2.0-rc04
. (b/145769814)
גרסה 2.2.0-rc03
4 בדצמבר 2019
androidx.navigation:navigation-*:2.2.0-rc03
משוחרר. גרסה 2.2.0-rc03 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה בניתוח של קישור עומק כשמשתמשים בפרמטרים של שאילתות ובארגומנט כחלק האחרון בנתיב, שגרמה לכך שלא ניתן היה לנתח יותר מתווים אחד של ארגומנט הנתיב הסופי. (b/144554689)
- תוקנה בעיה בניתוח של קישורי עומק, שבה פרמטרים אופציונליים קיבלו את הערך
"@null"
במקוםnull
. (b/141613546) NavHostFragment
משחזר עכשיו בצורה נכונה את הגרף אחרי שינוי בהגדרות, כשמשתמשים בו עםFragmentContainerView
. (b/143752103)
שינויים ביחסי התלות
- הניווט תלוי עכשיו במחזור החיים
2.2.0-rc03
, במצב השמור של תצוגת מודל מחזור החיים1.0.0-rc03
, בפעילות1.1.0-rc03
ובמקטע1.2.0-rc03
, במקרים הרלוונטיים.
גרסה 2.2.0-rc02
7 בנובמבר 2019
androidx.navigation:navigation-*:2.2.0-rc02
משוחרר. גרסה 2.2.0-rc02 כוללת את ההוספות האלה.
שינויים ביחסי התלות
- הניווט תלוי עכשיו ב-androidx.lifecycle
2.2.0-rc02
.
גרסה 2.2.0-rc01
23 באוקטובר 2019
androidx.navigation:navigation-*:2.2.0-rc01
הושק ללא שינויים מאז 2.2.0-beta01
. גרסה 2.2.0-rc01 כוללת את ההוספות האלה.
גרסה 2.2.0-beta01
9 באוקטובר 2019
androidx.navigation:navigation-*:2.2.0-beta01
משוחרר. גרסה 2.2.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
NavDestination
ותתי-הסוגים שלו מבטלים עכשיו את הגדרתtoString()
כדי לספק מידע שימושי יותר במהלך ניפוי הבאגים. (b/141264986)
שינויים בהתנהגות
- המערכת מתעלמת עכשיו מפרמטרים נוספים של שאילתה כשמתאימים קישורי עומק, ולא גורמים להתאמה להיכשל. (b/141482822)
תיקוני באגים
- תוקנה בעיה שבה המערכת התעלמה מארגומנטים בנתיב של קישור עומק אם צוינו גם פרמטרים של שאילתות. (b/141505755)
- הודעת השגיאה של
navArgs()
Kotlin ב-Activity
טובה יותר, כשאין תוספות. (b/141408999) - כיתות Java מסוג
Directions
שנוצרו על ידי Safe Args מכילות ערכי ברירת מחדל. (b/141099045) - כיתות Java מסוג
Args
שנוצרו על ידי Safe Args מכילות ערכי ברירת מחדל. (b/140123727) - כשמשתמשים ב-
Toolbar
,NavigationUI
לא מונפשת יותר את שינוי הטקסט במעבר בין שני יעדים ברמה העליונה. (b/140848160)
גרסה 2.2.0-alpha03
18 בספטמבר 2019
androidx.navigation:navigation-*:2.2.0-alpha03
משוחרר. גרסה 2.2.0-alpha03 מכילה את ההוספות האלה.
שינויים בהתנהגות
- אם מחייגים למספר
setViewModelStore()
אחרי שמחייגים למספרsetGraph
, מתקבלת עכשיו הודעתIllegalStateException
. תמיד צריך להגדיר את זה באמצעותNavHost
כחלק מההגדרה הראשונית, כדי לוודא שלכל המכונות שלNavBackStackEntry
יש אחסון עקבי למכונות שלViewModel
. (aosp/1111821)
תיקוני באגים
- תוקן
ConcurrentModificationException
כשמשתמשים במופעים שלViewModel
שמצורפים למספר מופעים שונים של תרשים ניווט ברמתViewModelStore
. (aosp/1112257)
גרסה 2.2.0-alpha02
5 בספטמבר 2019
androidx.navigation:navigation-*:2.2.0-alpha02
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
- קישורי עומק עם פרמטרים של שאילתות תומכים עכשיו בפרמטרים של שאילתות בסדר מחדש. ארגומנטים שיש להם ערך ברירת מחדל או שאפשר להקצות להם ערך null הם עכשיו אופציונליים כשמתבצעת התאמה של קישורי עומק. (b/133273839)
- עכשיו אפשר להפעיל את
NavController.getBackStackEntry()
ולהעביר את המזהה של יעד או תרשים ניווט בסטאק העורפי. הערך המוחזר שלNavBackStackEntry
מספק את הערכיםLifecycleOwner
,ViewModelStoreOwner
(הערך שמוחזר על ידיNavController.getViewModelStoreOwner()
) ו-SavedStateRegistryOwner
שמבוססים על ניווט, בנוסף לארגומנטים ששימשו להפעלת היעד הזה. (aosp/1101691, aosp/1101710)
תיקוני באגים
- תוקנה בעיה שבה הוספת
NavHostFragment
ל-ViewPager2
נכשלה עםIllegalArgumentException
. (b/133640271) NavInflater
לא קורא עכשיו ל-getResourceName()
ללא צורך, וכך מזרז את זמן הניפוח ב-40%. (b/139213740)
גרסה 2.2.0-alpha01
7 באוגוסט 2019
androidx.navigation:navigation-*:2.2.0-alpha01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
SavedStateViewModelFactory
הוא עכשיו המפעל שמוגדר כברירת מחדל כשמשתמשים ב-by navGraphViewModels()
או ב-constructor שלViewModelProvider
עםViewModelStoreOwner
שמוחזר על ידיNavController.getViewModelStoreOwner()
. (b/135716331)
שינויים ב-API
- מניווט
2.1.0-rc01
: ממשק ה-APIgetViewModelStore()
שהוצא משימוש ב-NavController
והוצג ב-2.1.0-alpha02
הוסרה. (aosp/1091021)
תיקוני באגים
NavHostFragment
משתמש עכשיו ב-FragmentContainerView
, כדי לפתור בעיות שקשורות לסדר ה-Z של אנימציות ולשליחת חלונות משנה ל-Fragments. (b/137310379)
גרסה 2.1.0
גרסה
5 בספטמבר 2019
androidx.navigation:navigation-*:2.1.0
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
שינויים חשובים מאז גרסה 2.0.0
- הגדרת היקף של מודלים של ViewModels לתרשים ניווט: עכשיו אפשר ליצור מודלים של ViewModels ברמת התרשים של הניווט באמצעות מנהל הנכסים
by navGraphViewModels()
למשתמשי Kotlin באמצעות ספריות-ktx
או באמצעות ה-APIgetViewModelStoreOwner()
שנוסף ל-NavController
. מידע נוסף זמין במאמר שיתוף נתונים שקשורים לממשק המשתמש בין יעדים. - יעדים לתיבות דו-שיח: עכשיו אפשר ליצור
<dialog>
יעדים שבהם יוצגDialogFragment
אם תסמנו אותם בnavigate
.NavHostFragment
תומך ביעדים של תיבת דו-שיח כברירת מחדל. מידע נוסף זמין במאמר יצירת יעד מ-DialogFragment. - ניווט לפי URI: עכשיו אפשר
navigate
באמצעותUri
, שמשתמש ב-<deepLink>
שהוספתם ליעד כדי לנווט אליו. מידע נוסף זמין במאמר ניווט באמצעות Uri. - NavHostController: ממשקי API ששימשו במיוחד ליצירת
NavHost
בהתאמה אישית הועברו אלNavHostController
, ומאפשרים להטמעות לחבר אתNavController
שלהן ל-LifecycleOwner
, ל-OnBackPressedDispatcher
ול-ViewModelStore
המארחים.
גרסה 2.1.0-rc01
7 באוגוסט 2019
androidx.navigation:navigation-*:2.1.0-rc01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
שינויים ב-API
- ממשק ה-API של
getViewModelStore()
שהוצא משימוש ב-NavController
הוסר ב-2.1.0-alpha02
. (aosp/1091021)
גרסה 2.1.0-beta02
19 ביולי 2019
androidx.navigation:*:2.1.0-beta02
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- הסרה של תלות לא מכוונת ב-Jacoco שנוספה ב-
2.1.0-beta01
. (b/137782950)
גרסה 2.1.0-beta01
17 ביולי 2019
androidx.navigation:*:2.1.0-beta01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
NavigationUI
מציג עכשיו אנימציה של הסרת לחצן למעלה כשמשתמשים ב-setupWithNavController()
עםToolbar
אוCollapsingToolbarLayout
. (b/131403621)
תיקוני באגים
- תוקנה בעיה שקשורת לתזמון כשמשתמשים בכמה NavHostFragments באותו מאגר באמצעות
findNavController()
. (b/136021571)
גרסה 2.1.0-alpha06
2 ביולי 2019
androidx.navigation:*:2.1.0-alpha06
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
- המאפיין
app:navGraph
ששימש את NavHostFragment הועבר עכשיו לארטיפקטnavigation-runtime
. כדי לשלב ניווט מותאם אישית שניתן להוסיף באמצעות XML עם חלונית המארח של עורך הניווט, צריך להשתמש במאפיין הזה. (b/133880955)
שינויים ב-API
- ה-API של
getViewModelStore()
ב-NavController
הוצא משימוש והוחלף בשיטהgetViewModelStoreOwner()
החדשה שמחזירהViewModelStoreOwner
. (aosp/987010) - ההטמעה של יעדי חלון צף, כמו יעדים מסוג
<dialog>
, הוכללה בממשק סמן,FloatingWindow
, שכל יעדי<dialog>
מטמיעים עכשיו. עכשיו מתעלמים מ-FloatingWindow
יעדים ב-methods של ממשק המשתמש לאינטראקציה עם הסרגל העליון של האפליקציה. (b/133600763)
שינויים בהתנהגות
- עכשיו המצב של הניווט מסתנכרן בצורה נכונה עם מה שמוצג במסך כשמשתמשים ביעד
<dialog>
. כתוצאה מכך, עכשיו מוצגים באופן אוטומטי יעדים מסוג<dialog>
כשמנווטים ליעד שאינו תיבת דו-שיח או פעילות, כמו יעד מסוג<fragment>
. (b/134089818)
תיקוני באגים
- התכונה 'ניווט' משביתה עכשיו את האנימציה שמופיעה כשנוצרת מחדש הפעילות במהלך טיפול בקישור עומק, וכך מתקנת את הבהוב החזותי. (b/130362979)
- תוקן באג שגרם לכך שסטאק החזרה לאחור של הניווט לא יסתנכרן כשמפעילים חלון קופץ של 'קטע' בזמן הוספת הקטע הראשוני. (b/133832218)
גרסה 2.1.0-alpha05
5 ביוני 2019
androidx.navigation:*:2.1.0-alpha05
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
שינויים ב-API
- שמות של ממשקי API שקשורים למארח ב-
NavController
שונו והם הועברו למחלקה משנית חדשה שלNavController
, NavHostController
. (aosp/966091) - השיטה
NavController
setHostOnBackPressedDispatcherOwner()
הוחלפה בשיטהsetOnBackPressedDispatcher()
שלNavHostController
, ועכשיו צריך להתקשר אלsetLifecycleOwner()
לפני הקריאה אליה. (aosp/965409) NavHostController
מכיל עכשיו את השיטהenableOnBackPressed(boolean)
שמחליפה את הכיתהNavHostOnBackPressedManager
שהוחזר על ידיsetHostOnBackPressedDispatcherOwner()
בעבר. (aosp/966091)
תיקוני באגים
- תוקנה בעיה שבה סטאק החזרה לא היה נכון אחרי ניווט לפי URI. (b/132509387)
- קישורי עומק שמטפלים באופן אוטומטי על ידי NavController מופעלים עכשיו רק פעם אחת. (b/132754763)
גרסה 2.1.0-alpha04
16 במאי 2019
androidx.navigation:*:2.1.0-alpha04
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
NavHostFragment
מתייחס בצורה נכונה ל-app:defaultNavHost
כשמנתב את האירועים של לחצן החזרה אחורה במערכת, וכך מתקן נסיגה ב-Navigation2.1.0-alpha03
. b/132077777DialogFragmentNavigator
מטפל עכשיו בצורה תקינה בפעולותpopBackStack()
ו-navigateUp()
. b/132576764- תוקנה בעיית
IllegalStateException: unknown destination during restore
בניווט חוזר בין תרשימים מקוננים. b/131733658
גרסה 2.1.0-alpha03
7 במאי 2019
androidx.navigation:*:2.1.0-alpha03
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
בעיות מוכרות
- NavHostFragment ממשיך ליירט את לחצן החזרה לדף הקודם של המערכת למרות השימוש ב-
app:defaultNavHost="false"
b/132077777
תכונות חדשות
- עכשיו אפשר ליצור יעדים מסוג
<dialog>
שיוצג בהםDialogFragment
כשnavigate
אליהם.NavHostFragment
תומך ביעדי תיבת דו-שיח כברירת מחדל. b/80267254 - בנוסף לקריאה ל-
navigate
עם מזהה משאב או מכונה שלNavDirections
, עכשיו אפשר לנווט באמצעותUri
, שמשתמש ב-<deepLink>
שהוספתם ליעד כדי לנווט ליעד הנכון. b/110412864
שינויים בהתנהגות
- מהירות האנימציות שמוגדרות כברירת מחדל ב-NavigationUI הוגדלה מ-400 אלפיות שנייה ל-220 אלפיות שנייה, כדי להתאים למהירות האנימציה שמוגדרת כברירת מחדל בפעילויות ובקטעים. b/130055522
שינויים ב-API
- השיטה
createFragmentNavigator()
שלNavHostFragment
הוצאה משימוש והפונקציונליות שלה הועברה לשיטה החדשהonCreateNavController()
כדי להבהיר שזו נקודת הכניסה הנכונה להוספת רכיבי Navigator בהתאמה אישית כשיוצרים צאצא שלNavHostFragment
. b/122802849 - הוספנו את השיטה
hasDeepLink()
ל-NavDestination
כדי לאפשר לכם לבדוק אם יעד מסוים יכול לטפל ב-Uri
נתון, או, במקרה שלNavGraph
, בכל יעד בתרשים הניווט. b/117437718
תיקוני באגים
- עכשיו, ארגומנטי ברירת המחדל מועברים בצורה נכונה למופעי
OnDestinationChangedListener
. b/130630686 NavHostFragment
עכשיו מיירט אירועי Back במערכת באמצעותOnBackPressedDispatcher
, וכך מתקן בעיה בביצוע ניווט מותנה בשיטות מחזור החיים של Fragment כשחוזרים ל-Fragment. b/111598096- ב-Safe Args, עכשיו אפשר להסיק בצורה נכונה ש-
android:defaultValue=”@null”
עםapp:argType
לא מוגדר הוא ארגומנטstring
. b/129629192
גרסה 2.1.0-alpha02
3 באפריל 2019
androidx.navigation:*:2.1.0-alpha02
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות חדשות
- עכשיו אפשר ליצור מודלים של תצוגות מפורטות ברמת תרשים ניווט דרך בעל הגישה לנכס
by navGraphViewModels()
למשתמשי Kotlin, או באמצעות ה-API שלgetViewModelStore()
שנוסף אלNavController
. b/111614463
שינויים ב-API
- עכשיו אפשר להוסיף
app:targetPackage
ליעד<activity>
כדי להגביל את שם החבילה התואם. הוא תומך ב-app:targetPackage="${applicationId}"
כדי להגביל את החבילה למזהה האפליקציה שלכם. b/110975456
תיקוני באגים
- ה-
android:name
של יעדים מסוג<activity>
לא מנותח יותר ל-Class בזמן ההנפקה, וכך נמנעות הודעות ClassNotFoundExceptions כשמשתמשים בתכונות דינמיות. b/124538597
גרסה 2.1.0-alpha01
19 במרץ 2019
זוהי גרסת האלפא הראשונה של הניווט '2.1.0
'.
שינויים ביחסי התלות
- הניווט תלוי עכשיו ב-
androidx.core:core:1.0.1
וב-androidx.fragment:fragment:1.1.0-alpha05
. בנוסף, במהדורה הזו הוסרה התלות ב-androidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
שינויים ב-API
- הוספנו שיטה חדשה
Navigation.createNavigateOnClickListener(NavDirections)
כחלופה ליצירת מאזין קליקים עם מזהה משאב ו-Bundle.b/127631752 - האפשרות
FragmentNavigator.instantiateFragment
הוצאה משימוש. בהטמעת ברירת המחדל נעשה עכשיו שימוש ב-FragmentFactory
כדי ליצור אובייקטים של Fragments. b/119054429
תיקוני באגים
- הניווט לא שולח יותר ערך null של
Bundle
כשיש ארגומנטים שמצורפים ליעד. כך תוקנה בעיה בשימוש ב-android:defaultValue="@null"
. b/128531879 - השימוש ב-Safe Args תלוי עכשיו ב-KotlinPoet 1.1.0, לתיקון בעיה של שמות חבילות ארוכים מאוד. b/123654948
גרסה 2.0.0
גרסה 2.0.0
14 במרץ 2019
גרסת 2.0.0
של הניווט פורסמת ללא שינויים מ-2.0.0-rc02
.
גרסה 2.0.0-rc02
6 במרץ 2019
ניווט בגרסה 2.0.0-rc02 כולל ארטיפקטים חדשים עם מזהה הקבוצה androidx.navigation
ומשנה את יחסי התלות שלהם במקבילות של AndroidX.
ההתנהגות של 2.0.0-rc02 זהה להתנהגות של Navigation 1.0.0-rc02, ולא אמורים להיות דרושים שינויים בקוד כדי לעדכן מגרסה 1.0.0-rc02, מלבד עדכון יחסי התלות כך שיתאימו ליחסי התלות החדשים.
כדי להשתמש בגרסאות 2.X של Navigation, צריך להעביר את הפרויקט ל-AndroidX. הגרסה היציבה 1.0 של Navigation תהיה הגרסה האחרונה שתשתמש ביחסי התלות של Support Library. כל הפיתוח העתידי אחרי גרסת 1.0 יתבסס על AndroidX וייבנה על גרסת 2.0 היציבה.
יחסי תלות לפני AndroidX
בגרסאות של Navigation שקדמו ל-AndroidX, צריך לכלול את יחסי התלות הבאים:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
ל-Safe args, מוסיפים את classpath הבא בקובץ build.gradle
ברמה העליונה
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
גרסה 1.0.0
גרסה 1.0.0
14 במרץ 2019
גרסת 1.0.0
של הניווט פורסמת ללא שינויים מ-1.0.0-rc02
.
גרסה 1.0.0-rc02
26 בפברואר 2019
זוהי הגרסה המועמדת השנייה לגרסה היציבה של Navigation 1.0.0. הגרסה הזו כוללת מספר תיקוני באגים.
תיקוני באגים
- תוקנה בעיה שבה המערכת תתעלם מ-
popBackStack()
אם בתרשים הבסיס לא היה מזהה b/126251695 navigateUp()
מטפל עכשיו בצורה נכונה בניווט חזרה למשימה של האפליקציה כשמפעילים אותו אחרי טיפול בקישורי עומק בליFLAG_ACTIVITY_NEW_TASK
b/126082008- תוקנה בעיה ב-
ActivityNavigator.applyPopAnimationsToPendingTransition
שלא חלה עליה אנימציית היציאה הנכונה של חלון קופץ b/126237567 - קוד Kotlin שנוצר על ידי Safe Args עכשיו כולל בריחה נכונה של מילות מפתח ב-Kotlin, כמו
in
ו-fun
, בשם החבילה שמשויך לכיתהR
. b/126020455
גרסה 1.0.0-rc01
21 בפברואר 2019
זוהי גרסה יציבה לגרסה 1.0.0 של Navigation. הגרסה הזו כוללת תיקון באג אחד.
תיקוני באגים
- תוקנה בעיה בשימוש ב-Fragments ובפעולות ניווט מסוג
singleTop
b/124294805
גרסה 1.0.0-beta02
12 בפברואר 2019
הגרסה הזו כוללת מספר שיפורים קלים ותיקוני באגים חשובים.
תכונות חדשות
- עכשיו אפשר להשתמש ב-
0
כ-android:defaultValue
לארגומנטים שלreference
. b/124248602
שינויים בהתנהגות
- התאמות מדויקות של קישורי עומק מקבלות עכשיו עדיפות על פני קישורי עומק עם התאמות של
.*
או של ארגומנטים. b/123969518
תיקוני באגים
- הפונקציות
popBackStack()
ו-navigateUp
מחזירות עכשיו את הערךfalse
בצורה נכונה כשמבצעים pop של היעד האחרון ב-back stack, וכך מתקנים נסיגה לאחור (regression) שהופיעה ב-1.0.0-beta01
. b/123933201 - הניווט מגדיר עכשיו נכון את
ClassLoader
במהלך השחזור של מצב המכונה השמור, כדי למנוע בעיות כשמשתמשים במחלקות בהתאמה אישית במצב שמור שלNavigator
או בארגומנטים שנשלחו אלNavDestination
. b/123893858 - כיתות NavArgs שנוצרו על ידי Safe Args לא קורסות יותר כשמשחזרים את הארגומנט
Parcelable[]
ממצב המכונה השמור. b/123963545 - Safe Args מנקה עכשיו כראוי כיתות Kotlin שנוצרו שלא נחוצות. b/124120883
גרסה 1.0.0-beta01
4 בפברואר 2019
זוהי גרסת הבטא הראשונה של Navigation. מעכשיו והלאה, Navigation API צפוי להישאר יציב עד לגרסה הבאה, אלא אם תהיה בעיה קריטית. הגרסה הזו כוללת כמה תיקוני באגים ושינויים בהתנהגות.
שינויים בהתנהגות
- הניווט מבטיח עכשיו שערכים שמוגדרים כברירת מחדל לארגומנטים יטופלו באופן זהה במהלך זמן הריצה ודרך Safe Args. לכן, רק לארגומנטים עם
app:argType="reference"
יכולים להיות ערך ברירת מחדל שמפנה למשאב אחר (לדוגמה,@color/colorPrimary
). ניסיון להשתמש בערך ברירת המחדל של קובץ העזר עםapp:argType
שונה יגרום לחריגה בניתוח ה-XML של הניווט. b/123551990 - Safe Args תלוי עכשיו בפלאגין Android Gradle 3.3.0 aosp/888413
- השימוש ב-Safe Args תלוי עכשיו ב-Kotlin 1.3.20 aosp/888414
תיקוני באגים
- מעכשיו אפשר להשתמש ב-Safe Args בספריות ובמודולים של תכונות בכל הגרסאות של הפלאגין של Android Gradle. b/121304903
- תוקנה נסיגה שגרמה לכך שפעולת
popBackStack()
אחת תגרום להוצאה של כל העותק של יעד מסוים מהחלק העליון של סטאק החזרה, במקום רק יעד אחד בכל פעם. b/123552990 - תוקנה בעיה שבה המצב של
FragmentNavigator
יוצא מסנכרון עם המצב שלNavController
, וכתוצאה מכך מתרחשIllegalStateException
כשמנסים לשחזר את סטאק הקוד הקודם. b/123803044 - תוקנה בעיה שבה החץ לאחור המנוהל
NavigationUI
לא הופיע כשמשתמשים ב-ProGuard עם ערפול. b/123449431 - הקוד שנוצר על ידי Safe Args מטפל עכשיו כראוי בשימוש ב-
app:argType
שמפנה לכיתה פנימית סטטית בפורמט.OuterClass$InnerClass
. b/123736741 - קוד Java שנוצר על ידי Safe Args מטפל עכשיו בצורה תקינה בפעולות גלובליות וביעדים בתצוגת עומק. b/123347762
גרסה 1.0.0-alpha11
23 בינואר 2019
זוהי גרסה של תיקון חם ל-1.0.0-alpha10
שמתקנת בעיה ב-Safe Args.
תיקוני באגים
- תוקנה בעיה שבה Safe Args לא הצליח לייבא את הכיתה Directions המשויכת לפעולות גלובליות. b/123307342
גרסה 1.0.0-alpha10
23 בינואר 2019
בעיות מוכרות
- ל-Safe Args אין אפשרות לייבא את הכיתה Directions שמשויכת לפעולות גלובליות. b/123307342
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. תוכלו לקרוא על כך בקטע שינויים שעלולים לגרום לכשל שבהמשך.
תכונות חדשות
- משתמשי Kotlin יכולים עכשיו להשתמש ב-delegate של המאפיין
by navArgs()
כדי לקבל באופן עצלן הפניה לכיתהNavArgs
שנוצרה על ידי Safe Args ב-Activity
או ב-Fragment
. b/122603367 - עכשיו אפשר ליצור קוד Kotlin באמצעות Safe Args על ידי החלת הפלאגין
androidx.navigation.safeargs.kotlin
. קוד Kotlin נוצר במיוחד למודולים של Kotlin בלבד, באמצעות ארגומנטים שמוגדרים כברירת מחדל ומחלקות לא ניתנות לשינוי בתבנית ה-builder שעדיין זמינה באמצעות הפלאגיןandroidx.navigation.safeargs
הקודם. b/110263087
שינויים בהתנהגות
- קישורי עומק תואמים מוטים עכשיו לכיוון קישור העומק עם הכי הרבה ארגומנטים. b/118393029
- מעכשיו, קריאה ל-
setGraph()
ב-NavController
תאפס את סטאק החזרה. b/111450672 - קישורי עומק לא מוכרים כבר לא גורמים להצגת השגיאה
IllegalStateException
, אלא מתעלמים מהם. כך מתוקנות בעיות שקשורות ל-NavHostFragment
בתצוגת עץ או ל-NavHostFragment
ים מרובים. b/121340440
שינויים שעלולים לגרום לכשלים
- השיטה
NavOptions.applyPopAnimationsToPendingTransition()
להוספת אנימציות קופצות לפעילות הועברה ל-ActivityNavigator
. b/122413117 - Safe Args עכשיו מונע כפילויות של כיתות זהות לפעולות ללא ארגומנטים. סוג ההחזרה של שיטות ללא ארגומנטים בקטגוריות NavDirections שנוצרו הוא עכשיו
NavDirections
. b/123233147 - למחלקות Safe Args שנוצרו על ידי AI כבר אין constructor ציבורי. צריך לבצע אינטראקציה רק עם השיטות הסטטיות שנוצרו. b/123031660
- למחלקות
NavDirections
שנוצרו באמצעות Safe Args כבר אין מבנה ציבורי - צריך ליצור אותן רק באמצעות ה-methods הסטטיות במחלקות Directions שנוצרו. b/122963206 - הערך
Bundle
שהוחזר מ-NavDirections
'getArguments()
מסומן עכשיו בתור@NonNull
במקום@Nullable
. b/123243957
תיקוני באגים
NavDeepLinkBuilder
מטפל עכשיו בצורה נכונה בכמה קריאותPendingIntent
בו-זמנית לאותו יעד, באמצעות הארגומנטים שאתם מעבירים כדי לקבוע את הייחודיות. b/120042732NavController
מטפל עכשיו כראוי בפעולותpopBackStack()
כשמשתמשים ב-NavHostFragment
בתצוגת עץ או ב-Fragments צאצאים אחרים עם סטאק אחורה. b/122770335NavigationUI
מגדיר עכשיו בצורה נכונה את תיאור התוכן של לחצן למעלה. b/120395362- שיעורי הדרכה שנוצרו באמצעות Safe Args מטפלים עכשיו בצורה נכונה בפעולות גלובליות שיש להן את אותו מזהה כמו פעולה ביעד. b/122962504
- לכיתות
NavDirections
שנוצרו על ידי Safe Args יש עכשיו ערכים שווים שלhashCode()
כאשרequals()
מחזירה את הערך true. b/123043662 FragmentNavigator
מחזירה עכשיו הודעת שגיאה טובה יותר אם מנסים לבצעFragmentTransactions
בהתאמה אישית ב-FragmentManager
שלNavHostFragment
. צריך להשתמש תמיד ב-getChildFragmentManager()
. b/112927148
גרסה 1.0.0-alpha09
18 בדצמבר 2018
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. תוכלו לקרוא על כך בקטע שינויים שעלולים לגרום לכשל שבהמשך.
החלטנו לא להמשיך את הפיתוח של הארטיפקט android.arch.navigation:navigation-testing
. הכלי הזה הוכיח את עצמו כשימושי לבדיקות פנימיות של NavController
, אבל מומלץ מאוד להשתמש בשיטות בדיקה חלופיות, כמו יצירת מודלים מדומים של מכונות NavController
כדי לוודא שמתבצעות הקריאות הנכונות ל-navigate()
. הגישה הזו מפורטת בהרצאה על פעילות אחת ב-AndroidDevSummit 2018, ואנחנו נעבד על תיעוד נוסף בנושא בדיקה באמצעות Navigation.
תכונות חדשות
MenuItem
עםmenuCategory="secondary"
לא יגרמו יותר להוצאה של הערך מהסטאק האחורי כשמשתמשים בשיטותNavigationUI
. b/120104424- עכשיו אפשר להגדיר ב-
AppBarConfiguration
מכונה חלופית שלOnNavigateUpListener
שתופעל כש-navController.navigateUp()
מחזירה את הערךfalse
. b/79993862 b/120690961
שינויים שעלולים לגרום לכשלים
- כשמשתמשים ב-
<argument>
עםargType="reference"
, מערכת הניווט כבר לא מפענחת את ההפניה, אלא מספקת את מזהה המשאב הגולמי עצמו. b/111736515 - כברירת מחדל,
onNavDestinationSelected()
חוזר ליעד ההתחלה של תרשים הניווט, כך שהוא יהיה תואם ל-methodssetup
. מוסיפים אתmenuCategory="secondary"
ל-MenuItem
כדי למנוע את הוצאת הסטאק הקודם. aosp/852869 - השיטות
fromBundle()
של כיתותArgs
שנוצרו מקבלות עכשיוBundle
שאינו null במקוםBundle
שיכול להיות null aosp/845616
תיקוני באגים
- עכשיו אפשר לנתח את הארגומנטים כראוי מקישורי עומק כ-
argType
הנכון, במקום תמיד כמחרוזות b/110273284 - עכשיו אפשר לייצא את המשאבים הציבוריים של Navigation בצורה תקינה b/121059552
- Safe Args תואם עכשיו ל-Android Gradle Plugin 3.4 Canary 4 ואילך b/119662045
גרסה 1.0.0-alpha08
6 בדצמבר 2018
הגרסה הזו כוללת שינויים ב-API שעלולים לגרום לכשל. תוכלו לקרוא על כך בקטע שינויים שעלולים לגרום לכשל שבהמשך.
תכונות חדשות
- מעכשיו, תוויות יעד, כשמשתמשים בהן עם methods של
NavigationUI
, יחליפו באופן אוטומטי את המכונות{argName}
ב-android:label
בארגומנט הנכון b/80267266 - הניווט תלוי עכשיו ב-Support Library 28.0.0 b/120293333
שינויים שעלולים לגרום לכשלים
- השם של
OnNavigatedListener
השתנה ל-OnDestinationChangedListener
b/118670572 OnDestinationChangedListener
מעביר עכשיו גם אתBundle
של הארגומנטים aosp/837142- המאפיינים
app:clearTask
ו-app:launchDocument
והשיטות המשויכות שלהם הוסרו. משתמשים ב-app:popUpTo
עם שורש התרשים כדי להסיר את כל היעדים מסטאק העורפי. b/119628354 ActivityNavigator.Extras
משתמש עכשיו בתבניתBuilder
ומוסיף את היכולת להגדיר את כל הדגלים שלIntent.FLAG_ACTIVITY_
aosp/828140- השם של
NavController.onHandleDeepLink
השתנה ל-handleDeepLink
aosp/836063 - שיעורים ומתודות רבים שלא מיועדים ליצירת תת-סוגים, כמו
NavOptions
,NavInflater
,NavDeepLinkBuilder
ו-AppBarConfiguration
, הפכו ל-final
aosp/835681 - השיטה
NavHostFragment.setGraph()
הוצאה משימוש aosp/835684 - שיטת
NavigationUI.navigateUp(DrawerLayout, NavController)
שהוצאה משימוש הוסרה. aosp/835684 - יצירת מקטעים הועברה אל
FragmentNavigator
כדי שיהיה קל יותר לתת גישה ליצירת מקטעים ל-FragmentFactory
. b/119054429 - ה-constructor של
NavGraphNavigator
לא מקבל יותרContext
aosp/835340 - NavigatorProvider היא עכשיו מחלקה ולא ממשק. הפונקציה
NavigatorProvider
שמוחזרת על ידיgetNavigatorProvider()
לא השתנתה. aosp/830660 NavDestination.navigate()
הוסר. במקום זאת, צריך להתקשר למספרnavigate()
ב-Navigator
. aosp/830663- ארגון מחדש משמעותי של
Navigator
, ביטול הצורך ב-OnNavigatorNavigatedListener
ובמקום זאת החזרתnavigate
שלNavDestination
שאליו הועברת. - מכונות
Navigator
לא יכולות יותר לשלוח אירועי קופץ ל-NavController
. מומלץ להשתמש ב-OnBackPressedCallback
כדי ליירט לחיצות על הלחצן 'הקודם' ולבצע קריאה ל-navController.popBackStack()
. aosp/833716
תיקוני באגים
popUpTo
פועל עכשיו באופן עקבי כשהיעד הוא רכיב<navigation>
b/116831650- תוקנו מספר באגים שהובילו לערך של
IllegalArgumentException
במהלך שימוש בתרשימים בתצוגת עץ b/118713731 b/113611083 b/113346925 b/113305559 - המאפיין
dataPattern
של היעדים<activity>
יאכלס עכשיו ארגומנטים מארגומנטים שאינם מחרוזות באמצעות הפקודהtoString()
b/120161365
ארגומנטים בטוחים
- Safe Args תומך באובייקטים מסוג Serializable, כולל ערכי Enum. אפשר להגדיר ערך ברירת מחדל לסוגי enum באמצעות ליצ'ר של המנייה (enum) ללא שם הכיתה (למשל
app:defaultValue="READ"
) b/111316353 - Safe Args תומך במערכים של כל הסוגים הנתמכים b/111487504
- Safe Args מתעלם עכשיו מתיקיות משנה של ספריות משאבים b/117893516
- Safe Args מוסיף הערות
@Override
במקרים הרלוונטיים b/117145301
גרסה 1.0.0-alpha07
29 באוקטובר 2018
תכונות חדשות
- סיווג חדש של AppBarConfiguration מאפשר להתאים אישית את היעדים שנחשבים ליעדים ברמה העליונה. פרטים נוספים זמינים במסמכי התיעוד המעודכנים. b/117333663
- עכשיו אפשר להעביר ארגומנטים ליעד ההתחלה של התרשים b/110300470
- עכשיו קישורי עומק תומכים בסכימות בהתאמה אישית עם נקודות, מקפים וסימני פלוס. b/112806402
שינויי תוכנה שעלולים לגרום לכשלים
- המודול
navigation-testing-ktx
קורס ל-navigation-testing artifact
ולא יפורסם יותר. - לארטיפקט
navigation-testing
יש עכשיו תלות בספרייה הרגילה של Kotlin. ה-API השתנה כדי להתאים יותר למוסכמות של Kotlin, אבל אפשר להמשיך להשתמש בו לבדיקות שנכתבות ב-Java. - אין יותר תמיכה בתרשימי ניווט שרשומים במניפסט המטא-נתונים. b/118355937
- לא ניתן יותר לצרף פעולות ליעדים מסוג <activity>. aosp/785539
תיקוני באגים
- מעכשיו, קישורי עומק מנתחים פרמטרים של שאילתות בצורה תקינה. b/110057514
- עכשיו כל האנימציות של הכניסה והיציאה חלות בצורה נכונה על יעדים של פעילויות. b/117145284
- תוקנה קריסה שמתרחשת לאחר שינויים בהגדרות בעת שימוש ב-Navigators בהתאמה אישית. b/110763345
Safe Args
- עכשיו יש ל-Safe args תלות קבועה ב-Android Gradle Plugin 3.2.1. b/113167627
- עכשיו אפשר ליצור מסלולי הגעה לכיתות פנימיות. b/117407555
- תוקנה בעיה ביצירת מסלול לגרף <include>. b/116542123
גרסה 1.0.0-alpha06
20 בספטמבר 2018
תכונות חדשות
- יש עכשיו תמיכה במעברים משותפים של רכיבים ליעדי מקטעים ופעילות. b/79665225. מידע נוסף זמין במאמר הטמעת ניווט באמצעות הרכיב של ארכיטקטורת הניווט
- בחירה של פריט ב-
NavigationView
תסגור עכשיו כל גיליון תחתון שמכיל אותו b/112158843
שינויים ב-API
- שינוי שעלול להפר את התאימות לאחור: השיטה
navigate()
של Navigator כוללת עכשיו פרמטרNavigator.Extras
. - ה-method
getGraph()
של NavController היא עכשיוNonNull
b/112243286
תיקוני באגים
NavigationUI.setupWithNavController()
לא חושף יותר צפיות אם משתמשים בו עם צפיות מיעדים ספציפיים b/111961977- Navigator
onSaveState()
נקרא עכשיו רק פעם אחת b/112627079
Safe Args
- כעת, כיתות של מסלולי הגעה ליעד בניווט מרחיבות את הכיתה של מסלול הגעה של ההורה, אם היא קיימת b/79871405
- לכיתות Directions ו-Args יש עכשיו הטמעה שימושית של
toString()
b/111843389
גרסה 1.0.0-alpha05
10 באוגוסט 2018
תיקוני באגים
- תוקן באג שגרם להתנהגות שגויה של backstack. b/111907708
- תיקון באג ב-
equals()
של כיתות Generated Args. b/111450897 - תיקון כשל build ב-Safe Args. b/109409713
- תיקון המרה ממזהי משאבים לשמות Java b/111602491
- תיקון הודעות שגיאה לגבי יכולת השימוש ב-null בפלאגין Safe Args.
- הוספת הערות חסרות לגבי יכולת השימוש באפס.
גרסה 1.0.0-alpha04
19 ביולי 2018
התכונה Navigation 1.0.0-alpha04
והפלאגין המשויך של Safe Args ל-Gradle מכילים מספר שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API או בהתנהגות
- NavHostFragment תמיד מגדיר את ה-Fragment הנוכחי כ-Fragment הניווט הראשי, כדי לוודא שמנהלי ה-Fragment הצאצאים יופעלו לפני שמנהל ה-NavController החיצוני יופעל b/111345778
ארגומנטים בטוחים
- שינוי תוכנה שעלול לגרום לכשלים: השם
app:type
השתנה ל-app:argType
כדי למנוע התנגשויות עם ספריות אחרות, כמו ConstraintLayout 2.0.0-alpha1 b/111110548 - עכשיו אפשר ללחוץ על הודעות השגיאה מ-Safe Args b/111534438
- בכיתות Args מוודאים עכשיו שמאפייני
NonNull
הם לא null b/111451769 - נוספו הערות
NonNull
לכיתות שנוצרו על ידי NavDirections ו-Args b/111455455 b/111455456
תיקוני באגים
- תוקנה בעיה בלחצן 'הקודם' במערכת אחרי קישור עמוק ליעד של קטע קוד b/111515685
גרסה 1.0.0-alpha03
12 ביולי 2018
הניווט 1.0.0-alpha03
והפלאגין של Safe Args gradle המשויך אליו מכילים כמה שינויים ב-API, שינויים בהתנהגות ותיקוני באגים.
שינויים ב-API או בהתנהגות
- נוספה שיטת NavigationUI.setupWithNavController לסרגל הכלים b/109868820
- נוספה שיטת NavigationUI.setupWithNavController ל-CollapsingToolbarLayout b/110887183
- הפונקציה popBackStack() מחזירה עכשיו את הערך false כשמקבץ ההיסטוריה הריק או כשמזהה היעד שצוין לא נמצא במקבץ ההיסטוריה b/110893637
- FragmentNavigator מתעלם עכשיו מפעולות ניווט אחרי ש-FragmentManager שומר את המצב, כדי למנוע חריגות מסוג 'לא ניתן לבצע את הפעולה הזו אחרי onSaveInstanceState' b/110987825
Safe Args
- שינוי שגורם לשבירה של תאימות לגרסאות קודמות: תווים לא אלפאנומריים בשמות של פעולות ושל ארגומנטים יוחלפו באותיות רישיות באותיות רישיות קטנות בשמות של השיטות הרלוונטיות של NavDirections
- למשל:
DemoController.index
יהפוך ל-setDemoControllerIndex
b/79995048 - לדוגמה,
action_show_settings
יהפוך ל-actionShowSettings
b/79642240
- למשל:
- שינוי שפוגע בתאימות לאחור: עכשיו, הארגומנטים נחשבים כערכים שאינם null כברירת מחדל. כדי לאפשר ערכי null בארגומנטים מסוג מחרוזת ו-Parcelable, מוסיפים את
app:nullable="true"
b/79642307 - עכשיו אפשר להשתמש ב-
app:type="long"
עם ערכי ברירת מחדל בפורמט '123L' b/79563966 - עכשיו יש תמיכה בארגומנטים שניתנים לחלוקה, באמצעות שם מחלקה מוגדר במלואו עבור
app:type
. ערך ברירת המחדל היחיד שנתמך הוא"@null"
b/79563966 - מחלקות Args מטמיעות עכשיו את
equals()
ואתhashCode()
b/79642246 - מעכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של ספריות b/80036553
- עכשיו אפשר להחיל את הפלאגין Safe Args על פרויקטים של תכונות b/110011752
תיקוני באגים
- תוקנו בעיות בניווט במהלך שיטות מחזור החיים של Fragment b/109916080
- תוקנו בעיות בניווט באמצעות תרשימים מקוננים מספר פעמים b/110178671
- תוקנו בעיות בשימוש במאפיין
setPopUpTo
עם היעד הראשון בתרשים b/109909461 - תוקנה בעיה שבה כל הערכים של
app:defaultValue
הועברו כמחרוזות b/110710788 - aapt2 שצורף לפלאגין Android Gradle 3.2 Beta 01 מוסיף עכשיו כללי שמירה לכל מאפיין
android:name
בקובצי XML של ניווט b/79874119 - תוקנה דליפת זיכרון במהלך החלפת FragmentNavigator ברירת המחדל b/110900142
גרסה 1.0.0-alpha02
7 ביוני 2018
שינויים בהתנהגות
המכשיר
FragmentNavigator
משתמש עכשיו ב-setReorderingAllowed(true)
. b/109826220התכונה 'ניווט' מבצעת עכשיו פענוח של ארגומנטים שמנותחים מכתובות URL של קישורי עומק. b/79982454
תיקוני באגים
תוקן
IllegalStateException
בהפעלה של ניווט מ-methods של מחזור החיים ב-Fragment. b/79632233הניווט תלוי עכשיו ב-Support Library 27.1.1 כדי לתקן את האירועים של הבהוב כשמשתמשים באנימציות. b/80160903
תוקן שגיאה מסוג
IllegalArgumentException
כשמשתמשים ב-defaultNavHost="true" כקטע צאצא. b/79656847תוקן באג ב-
StackOverflowError
במהלך שימוש ב-NavDeepLinkBuilder. b/109653065תוקן באג ב-
IllegalArgumentException
כשמנווטים חזרה לתרשים בתצוגת עץ. b/80453447תוקנה בעיה עם קטעי Fragment חופפים בזמן השימוש ב-
launchSingleTop
. b/79407969מערכת הניווט יוצרת עכשיו את סטאק החזרה הסינתטי הנכון לתרשים בתצוגת עץ. b/79734195
מעכשיו, NavigationUI תדגיש את הפריט הנכון כשמשתמשים בגרף בתצוגת עץ בתור
MenuItem
. b/109675998
שינויים ב-API
המאפיין
clearTask
של פעולות וממשק ה-API המשויך ב-NavOptions
הוצאו משימוש. b/80338878המאפיין
launchDocument
של פעולות וממשק ה-API המשויך ב-NavOptions
הוצאו משימוש. b/109806636
גרסה 1.0.0-alpha01
8 במאי 2018
ניווט מספק מסגרת ליצירת ניווט באפליקציה. הגרסה הראשונית הזו היא 1.0.0-alpha01
.