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