מקטע (fragment)
העדכון האחרון | גרסה יציבה | מועמד לפרסום | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
4 בספטמבר 2024 | 1.8.3 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Fragment, צריך להוסיף את מאגר Google Maven פרויקט. למאגר Maven של Google אפשר לקבל מידע נוסף.
מוסיפים את יחסי התלות של פריטי המידע הנדרשים בקובץ build.gradle
בשביל
האפליקציה או המודול שלך:
Groovy
dependencies { def fragment_version = "1.8.3" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.3" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
למידע נוסף על יחסי תלות, אפשר לעיין במאמר הוספת יחסי תלות של build.
משוב
המשוב שלך עוזר לנו לשפר את Jetpack. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.
מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.
גרסה 1.8
גרסה 1.8.3
4 בספטמבר 2024
androidx.fragment:fragment-*:1.8.3
משוחרר. גרסה 1.8.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
- מעכשיו,
FragmentManager
מביא בחשבון פעולות בהמתנה בזמן הטיפול בתנועת 'הקודם' החזוי. כך אפשר לוודא שהפעלה מחדש של המערכת לא תגרום יותר לIndexOutOfBoundsException
. (I9ba32, b/342316801) AndroidFragment
לא יקרוס יותר אם הוא יתווסף ליצירה בזמן שהמצב של הפעילות/המקטע כבר נשמר. (I985e9, b/356643968)
גרסה 1.8.2
24 ביולי 2024
androidx.fragment:fragment-*:1.8.2
משוחרר. גרסה 1.8.2 כוללת את ההתחייבויות האלה.
תיקוני באגים
AndroidFragment
מטפל עכשיו כראוי במקרים שבהם שבר ההורה נמצא במקבץ האחורי של המקטעים, תוך הימנעות ממצב 'לא נמצאה תצוגה עבור מזהה' כשחוזרים לקטע הזה. (I94608)- מקטעים שנוספו באמצעות השיטה
FragmentTransaction.add
שדורשת המתנה שלViewGroup
עכשיו למשךonContainerAvailable
לפני שהם מתקדמים אלonStart()
. הבעיה הזו משפיעה על המשתמשים של ה-API הזה, כמוAndroidFragment
, שממתין עכשיו להזנה מחדש של ה-AndroidFragment
לפני העברה דרךonStart()
. (I94608)
גרסה 1.8.1
26 ביוני 2024
androidx.fragment:fragment-*:1.8.1
משוחרר. גרסה 1.8.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה מקטעים ללא קונטיינר היו מיד
DESTROYED
כשהתחלתם תנועת חיזוי אחורה. עכשיו הם נשמרים במצבCREATED
עד להשלמת התנועה. (If6b83, b/345244539)
גרסה 1.8.0
12 ביוני 2024
androidx.fragment:fragment-*:1.8.0
משוחרר. גרסה 1.8.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 1.7.0
- פריט המידע שנוצר בתהליך הפיתוח (Artifact) מסוג
fragment-compose
מכיל עכשיוComposable
מסוגAndroidFragment
שמאפשר להוסיף מקטעים להיררכיה של הכתיבה באמצעות שם המחלקה של המקטעים. הוא מטפל באופן אוטומטי בשמירה ובשחזור של מצב המקטע. יש להשתמש בו כתחליף ישיר לגישה שהומלצה בעבר על שימוש ב-AndroidViewBinding
לניפוח מקטעים. - הקריאה החוזרת של
onBackStackChangeCancelled
בממשקOnBackStackChangedListener
שלFragmentManager
מופעלת עכשיו כחלק מביצוע הפעולות ב-FragmentManager
, ומקרבת אותו לתזמון של הקריאה החוזרת (callback) שלonBackStackChangeCommitted
.
גרסה 1.8.0-rc01
29 במאי 2024
androidx.fragment:fragment-*:1.8.0-rc01
משוחרר. גרסה 1.8.0-rc01 מכילה את ההתחייבויות האלה.
תיקוני באגים
- הקריאה החוזרת (callback) של
onBackStackChangeCancelled
בממשקFragmentManagers OnBackStackChangedListener
מופעלת עכשיו כחלק מביצוע פעולות ב-FragmentManager
, ומקרבת אותו לתזמון של הקריאה החוזרת שלonBackStackChangeCommitted
. (I5ebfb, b/332916112)
גרסה 1.8.0-beta01
14 במאי 2024
androidx.fragment:fragment-*:1.8.0-beta01
משוחרר. גרסה 1.8.0-beta01 כוללת את ההתחייבויות האלה.
תיקוני באגים
- מ-Fragment
1.7.1
: המערכת החזויה תפעל מעכשיו רק עבור טרנזקציות שבהן בכל המקטעים יש אנימטור או מעבר Androidx שניתן לבצע בו חיפוש. כך ניתן לפתור בעיה שבה ביטול עסקה שבוצע באופן חלקי יגרום להצגת מסך שחור. (I43037, b/339169168)
גרסה 1.8.0-alpha02
17 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha02
משוחרר. גרסה 1.8.0-alpha02 מכילה את התחייבויות אלה.
תיקוני באגים
- ממקטע
1.7.0-rc02
: נוספו יומנים שמציינים למה הגדרתsharedElement
ללא מעברים אחרים תיכשל. (Iec48e) - ממקטע
1.7.0-rc02
: תוקן באג שגרם לקריסה אם רכיב משותף שלא ניתן לחיפוש התווסף לעסקאות שבהן היה ניתן לחפש את כל ההעברות. עכשיו העסקה תיחשב כראוי ולא ניתנת לחיפוש. (I18ccd)
גרסה 1.8.0-alpha01
3 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha01
משוחרר. גרסה 1.8.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
- הגרסה החדשה,
AndroidFragment
,Composable
, מאפשרת להוסיף מקטעים להיררכיה של הכתיבה דרך שם המחלקה של המקטעים. הוא מטפל באופן אוטומטי בשמירה ובשחזור של מצב המקטע. אפשר להשתמש בו כתחליף ישיר ל-AndroidViewBindingComposable
.(b/312895363, Icf841)
שינויים במסמכים
- עודכנו במסמכי התיעוד של ממשקי ה-API של
OnBackStackChangedListener
כדי לציין מתי מתבצעת קריאה לממשקי ה-API ואיך להשתמש בהם. (I0bfd9)
עדכון בנושא תלות
- המקטע תלוי עכשיו במנהל ההתקנה של הפרופיל 1.3.1.
גרסה 1.7
גרסה 1.7.1
14 במאי 2024
androidx.fragment:fragment-*:1.7.1
משוחרר. גרסה 1.7.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- התכונה 'חיזוי חזרה' תפעל עכשיו רק בטרנזקציות שבהן בכל המקטעים יש אנימטור או מעבר Androidx שניתן לבצע בו חיפוש. פתרון הבעיה הזו גורם לביטול עסקה שניתן לחפש באופן חלקי, שיגרום למסך ריק. (I43037, b/339169168)
גרסה 1.7.0
1 במאי 2024
androidx.fragment:fragment-*:1.7.0
משוחרר. גרסה 1.7.0 כוללת את ההתחייבויות האלה.
תמיכה בתנועות חזרה חזויות
- מקטעים מספקים עכשיו תמיכה באפליקציה חזויה כאשר משתמשים ב-
Animator
או כשמשתמשים ב-AndroidX Transition 1.5.0. כך המשתמשים יכולים להשתמש בתנועת החזרה כדי לראות את המקטע הקודם על ידי חיפוש האנימציה/המעבר לפני שהם מחליטים לבצע את העסקה באמצעות השלמת התנועה או ביטול.
מערכת מעבר | משאב XML | תמיכה ביכולת חיזוי (prediction) |
---|---|---|
Animation |
R.anim |
לא |
Animator |
R.animator |
כן |
מסגרת Transition |
R.transition |
לא |
AndroidX Transition עם מעבר מגרסה 1.4.1 או פחות |
R.transition |
לא |
AndroidX Transition עם מעבר לגרסה 1.5.0 |
R.transition |
כן |
אם נתקלתם בבעיות בתמיכה החזויה ב-Fragments לאחר שהבעתם הסכמה לתנועת החיזוי החזרה, עליכם לדווח על בעיה ב-Fragment יחד עם פרויקט לדוגמה שמשחזר את הבעיה. ניתן להשבית את אפשרות החיזוי החוזר באמצעות שימוש במשתנה FragmentManager.enabledPredictiveBack(false)
בonCreate()
של הפעילות.
עכשיו יש ב-FragmentManager.OnBackStackChangedListener()
את המדדים onBackStackChangeProgressed()
ו-onBackStackChangeCancelled()
לקבלת התקדמות חזויה ביומן ואירועים שבוטלו, בהתאמה.
Artifact Compose Compose
נוצר ארטיפקט חדש של fragment-compose
שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה מבוססת Fragment לארכיטקטורה מבוססת-פיתוח באופן מלא.
התכונה הראשונה שזמינה בארטיפקט החדש הזה היא שיטת תוסף מסוג content
ב-Fragment
. מטרת התכונה הזו היא להקל על השימוש ב'כתיבה' לממשק המשתמש של Fragment מסוים, על ידי יצירת ComposeView
עבורכם והגדרת ViewCompositionStrategy
נכון.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
גרסה 1.7.0-rc02
17 באפריל 2024
androidx.fragment:fragment-*:1.7.0-rc02
משוחרר. גרסה 1.7.0-rc02 מכילה את ההתחייבויות האלה.
תיקוני באגים
- נוספו יומנים שמציינים למה לא ניתן להפעיל הגדרה של
sharedElement
ללא מעברים אחרים. (Iec48e) - תוקן באג שגרם לקריסה אם נוסף רכיב משותף שלא ניתן לחיפוש יתווסף לעסקאות שבהן היה אפשר לחפש את כל ההעברות. עכשיו העסקה תיחשב כראוי ולא ניתנת לחיפוש. (I18ccd)
גרסה 1.7.0-rc01
3 באפריל 2024
androidx.fragment:fragment-*:1.7.0-rc01
משוחרר. גרסה 1.7.0-rc01 מכילה את ההתחייבויות האלה.
עדכון בנושא תלות
- המקטע תלוי עכשיו במנהל ההתקנה של הפרופיל 1.3.1.
גרסה 1.7.0-beta01
20 במרץ 2024
androidx.fragment:fragment-*:1.7.0-beta01
משוחרר. גרסה 1.7.0-beta01 כוללת את ההתחייבויות האלה.
שינויים ב-API
- עכשיו
FragmentHostCallback
ב-Kotlin כך שיכולת ה-null של הסוג הגנרי של ה-host (מארח) תואמת ליכולת ה-null של סוג המוחזר מ-onGetHost()
. (I40af5)
תיקוני באגים
- תוקנה בעיה שבה כשמבצעים תנועת חיזוי חזרה במקטע שאינו בקונטיינר, המקטע הזה אף פעם לא ייהרס. ה-Fragment יועבר מיד למצב הסופי. (Ida0d9)
- תוקנה בעיה ב-Fragments שגרמה להפסקה של מעברים נכנסים באמצעות תנועת חזרה חזויה, שפוגעת בתצוגה הנכנסת ומשאירה מסך ריק. (Id3f22, b/319531491)
גרסה 1.7.0-alpha10
7 בפברואר 2024
androidx.fragment:fragment-*:1.7.0-alpha10
משוחרר. גרסה 1.7.0-alpha10 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה הבעיה המוכרת בגרסת Fragment הקודמת שבה נעשה שימוש בתמיכה החזויה של Fragment עבור
Animator
או מעבר ל-AndroidX, ולכן Fragments גרם להצגה שלNullPointerException
מ-handleOnBackProgressed
אם לא נוסףFragmentManager.OnBackStackChangedListener
כלשהו דרךaddOnBackStackChangedListener
. I7c835
גרסה 1.7.0-alpha09
24 בינואר 2024
androidx.fragment:fragment-*:1.7.0-alpha09
משוחרר. גרסה 1.7.0-alpha09 מכילה את התחייבויות אלה.
Artifact Compose Compose
נוצר ארטיפקט חדש של fragment-compose
שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה מבוססת Fragment לארכיטקטורה מבוססת-פיתוח באופן מלא.
התכונה הראשונה שזמינה בארטיפקט החדש הזה היא שיטת תוסף מסוג content
ב-Fragment
. מטרת התכונה הזו היא להקל על השימוש ב'כתיבה' לממשק המשתמש של Fragment מסוים, על ידי יצירת ComposeView
עבורכם והגדרת ViewCompositionStrategy
נכון. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
תכונות חדשות
- עכשיו יש ב-
FragmentManager.OnBackStackChangedListener()
את המדדיםonBackStackChangeProgressed()
ו-onBackStackChangeCancelled()
לקבלת התקדמות חזויה ביומן ואירועים שבוטלו, בהתאמה. (214b87)
בעיה ידועה
- כשמשתמשים בתמיכה החזויה של Fragment עבור 'מעבר ל-
Animator
' או 'AndroidX', המערכת תשלוף FragmentsNullPointerException
מ-handleOnBackProgressed
אם לא נוסףFragmentManager.OnBackStackChangedListener
אף פעם דרךaddOnBackStackChangedListener
. הוספה ידנית של האזנה תפתור את הקריסה. יהיה תיקון זמין לכך במהדורה הבאה של Fragments.
גרסה 1.7.0-alpha08
10 בינואר 2024
androidx.fragment:fragment-*:1.7.0-alpha08
משוחרר. גרסה 1.7.0-alpha08 מכילה את התחייבויות אלה.
פינוי מקום
- הוסרה פתרון עקיף לספריית המעבר, שתוקנה בהעברה
1.5.0-alpha06
. (I04356)
גרסה 1.7.0-alpha07
29 בנובמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha07
משוחרר. גרסה 1.7.0-alpha07 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנו בעיות ב-
NullPointerException
שנגרמו כתוצאה מהגדרת מעבר של רכיב משותף ונכשלה ההגדרה של Enter/exitמעבר. (I8472b) - ממקטע
1.6.2
: כאשר המקטע שלFragmentContainerView
מנופח, המצבים שלו כגוןFragmentManager
, מארח ומזהה נגישים עכשיו בקריאה החוזרת שלonInflate
. (I1e44c, b/307427423) - ממקטע
1.6.2
: בעת שימוש ב-clearBackStack
כדי להסיר קבוצת מקטעים,ViewModel
של מקטע מקונן יימחק עכשיו כאשר ה-ViewModels
של שבר ההורה יוסר. (I6d83c, b/296173018)
גרסה 1.7.0-alpha06
4 באוקטובר 2023
androidx.fragment:fragment-*:1.7.0-alpha06
משוחרר. גרסה 1.7.0-alpha06 מכילה את התחייבויות אלה.
עדכון לגבי תלות
- מקטעים עודכנו בהתאם ל-API החדש של
animateToStart
שנוסף במעבר1.5.0-alpha04
.
גרסה 1.7.0-alpha05
20 בספטמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha05
משוחרר. גרסה 1.7.0-alpha05 מכילה את התחייבויות אלה.
תכונות חדשות
- התכונה Fragments מספקת עכשיו תמיכה לחיזוי מחדש כשמשתמשים במעברים של Androidx. כך תוכלו להשתמש בתנועת החזרה כדי לעבור לקטע הקודם עם המעבר המותאם אישית של Androidx לפני שמחליטים אם לבצע או לבטל את העסקה באמצעות התנועה שהושלמה. כדי להפעיל את התכונה הזו, צריך להשתמש בגרסת המעבר
1.5.0-alpha03
. (Ib49b4, b/285175724)
בעיות מוכרות
- יש כרגע בעיה: אחרי ביטול של תנועת החזרה עם מעבר פעם אחת, בפעם הבאה שתתחילו את תנועת החזרה, המעבר לא יבצע את המעבר וכתוצאה מכך יוצג מסך ריק. הסיבה לכך עשויה להיות בעיה בספריית המעבר. (b/300157785). אם נתקלתם בבעיה הזו, עליכם לדווח על בעיה ב-Fragment באמצעות פרויקט לדוגמה שמשחזר את הבעיה. ניתן להשבית את אפשרות החיזוי החוזר באמצעות שימוש במשתנה
FragmentManager.enabledPredictiveBack(false)
בonCreate()
של הפעילות.
גרסה 1.7.0-alpha04
6 בספטמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha04
משוחרר. גרסה 1.7.0-alpha04 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה בעיה בביטול תנועת חיזוי אחורה שבה מקטעים לא הגיעו למצב הנכון של מחזור החיים. (I7cffe, b/297379023)
- תוקנו רגרסיות שבהן אנימציות הורשו לפעול עם מעברים. (I59f36)
- תוקנה בעיה בשימוש ב'הקודם חזוי' עם מקטעים שבהם ניסיון לחזור פעמיים ברצף מהיר במקטע השני עד האחרון בערימה האחורית יגרום לקריסה. (Ifa1a4)
גרסה 1.7.0-alpha03
23 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha03
משוחרר. גרסה 1.7.0-alpha03 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה בעיה במקטעים בעת שימוש בחזרה חזויה שגרמה לדילוג על המקטע הראשון במקבץ 'הקודם' של מנהל המקטעים ולסיום הפעילות בעת שימוש חזרה במערכת באמצעות ניווט באמצעות 3 לחצנים או באמצעות תנועת החזרה החזויה. (I0664b, b/295231788)
גרסה 1.7.0-alpha02
9 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha02
משוחרר. גרסה 1.7.0-alpha02 מכילה את התחייבויות אלה.
תיקוני באגים
- כשמשתמשים ב-Fragments עם תנועות חזרה חזויות מ-API 34, אם משתמשים במערכת מעבר שלא תומכת בדילוג (
Animations
,Transitions
) או שלא תומכת כלל במעברים, Fragments ימתין עכשיו עד שהתנועה תשלים את הפעולה הקודמת. (I8100c)
גרסה 1.7.0-alpha01
7 ביוני 2023
androidx.fragment:fragment-*:1.7.0-alpha01
משוחרר. הגרסה הזו פותחה בהסתעפות פנימית.
תכונות חדשות
- עכשיו התכונה Fragments מספקת תמיכה באפליקציה חזויה כשמשתמשים ב-
Animator
. כך תוכלו להשתמש בתנועת החזרה כדי לראות את הקטע הקודם עם האנימציה המותאמת אישית לפני שמחליטים אם לבצע את העסקה באמצעות התנועה שהושלמה או לבטל. אפשר גם להשבית את ההתנהגות החדשה הזו על ידי שימוש ברכיבenablePredictiveBack()
הניסיוני והעברה ב-false
.
גרסה 1.6
גרסה 1.6.2
1 בנובמבר 2023
androidx.fragment:fragment-*:1.6.2
משוחרר. גרסה 1.6.2 כוללת את ההתחייבויות האלה.
תיקוני באגים
- כשהמקטע
FragmentContainerView
גדל, המצבים שלו, כגוןFragmentManager
, מארח ומזהה, נגישים עכשיו בקריאה החוזרת שלonInflate
. (I1e44c, b/307427423) - בעת שימוש ב-
clearBackStack
כדי להסיר קבוצת מקטעים, כל מקטע מקונן ב-ViewModel
יימחק כעת לאחר הסרת ה-ViewModels
של שבר ההורה. (I6d83c, b/296173018)
גרסה 1.6.1
26 ביולי 2023
androidx.fragment:fragment-*:1.6.1
משוחרר. גרסה 1.6.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה המצב השמור שמאוחסן כשהפעילות הופסקה אבל לא מושמדת נשמר במטמון באופן שגוי גם אחרי שמופע המקטע הוחזר למצב
RESUMED
. כתוצאה מכך, ייעשה שימוש חוזר במצב של המקטע השמור אם מופע המקטע היה במקבץ האחורי כשנעשה שימוש ב-API של המחסניות החוזרות המרובות כדי לשמור ולשחזר את המקטע הזה. (I71288, b/246289075)
עדכון לגבי תלות
- המקטע תלוי עכשיו בפעילות 1.7.2. תיקון בעיה שבה משתמשי Kotlin לא יכולים להרחיב את
ComponentDialog
ללא תלות מפורשת בפעילות. (b/287509323)
גרסה 1.6.0
7 ביוני 2023
androidx.fragment:fragment-*:1.6.0
משוחרר. גרסה 1.6.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 1.5.0
- המצב השמור של וריאנטים
Fragment
פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקותParcelable
מותאמות אישית) למצב שסופק על ידי המפתח, שמאוחסן תמיד ב-Bundle
שמאפשר לקבוע בדיוק את המקור של מצב המקטע. - הממשק
FragmentManager.OnBackStackChangedListener
הורחב עם שתי קריאות חוזרות (callback) נוספות שלonBackStackChangeStarted
ו-onBackStackChangeCommitted
, שנקראות בכלFragment
ממש לפני ההוספה או ההסרה של המקטעים הקודמים ממקבץ המקטעים ומיד אחרי ביצוע העסקה, בהתאמה. FragmentStrictMode
הוסיףWrongNestedHierarchyViolation
חדש שמזהה כשמקטע צאצא נמצא בתוך היררכיית התצוגה של ההורה, אבל לא נוסף לchildFragmentManager
של ההורה.- ל-APIs
Fragment
ו-FragmentManager
שלוקחים עכשיוIntent
אוIntentSender
יש עכשיו הערות מתאימות עם@NonNull
כדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API המתאימים של framework ב-Android שהשיטות האלה קריאות אליהם. - עכשיו יש ב-
DialogFragment
גישה ל-ComponentDialog
הבסיסי דרך ה-API שלrequireComponentDialog()
. - המקטע תלוי עכשיו במחזור החיים
2.6.1
. - המקטע תלוי עכשיו ב-SavedState
1.2.1
. - המקטע תלוי עכשיו ב-ProfileInstaller
1.3.0
. ארטיפקט
fragment-testing-manifest
מפריד בין רשומות המניפסט לשאר הרכיבים של בדיקת המקטעים. כלומר, אתם יכולים:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
כך מונעים התנגשויות בגלל סטייה בגרסה בין
fragment-testing
ל-androidx.test
גרסה 1.6.0-rc01
10 במאי 2023
androidx.fragment:fragment-*:1.6.0-rc01
משוחרר. גרסה 1.6.0-rc01 מכילה את שמירות האלה.
תיקוני באגים
- תוקנה הבעיה שגרמה לשליחת בקשות
ActivityResult
עם קוד בקשה שגוי כשנשלחו מספר בקשותstartActivityForResult
ברצף. (If0b9d, b/249519359) - תוקנה בעיה שגרמה לשליחת הקריאות החוזרות (callback) של
onBackStackChangeListener
בטרנזקציות שלא שינו בפועל את ה-backStack אם הן משולבות בטרנזקציות כן. (I0eb5c, b/279306628)
גרסה 1.6.0-beta01
19 באפריל 2023
androidx.fragment:fragment-*:1.6.0-beta01
משוחרר. גרסה 1.6.0-beta01 מכילה את התחייבויות אלה.
תיקוני באגים
- שימוש ב-
postponeEnterTransition
עם זמן קצוב לתפוגה ולאחר מכן החלפת המקטע שנדחה לא תוביל יותר להדלפת המקטע שנדחה. (I2ec7d, b/276375110) - הקריאות החוזרות (callback) החדשות של
onBackStackChangeStarted
ו-onBackStackChangeCommitted
יישלחו עכשיו רק מקטע פעם אחת, גם אם מספר טרנזקציות מכילות את אותו מקטע. (Ic6b69)
גרסה 1.6.0-alpha09
5 באפריל 2023
androidx.fragment:fragment-*:1.6.0-alpha09
משוחרר. גרסה 1.6.0-alpha09 מכילה את התחייבויות אלה.
שינויים ב-API
- עכשיו יש ב-
DialogFragment
גישה ל-ComponentDialog
הבסיסי דרך ה-API שלrequireComponentDialog()
. (I022e3, b/234274777) - מממשקי ה-API של הקטע
commitNow()
,executePendingTransactions()
ו-popBackStackImmediate()
נוספו הערות עם@MainThread
, כלומר שעכשיו כולם יגרמו לשגיאות build כשלא בוצעה קריאה עבורן מה-thread הראשי במקום להמתין לכשל בזמן הריצה. (Ic9665, b/236538905)
תיקוני באגים
- תוקן באג ב-
FragmentManager
שבגללו שמירה ושחזור באותה מסגרת עלולים לגרום לקריסה. (Ib36af, b/246519668) - קריאות חוזרות (callback) של
OnBackStackChangedListener
onBackStackChangeStarted
ו-onBackStackChangeCommitted
יבוצעו עכשיו רק לאחר שינוי המקבץFragmentManager
. (I66055, b/274788957)
גרסה 1.6.0-alpha08
22 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את התחייבויות אלה.
שינוי בהתנהגות
- התזמון של הקריאה החוזרת של
OnBackStackChangedListener.onBackStackChangeCommited
הותאם לביצוע לפני הרצת פעולות המקטע. פעולה זו מבטיחה שהקריאה החוזרת אף פעם לא תועבר מקטע שנותק. (I66a76, b/273568280)
תיקוני באגים
- ממקטע
1.5.6
: תוקנה בעיה שבה קריאה ל-clearFragmentResultListener
בתוךsetFragmentResultListener
לא הייתה פעילה אםLifecycle
כבר היהSTARTED
וכבר הייתה תוצאה זמינה. (If7458)
עדכונים בנושא תלות
- המקטע תלוי עכשיו במחזור החיים
2.6.1
. (586fe7) - המקטע תלוי עכשיו ב-SavedState
1.2.1
. (078e4e) - המקטע תלוי עכשיו ב-ProfileInstaller
1.3.0
. (3fc05b)
גרסה 1.6.0-alpha07
8 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha07
משוחרר. גרסה 1.6.0-alpha07 מכילה את התחייבויות אלה.
תיקוני באגים
- ממקטע
1.5.6
: תוקנה בעיה שבה הסרה של מקטע כלשהו, בין אם נוספו לו פריטים בתפריט ובין אם לא, תבטל את תוקף תפריט הפעילות. (50f098, b/244336571)
גרסה 1.6.0-alpha06
22 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha06
משוחרר. גרסה 1.6.0-alpha06 מכילה את התחייבויות אלה.
שינוי בהתנהגות
- הקריאה החוזרת (callback) החדשה של
onBackStackChangedStarted
ב-onBackStackChangedListener
שלFragmentManager
תתבצע עכשיו לפני שמקטעים יתחילו לעבור למצבי היעד שלהם. (I34726)
גרסה 1.6.0-alpha05
8 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha05
משוחרר. גרסה 1.6.0-alpha05 מכילה את התחייבויות אלה.
תכונות חדשות
- בממשק של
FragmentManager.OnBackStackChagnedListener
יש עכשיו שתי קריאות חוזרות (callback) נוספות,onBackStackChangeStarted
ו-onBackStackChangeCommitted
, שמאפשרות לקבל מידע נוסף ולשלוט במקרים שבהם מתרחשים שינויים ב-backStack ב-FragmentManager
. (Ib7ce5, b/238686802)
שינויים ב-API
- ל-APIs
Fragment
ו-FragmentManager
שלוקחים עכשיוIntent
אוIntentSender
יש עכשיו הערות מתאימות עם@NonNull
כדי למנוע ערך ריק כי ערך null תמיד יקרוס באופן מיידי את ממשקי ה-API המתאימים של framework של Android שהשיטות האלה קריאות אליהם. (I06fd4)
גרסה 1.6.0-alpha04
7 בדצמבר 2022
androidx.fragment:fragment-*:1.6.0-alpha04
משוחרר. גרסה 1.6.0-alpha04 מכילה את התחייבויות אלה.
תכונות חדשות
FragmentStrictMode
הוסיףWrongNestedHierarchyViolation
חדש שמזהה כשמקטע צאצא נמצא בתוך היררכיית התצוגה של ההורה, אבל לא נוסף לchildFragmentManager
של ההורה. (I72521, b/249299268)
שינויים בהתנהגות
- מקטעים משחזרים עכשיו את מצב
SavedStateRegistry
שלהם לפניonAttach()
, כדי לוודא שהוא זמין בכל השיטות של מחזור החיים כלפי מעלה. (I1e2b1)
שינויים ב-API
- ארטיפקט
fragment-testing-manifest
מפריד בין רשומות המניפסט לשאר הרכיבים של בדיקת המקטעים. כלומר, אתם יכולים:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
כך נמנעים התנגשויות בגלל סטיות בגרסה בין fragment-testing
ל-androidx.test
.(I8e534, b/128612536)
תיקוני באגים
- ממקטע
1.5.5
: מקטעים לא ישמרו יותר באופן שגוי את המצבViewModel
כחלק מהמצב השמור במרשם התצוגות. (I10d2b, b/253546214)
גרסה 1.6.0-alpha03
5 באוקטובר 2022
androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
ו-androidx.fragment:fragment-testing:1.6.0-alpha03
שוחררו. גרסה 1.6.0-alpha03 מכילה את התחייבויות אלה.
שינויים ב-API
- כיתות שנמצאות בהמשך
DialogFragment
יידרשו עכשיו להפעיל Supers בביטולים שלonDismiss()
. (I14798, b/238928865)
תיקוני באגים
- רגרסיות מתוקנות שנגרמו כתוצאה מהשילוב של ממשקי הקריאה החוזרים החדשים של הספק (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) כדי להבטיח שמקטעים יקבלו תמיד את הקריאות החוזרות הנכונות. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
גרסה 1.6.0-alpha02
24 באוגוסט 2022
androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
ו-androidx.fragment:fragment-testing:1.6.0-alpha02
שוחררו. גרסה 1.6.0-alpha02 מכילה את התחייבויות אלה.
תיקוני באגים
- ממקטע
1.5.2
: תוקנה בעיה שבה ביצוע עסקה שלpopBackStack()
וטרנזקציהreplace()
בו-זמנית עלול לגרום להרצת מקטעים מחוץ לאפליקציה להריץAnimation
/Animator
שגוי. (Ib1c07, b/214835303)
גרסה 1.6.0-alpha01
27 ביולי 2022
androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
ו-androidx.fragment:fragment-testing:1.6.0-alpha01
שוחררו. גרסה 1.6.0-alpha01 מכילה את התחייבויות אלה.
שינויים בהתנהגות
- המצב השמור של וריאנטים
Fragment
פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקותParcelable
מותאמות אישית) למצב שסופק על ידי המפתח, שמאוחסן תמיד ב-Bundle
שמאפשר לקבוע בדיוק את המקור של מצב המקטע. (b/207158202)
תיקוני באגים
- ממקטע
1.5.1
: תיקון רגרסיה ב-DialogFragmentCallbacksDetector
שבה שימוש בגרסת איתור השגיאות בקוד בחבילה עם AGP 7.4 יגרום לקריסה של איתור שגיאות בקוד. (b/237567009)
עדכון בנושא תלות
- מ-Fragment
1.5.1
: ספריית ה-Fragment תלויה עכשיו במחזור החיים2.5.1
. (Id204c) - ממקטע
1.5.1
: ספריית המקטעים תלויה עכשיו בפעילות1.5.1
. (I10f07)
גירסה 1.5
גרסה 1.5.7
19 באפריל 2023
androidx.fragment:fragment:1.5.7
, androidx.fragment:fragment-ktx:1.5.7
ו-androidx.fragment:fragment-testing:1.5.7
שוחררו. גרסה 1.5.7 כוללת את ההתחייבויות האלה.
תיקוני באגים
- שימוש ב-
postponeEnterTransition
עם זמן קצוב לתפוגה ולאחר מכן החלפת המקטע שנדחה לא תוביל יותר להדלפת המקטע שנדחה. (I2ec7d, b/276375110)
גרסה 1.5.6
22 במרץ 2023
androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
ו-androidx.fragment:fragment-testing:1.5.6
שוחררו. גרסה 1.5.6 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה הסרה של מקטע כלשהו, בין אם נוספו לו פריטים בתפריט ובין אם לא, תבטל את תוקף התפריט של הפעילות. (50f098, b/244336571)
- תוקנה בעיה שגרמה לכך שהתקשרות אל
clearFragmentResultListener
בתוךsetFragmentResultListener
לא הייתה פעילה אם הערך שלLifecycle
כבר היהSTARTED
וכבר הייתה תוצאה זמינה. (If7458)
גרסה 1.5.5
7 בדצמבר 2022
androidx.fragment:fragment:1.5.5
, androidx.fragment:fragment-ktx:1.5.5
ו-androidx.fragment:fragment-testing:1.5.5
שוחררו. גרסה 1.5.5 כוללת את ההתחייבויות האלה.
תיקוני באגים
- מקטעים לא ישמרו יותר באופן שגוי את המצב
ViewModel
כחלק מהמצב השמור במרשם התצוגות. (I10d2b, b/253546214)
גרסה 1.5.4
24 באוקטובר 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
ו-androidx.fragment:fragment-testing:1.5.4
שוחררו. גרסה 1.5.4 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה שגיאה שבה שימוש ב-
FragmentController
בהתאמה אישית עם מארח שלא מיישם ממשק קריאה חוזרת של ספק (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) והפעלה של פונקציית השליחה שהוצאה משימוש נכשלה לשליחה למקטעים צאצאים. (I9b380)
גרסה 1.5.3
21 בספטמבר 2022
androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
ו-androidx.fragment:fragment-testing:1.5.3
שוחררו. גרסה 1.5.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה שגיאה שגרמה למקטעים במקבץ האחורי לקבל קריאות חוזרות (callback) של
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
ו-onConfigurationChanged()
. (I34581, I8dfe6, b/242570955) - מקטעים של צאצא שמתחתיה לא יקבלו יותר קריאות חוזרות (callback) מרובות של
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
אוonConfigurationChanged()
. (I690b3, Id0096, If9d6b, I2cba2)
גרסה 1.5.2
10 באוגוסט 2022
androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
ו-androidx.fragment:fragment-testing:1.5.2
שוחררו. גרסה 1.5.2 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה ביצוע עסקה של
popBackStack()
וטרנזקציהreplace()
בו-זמנית עלול לגרום להרצת מקטעים ביציאה באמצעותAnimation
/Animator
שגוי. (Ib1c07, b/214835303)
גירסה 1.5.1
27 ביולי 2022
androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
ו-androidx.fragment:fragment-testing:1.5.1
שוחררו. גרסה 1.5.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תיקון רגרסיה ב-
DialogFragmentCallbacksDetector
שבה שימוש בגרסת איתור השגיאות בקוד שכלול בחבילה עם AGP 7.4 יגרום לקריסת איתור שגיאות בקוד. (b/237567009)
עדכון בנושא תלות
- ספריית המקטעים תלויה עכשיו במחזור החיים
2.5.1
. (Id204c) - ספריית המקטעים תלויה עכשיו בפעילות
1.5.1
. (I10f07)
גרסה 1.5.0
29 ביוני 2022
androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
ו-androidx.fragment:fragment-testing:1.5.0
שוחררו. גרסה 1.5.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 1.4.0
- שילוב של CreationExtras –
Fragment
יכול עכשיו לספקViewModelProvider.Factory
ללא שמירת מצב דרךCreationExtras
של מחזור חיים2.5.0
. - שילוב של תיבת דו-שיח של רכיב – ב-
DialogFragment
נעשה עכשיו שימוש ב-ComponentDialog
דרך פעילות1.5.0
כתיבת הדו-שיח שמוגדרת כברירת מחדל שמוחזרת על ידיonCreateDialog()
. - Saved Instance State Refactoring – מקטעים התחילו לשנות את האופן שבו הם שומרים את מצב המכונה שלהם. המטרה היא לזהות בבירור איזה מצב נשמר בקטע ומה המקור של המדינה. השינויים הנוכחיים כוללים:
- עכשיו מצב המכונה
FragmentManager
נשמר ב-Bundle
במקום ישירות ב-Parcelable
בהתאמה אישית. - תוצאות שהוגדרו דרך
Fragment Result APIs
שעדיין לא נשלחו נשמרות עכשיו בנפרד מהמצב הפנימי שלFragmentManager
. - המצב שמשויך לכל מקטע נשמר עכשיו בנפרד מהמצב הפנימי של
FragmentManager
. כך אפשר להתאים בין כמות המצבים השמורים שמשויכים למקטע יחיד לבין המזהים הייחודיים שמופיעים ביומן ניפוי הבאגים שלFragment
.
- עכשיו מצב המכונה
שינויים אחרים
- ב-
FragmentStrictMode
יש עכשיו אפשרות למקטעים פרטיים של צד שלישי לעקוף עונשים ספציפיים על הפרות באמצעות שימוש ב-allowViolation()
עם שם המחלקה. - הוצאנו משימוש את ממשקי ה-API של Fragment שמספקים תפריט ל-
ActionBar
של הפעילות. ממשקי ה-APIMenuHost
ו-MenuProvider
שנוספו בפעילות1.4.0
מספקים פלטפורמת API מקבילה שניתן לבדוק עם מקטעים, תוך התייחסות למחזור החיים.
גרסה 1.5.0-rc01
11 במאי 2022
androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
ו-androidx.fragment:fragment-testing:1.5.0-rc01
שוחררו. גרסה 1.5.0-rc01 מכילה את ההתחייבויות האלה.
ארגון מחדש של מצב המכונות השמורות
- המצב המשויך לכל מקטע בנפרד נשמר עכשיו בנפרד מהמצב הפנימי של
FragmentManager
, וכך מאפשר קורלציה בין כמות המצב השמור המשויך למקטע יחיד לבין המזהים הייחודיים שמופיעים ברישום ביומן ניפוי הבאגים של מקטעים. (a153e0, b/207158202)
גרסה 1.5.0-beta01
20 באפריל 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
ו-androidx.fragment:fragment-testing:1.5.0-beta01
שוחררו. גרסה 1.5.0-beta01 מכילה את התחייבויות אלה.
שינויים ב-API
- נוספה על ידי
DialogFragment
שיטה חדשה שלdismissNow
שמשתמשת ב-commitNow
להתאמה לפונקציהshowNow
. חשוב לשים לב שהפעולה הזו לא תגרום לסגירה שלDialog
באופן מיידי, אלא רק תעדכן את המצב שלFragmentManager
באופן סינכרוני. (I15c36, b/72644830)
ארגון מחדש של מצב המכונות השמורות
- עכשיו מצב המכונה
FragmentManager
נשמר ב-Bundle
במקום ישירות ב-Parcelable
בהתאמה אישית. זהו השלב הראשון ביצירת שקיפות נוספת לגבי מה שנשמר בפועל על ידי Fragments. (I93807, b/207158202) - תוצאות שהוגדרו באמצעות Fragment result APIs שעדיין לא נשלחו, נשמרות עכשיו בנפרד מהמצב הפנימי של
FragmentManager
. כך תהיה יותר שקיפות לגבי התוצאות שנשמרות כחלק ממצב המכונה השמורה. (I6ea12, b/207158202)
גרסה 1.5.0-alpha05
6 באפריל 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
ו-androidx.fragment:fragment-testing:1.5.0-alpha05
שוחררו. גרסה 1.5.0-alpha05 מכילה את התחייבויות אלה.
שינויים ב-API
- הוצאנו משימוש את
setHasOptionsMenu()
שלFragment
. כדי לנהל תפריטים ואת האפשרויות בתפריט, צריך להשתמש במקומו בממשקי ה-API של התפריט החדש, בהתאם לנתוני הגרסה של המקטע1.5.0-alpha04
. (I7b4b4, b/226438239)
גרסה 1.5.0-alpha04
23 במרץ, 2022
androidx.fragment:fragment:1.5.0-alpha04
, androidx.fragment:fragment-ktx:1.5.0-alpha04
ו-androidx.fragment:fragment-testing:1.5.0-alpha04
שוחררו. גרסה 1.5.0-alpha04 מכילה את התחייבויות אלה.
שינויים ב-API
- ממשקי ה-API של Fragment שמספקים תפריט ל-
ActionBar
של הפעילות הוצאו משימוש, כי הם מקרבים בצורה הדוקה את המקטע לפעילות שלכם, ואי אפשר לבדוק אותם בנפרד. ממשקי ה-APIMenuHost
ו-MenuProvider
שנוספו בפעילות1.4.0-alpha01
מספקים פלטפורמת API מקבילה שניתן לבדוק עם מקטעים, תוך התייחסות למחזור החיים. (I50a59, I20758)
תיקוני באגים
SavedStateViewFactory
תומך עכשיו בשימוש ב-CreationExtras
גם כאשר הוא אותחל עםSavedStateRegistryOwner
. אם תספקו תוספות, המערכת תתעלם מהארגומנטים המאתחלים. (I6c43b, b/224844583)
גרסה 1.5.0-alpha03
23 בפברואר 2022
androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
ו-androidx.fragment:fragment-testing:1.5.0-alpha03
שוחררו. גרסה 1.5.0-alpha03 מכילה את התחייבויות אלה.
שינויים ב-API
- עכשיו אפשר להעביר את
CreationExtras
אלby viewModels()
ו פונקציותby activityViewModels()
. (Ibefe7, b/217601110)
שינויים בהתנהגות
DialogFragment
משתמש עכשיו ב-ComponentDialog
כברירת המחדל תיבת הדו-שיח הוחזרה על ידיonCreateDialog()
. (If3784, b/217618170)
גרסה 1.5.0-alpha02
9 בפברואר 2022
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
ו-androidx.fragment:fragment-testing:1.5.0-alpha02
שוחררו. גרסה 1.5.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-
FragmentStrictMode
יש עכשיו אפשרות למקטעים פרטיים של צד שלישי לעקוף עונשים ספציפיים על הפרות באמצעות שימוש ב-allowViolation()
עם שם המחלקה. (I8f678)
גרסה 1.5.0-alpha01
26 בינואר, 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
ו-androidx.fragment:fragment-testing:1.5.0-alpha01
שוחררו. גרסה 1.5.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
Fragment
משתלב עכשיו עם ViewModel CreationExtras, שנוצר כחלק מ-Lifecycle2.5.0-alpha01
. (I3060b, b/207012585)
תיקוני באגים
- ממקטע
1.4.1
:FragmentContainerView
כבר לא גורם למצב לא חוקי חריג לכלל הזה, כאשר למזהי תצוגות מפורטות שנוצרו מ-XML יש ערכים שליליים. (Ic185b, b/213086140) - ממקטע
1.4.1
: כשמשתמשים ב-lambda בהתאמה אישית עם הפונקציהby viewModels()
, אם לא סופקוViewModelProvider.Factory
בהתאמה אישית במקוםViewModelProvider.Factory
בהתאמה אישית, המערכת תשתמש עכשיו ב-defaultViewModelProviderFactory
.ownerProducer
(I56170, b/214106513) - תוקנה קריסה במהלך גישה אל
ViewModel
בפעם הראשונה מקריאה חוזרת (callback) שלregisterForActivityResult()
ב-Fragment
. (Iea2b3)
גרסה 1.4
גרסה 1.4.1
26 בינואר, 2022
androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
ו-androidx.fragment:fragment-testing:1.4.1
שוחררו. גרסה 1.4.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
FragmentContainerView
כבר לא גורם למצב לא חוקי חריג לכלל הזה, כאשר למזהי תצוגות מפורטות שנוצרו מ-XML יש ערכים שליליים. (Ic185b, b/213086140)- כשמשתמשים ב-lambda בהתאמה אישית עם
ownerProducer
עם הפונקציה העצמיתby viewModels()
, המערכת תשתמש עכשיו ב-defaultViewModelProviderFactory
של הבעלים הזה אם הגדרה מותאמת אישית לא צויןViewModelProvider.Factory
במקום להשתמש תמיד במקטע במפעל. (I56170, b/214106513)
גרסה 1.4.0
17 בנובמבר 2021
androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
ו-androidx.fragment:fragment-testing:1.4.0
שוחררו. גרסה 1.4.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 1.3.0
- ממשקי ה-API של
FragmentStrictMode
מספקים בדיקות זמן ריצה שמאפשרות לוודא שהאפליקציה או הספריות שתלויות בהן לא קריאות לממשקי API עם מקטעים שהוצאו משימוש. כשמזוהה הפרה, אתם יכולים להדפיס הודעה ביומן, להפעיל האזנה מותאמת אישית או לקרוס את האפליקציה. אפשר להגדיר אתFragmentStrictMode.Policy
שקובעת אילו בדיקות מופעלות ואילו 'עונשים' יופעלו בFragmentManager
באמצעות השיטהsetStrictModePolicy()
החדשה. המדיניות הזו חלה עלFragmentManager
ובאופן מעבר על מנהלי מקטעים צאצא שלא הגדירו מדיניות ייחודית משלהם. פרטים נוספים זמינים במאמר StrictMode למקטעים. FragmentContainerView
מספקת עכשיו שיטהgetFragment()
שמחזירה את המקטע האחרון שנוסף לקונטיינר. הפעולה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם מזהה ה-FragmentContainerView
, אבל מאפשרת לשרשר את הקריאה.val navController = binding.container.getFragment<NavHostFragment>().navController
ב-
FragmentScenario
מוטמע עכשיוCloseable
, והוא מאפשר להשתמש בו עם ה-methoduse
של Kotlin או try-with-resources.תאריך ההוספה
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את האנימציה הרגילה של העברת הפעילות, שנלקחה מהעיצוב במעבר מקטעים.ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean)
הוסר, ועכשיו מנהל המצב החדש הוא האפשרות היחידה שזמינה עכשיו.
ריבוי מקבצים
FragmentManager
שומר על מקבץ גיבויים שמורכב מעסקאות מקטעים שנעשה בהן שימוש ב-addToBackStack()
. כך אפשר לבטל את המחיקה של הטרנזקציות האלה ולחזור למצב הקודם באמצעות המנגנונים של שמירת מצב עם מקטעים כדי לאפשר למקטעים לשחזר את המצב שלהם כראוי.
הגרסה הזו מרחיבה את המנגנונים האלה ומספקת שלושה ממשקי API חדשים מסוג FragmentManager
: saveBackStack(String name)
, restoreBackStack(String name)
ו-clearBackStack(String name)
. ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל מקטע שנוסף בטרנזקציות האלה, וכדי לאפשר לכם לשחזר מאוחר יותר את הטרנזקציות האלה ואת המקטעים שלהן לשמור ללא שינוי. כך תוכלו 'להחליף' ביעילות בין כמה מקבצים קודמים על ידי שמירת המקבץ הקודם ושחזור של מקבץ גיבויים שנשמר.
saveBackStack()
פועלת באופן דומה ל-popBackStack()
בכך שהיא אסינכרונית ומובילה לכך שכל הטרנזקציות עם המקטעים בחזרה לשם הספציפי הזה מבוטלות ('poped') וכל מקטע נוסף להרוס ולהסיר מקטעים, אבל יש הבדל מהותי בכמה דרכים חשובות:
saveBackStack()
תמיד מעודד את קבלת האחר.- בניגוד ל-
popBackStack()
, פעולה זו תקפיץ את כל הטרנזקציות מהמקבץ האחורי אם השם שצוין לא נמצא במקבץ האחורי או אם צוין שם ריק,saveBackStack()
לא יבצע כלום אם לא ביצעת בעבר טרנזקציית מקטעים באמצעותaddToBackStack()
עם אותו שם בדיוק שהוא לא null. - המצב של כל המקטעים שנוספו מהעסקאות האלה נשמר. פירוש הדבר הוא שמצב התצוגה של כל מקטע מאוחסן, מתבצעת קריאה ל-
onSaveInstanceState()
של כל מקטע והמצב הזה ישוחזר, וכל מכונותViewModel
שמשויכות למקטעים האלה יישמרו (ו-onCleared()
לא נקרא עליהם).
עסקאות המקטעים שבהן ניתן להשתמש עם saveBackStack()
חייבות לעמוד בקריטריונים מסוימים:
- כל טרנזקציה של מקטעים חייבת להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שניתן יהיה לשחזר את הטרנזקציות כפעולה אטומית אחת. - קבוצת העסקאות שנשמרת חייבת להיות עצמאית (כלומר, אסור להפנות באופן מפורש למקטעים שמחוץ לקבוצת העסקאות הזו) כדי להבטיח שניתן יהיה לשחזר אותם בכל שלב מאוחר יותר, לא משנה אילו שינויים בוצעו במקבץ האחורי בזמן שביניהם.
- מקטעים שנשמרו לא יכולים להיות מקטעים שנשמרו או לשמור מקטע, בתוך קבוצת המקטעים המעבירים שלהם, כדי להבטיח ש-
FragmentManager
לא יחזיר הפניות למקטעים שנשמרו אחרי שמירת מקבץ מאחור.
בדומה ל-saveBackStack()
, restoreBackStack()
ו-clearBackStack()
, שישחזרו מקבץ גיבויים שנשמר בעבר או ינקו מקבץ גיבוי שנשמר בעבר, בהתאמה, לא תתבצע שום פעולה אם לא קראתם בעבר ל-saveBackStack()
באותו שם.
אפשר לקרוא מידע נוסף במאמר כמה מקבצים אחורה: סקירה מפורטת.
גרסה 1.4.0-rc01
3 בנובמבר 2021
androidx.fragment:fragment:1.4.0-rc01
הופץ ללא שינויים ממקטע 1.4.0-beta01. גרסה 1.4.0-rc01 מכילה את ההתחייבויות האלה.
גרסה 1.4.0-beta01
27 באוקטובר 2021
androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
ו-androidx.fragment:fragment-testing:1.4.0-beta01
שוחררו. גרסה 1.4.0-beta01 מכילה את התחייבויות אלה.
תיקוני באגים
- קטעי הורה יישלחו עכשיו אל
onHiddenChanged()
את כל ההיררכיה לפני שהם מפעילים קריאה חוזרת משלהם. (Iedc20, b/77504618) - המקלדת תיסגר עכשיו באופן אוטומטי כשיוצאים מ: מקטע עם מקלדת פתוחה למקטע עם תצוגת recycler. (I8b842, b/196852211)
- עכשיו משתמש
DialogFragment
setReorderingAllowed(true)
לכל העסקאות הוא נוצר כשמתקשרים אלshow()
,showNow()
, אוdismiss()
. (Ie2c14) - האזהרה הארוכה מאוד של איתור שגיאות בקוד של
DetachAndAttachFragmentInSameFragmentTransaction
קוצרה ל-DetachAndAttachSameFragment
. (e9eca3)
גרסה 1.4.0-alpha10
29 בספטמבר 2021
androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
ו-androidx.fragment:fragment-testing:1.4.0-alpha10
שוחררו. גרסה 1.4.0-alpha10 מכילה את התחייבויות אלה.
איתור שגיאות בקוד
- נוספה האזהרה על איתור שגיאות בקוד של
DetachAndAttachFragmentInSameFragmentTransaction
עקב זיהוי שיחות אלdetach()
וגםattach()
באותוFragment
באותוFragmentTransaction
. מאחר שהפעולות המשלימות האלה מבטלות זו את זו כשהן מבוצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי לבצע פעולה בפועל. (aosp/1832956, b/200867930) - נוספה שגיאת השגיאות בקוד
FragmentAddMenuProvider
עבור תיקון השימושים במחזור החיים של Fragment למחזור החיים של תצוגת מקטעים כשמשתמשים ב-API שלaddMenuProvider
שלMenuHost
. (aosp/1830457, b/200326272)
עדכונים במסמכים
- הודעת ההוצאה משימוש של ממשקי API שטופלו עכשיו על ידי Activity result APIs (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
ו-onRequestPermissionsResult
), הורחבה עם פרטים נוספים. (cce80f) - הודעת ההוצאה משימוש של
onActivityCreated()
ב-Fragment
וב-DialogFragment
הורחבה עם פרטים נוספים. (224db4)
גרסה 1.4.0-alpha09
15 בספטמבר 2021
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
ו-androidx.fragment:fragment-testing:1.4.0-alpha09
שוחררו. גרסה 1.4.0-alpha09 מכילה את התחייבויות אלה.
תכונות חדשות
- עכשיו אפשר להתקשר אל
clearBackStack(name)
ל- מחיקה של כל המצבים שנשמרו בעבר באמצעותsaveBackStack(name)
. (I70cd7)
שינויים ב-API
- הכיתה
FragmentContainerView
נכתבה מחדש בקוטלין כדי לוודא שהפונקציהgetFragment
תפעל בצורה תקינה יכולת אפס. (If694a, b/189629145) - FragmentStrictMode כתוב עכשיו ב-Kotlin (I11767, b/199183506)
תיקוני באגים
- תוקנה בעיה שבה מצב מקטע
שנוסף באמצעות
setReorderingAllowed(true)
, ואז הוסרה מיד לפני ביצוע עסקאות בהמתנה לא יוסרו כראוי. (I8ccb8)
גרסה 1.4.0-alpha08
1 בספטמבר 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
ו-androidx.fragment:fragment-testing:1.4.0-alpha08
שוחררו. גרסה 1.4.0-alpha08 מכילה את התחייבויות אלה.
תיקוני באגים
- שיפרנו את בדיקת השגיאות בקוד של
UseRequireInsteadOfGet
כדי לטפל טוב יותר בסוגריים מיותרים. (I2d865) - שיפרנו את בדיקת איתור השגיאות בקוד של
UseGetLayoutInflater
כדי לטפל במקרי קצה נוספים. (Ie5423)
גרסה 1.4.0-alpha07
18 באוגוסט 2021
androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
ו-androidx.fragment:fragment-testing:1.4.0-alpha07
שוחררו ללא שינויים משמעותיים. גרסה 1.4.0-alpha07 מכילה את התחייבויות אלה.
גרסה 1.4.0-alpha06
4 באוגוסט 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
ו-androidx.fragment:fragment-testing:1.4.0-alpha06
שוחררו. גרסה 1.4.0-alpha06 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה בעיה עם מספר גיבויים
מקבצים כשעוברים במהירות בין המקבצים
שיופיע בתור
IllegalStateException
במהלך שחזור שלFragmentTransaction
או בשם מופיע עותק שני של מקטע מסוים. (I9039f) - תוקנה בעיה שבה
FragmentManager
יישמרו בעותק של המצב שנשמר בעבר דרךsaveBackStack()
, גם אחרי שהמצב הזה שוחזרה. (Ied212) - השיטה
dismissAllowingStateLoss()
מתוךDialogFragment
לא קורסות יותר כשמתקשרים אחרי שמירת המדינה, כשמוסיפים באופן ספציפי ה-DialogFragment דרך אמצעי תשלום אחד (show(FragmentTransaction, String)
). (I84422)
גרסה 1.4.0-alpha05
21 ביולי 2021
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
ו-androidx.fragment:fragment-testing:1.4.0-alpha05
שוחררו. גרסה 1.4.0-alpha05 מכילה את התחייבויות אלה.
תיקוני באגים
- ממקטע
1.3.6
: תצוגת המקטע מוגדרת עכשיו כראוי ל-GONE
בעת השימוש ב-hide()
כאשר תצוגת הבסיס היאtransitionGroup=”true”
. (aosp/1766655, b/193603427) - ממקטע
1.3.6
: עכשיוFragmentActivity
תמיד מבטל את הנעילה את המצב השמור כפעולה הראשונה במחזור החיים שהוא מבטל את הקריאה החוזרת (callback) שלו. (I6db7a)
עדכון בנושא תלות
- ממקטע
1.3.6
: המקטעים תלויים עכשיו בפעילות1.2.4
(I3a66c)
גרסה 1.4.0-alpha04
30 ביוני 2021
androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
ו-androidx.fragment:fragment-testing:1.4.0-alpha04
שוחררו. גרסה 1.4.0-alpha04 מכילה את התחייבויות אלה.
שינויים ב-API
- מערכת
FragmentManager
משתמשת עכשיו במכשירSavedStateRegistry
כדי לשמור את המצב שלה. גם השיטותsaveAllState()
ו-restoreSavedState()
הוצאו משימוש ב-FragmentController
. אם משתמשים ב-FragmentController
כדי לארח מקטעים מחוץ ל-FragmentActivity
, צריך להטמיע את ה-FragmentHostCallbacks
SavedStateRegistryOwner
(Iba68e, b/188734238)
תיקוני באגים
- תוקנה בעיה שבה השיחה אל
saveBackStack()
כחלק מתמיכה בריבוי גיבויים מקבצים ייכשלו כשהם ייכשלו באותו זמן הרצתFragmentTransaction
עםreplace()
. (I73137) - תוקן
NullPointerException
יתרחשו לאחר שחזור ידני של קובץ שמור מקבץ חוזר שהכיל כמה עסקאות כשמשתמשים ב-API שלrestoreBackStack()
כדי תמיכה בכמה אשכולות מסוג backStack. הבעיה נפתרה גם בעיה שבהsetReorderingAllowed(true)
לא נבדקה עבור כל העסקאות. I8c593 - תוקנה בעיה שבה
FragmentManager
המשך שגוי בשחזור המצב שנשמר בעבר של מקטעים גם אחרי שהמקטעים האלה הוסרו מה-FragmentManager
, וכתוצאה מכך נוצר המצב שנשמר והם גדלים כל הזמן עם הזמן. (I1fb8e)
גרסה 1.4.0-alpha03
16 ביוני 2021
androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
ו-androidx.fragment:fragment-testing:1.4.0-alpha03
שוחררו. גרסה 1.4.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
- כל המחלקות Fragment StrictMode
Violation
עודכנו עם הודעות שגיאה מפורטות יותר שמסבירות את פרטי ההפרה. (b/187871638)FragmentTagUsageViolation
מכיל עכשיו יותר הודעת שגיאה מפורטת שמכילה את מאגר ההורה שהקטע יתווסף אליו. (Ic33a7)- ב-
WrongFragmentContainerViolation
יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את המאגר נוסף אל הקטע. (Ib55f8) - מחלקות התרחישים לדוגמה של
TargetFragmentUsageViolation
עכשיו יש הודעות שגיאה מפורטות יותר, כדי לכלול את המקטע שגורמת להפרה, ולכל מידע אחר שנכלל בה. (Icc6ac) - הכיתות בהיקף
RetainInstanceUsageViolation
עכשיו יש הודעות שגיאה מפורטות יותר שכוללות את המקטע שגורמת להפרה. (I6bd55) - ב-
FragmentReuseViolation
יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את המזהה של המקטע. (I28ce2) - ב-
SetUserVisibleHintViolation
יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את מה שהמשתמש הוגדר הרמז הגלוי. (Ib2d5f)
שינויים בהתנהגות
- ההגבלה על התקשרות אל
fitsSystemWindows
במכשירFragmentContainerView
בוטלה – הפעולה הזו לא גורמת יותר לקריסת האפליקציה. (6b8ddd, b/190622202)
תיקוני באגים
- מ-Fragment
1.3.5
: תוקנה רגרסיה במעברים של רכיבים משותפים שנוספו ל-Fragment1.3.4
על ידי aosp/1679887. מקטעים מטפלים עכשיו בצורה נכונה בקבוצות מעבר (מוגדרות ישירות דרךtransitionGroup="true"
או בעקיפין דרךtransitionName
אוbackground
) וגם רכיבים משותפים לא יגרמו יותר ל-IndexOutOfBoundsException
. (I16484, b/188679569, b/188969304) FragmentManager
לא יקרוס יותר כשתנסו הסתר מקטע הסרה. (I573dd, b/183634730)- לא ניתן לבדוק את השגיאות בקוד של
OnCreateDialogIncorrectCallback
לקריסה ארוכה יותר בעת הערכה של משתנה ברמה העליונה. (0a9efa, b/189967522)
גרסה 1.4.0-alpha02
2 ביוני 2021
androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
ו-androidx.fragment:fragment-testing:1.4.0-alpha02
שוחררו. גרסה 1.4.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- מעכשיו,
FragmentStrictMode
תמיד יתעד הפרות כשרישום ביומן מופעל דרךFragmentManager
, ללא קשר למדיניות הנוכחית בנושא מצב מחמיר. (I02df6, b/187872638) ב-
FragmentStrictMode
יש עכשיו תמיכה במתן פטור למחלקותFragment
מסוימות ממצב מחמירViolation
, כדי לאפשר לכיתה לעקוף את כל הסנקציות. (Ib4e5d, b/184786736)הכיתה
FragmentStrictMode
Violation
הורחבה וכוללת כעת פרטי מבנה על סמך כל הפרה. כך אפשר לבדוק בדיוק מה גרם להפרה יחד עם המקטע שמפר את המדיניות (If5118, b/187871150), כלViolation
מכיל את הפרטים הבאים:WrongFragmentContainerViolation
מכיל עכשיוViewGroup
שאליו בוצע ניסיון להוסיף אתFragment
. (I83c75, b/187871150)TargetFragmentUsageViolation
הורחב ל-SetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
, וגםGetTargetFragmentRequestCodeUsageViolation
, כאשרSetTargetFragmentUsageViolation
מכיל את מקטע היעד וקוד הבקשה. (I741b4, b/187871150)SetUserVisibleHintViolation
מכיל עכשיו את הערך הבוליאני שמועבר אלsetUserVisibleHint()
. (I00585, b/187871150)FragmentTagUsageViolation
מכיל עכשיו ה-ViewGroup שאליה התג<fragment>
ניסה לנפח מקטע.(I5dbbc, b/187871150)FragmentReuseViolation
מכיל עכשיו את המזהה הייחודי של המופע הקודם שלFragment
שגרם להפרה. (I0544d, b/187871150)RetainInstanceUsageViolation
נקראת עכשיו מופשט ויש לו שני מחלקות משנה,SetRetainInstanceUsageViolation
ו-GetRetainInstanceUsageViolation
, שמייצגים עבור סוג ההפרה. (Ic81e5, b/187871150)
שינויים בהתנהגות
- עכשיו
FragmentContainerView
מקפיצה הודעת שגיאה כשאתם מנסים לשנות את המאפייןfitsSystemWindow
באופן פרוגרמטי או באמצעות XML. צריך לטפל ברכיבי inset באמצעות התצוגה של כל מקטע. (Ie6651, b/187304502)
גרסה 1.4.0-alpha01
18 במאי 2021
androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
ו-androidx.fragment:fragment-testing:1.4.0-alpha01
שוחררו. גרסה 1.4.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
FragmentContainerView
מספקת עכשיו שיטהgetFragment()
שמחזירה את המקטע האחרון שנוסף לקונטיינר. הפעולה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם מזהה ה-FragmentContainerView
, אבל מאפשרת לשרשר את הקריאה. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
תאריך ההוספה
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את האנימציה הרגילה של העברת הפעילות, שנלקחה מהעיצוב במעבר מקטעים. (I46652)
ריבוי מקבצים
FragmentManager
שומר על מקבץ גיבויים שמורכב מעסקאות מקטעים שנעשה בהן שימוש ב-addToBackStack()
. כך אפשר לבטל את המחיקה של הטרנזקציות האלה ולחזור למצב הקודם באמצעות המנגנונים של שמירת מצב עם מקטעים כדי לאפשר למקטעים לשחזר את המצב שלהם כראוי.
הגרסה הזו מרחיבה את המנגנונים האלה על ידי הוספת שני ממשקי API חדשים מסוג FragmentManager
: saveBackStack(String name)
ו-restoreBackStack(String name)
. ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל מקטע שנוסף בטרנזקציות האלה, וכדי לאפשר לכם לשחזר מאוחר יותר את הטרנזקציות האלה ואת המקטעים שלהן לשמור ללא שינוי. כך תוכלו 'להחליף' ביעילות בין כמה מקבצים קודמים על ידי שמירת המקבץ הקודם ושחזור של מקבץ גיבויים שנשמר.
saveBackStack()
פועלת באופן דומה ל-popBackStack()
בכך שהיא אסינכרונית ומובילה לכך שכל הטרנזקציות עם המקטעים בחזרה לשם הספציפי הזה מבוטלות ('poped') וכל מקטע נוסף להרוס ולהסיר מקטעים, אבל יש הבדל מהותי בכמה דרכים חשובות:
saveBackStack()
תמיד מעודד את קבלת האחר.- בניגוד ל-
popBackStack()
, פעולה זו תקפיץ את כל הטרנזקציות מהמקבץ האחורי אם השם שצוין לא נמצא במקבץ האחורי או אם צוין שם ריק,saveBackStack()
לא יבצע כלום אם לא ביצעת בעבר טרנזקציית מקטעים באמצעותaddToBackStack()
עם אותו שם בדיוק שהוא לא null. - המצב של כל המקטעים שנוספו מהעסקאות האלה נשמר. פירוש הדבר הוא שמצב התצוגה של כל מקטע מאוחסן, מתבצעת קריאה ל-
onSaveInstanceState()
של כל מקטע והמצב הזה ישוחזר, וכל מכונותViewModel
שמשויכות למקטעים האלה יישמרו (ו-onCleared()
לא נקרא עליהם).
עסקאות המקטעים שבהן ניתן להשתמש עם saveBackStack()
חייבות לעמוד בקריטריונים מסוימים:
- כל טרנזקציה של מקטעים חייבת להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שניתן יהיה לשחזר את הטרנזקציות כפעולה אטומית אחת. - קבוצת העסקאות שנשמרת חייבת להיות עצמאית (כלומר, אסור להפנות באופן מפורש למקטעים שמחוץ לקבוצת העסקאות הזו) כדי להבטיח שניתן יהיה לשחזר אותם בכל שלב מאוחר יותר, לא משנה אילו שינויים בוצעו במקבץ האחורי בזמן שביניהם.
- מקטעים שנשמרו לא יכולים להיות מקטעים שנשמרו או לשמור מקטע, בתוך קבוצת המקטעים המעבירים שלהם, כדי להבטיח ש-
FragmentManager
לא יחזיר הפניות למקטעים שנשמרו אחרי שמירת מקבץ מאחור.
בדומה ל-saveBackStack()
, restoreBackStack()
לא יבצע שום פעולה אם לא התקשרת בעבר אל saveBackStack()
באותו שם. (b/80029773)
Fragment StrictMode
ממשקי ה-API של FragmentStrictMode
מספקים בדיקות זמן ריצה שמאפשרות לוודא שהאפליקציה או הספריות שתלויות בהן לא קריאות לממשקי API עם מקטעים שהוצאו משימוש. כשמזוהה הפרה, אתם יכולים להדפיס הודעה ביומן, להפעיל האזנה מותאמת אישית או לקרוס את האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy
שקובעת אילו בדיקות מופעלות ואילו 'עונשים' יופעלו בFragmentManager
באמצעות השיטה setStrictModePolicy()
החדשה. המדיניות הזו חלה על FragmentManager
ובאופן מעבר על מנהלי מקטעים צאצא שלא הגדירו מדיניות ייחודית משלהם. (#123, #131, #150, b/143774122)
detectFragmentReuse()
מזהה אם מופע שלFragment
שהוסר בעבר מתווסף מחדש אלFragmentManager
. אסור בשום אופן לבצע אינטראקציה עם מופע שלFragment
או לשמור הפניה שלו אחרי שהוא השמד והוסר מ-FragmentManager
. (#142, b/153738653)detectFragmentTagUsage()
מזהה מתי משתמשים בתג<fragment>
ב-XML של הפריסה. צריך להשתמש תמיד ב-FragmentContainerView
כדי לניפוח מקטעים כחלק מהפריסה. (#141, b/153738235)detectWrongFragmentContainer()
מזהה שמוסיפים מקטע לקונטיינר שאינוFragmentContainerView
. צריך תמיד להשתמש ב-FragmentContainerView
כמאגר למקטעים בפריסה. (#146, b/181137036)detectRetainInstanceUsage()
מזהה מתי נעשה שימוש בממשקי ה-API שלsetRetainInstance()
אוgetRetainInstance()
שהוצאו משימוש. (#140, b/153737954)detectSetUserVisibleHint()
מזהה שימוש ב-API שלsetUserVisibleHint()
שהוצא משימוש. (#136, b/153738974)detectTargetFragmentUsage()
מזהה שמשתמשים בממשקי ה-APIsetTargetFragment()
,getTargetFragment()
אוgetTargetRequestCode()
שהוצאו משימוש. (#139, b/153737745)
שינויים ב-API
- ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean)
הוסר, ועכשיו מנהל המצב החדש הוא האפשרות היחידה שזמינה עכשיו. (I90036, b/162776418) - ב-
FragmentScenario
מוטמע עכשיוCloseable
, והוא מאפשר להשתמש בו עם ה-methoduse
של Kotlin או try-with-resources. (#121, b/143774122)
בדיקות חדשות לאיתור שגיאות בקוד (lint)
- בבדיקת
UseGetLayoutInflater
לאיתור שגיאות בקוד, נשלחת אזהרה כשמשתמשים ב-LayoutInflater.from(Context)
בתוךDialogFragment
. צריך להשתמש תמיד ב-methodgetLayoutInflater()
של מקטע תיבת הדו-שיח כדי לקבל את התג המתאים ל-LayoutInflater
. (#156, b/170781346) - בבדיקת השגיאות בקוד של
DialogFragmentCallbacksDetector
, נשלחת אזהרה כשמבצעים קריאה ל-setOnCancelListener
או ל-setOnDismissListener
בשיטהonCreateDialog()
שלDialogFragment
. המאזינים האלה הם בבעלותDialogFragment
עצמו, וצריך לשנות את ההגדרות שלonCancel()
ו-onDismiss()
כדי לקבל את הקריאות החוזרות האלה. (#171, b/181780047, b/187524311)
תיקוני באגים
- מ-Fragment 1.3.4: תוקנה רגרסיה ב-Fragment
1.3.3
בזמן השימוש ב-API שלViewTreeViewModelStoreOwner.get()
באמצעותViewModelProvider
או בשיטת Jetpack Compose שלviewModel()
בתוך Fragment. בתרחישים לדוגמה האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory
שסופק על ידי ה-Fragment אם הוא מבטל אתgetDefaultViewModelProviderFactory()
(כפי שעושים מקטעים עם הערות@AndroidEntryPoint
כשמשתמשים ב-Hilt). אם לא משנים את השיטה הזו,SavedStateViewModelFactory
ששומר ומשחזר את המצב שלו לצד תצוגת ה-Fragment נוצר כמפעל ברירת המחדל. (I5cbfa, b/186097368) - מ-Fragment 1.3.4: כשמשתמשים ב-
FragmentContainerView
ב-API 29, ערכות ה-inset לא שליחה ללא הגבלת זמן, תיקון בעיות במכונותBottomNavigationBar
ו-FloatingActionButton
. (I1bb78, b/186012452) - מ-Fragment 1.3.4: עכשיו אפשר לאחזר את הקטע 'Parcelable' מתוצאת המקטעים. חבילה אחרי המוות של התהליך. (I65932, b/187443158)
- מ-Fragment 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם
הערך של
transitionGroup
הוגדר ב-ViewGroup כ-FALSE, עכשיו הוא יפעל כראוי של המעבר לממשק החדש. (I99675)
תרומה חיצונית
- תודה simonschiller על ההטמעה של
Closeable
ב-FragmentScenario
. (#121, b/143774122) - תודה simonschiller על הוספת כל ה-API של
FragmentStrictMode
לגרסה הזו! - תודה tatocaster על הוספת הבדיקה של
UseGetLayoutInflater
lint. (#156, b/170781346) - תודה tatocaster על הוספת הבדיקה של
DialogFragmentCallbacksDetector
lint. (#171, b/181780047)
גרסה 1.3
גרסה 1.3.6
21 ביולי 2021
androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
ו-androidx.fragment:fragment-testing:1.3.6
שוחררו. גרסה 1.3.6 כוללת את ההתחייבויות האלה.
תיקוני באגים
- ממקטע
1.4.0-alpha03
:FragmentManager
לא יקרוס יותר כאשר תנסה הסתר מקטע הסרה. (I573dd, b/183634730) - תצוגת המקטע מוגדרת עכשיו כראוי ל-
GONE
בעת שימוש ב-hide()
כאשר בתצוגת הרמה הבסיסית (root) מוגדרתtransitionGroup=”true”
. (aosp/1766655, b/193603427) - עכשיו הנעילה של
FragmentActivity
תמיד מתבטלת את המצב השמור כפעולה הראשונה במחזור החיים שהוא מבטל את הקריאה החוזרת (callback) שלו. (I6db7a)
עדכון בנושא תלות
- ממקטע
1.3.6
: המקטעים תלויים עכשיו בפעילות1.2.4
(I3a66c)
גרסה 1.3.5
16 ביוני 2021
androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
ו-androidx.fragment:fragment-testing:1.3.5
שוחררו. גרסה 1.3.5 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה רגרסיה במעברים של רכיבים משותפים שנוספו ל-Fragment
1.3.4
על ידי aosp/1679887. מקטעים מטפלים עכשיו בצורה נכונה בקבוצות מעבר (מוגדרות ישירות דרךtransitionGroup="true"
או בעקיפין דרךtransitionName
אוbackground
) וגם רכיבים משותפים לא יגרמו יותר ל-IndexOutOfBoundsException
. (I16484, b/188679569, b/188969304)
גרסה 1.3.4
18 במאי 2021
androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
ו-androidx.fragment:fragment-testing:1.3.4
שוחררו. גרסה 1.3.4 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה רגרסיה שהופעלה ב-Fragment
1.3.3
בזמן השימוש ב-API שלViewTreeViewModelStoreOwner.get()
עםViewModelProvider
או בשיטת Jetpack Compose שלviewModel()
בתוך Fragment כשמשתמשים ב-Hilt. בתרחישים לדוגמה האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory
שסופק על ידי ה-Fragment, אם הוא מבטל אתgetDefaultViewModelProviderFactory()
(כמו שעושים ב-@AndroidEntryPoint
Fragments). אם לא משנים את השיטה הזו,SavedStateViewModelFactory
ששומר ומשחזר את המצב שלו לצד תצוגת ה-Fragment נוצר כמפעל ברירת המחדל. (I5cbfa, b/186097368) - כשמשתמשים ב-
FragmentContainerView
ב-API 29, ערכות ה-inset לא שליחה ארוכה יותר ללא הגבלת זמן, תיקון בעיות במכונותBottomNavigationBar
ו-FloatingActionButton
. (I1bb78, b/186012452) - עכשיו אפשר לאחזר את החבילה 'Parcelable' מתוצאת המקטעים חבילה אחרי המוות של התהליך. (I65932, b/187443158)
- כשמבצעים העברה של רכיב משותף ב-ViewGroup, אם
הערך של
transitionGroup
הוגדר ב-ViewGroup כ-False, עכשיו הוא יפעל כראוי של המעבר לממשק החדש. (I99675)
גרסה 1.3.3
21 באפריל 2021
androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
ו-androidx.fragment:fragment-testing:1.3.3
שוחררו. גרסה 1.3.3 כוללת את ההתחייבויות האלה.
תכונות חדשות
- השימוש ב-
SavedStateViewModelFactory
עובד עכשיו כשמשתמשים בו עם ה-SavedStateRegistryOwner
שהוחזר על ידי באמצעותViewTreeSavedStateRegistryOwner.get()
עם תצוגת מקטע (I21acf, b/181577191)
תיקוני באגים
- תוקנה רגרסיה חדשה במקטע
1.3.2
שגרמה לאי-פעילות שלpopEnter
אנימציות במהלך הקפצה שלFragmentTransaction
שכללה פעולהsetPrimaryNavFragment
, כמו אנימציות שמשמשות אתNavHostFragment
. (I38c87, b/183877426) - לפי
FragmentContainerView
, עכשיו כלFragment
יישלח קבוצה חדשה שלWindowInsets
, כדי להבטיח שכל מקטע יוכל לצרוך עכשיו את הרכיבים הפנימיים באופן עצמאי. (I63f68, b/172153900) - עכשיו
DialogFragment
מטפל כראוי במקרים שבהם מקטע צאצא נוסף למאגר תגים שזהה לזה של מאגר במחלקהDialog
בהתאמה אישית, ופותר בעיות בהיררכיית התצוגות כשעושים שימוש חוזר במזהים שנמצאים בשימוש פנימי על ידי תיבות דו-שיח כמוBottomSheetDialog
. (Ie6279, b/180021387) - עכשיו מתבצעת כניסה של
FragmentManager.dump()
למקטע הראשון ברשימת המקטעים הפעילים. (If5c33, b/183705451)
תיקוני באגים במנהל המצב החדש
- מנהל מצב המקטעים החדש מטפל עכשיו ביציאה עובר באמצעות פעולות הסתרה. (I9e4de, b/184830265)
גרסה 1.3.2
24 במרץ 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
ו-androidx.fragment:fragment-testing:1.3.2
שוחררו. גרסה 1.3.2 כוללת את ההתחייבויות האלה.
תיקוני באגים במנהל המצב החדש
- כשמריצים גם פעולות
popBackStack()
וגם פעולותcommit()
הפעולה האחרונה תגדיר עכשיו את הכיוון של כל אנימציות במקום להריץ אנימציות פופ, אנימציות. (I7072e, b/181142246) - תצוגות מפורטות בהיררכיית רכיבים משותפת לא יהיו יותר שם המעבר שלו נמחק במהלך ביצוע מעבר משותף של רכיב. (I4d4a6, b/179934757)
עדכונים בנושא תלות
- המקטע תלוי עכשיו בפעילות 1.2.2, תיקון בעיה בבדיקת השגיאות בקוד
InvalidFragmentVersionForActivityResult
של הפעילות במהלך שימוש ב-Fragment 1.3.1 ואילך. - המקטע תלוי עכשיו ב-Lifecycle 2.3.1.
גרסה 1.3.1
10 במרץ 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
ו-androidx.fragment:fragment-testing:1.3.1
שוחררו. גרסה 1.3.1 כוללת את ההתחייבויות האלה.
תכונות חדשות
- עכשיו לתיבות דו-שיח בתוך
DialogFragment
יש גישה אל ViewTree בעלים דרך העיצוב שלהם, ולהבטיח שניתן יהיה להשתמש ב-DialogFragment
עםComposeView
. (Ib9290, b/180691023)
תיקוני באגים
- מקטעים התנפחו לפעילות שכבר
RESUMED
באמצעות FragmentContainerView מוצג עכשיו כמו שצריך אחרי הגדרה שינוי. (Ie14c8, b/180538371) - אין יותר
}
מיותר בסוף המקטעtoString()
(I54705, b/177761088) - שיטות שבוטלו ב-FragmentActivity מקבלות עכשיו בירושה את הקוד base method JavaDoc (I736ce, b/139548782)
- המסמכים של
setFragmentResult
וגםsetFragmentResultListener
עדכנו את מסמכי הפרמטרים שלהם כך שהם כבר לא מקבלים nullables (I990ba, b/178348386)
תיקוני באגים במנהל המצב החדש
- תוקנה דליפת זיכרון במקטעים שנגרמה על ידי
mFocusedView
(Ib4e9e, b/179925887) - עכשיו, מקטעים קוראים ל-
onCreateOptionsMenu
בצורה תקינה במהלך השימוש הצגה/הסתרה של עסקאות (I8bce8, b/180255554) - קטעי צאצא עם מעברים שהתחילו לפני פריסת המקטע יגיעו עכשיו כראוי
RESUMED
(Ic11e6, b/180825150) - מעכשיו, מקטעים המנפחים את גודלם באמצעות התג
<fragment>
יהיו תמיד להגיע ל-RESUMED
(I452ac, (I9fa49)
עדכונים בנושא תלות
- מקטע 1.3.1 תלוי בפעילות
1.2.1
. (I557b9)
גרסה 1.3.0
10 בפברואר 2021
androidx.fragment:fragment:1.3.0
, androidx.fragment:fragment-ktx:1.3.0
ו-androidx.fragment:fragment-testing:1.3.0
שוחררו. גרסה 1.3.0 כוללת את ההתחייבויות האלה.
שינויים משמעותיים מאז 1.2.0
- מנהל המצב החדש: שכתוב פנימי משמעותי של
FragmentManager
תיקן מספר בעיות הקשורות לשליחת אירועים, אנימציות ומעברים במחזור החיים, ואופן הטיפול במקטעים שנדחו. שילוב ה-API של תוצאת הפעילות: נוספה תמיכה ב-API של
ActivityResultRegistry
שהושק בפעילות1.2.0
כדי לטפל בתהליכיstartActivityForResult()
+onActivityResult()
וגםrequestPermissions()
+onRequestPermissionsResult()
בלי לשנות שיטות ב-Fragment, ובנוסף לספק קטעי הוק (hooks) לבדיקת התהליכים האלה. תוכלו לעיין בגרסה המעודכנת של קבלת תוצאה מפעילות.- הגרסה הזו מתקנת מספר בעיות בנוגע לקודי בקשות לא חוקיים ולשליחה של בקשות הרשאה שמונעות מ-Activity result API לפעול בגרסאות קודמות של
FragmentActivity
. עליך לשדרג ל-Fragment 1.3.0 כדי להשתמש בממשקי ה-API של תוצאות הפעילות ב-FragmentActivity
או ב-AppCompatActivity
.
- הגרסה הזו מתקנת מספר בעיות בנוגע לקודי בקשות לא חוקיים ולשליחה של בקשות הרשאה שמונעות מ-Activity result API לפעול בגרסאות קודמות של
Fragment result API: נוספה תמיכה בהעברת תוצאות בין שני מקטעים באמצעות ממשקי API חדשים ב-
FragmentManager
. התכונה הזו פועלת עבור מקטעים היררכיים (הורה/צאצא), DialogFragments ומקטעים בניווט, ומבטיחה שהתוצאות יישלחו אל ה-Fragment רק בזמן שהואSTARTED
לפחות. ממשקי ה-API עם קטעי היעד הוצאו משימוש לטובת ממשקי ה-API החדשים האלה. למידע נוסף, כדאי לעיין בקטע קבלת תוצאות באמצעות Fragment result API.FragmentOnAttachListener
: הקריאה החוזרת (callback) שלonAttachFragment()
ב-FragmentActivity
וב-Fragment
הוצאה משימוש. הוספנוFragmentOnAttachListener
חדש כדי לספק חלופה גמישה יותר, שמאפשרת להעניק גישה שלonAttachFragment()
למאזינים נפרדים שניתן לבדוק, ותמיכה בהוספת מאזינים ל-FragmentManagers שאינם הצאצא הישיר של FragmentManager.FragmentScenario
שיפורים: הכיתהFragmentScenario
מתוך פריט המידע שנוצר בתהליך הפיתוח (Artifact) שלfragment-testing
נכתבה מחדש ב-Kotlin ובוצעה בה מספר שיפורים:FragmentScenario
משתמש עכשיו ב-setMaxLifecycle()
כדי להטמיע אתmoveToState()
, כדי להבטיח התנהגות עקבית בכל רמות ה-API ולהפריד בין מצב ה-Fragment מהפעילות הבסיסית.- עכשיו יש ב-
FragmentScenario
תמיכה בהגדרה שלLifecycle.State
ראשוני כדי לתמוך בהצהרה על מצב המקטע לפני המעבר לכלLifecycle.State
בפעם הראשונה. - עכשיו יש חלופה ל-API
FragmentScenario
שלonFragment
בצורת שיטת התוסףwithFragment
המתוקנת של Kotlin, שמאפשרת להחזיר ערך. בפרט, הוא מבטל את החריגות שהועלו בסעיף הנתון.
תמיכה של
ViewTree
:Fragment
תומך עכשיו בממשקי ה-API שלViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
ו-ViewTreeSavedStateRegistryOwner
שנוספו ל-מחזור החיים2.3.0
ול-SavedState1.1.0
, כך שיחזיר את ה-Fragment בתורViewModelStoreOwner
, ו-SavedStateRegistryOwner
ו-LifecycleOwner
שקשורים למחזור החיים של המקטע בתוךFragment
צפייה במחזור החיים של המקטע במהלךFragment
.View
שינויים באנימציה של
TRANSIT_
: האפקטים שמוגדרים כברירת מחדל למקטעים,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
ו-TRANSIT_FRAGMENT_FADE
. עכשיו נעשה שימוש ב-Animator
במקום ב-Animation
. המשאבים שמשמשים לבניית האנימטורים האלה הפכו לפרטיים.הוצאה משימוש של
setRetainInstance()
: השיטהsetRetainInstance()
ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש ממשק API ספציפי לשמירת מצב שניתן לשייך לפעילויות, למקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד, וכך להימנע ממקור משותף של דליפות תוך שמירה על המאפיינים השימושיים של יצירה והשמדה של המצב שנשמר (כלומר, ה-constructor של ה-ViewModel
וה-callback של ה-onCleared()
שהוא מקבל).הוצאה משימוש של מתאם ViewPager 1: לאחר ההשקה של התכונה ViewPager2
1.0.0
, יצאו משימוש המחלקותFragmentPagerAdapter
ו-FragmentStatePagerAdapter
לאינטראקציה עםViewPager
. ראו מעבר מ-ViewPager ל-ViewPager2.
גרסה 1.3.0-rc02
27 בינואר, 2021
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
ו-androidx.fragment:fragment-testing:1.3.0-rc02
שוחררו. גרסה 1.3.0-rc02 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה הורה
DialogFragment
יופיע מעל צאצאDialogFragment
לאחר שינוי הגדרה; מקטעים של תיבות דו-שיח ברמת צאצא מופיעים תמיד מעל למקטע הורה של תיבת דו-שיח. (I30806, b/177439520) - תוקנה בעיה שבה בוצע פעולת
hide
עםAnimation
תגרום לכך שקטע ההסתרה יהבהב בסוף האנימציה. (I57e22, b/175417675) - מקטעים עם מעברים שנוספו לפני היררכיית התצוגות
צירפת אותם עכשיו כדי להגיע אל
RESUMED
. (I1fc1d, b/177154873)
תיקוני באגים במנהל המצב החדש
- התצוגה של Fragment
Lifecycle
מטפלת עכשיו בצורה תקינה במקרים שבהם התצוגה של ה-Fragment מושמדת לפני שהLifecycle
מגיעה אלCREATED
, תוך הימנעות מחריגים שבהם כתוב "אין אירוע החל מ-INITIALIZED". (eda2bd, b/176138645) - מקטעים שמשתמשים ב-
Animator
מופיעים עכשיו בסדר הנכון בעת השימושFragmentContainerView
. (Id9aa3, b/176089197)
גרסה 1.3.0-rc01
16 בדצמבר 2020
androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
ו-androidx.fragment:fragment-testing:1.3.0-rc01
שוחררו. גרסה 1.3.0-rc01 מכילה את ההתחייבויות האלה.
תיקוני באגים
- עכשיו הלוגיקה של
onPrepareOptionsMenu()
זהה לזו שלonCreateOptionsMenu()
ולא נקרא יותר כשמקטע הורה קוראת אלsetMenuVisibility(false)
. (Id7de8, b/173203654)
תיקוני באגים במנהל המצב החדש
- תוקנו דליפות וארטיפקט חזותי בזמן ההוספה
מקטע עם
Animation
ל-FragmentContainerView
ואז מפסיקים באמצעות פעולת פופ. (I952d8) - תוקנה בעיה שבה תצוגת המקטע
תישאר בהיררכיית התצוגות, אם היא הוחלפה במהלך
onCreate()
אוonViewCreated()
שלו. (I8a7d5) - המיקוד ישוחזר עכשיו כראוי לתצוגות בסיס של מקטע (Fragment) כאשר הן מופעלות מחדש. (Ifc84b)
- שילוב פעולות הבלטה והחלפה באותו מקטע העסקה תציג עכשיו את האנימציות המתאימות (Ifd4e4, b/170328691)
גרסה 1.3.0-beta02
2 בדצמבר, 2020
androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
ו-androidx.fragment:fragment-testing:1.3.0-beta02
שוחררו. גרסה 1.3.0-beta02 מכילה את התחייבויות אלה.
תכונות חדשות
- האפליקציה
FragmentScenario
הומרה באופן מלא ל-Kotlin תוך שמירה על תאימות מקור ובינארית באמצעות שימוש בממשקים הפונקציונליים של Kotlin 1.4 עבורFragmentAction
. (I19d31)
שינויים בהתנהגות
- עכשיו אפשר להשתמש ב-FragmentContainerViews שלא מנפחות מקטע באמצעות המאפיין
class
אוandroid:name
מחוץ ל-FragmentActivity
. (Id4397, b/172266337) - ניסיון להגדיר את מחזור החיים המקסימלי של מקטע ל-
DESTROYED
יגרורIllegalArgumentException
(Ie7651, b/170765622) - אתחול FragmentScenario עם מצב
DESTROYED
יקפיץ עכשיוIllegalArgumentException
(I73590, b/170765622)
תיקוני באגים במנהל המצב החדש
- תוקנה בעיה שבה התצוגה לא הגיעה למצב הסופי שלה אם הפסקתם מעבר של מקטעים באמצעות
Animator
או אחת מהאפשרויות שלTRANSIT_FRAGMENT_
. (I92426, b/169874632) - תוקנה בעיה שמנעה השמדה תקינה של מקטעים עם יציאה של
Animation
. (I83d65) - יציאה ממקטעים שהאפקטים שלהם הפוכה עכשיו לבטל ולהפעיל מחדש בצורה נכונה עם אפקט הכניסה המתאים. (I62226, b/167092035)
- תוקנה בעיה שבה היציאה
Animator
מתוךhide()
לא פעלה. (Id7ffe) - עכשיו מקטעים מופיעים בצורה נכונה כשהם נדחו, ולאחר מכן מתחילים מיד. (Ie713b, b/170022857)
- מקטעים שמסירים את התצוגה המודגשת במהלך אנימציה לא ינסו יותר לשחזר את המיקוד בתצוגה מנותקת ברגע שהם יגיעו ל-
RESUMED
(I38c65, b/172925703)
תרומה חיצונית
- עכשיו
FragmentFactory
שומר מחלקות מקטעים בנפרד למופעים שונים שלClassLoader
. תודה סיימון שילר! (#87, b/113886460)
גרסה 1.3.0-beta01
1 באוקטובר 2020
androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
ו-androidx.fragment:fragment-testing:1.3.0-beta01
שוחררו. גרסה 1.3.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-
setMaxLifecycle()
יש עכשיו תמיכה בהגדרה שלLifecycle
למצבINITIALIZING
כל עוד המקטע לא הועבר אלCREATED
. (b/159662173)
שינויים ב-API
- צריך לשדרג את androidx כדי להשתמש ב-Kotlin 1.4 (Id6471, b/165307851, b/165300826)
שינויים בהתנהגות
- קובצי משאבים של מקטעים הוגדרו כראוי כפרטיים. (aosp/1425237)
תיקוני באגים
- מקטעים המנפחים את גודלם באמצעות התג
<fragment>
יפעלו כעת כראוי להמתין עד שהתצוגות שלהם יתווספו לקונטיינר לפני המעבר למצב STARTED (I02f4c) - מקטעים גלויים ולאחר מכן
setMaxLifecycle()
עדCREATED
מפעילים כראוי את אפקטים היציאה שלהם. (b/165822335) - הסרת מקטע שנותק שלא נוסף למקבץ האחורי לא גורמת יותר לדליפת זיכרון. באדיבות ניקלס אנסמן גירץ! (b/166489383)
- מקטעים פעילים תמיד יכללו
FragmentManager
שאינו null ומקטעים עםFragmentManager
שאינו null תמיד ייחשבו כפעילים. (aosp/1422346) - האפקטים של ברירת המחדל של המקטעים,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
ו-TRANSIT_FRAGMENT_FADE
, משתמשים עכשיו ב-Animator
במקום ב-Animation
. (b/166155034)
תיקוני באגים במנהל המצב החדש
- מקטעים לשחזר כראוי את מצב המיקוד של התצוגה שלהם מ- ממש לפני שהם מתחילים את האנימציה שלהם. (Icc256)
- מקטעים שיש להם עכשיו רק מעבר משותף להשלים כראוי את האפקטים המיוחדים שלהם, כלומר, הם בעצם עוברים המצב הסופי שלהם (Iaebc7, b/166658128)
- עכשיו תצוגות מקטעים תמיד מוסרות ממאגר התגים לפני שיושמד. (Id5876)
- מנהל המצב החדש מסיר כעת באופן עקבי תצוגת מקטעים לפני שמוסיפים את המקטע. (I41a6e)
- מנהל המצב החדש מכבד עכשיו שינויים מפורשים בחשיפה של תצוגת מקטעים. במילים אחרות, אם מגדירים את התצוגה של מקטע בתור
INVISIBLE
לפני שהאנימציה מתחילה, הוא יישאר בלתי נראה. (b/164481490) - עכשיו מקטעים נותנים עדיפות ל-
Animators
על פניAnimations
. כלומר, מקטע עם שניהם יריץ רק אתAnimator
ותתעלם מהAnimation
. (b/167579557) - מנהל המצב החדש כבר לא גורם למקטעים להבהב במהלך שימוש באנימציות. (b/163084315)
בעיה ידועה
כשמשתמשים במנהל המצב החדש, אם מקישים על 'חזרה' במהלך הזנה של אפקט מיוחד במקום לחזור למקטע הקודם, הקטע הישן לא יתווסף מחדש אף פעם, וכתוצאה מכך יוצג מסך ריק. (b/167259187, b/167092035, b/168442830)
גרסה 1.3.0-alpha08
19 באוגוסט 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
ו-androidx.fragment:fragment-testing:1.3.0-alpha08
שוחררו. גרסה 1.3.0-alpha08 מכילה את התחייבויות אלה.
מנהל המצב החדש
הגרסה הזו כוללת ארגון מחדש באופן משמעותי של ניהול המצב הפנימי של FragmentManager
שמשפיע על שליחת השיטות, האנימציות ומעברים במחזור החיים, ועל אופן הטיפול בטרנזקציות שנדחו. ההגדרה הזו מוצגת בממשק כברירת מחדל. לפרטים נוספים, ניתן לעיין בקטע Fragments: Rebuilding the Internals בבלוג. (b/139536619, b/147749580)
- ניתן להשתמש ב-API ניסיוני ב-
FragmentManager.enableNewStateManager(boolean)
כדי לקבוע אם FragmentManager ישתמש במנהל המצב החדש. (I7b6ee)
הבעיות הבאות נפתרו רק כשמשתמשים במנהל המצב החדש:
- המקטע הקודם של פעולה
replace
נעצר עכשיו כראוי לפני תחילת המקטע החדש. (b/161654580) - מקטעים מונעים עכשיו אנימציות מתחרות מרובות על אותם מקטעים, ומונעים מקרים שבהם
Animation
יבטל את כל האפקטים שלTransition
אוAnimator
ו-Transition
על מקטע בודד יפעלו שניהם. (b/149569323) - ה-
enterTransition
וה-exitTranstion
של כל המקטעים שנכנסים והיוצאים רצים עכשיו, ולא רק המקטע האחרון שנכנס והמקטע הראשון היציאה. (b/149344150) - מקטעים שנדחו יותר לא נתקעים במצב
CREATED
אלא עוברים אלSTARTED
עם מקטעים אחרים. (b/129035555) - תוקנה בעיה שגרמה ל-
FragmentManager
לבצע פעולות לא תקינות כשמשלבים עסקה שהוזמנה מחדש עם עסקה שלא הוזמנה מחדש. (b/147297731) - הקפצה של כמה מקטעים בו-זמנית כבר לא תגרום להצגת מקטעי ביניים באופן זמני כשדוחים מקטעים. (b/37140383)
- עכשיו
FragmentManager
מחזיר את המקטעים הנכונים כשקוראים לפונקציהfindFragmentById()
אוfindFragmentByTag()
מתוך הקריאה החוזרת (callback) שלonAttachFragment()
. (b/153082833) - מקטעים כבר לא קוראים
onCreateView()
למקטעים מושמדים כאשר המקטע שמחליף אותם נדחה. (b/143915710) - בהודעת השגיאה כשמנסים לשלב את מסגרת
Transition
עם מכונותTransition
של AndroidX, מופיע עכשיו המקטע עם המעבר הלא חוקי. (b/155574969)
שינויים בהתנהגות
- עכשיו אפשר להפעיל את
launch()
ב-ActivityResultLauncher
בשיטת מחזור החיים של מקטעonCreate()
. (b/161464278) - קריאה ל-
registerForActivityResult()
אחריonCreate()
תגרום כעת לחריגה שמציינת שהפעולה הזו לא מותרת, במקום שהתוצאות לא יתקבלו לאחר שינוי בתצורה באופן עצמאי. (b/162255449) FragmentActivity
משתמש עכשיו ב-API שלOnContextAvailableListener
שנוסף בפעילות1.2.0-alpha08
כדי לשחזר את המצב שלFragmentManager
. מאזינים שיתווספו למחלקות המשנה שלFragmentActivity
יפעלו אחרי המאזינים האלה. (I513da)
תיקוני באגים
ActivityOptions
שהועברו בזמן השימוש ב-startIntentSenderForResult()
יכובדו. (b/162247961)
בעיה ידועה
- כשמשתמשים במנהל המצב החדש, הגדרה ישירה של הרשאות הגישה לתצוגת הבסיס של המקטע אחרי
onViewCreated()
ולפניonResume()
תוביל לשינוי של הרשאות הגישה שהגדרת על ידיFragmentManager
, ששולט בהרשאות הגישה לתצוגה הבסיסית. כפתרון זמני, צריך תמיד להשתמש בפעולותhide()
ו-show()
כדי לשנות את הרשאות הגישה של המקטע. (b/164481490)
גרסה 1.3.0-alpha07
22 ביולי 2020
androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
ו-androidx.fragment:fragment-testing:1.3.0-alpha07
שוחררו. גרסה 1.3.0-alpha07 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-
FragmentScenario
יש עכשיו תמיכה בהגדרה של מצב מחזור החיים שלCREATED
,STARTED
אוRESUMED
במקום להעביר תמיד את הפרגמנט לRESUMED
. (b/159662750) - נוספה חלופה ל-API של
FragmentScenario
שלonFragment
בצורה של שיטת התוסףwithFragment
המתוקנת של Kotlin, שמאפשרת להחזיר ערך. בפרט, הוא מבטל את החריגות שהועלו בסעיף הנתון. (b/158697631)
שינויים בהתנהגות
FragmentScenario
משתמש עכשיו ב-setMaxLifecycle()
כדי להטמיע אתmoveToState()
, כדי להבטיח התנהגות עקבית בכל רמות ה-API ולהפריד בין מצב ה-Fragment מהפעילות הבסיסית. (b/156527405)- הערך של
SavedStateRegistryOwner
שהוחזר על ידיViewTreeSavedStateRegistryOwner
מקושר עכשיו למחזור החיים של תצוגת המקטעים. כך אפשר לוודא שהמצב שלו נשמר ונשמר בו-זמנית עם תצוגת המקטע. (b/158503763)
תיקוני באגים
- המקטעים ממתינים עכשיו לצירוף תצוגת המקטע לפני הקריאה ל-
ViewCompat.requestApplyInsets()
, כדי להימנע ממקרים שבהם בקשת המקטע בוטלה. (b/158095749) - קריאה אל
clearFragmentResultListener
מנקה עכשיו כמו שצריך את צופה במחזור החיים. (b/159274993)
גרסה 1.3.0-alpha06
10 ביוני 2020
androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
ו-androidx.fragment:fragment-testing:1.3.0-alpha06
שוחררו. גרסה 1.3.0-alpha06 מכילה את התחייבויות אלה.
תכונות חדשות
- הקריאה החוזרת של
onAttachFragment()
מופעלתFragmentActivity
ו-Fragment
הוצאו משימוש.FragmentOnAttachListener
חדש נוסף אל לספק חלופה גמישה יותר, שמאפשרת הענקת גישה שלonAttachFragment()
למאזינים נפרדים שניתן לבדוק ותמיכה עבור הוספת אוזן ל-FragmentManagers מלבד הצאצא הישיר FragmentManager. (I06d3d)
תיקוני באגים
- מצב התצוגה של מקטעים ברמת הורה ישוחזר לפני המקטעים הצאצאים שלהם. במצב כזה, אחרי שינוי ההגדרה,
DialogFragment
יציג עודDialogFragment
כמקטע צאצא. (b/157195715) - תוקנה בעיה שבה בדיקת השגיאות בקוד של
UseRequireInsteadOfGet
לא טיפלה בצורה נכונה בשימושים משורשרים באופרטורים?.
ו-!!
. (b/157677616)
גרסה 1.3.0-alpha05
20 במאי 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
ו-androidx.fragment:fragment-testing:1.3.0-alpha05
שוחררו. גרסה 1.3.0-alpha05 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה תמיכה ב-
ViewTreeViewModelStoreOwner
מ-דוחות מחזור חיים2.3.0-alpha03
וב-ViewTreeSavedStateRegistryOwner
מ-SavedState1.1.0-alpha01
כשמשתמשים ב-View
בתוךFragment
. (aosp/1297993, aosp/1300264)
שינויים ב-API
- עכשיו הערך של
Bundle
ו-FragmentResultListener
שאינם null, בהתאמה, בממשקי ה-APIsetFragmentResult()
ו-setFragmentResultListener()
הוא לא null. כדי למחוק באופן מפורש תוצאה או האזנה שהוגדרו בעבר, יש להשתמש בשיטות החדשותclearFragmentResult()
ו-clearFragmentResultListener()
. (b/155416778) - תוספי Kotlin של
setFragmentResultListener()
בסגנון lambda מסומנים עכשיו בתורinline
. (b/155323404)
שינויים בהתנהגות
- ממשקי ה-API האלה,
startActivityForResult()
,startIntentSenderForResult()
ו-requestPermissions
שהוצאו משימוש בעבר ב-Fragment
משתמשים עכשיו באופן פנימי ב-ActivityResultRegistry
, כך שמבטלת את ההגבלה על שימוש רק בביטים התחתונים (מתחת ל-0xFFFF
) לקודי הבקשות בזמן השימוש בממשקי ה-API האלה. (b/155518741)
עדכונים במסמכים
- הרחבנו את מסמכי התיעוד על הבנאים
Fragment(@LayoutRes int)
ו-DialogFragment(@LayoutRes int)
כדי להבהיר שצריך לקרוא להם מה-constructor של מחלקות המשנה באמצעותFragmentFactory
ברירת המחדל. (b/153042497)
גרסה 1.3.0-alpha04
29 באפריל 2020
androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
ו-androidx.fragment:fragment-testing:1.3.0-alpha04
שוחררו. גרסה 1.3.0-alpha04 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה תמיכה בהעברת תוצאות בין שני מקטעים באמצעות ממשקי API חדשים ב-
FragmentManager
. התכונה הזו פועלת עבור מקטעים היררכיים (הורה/צאצא), DialogFragments ומקטעים בניווט, ומבטיחה שהתוצאות יישלחו אל ה-Fragment רק בזמן שהואSTARTED
לפחות. (b/149787344)
שינויים ב-API
- ממשקי ה-API עם קטעי היעד הוצאו משימוש. כדי להעביר נתונים בין מקטעים, יש להשתמש במקום זאת בממשקי ה-API החדשים של Fragment Answer. (b/149787344)
- ממשקי ה-API
startActivityForResult()
/onActivityResult()
ו-requestPermissions()
/onRequestPermissionsResult()
ב-Fragment הוצאו משימוש. צריך להשתמש ב-Activity results API. (aosp/1290887) - שינוי חמור מפעילות
1.2.0-alpha04
: השיטהprepareCall()
שונתה ל-registerForActivityResult()
. (aosp/1278717)
תיקוני באגים
- עכשיו ה-
getViewLifecycleOwner()
של המקטע הופסק לפני הקריאה ל-onSaveInstanceState()
. השינוי הזה ישקף את התנהגות מחזור החיים של המקטע. (b/154645875) - קריאה ל-
setMenuVisibility(false)
במקטע משנה עכשיו כראוי את החשיפה של תפריטים שמספקים מקטעי הצאצא שלו. (b/153593580) - תוקן
illegalStateException
בהוספת מקטע להיררכיית התצוגות שלDialogFragment
עםFragmentContainerView
. (b/154366601) - השיטה
getDefaultViewModelProviderFactory()
במקטעים כבר לא קורסת בזמן אירוח המקטעים מחוץ לפעילות. (b/153762914)
גרסה 1.3.0-alpha03
1 באפריל, 2020
androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
ו-androidx.fragment:fragment-testing:1.3.0-alpha03
שוחררו. גרסה 1.3.0-alpha03 מכילה את התחייבויות אלה.
שינויים ב-API
- השיטות
prepareCall
ב-Fragment
הן עכשיוfinal
. (b/152439361)
תיקוני באגים
- תוקנה רגרסיה חדשה במקטע
1.3.0-alpha02
בזמן השימוש ב-BottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - תוקנה קריסה במהלך שימוש ב-
prepareCall
ממקטע לאחר שינוי הגדרה. (b/152137004) - תוקנה בעיה שבה המערכת מתעלמת ממעברים משותפים וממעברים ליציאה כשמשתמשים ב-
setTargetFragment()
. (b/152023196) - מ-Fragment
1.2.4
: כללי ה-Fragment ProGuard עודכנו כדי לאפשר ערפול קוד (obfuscation) של מקטעים שמורים. (b/151605338) - ממקטע
1.2.4
: הושבת הכללFragmentLiveDataObserve
לאיתור שגיאות בקוד של מחלקותDialogFragment
מכיוון שמחזור החיים ומחזור החיים של התצוגה מסונכרנים תמיד, כך שניתן להשתמש ב-this
או ב-viewLifecycleOwner
בקריאה ל-observe
. (b/151765086)
שינויים בתלות
- המקטעים תלויים במדד פעילות
1.2.0-alpha03
, שכולל שיפורים משמעותיים ב-Activity result API שנוסף לפעילות1.2.0-alpha02
.
גרסה 1.3.0-alpha02
18 במרץ 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
ו-androidx.fragment:fragment-testing:1.3.0-alpha02
שוחררו. גרסה 1.3.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה תמיכה ב-API של
ActivityResultRegistry
שנוסף בפעילות1.2.0-alpha02
כדי לטפל בתהליכיstartActivityForResult()
+onActivityResult()
וגםrequestPermissions()
+onRequestPermissionsResult()
בלי לבטל שיטות ב-Fragment, בנוסף למתן קטעי הוק (hooks) לבדיקת התהליכים האלה. תוכלו לעיין בגרסה המעודכנת של קבלת תוצאה מפעילות. (b/125158199)
שינויים ב-API
- עכשיו
DialogFragment
מספק constructor שלוקח@LayoutRes
שמציין את הפריסה ש-onCreateView()
אמור לנפח כברירת מחדל. (b/150327080) - השיטה
onActivityCreated()
הוצאה משימוש. קוד שנגע בתצוגת המקטע צריך להתבצע ב-onViewCreated()
(שנקראת מיד לפניonActivityCreated()
), וקוד אתחול אחר צריך להיות ב-onCreate()
. כדי לקבל קריאה חוזרת באופן ספציפי כש-onCreate()
של הפעילות מסתיימת, צריך לרשוםLifeCycleObserver
ב-Lifecycle
של הפעילות בonAttach()
ולהסיר אותו ברגע שהקריאה החוזרת שלonCreate()
תתקבל. (b/144309266)
תיקוני באגים
- ממקטע
1.2.3
: תוקן באג ב-DialogFragment
שגרם ל-StackOverflowError
בהתקשרות אלgetLayoutInflater()
מתוךonCreateDialog()
. (b/117894767, aosp/1258664) - מ-Fragment
1.2.3
: צמצום ההיקף של כללי ProGuard הכלולים ב-Fragment כדי להבטיח שניתן יהיה להסיר מחלקות Fragment שלא בשימוש. (b/149665169) - ממקטע
1.2.3
: תוקנו תוצאות חיוביות מוטעות בבדיקה שלUseRequireInsteadOfGet
בזמן השימוש בשם משתנה מקומי שהציל את השם של מאפיין Kotlin. (b/149891163) - ממקטע
1.2.3
:FragmentContainerView
לא יקפיץ יותרUnsupportedOperationException
בגלל שימוש ב-constructor הלא נכון בתצוגה המקדימה של הפריסה. (b/149707833)
בעיות מוכרות
BottomSheetDialogFragment
כבר לא ממקם את תיבת הדו-שיח שלו במסך כמו שצריך. (b/151652127)
גרסה 1.3.0-alpha01
4 במרץ, 2020
androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
ו-androidx.fragment:fragment-testing:1.3.0-alpha01
שוחררו. גרסה 1.3.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
- נוספה תמיכה ב-API של
ViewTreeLifecycleOwner.get(View)
שנוספה ב-Lifecycle2.3.0-alpha01
, כך שהוא יחזיר אתviewLifecycleOwner
של ה-Fragment כ-LifecycleOwner
לכל תצוגה מפורטת שהוחזרה על ידיonCreateView()
. (aosp/1182955)
שינויים ב-API
- השיטה
setRetainInstance()
ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש ממשק API ספציפי לשמירת מצב שניתן לשייך לפעילויות, למקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד, וכך להימנע ממקור משותף של דליפות תוך שמירה על המאפיינים השימושיים של יצירה והשמדה של המצב שנשמר (כלומר, ה-constructor של ה-ViewModel
וה-callback של ה-onCleared()
שהוא מקבל). (b/143911815) - בעקבות ההשקה של ViewPager2
1.0.0
, הוצאנו משימוש את המחלקותFragmentPagerAdapter
ו-FragmentStatePagerAdapter
לאינטראקציה עםViewPager
. ראו מעבר מ-ViewPager ל-ViewPager2. (b/145132715)
תיקוני באגים
- כללי ProGuard במקטע מקטעים שומרים כרגע בצורה נכונה רק את המחלקות
Fragment
של הבנאים המשמשים כברירת מחדל עבור כל המופעים שלFragment
, במקום לכל המכונות. תיקון רגרסיה שהופעל ב-Fragment1.2.1
. (b/149665169 - הכללים של איתור השגיאות בקוד
require___()
שנוספו ב-Fragment1.2.2
כבר לא כוללים תוצאה חיובית כוזבת לגבי משתנים מקומיים שיש להם שם זהה לזה של שמות מאפייני Kotlin עם הצללה (כלומר,view
). (b/149891163) FragmentContainerView
כבר לא מחזירUnsupportedOperationException
כשמשתמשים בתצוגה המקדימה של הפריסה ב-Android Studio. (b/149707833)- תוקנה בעיה שבה מקטעים שנשמרו שנוספו אחרי שמירת המצב לא נוצרו מחדש באופן רציף ולאחר כל שינוי בהגדרה יושמדם. (b/145832397)
גרסה 1.2.5
גרסה 1.2.5
10 ביוני 2020
androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
ו-androidx.fragment:fragment-testing:1.2.5
שוחררו. גרסה 1.2.5 כוללת את ההתחייבויות האלה.
תיקוני באגים
- עכשיו ה-
getViewLifecycleOwner()
של המקטע הופסק לפני הקריאה ל-onSaveInstanceState()
. השינוי הזה ישקף את התנהגות מחזור החיים של המקטע. הפריט הזה הופץ בעבר במקטע1.3.0-alpha04
. (b/154645875) - קריאה ל-
setMenuVisibility(false)
במקטע משנה עכשיו כראוי את החשיפה של תפריטים שמספקים מקטעי הצאצא שלו. הפריט הזה הופץ בעבר במקטע1.3.0-alpha04
. (b/153593580)
גרסה 1.2.4
גרסה 1.2.4
1 באפריל, 2020
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
ו-androidx.fragment:fragment-testing:1.2.4
שוחררו. גרסה 1.2.4 כוללת את ההתחייבויות האלה.
תיקוני באגים
- כללי Fragment ProGuard עודכנו כדי לאפשר ערפול קוד (obfuscation) של קטעים שמורים. (b/151605338)
- הושבתה
FragmentLiveDataObserve
כלל Linux במחלקותDialogFragment
כמחזור החיים ומחזור החיים שלהם תמיד מסונכרנים, כך שאפשר להשתמש ב-this
או ב-viewLifecycleOwner
בזמן קריאה ל-observe
. (b/151765086)
גרסה 1.2.3
גרסה 1.2.3
18 במרץ 2020
androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
ו-androidx.fragment:fragment-testing:1.2.3
שוחררו. גרסה 1.2.3 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג ב
DialogFragment
שגרם ל-StackOverflowError
כשהתקשרות אלgetLayoutInflater()
מתוךonCreateDialog()
. (b/117894767, aosp/1258665) - הפחתתם את ההיקף של כללי ProGuard הכלולים ב-Fragment כדי להבטיח שניתן יהיה להסיר מחלקות Fragment שלא נמצאות בשימוש. (b/149665169)
- תוקנו התוצאות החיוביות השגויות בבדיקת
UseRequireInsteadOfGet
איתור השגיאות בקוד, כשמשתמשים בשם משתנה מקומי שמסתיר את שם המאפיין של Kotlin. (b/149891163) FragmentContainerView
כבר לא יקפיץUnsupportedOperationException
על שימוש ב-constructor הלא נכון בתצוגה המקדימה של הפריסה. (b/149707833)
גרסה 1.2.2
גרסה 1.2.2
19 בפברואר 2020
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
ו-androidx.fragment:fragment-testing:1.2.2
שוחררו. גרסה 1.2.2 כוללת את ההתחייבויות האלה.
בדיקות חדשות לאיתור שגיאות בקוד (lint)
- איתור השגיאות בקוד מציע להשתמש ב-
viewLifecycleOwner
בתורLifecycleOwner
כדי לבצע שיחות אלOnBackPressedDispatcher
ב-onCreateView()
, ב-onViewCreated()
וב-onActivityCreated()
. (b/142117657) - נוספה בדיקה חדשה של איתור שגיאות בקוד (lint) שמאשרת שנעשה שימוש ב-
debugImplementation
הנכון בזמן השימוש בארטיפקטfragment-testing
. (b/141500106) - עכשיו אפשר להשתמש ב-Fragment באמצעות ה-methods
require___()
כדי לקבל הודעות שגיאה תיאוריות יותר במקוםcheckNotNull(get___())
,requireNonNull(get___())
אוget___()!!
בכל ממשקי ה-API של Fragment שכוללים גם מקבילה ב-get
וגם ב-require
. (aosp/1202883)
תיקוני באגים
- תוקנו קובצי Fragment ProGuard כדי למנוע אזהרות לגבי R8 (b/148963981)
- שיפרנו את בדיקת השגיאות בקוד הקיים שמציע
viewLifecycleOwner
כשמשתמשים ב-observe
כדי לטפל גם בגרסת שיטת התוסףlivedata-ktx
שלobserve
. (b/148996309) - תיקנו את הפורמט של רבות מבדיקות ה-lint (aosp/1157012)
תרומות חיצוניות
- תודה לזאק סווארס שתרמת את הבדיקות לאיתור שגיאות בקוד (lint) של
require___()
בשם Slack! (aosp/1202883)
גרסה 1.2.1
גרסה 1.2.1
5 בפברואר 2020
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
ו-androidx.fragment:fragment-testing:1.2.1
שוחררו. גרסה 1.2.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- למקטעים שנוספו באמצעות ה-method
add
ו-replace
שמשתמשות במכונהClass
(או בגרסאות המתוקנות של Kotlin) מוגדר עכשיו ה-constructor שמוגדר כברירת המחדל ב-ProGuard. (b/148181315) FragmentStatePagerAdapter
ו-FragmentPagerAdapter
כבר לא תופסים חריגים שנפסלו על ידיFragmentManager
במהלך הרצה שלfinishUpdate()
. (aosp/1208711)- תוקנה בעיה שבה
FragmentManager.findFragment()
לא פעל עם מקטעים שנוספו באמצעות התג<fragment>
. (b/147784323) - מקטעים המנפחים את גודלם באמצעות התג
<fragment>
תמיד מקבלים קריאה ל-onInflate()
לפניonCreate()
כשהם בפריסה. (aosp/1215856) - קריאה ל-
toString()
במכונה שלFragmentManager
לא גורמת יותר ל-NullPointerException
כשהפעילות כבר נמחקה. (b/148189412)
שינויים בתלות
- המקטעים
1.2.1
תלויים עכשיו ב-Lifecycle ViewModelSavedState2.2.0
.
גרסה 1.2.0
גרסה 1.2.0
22 בינואר, 2020
androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
ו-androidx.fragment:fragment-testing:1.2.0
שוחררו. גרסה 1.2.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 1.1.0
- FragmentContainerView: ה-
FragmentContainerView
הוא המאגר המומלץ ביותר ל-Fragments שמוסיפים באופן דינמי, ומחליף את השימוש ב-FrameLayout
או בפריסות אחרות. הוא גם תומך באותםclass
,android:name
, ו-android:tag
אופציונלי כמו התג<fragment>
, אבל נעשה בו שימוש ב-FragmentTransaction
רגיל להוספת המקטע הראשוני הזה, במקום בנתיב הקוד המותאם אישית שבו משתמש<fragment>
. - תזמון
onDestroyView()
: מקטעים ממתינים עכשיו להשלמת אנימציות יציאה, מעברים מ-framework של יציאה ויציאה ממעברים ב-AndroidX (כשמשתמשים במעבר1.3.0
) כדי להשלים את הפעולה לפני הקריאה ל-onDestroyView()
. - נתונים מבוססי כיתה
add()
ו-replace()
: נוספו עומסי יתר חדשים שלadd()
ו-replace()
ב-FragmentTransaction
, שלוקחיםClass<? extends Fragment>
ו-Bundle
ארגומנטים אופציונליים. השיטות האלה משתמשות ב-FragmentFactory
כדי ליצור מופע של ה-Fragment להוספה. תוספי Kotlin שמשתמשים בסוגים ששונו (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)
) נוספו גם אלfragment-ktx
. - שילוב של מצב SaveState של תצוגת מחזור חיים:
SavedStateViewModelFactory
הוא עכשיו היצרן המוגדר כברירת מחדל לשימוש ב-by viewModels()
, ב-by activityViewModels()
, ב-constructor שלViewModelProvider
או ב-ViewModelProviders.of()
עם מקטע. - בדיקות לאיתור שגיאות בקוד (lint): נוספה בדיקה חדשה של איתור שגיאות בקוד (lint) שמבטיחה שתשתמשו ב-
getViewLifecycleOwner()
במהלך הצפייה ב-LiveData
מ-onCreateView()
, מ-onViewCreated()
או מ-onActivityCreated()
. - הוצאה משימוש של
getFragmentManager()
: השיטותgetFragmentManager()
ו-requireFragmentManager()
ב-Fragment הוצאו משימוש והוחלפו בשיטתgetParentFragmentManager()
אחת, שמחזירה את ה-Fragment ללא ערך null (אפשר להשתמש ב-isAdded()
כדי לבדוק אם בטוח לקרוא אותו).FragmentManager
- הוצאה משימוש של
FragmentManager.enableDebugLogging()
: השיטה הסטטיתFragmentManager.enableDebugLogging
הוצאה משימוש. FragmentManager מכבד עכשיו אתLog.isLoggable()
עבור התגFragmentManager
, וכך מאפשר לך להפעיל רישום ביומןDEBUG
אוVERBOSE
בלי ליצור מחדש את האפליקציה.
בעיות מוכרות
- מקטעים שיש אליהם הפניה רק דרך המאפיין
class
אוandroid:name
ב-FragmentContainerView
לא נשמרים באופן אוטומטי על ידי ProGuard, ולכן צריך להוסיף באופן ידני כלל Keep לכל מחלקה של מקטעים. (b/142601969) - כשמוסיפים
NavHostFragment
באמצעותclass
אוandroid:name
ב-XML עםFragmentContainerView
, לא ניתן להשתמש ב-findNavController()
ב-onCreate()
של הפעילות. (b/142847973)
גרסה 1.2.0-rc05
8 בינואר, 2020
androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
ו-androidx.fragment:fragment-testing:1.2.0-rc05
שוחררו. גרסה 1.2.0-rc05 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה רגרסיה במקטע
1.2.0-rc04
בעת שימוש בתג<fragment>
, שגרמה לקריאה שגויה שלonViewCreated()
במהלך השמדה של פעילות. (b/146290333) - עכשיו, מקטעים שנוספו עם התג
<fragment>
נמחקו באופן תקין גם אם הם מופיעים רק בפריסה לרוחב (כלומר, רק בפריסה לרוחב). כתוצאה מכך, המקטעים האלה מועברים עכשיו בצורה נכונה אלCREATED
, גם כשהם לא נמצאים בפריסה שלך, במקום שהם נוצרו באמצעות טריגר אבל אף פעם לא עוברים בין ה-methods של מחזור החיים. (b/145769287)
גרסה 1.2.0-rc04
18 בדצמבר 2019
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
ו-androidx.fragment:fragment-testing:1.2.0-rc04
שוחררו. גרסה 1.2.0-rc04 מכילה את ההתחייבויות האלה.
תיקוני באגים
- שינית את האנימציות ב-
TRANSIT_FRAGMENT_OPEN
, ב-TRANSIT_FRAGMENT_CLOSE
וב-TRANSIT_FRAGMENT_FADE
כדי למנוע בעיות בצפייה. (b/145468417)
גרסה 1.2.0-rc03
4 בדצמבר 2019
androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
ו-androidx.fragment:fragment-testing:1.2.0-rc03
שוחררו. גרסה 1.2.0-rc03 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקן שינוי לא מכוון בהתנהגות שבו מקטעים שהוסרו עדיין מוחזרים על ידי
findFragmentById()
/findFragmentByTag()
בזמן הפעלת אנימציות היציאה/מעברים. (b/143982969, aosp/1167585) - מקטעים של צאצאים עוצרים עכשיו בצורה נכונה לפני ההורים שלהם כשהפעילות המכילה את הפעילות
onSaveInstanceState()
. (b/144380645) - תוקנה בעיה שבה 'תצוגות' סומנו באופן שגוי כ-
INVISIBLE
לאחר פתיחת מקטע מוסתר. (b/70793925) - מעברים של רכיב משותף עם מקטעים מטפלים עכשיו בתצוגות שהוחלפו, הוגדלו וכו' (b/142835261)
עדכונים במסמכים
- הוספנו הבהרות למסמכי ההוצאה משימוש של
setUserVisibleHint()
. (b/143897055) - שיפרנו את התיעוד ב-
setFragmentFactory()
וב-getFragmentFactory()
כדי לציין טוב יותר שהגדרתFragmentFactory
תשפיע גם על FragmentManagers צאצאים. (aosp/1170095)
שינויים בתלות
- עכשיו המקטעים תלויים במחזור החיים
2.2.0-rc03
, ב-SavedState של תצוגת מחזור החיים1.0.0-rc03
ובפעילות1.1.0-rc03
.
גרסה 1.2.0-rc02
7 בנובמבר 2019
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
ו-androidx.fragment:fragment-testing:1.2.0-rc02
שוחררו. גרסה 1.2.0-rc02 מכילה את ההתחייבויות האלה.
תיקוני באגים
- ב-Kotlin, ה-LintFix משתמש עכשיו ב-
getViewLifecycleOwner()
במהלך תצפית עלLiveData
מ-onCreateView()
, מ-onViewCreated()
או מ-onActivityCreated()
(הושק ב-Fragment1.2.0-rc01
) משתמש עכשיו בתחביר הגישה לנכסי Kotlin,viewLifecycleOwner
במקום ב-getViewLifecycleOwner()
. (aosp/1143821)
גרסה 1.2.0-rc01
23 באוקטובר 2019
androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
ו-androidx.fragment:fragment-testing:1.2.0-rc01
שוחררו. גרסה 1.2.0-rc01 מכילה את ההתחייבויות האלה.
תכונות חדשות
FragmentContainerView
תומך עכשיו במאפייןclass
בנוסף ל-android:name
, והפונקציונליות של התג<fragment>
משקפת את הפונקציונליות של התג. (b/142722242)- נוספה בדיקת איתור שגיאות בקוד (lint) החדשה שמוודאת שהשימוש ב-
getViewLifecycleOwner()
כאשר צופים ב-LiveData
מ-onCreateView()
, מ-onViewCreated()
או מ-onActivityCreated()
. (b/137122478)
תיקוני באגים
- הקריאות החוזרות (callback) של
onDismiss
ו-onCancel
ב-DialogFragment
מבטיחות עכשיו שה-DialogInterface
שמועבר אליהן אינו null וש-getDialog()
יחזיר ערך שאינו null בזמן הרצתן. (b/141974033) - עכשיו
FragmentContainerView
מוסיף את המקטע שהוגדר על ידיclass
אוandroid:name
כחלק מהאינפלציה, ומבטיח ש-findFragmentById()
ו-findFragmentByTag()
יפעלו מיד לאחר מכן. (b/142520327) - תוקן
IllegalStateException
בFragmentContainerView
עקב המצב שנשמר. (b/142580713) - תוקן
UnsupportedOperationException
ב-FragmentContainerView
כשבוצע ערפול קוד (obfuscation) של המחלקהFragmentContainerView
. (b/142657034)
בעיות מוכרות
- מקטעים שיש אליהם הפניה רק דרך המאפיין
class
אוandroid:name
ב-FragmentContainerView
לא נשמרים באופן אוטומטי על ידי ProGuard, ולכן צריך להוסיף באופן ידני כלל Keep לכל מחלקה של מקטעים. השבתנו את הכלל לאיתור שגיאות בקוד (lint), שמאפשר לעבור אלFragmentContainerView
עד לפתרון הבעיה דרךaapt2
. (b/142601969)
גרסה 1.2.0-beta02
11 באוקטובר 2019
androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
ו-androidx.fragment:fragment-testing:1.2.0-beta02
שוחררו. גרסה 1.2.0-beta02 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה בעיה שבה
onInflate()
של Fragment לא קיבל מאפיינים מתאימים מ-FragmentContainerView
, ומקרים של שיבושים כמוNavHostFragment
. (b/142421837)
גרסה 1.2.0-beta01
9 באוקטובר 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
ו-androidx.fragment:fragment-testing:1.2.0-beta01
שוחררו. גרסה 1.2.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- ב-
FragmentContainerView
נוספה תמיכה בהוספת מקטע ראשוני עם תמיכה נוספת במאפייני ה-XML שלandroid:name
ואופציונלייםandroid:tag
. שלא כמו התג<fragment>
,FragmentContainerView
משתמש ב-FragmentTransaction
רגיל מתחת למכסה הקדמי כדי להוסיף את המקטע הראשוני, וכך מאפשר פעולותFragmentTransaction
נוספות ב-FragmentContainerView
ומאפשר את השימוש ב'קישור תצוגה' עבור הפריסה. (b/139830628, b/141177981) - המקטעים (Frags) כוללים עכשיו אזהרה בנוגע ל-lint, עם תיקון מהיר שיחליף את
<fragment>
ב-FragmentContainerView
. (b/139830056)
תיקוני באגים
- תוקן
ClassCastException
במהלך השימוש ב-androidx.transition
. (b/140680619) - כשמשתמשים במעבר
1.3.0-beta01
, Fragments ממתינים עכשיו למעבר שלandroidx.transition
(בנוסף למעברי framework ואנימציות, שתוקנו ב-Fragment1.2.0-alpha03
וב-Fragment1.2.0-alpha02
, בהתאמה) כדי לסיים לפני השליחה שלonDestroyView()
. (aosp/1119841) - כשמשתמשים במעבר
1.3.0-beta01
, מקטעים מבטלים עכשיו באופן תקין מעבריandroidx.transition
לפני שמתחילים מעברים חדשים או אנימציות חדשות באותו קונטיינר. (aosp/1119841) - תוקנה בעיה ב-API 17 ומטה בזמן השימוש במעברים של
androidx.transition
בתצוגת הרמה הבסיסית (root) של המקטע בזמן השימוש ב-FragmentContainerView
. (b/140361893) - פריט המידע שנוצר בתהליך הפיתוח (Artifact) של
fragment-testing
תלוי עכשיו בבדיקת AndroidX1.2.0
, שמתוקנת אי-תאימות לגרסה העדכנית ביותר של Espresso 3.2.0. (b/139100149) - השימוש ב-
Log.w
הוסר ב-FragmentManager. (aosp/1126468)
בעיות מוכרות
onInflate()
של מקטע לא מקבל מאפיינים מתאימים מ-FragmentContainerView
, מקרים של תקלות כמוNavHostFragment
. (b/142421837)
גרסה 1.2.0-alpha04
18 בספטמבר 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
ו-androidx.fragment:fragment-testing:1.2.0-alpha04
שוחררו. גרסה 1.2.0-alpha04 מכילה את התחייבויות אלה.
שינויים ב-API
- השיטות
getFragmentManager()
ו-requireFragmentManager()
ב-Fragment
הוצאו משימוש והוחלפו בשיטהgetParentFragmentManager()
יחידה, שמחזירה אתFragmentManager
שה-Fragment התווסף אליו שאינו אפס (אפשר להשתמש ב-isAdded()
כדי לקבוע אם בטוח לקרוא לו). (b/140574496) - השיטה הסטטית
FragmentManager.enableDebugLogging
הוצאה משימוש. FragmentManager מכבד עכשיו אתLog.isLoggable()
עבור התגFragmentManager
, וכך מאפשר לך להפעיל רישום ביומןDEBUG
אוVERBOSE
בלי ליצור מחדש את האפליקציה. (aosp/1116591)
תיקוני באגים
- עכשיו מקטעים מושמדים כראוי בזמן שהאנימציות יציאה במקטעים אחרים פועלות. (b/140574199)
- תוקנה בעיה שבה מקטעים יצרו קריאה ל-
Activity.findViewById()
שם קודם לכן. (aosp/1116431)
גרסה 1.2.0-alpha03
5 בספטמבר 2019
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
ו-androidx.fragment:fragment-testing:1.2.0-alpha03
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
שינויים ב-API
FragmentContainerView
נקראת עכשיוfinal
. (b/140133091)
תיקוני באגים
- עכשיו
FragmentContainerView
הופך כראוי את סדר השרטוט כשמקפצים מקטעים מהמקבץ האחורי. (b/139104187) - תוקנה בעיה שבה אנימציה שגויה פעלה כשגם הקפצת מקטע וגם הוספת מקטע חדש בו-זמנית. (b/111659726)
- מקטעים ממתינים עכשיו למעברים (בנוסף לאנימציות, שתוקנו במקטע
1.2.0-alpha02
) לסיום לפני שליחתonDestroyView()
. (b/138741697)
גרסה 1.2.0-alpha02
7 באוגוסט 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
ו-androidx.fragment:fragment-testing:11.2.0-alpha02
יושק. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
SavedStateViewModelFactory
הוא עכשיו היצרן המוגדר כברירת מחדל לשימוש ב-by viewModels()
, ב-by activityViewModels()
, בViewModelProvider
ב-constructor או ב-ViewModelProviders.of()
עםFragment
. (b/135716331)- אנימציות ברירת המחדל כשמשתמשים ב-
TRANSIT_FRAGMENT_OPEN
, ב-TRANSIT_FRAGMENT_CLOSE
, ב-TRANSIT_FRAGMENT_FADE
עםsetTransition
ב-FragmentTransaction
עודכנו כדי להתאים לאנימציות שבהן נעשה שימוש בפעילויות במכשירי Android 10. (aosp/1012812, aosp/1014730)
שינויים ב-API
- המדיניות
FragmentContainerView
מציגה את הקונטיינר המומלץ ביותר ל-Fragments שנוספו באופן דינמי, ומחליפה את השימוש ב-FrameLayout
וכו', כי היא מתקנת בעיות של שינוי סדר z ופונקציות של חלונות שנשלחים ל-Fragments. (b/37036000, aosp/985243, b/136494650) - נוספה שיטת
FragmentManager.findFragment(View)
סטטית כדי לאחזר את המקטע המכיל מתצוגה המנפחת במקטע. תוסף Kotlin זמין גם בfragment-ktx
. (aosp/1090757) - נוספו עומסי יתר חדשים של
add()
ו-replace()
ב-FragmentTransaction
, שלוקחיםClass<? extends Fragment>
ו-Bundle
ארגומנטים אופציונליים. השיטות האלה משתמשות ב-FragmentFactory
כדי ליצור מופע של ה-Fragment להוספה. תוסף Kotlin שנעשה בו שימוש בסוגים ששונו (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)
) נוסף גם אלfragment-ktx
. (b/126124987) @MainThread
הערות נוספו ל-Fragment
קריאות חוזרות (callback) במחזור החיים. (b/127272564)- ממשקי ה-API שקשורים לשמות של נתיבי ניווט ב-
FragmentTransaction
וב-FragmentManager.BackStackEntry
הוצאו משימוש. (b/138252944) - השיטה
setTransitionStyle
ב-FragmentTransaction
הוצאה משימוש. (aosp/1011537) - רבות מהשיטות ב-
FragmentManager
הן כבר לאabstract
.FragmentManager
עצמו נשארabstract
ואין ליצור או להרחיב אותו באופן ישיר; אתם אמורים להמשיך לקבל רק מופע קיים מ-getSupportFragmentManager()
, מ-getChildFragmentManager()
וכו'.
תיקוני באגים
- מ-Fragment
1.1.0-rc04
: מקטעים מבטלים כעת בצורה נכונה העברות שנדחו ב-Fragments. (b/138251858) - ממקטע
1.1.0-rc03
: תוקנה בעיה שבה הפעלה שלpostponeEnterTransition()
עם זמן קצוב לתפוגה יותר מפעם אחת לא תבטל את הזמן הקצוב לתפוגה הקודם. (b/137797118) - ממקטע
1.1.0-rc02
: תוקנה קריסה ב-FragmentPagerAdapter
וב-FragmentStatePagerAdapter
במהלך הסרת הפריט הנוכחי. (b/137209870) - מקטעים ממתינים עכשיו לסיום האנימציות לפני שליחת
onDestroyView()
. (b/136110528) - אנימציות של מקטעים ממקטעים ברמת צאצא והצאצאים שלהם מטופלים כראוי כאשר מוסיפים אנימציה ל-Fragment ההורה. (b/116675313)
- תוקן
NullPointerException
בעת שימוש במעברים משותפים של רכיב ופעולת שילוב של חלון קופץ והוספה. (b/120507394) - נוספה דרך לעקוף את הבעיה
IllegalStateException
כשמשתמשים ב-FragmentPagerAdapter
וב-FragmentStatePagerAdapter
בבדיקות Robolectric. (b/137201343)
גרסה 1.2.0-alpha01
2 ביולי 2019
androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
ו-androidx.fragment:fragment-testing:1.2.0-alpha01
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- FragmentManager קורא עכשיו ל-
requestApplyInsets()
אחרי צירוף תצוגת ה-Fragment וישירות לפני הקריאה ל-onViewCreated()
, כדי לוודא שבתצוגה תמיד יש את הרכיבים הנכונים. (b/135945162)
תיקוני באגים
- תוקן
NullPointerException
במהלך פתיחתFragmentTransaction
שנעשה בו שימוש ב-setPrimaryNavigationFragment()
לפניreplace()
. (b/134673465)
גרסה 1.1.0
גרסה 1.1.0
5 בספטמבר 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
ו-androidx.fragment:fragment-testing:1.1.0
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
שינויים חשובים מאז 1.0.0
- בדיקת מקטעים: הארטיפקט
fragment-testing
מספק מחלקהFragmentScenario
לבדיקת מקטע לבידוד. לפרטים נוספים, אפשר לעיין במסמכי התיעוד בנושא בדיקת מקטעים של האפליקציה. - FragmentStore: עכשיו אפשר להגדיר את
FragmentFactory
ב-FragmentManager
כדי לנהל את היצירה של מכונות מקטעים, תוך ביטול הדרישה המחמירה להשתמש ב-constructor ללא ארגומנטים. - מקבלי גישה לנכס של Kotlin ל-ViewModels: פריט המידע שנוצר בתהליך הפיתוח (Artifact) של
fragment-ktx
מכיל עכשיו שני משתמשים עם הרשאה לנכס של Kotlin:by viewModels()
לגישה ל-ViewModels שמשויכים למקטע הבודד, ו-by activityViewModels()
לגישה ל-ViewModels בהיקף הפעילות. - מחזור חיים מקסימלי: עכשיו אפשר להגדיר מצב של מחזור חיים מקסימלי למקטע על ידי קריאה ל-
setMaxLifecycle()
ב-FragmentTransaction
. הגרסה הזו מחליפה אתsetUserVisibleHint()
שהוצא משימוש. ל-FragmentPagerAdapter
ול-FragmentStatePagerAdapter
יש constructor חדש שמאפשר לעבור להתנהגות החדשה. - בונה FragmentActivity LayoutId: מחלקות המשנה של
FragmentActivity
יכולות עכשיו לקרוא ל-constructor ב-FragmentActivity
שמקבל מזההR.layout
, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView()
ב-onCreate()
. הפעולה הזו לא משנה את הדרישה שלמחלקה המשנית יהיה בנאי ללא ארגומנטים. - בנאי Fragment LayoutId: מחלקות המשנה של
Fragment
יכולות עכשיו לקרוא ל-constructor ב-Fragment
, שמקבל מזההR.layout
, שמציין את הפריסה שצריך להשתמש בה למקטע הזה כחלופה להחלפה שלonCreateView()
. אפשר להגדיר פריסה מורחבת בonViewCreated()
. - דחייה עם זמן קצוב לתפוגה: נוסף עומס יתר חדש של
postponeEnterTransition()
שיגיע הזמן הקצוב לתפוגה.
גרסה 1.1.0-rc04
7 באוגוסט 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
ו-androidx.fragment:fragment-testing:1.1.0-rc04
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- עכשיו, מקטעים מבטלים בצורה נכונה העברות שנדחו ב-Fragments. (b/138251858)
גרסה 1.1.0-rc03
19 ביולי 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
ו-androidx.fragment:fragment-testing:1.1.0-rc03
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- תוקנה בעיה שבה קריאה ל-
postponeEnterTransition()
עם זמן קצוב לתפוגה יותר מפעם אחת לא הייתה מבטלת חסימות זמניות קודמות. (b/137797118)
גרסה 1.1.0-rc02
17 ביולי 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
ו-androidx.fragment-testing:fragment:1.1.0-rc02
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- תוקנה קריסה ב-
FragmentPagerAdapter
וב-FragmentStatePagerAdapter
במהלך הסרת הפריט הנוכחי. (b/137209870)
גרסה 1.1.0-rc01
2 ביולי 2019
androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
ו-androidx.fragment:fragment-testing:1.1.0-rc01
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- עכשיו החשיפה של מקטעים מתעדכנת באופן תקין במהלך השימוש בפעולות
show()
אוhide()
בזמן שהמעבר מתבצע. (b/133385058) - תוקן
NullPointerException
במהלך פתיחתFragmentTransaction
שנעשה בו שימוש ב-setPrimaryNavigationFragment()
לפניreplace()
. (b/134673465)
גרסה 1.1.0-beta01
5 ביוני 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
ו-androidx.fragment:fragment-testing:1.1.0-beta01
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תיקוני באגים
- קריאות חוזרות (callback) של
androidx.lifecycle.Lifecycle
(קשורות באופן ספציפי ל-STARTED
,RESUMED
,PAUSED
,STOPPED
ול-DESTROYED
) עבור Fragments בתוך רכיב, מוצבות עכשיו כראוי. (b/133497591) - מכונות
OnBackPressedCallback
שנרשמו ב-onCreate()
של Fragment מקבלות עכשיו קדימות באופן תקין על פני הצאצא של FragmentManager. (b/133175997) - מקטעי צאצא כבר לא מונפשים כשמחליפים את מקטע ההורה שלהם. (b/121017790)
- המערכת מתעלמת עכשיו מאנימציות וממעברים של מקטעים במהלך השימוש ב-
animateLayoutChanges="true"
, כדי לתקן בעיה שבה מקטעים לא נהרסו כראוי. (b/116257087)
גרסה 1.1.0-alpha09
16 במאי 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
ו-androidx.fragment:fragment-testing:1.1.0-alpha09
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
שינויים ב-API
- מקטעים מקבלים עכשיו קריאה חוזרת לשיטה
onPrimaryNavigationFragmentChanged(boolean)
חדשה כאשר מקטע הניווט הראשי משתנה. aosp/960857
תיקוני באגים
- פריטים בתפריט שנופחים על ידי מקטע צאצא מוסרים עכשיו כראוי לאחר הסרת מקטע ההורה. b/131581013
גרסה 1.1.0-alpha08
7 במאי 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
ו-androidx.fragment:fragment-testing:1.1.0-alpha08
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
גרסה זו לא תואמת להעדפות מגרסה 1.1.0-alpha01 עד 1.1.0-alpha04. שדרג ל'העדפות' 1.1.0-alpha05 בעת השימוש בגרסה זו של Fragments.
תכונות חדשות
- נוסף עומס יתר חדש של
postponeEnterTransition()
שחולף זמן קצוב לתפוגה, ולאחר מכן המקטע יקרא באופן אוטומטי ל-startPostponedEnterTransition()
b/120803208
שינויים ב-API
- שינוי תוכנה שעלול לגרום לכשלים: הוסרה השיטה
FragmentFactory
instantiate
שהוצאה משימוש, ונמשכהBundle
. aosp/953856 - שינוי תוכנה שעלול לגרום לכשלים: השמות הקבועים
RESUME_ONLY_CURRENT_FRAGMENT
ו-USE_SET_USER_VISIBLE_HINT
ב-FragmentPagerAdapter
וב-FragmentStatePagerAdapter
השתנו ל-BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
ו-BEHAVIOR_SET_USER_VISIBLE_HINT
, בהתאמה. aosp/954782
תיקוני באגים
- מקטעים שמחזור החיים שלהם יוגבל דרך
setMaxLifecycle()
לא יתחדשו יותר לפני שהם מגיעים למצב הסופי. b/131557151 - בעת שימוש ב-
setMaxLifecycle(Lifecycle.State.CREATED)
, התצוגה של Fragments תושמד באופן תקין. aosp/954180
גרסה 1.1.0-alpha07
25 באפריל 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
ו-androidx.fragment:fragment-testing:1.1.0-alpha07
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- עכשיו ניתן להגדיר מצב מקסימלי של מחזור חיים עבור מקטע (Fragment) על ידי קריאה ל-
setMaxLifecycle()
ב-FragmentTransaction
. הגרסה הזו מחליפה אתsetUserVisibleHint()
שהוצא משימוש. ל-FragmentPagerAdapter
ול-FragmentStatePagerAdapter
יש constructor חדש שמאפשר לעבור להתנהגות החדשה. (b/129780800)
שינויים ב-API
- עכשיו אפשר לקרוא לפונקציה
moveToState(STARTED)
ב-FragmentScenario
רק במכשירי API מגרסה 24 ואילך. (b/129880016)
שינויים בהתנהגות
- כתוצאה מ-(b/129907905), מקטעים במקבץ האחורי לא יקבלו קריאה חוזרת אל
onCreateView()
כשתיצור מחדש פעילות האירוח. תתבצע קריאה אלonCreateView()
עכשיו רק כשהמקטע יהיה גלוי (כלומר, הערימה האחורית תקפוץ).
תיקוני באגים
- תוקנה בעיה בשימוש בתג
<fragment>
ב-XML וב-constructor שלcontentLayoutId
שלFragmentActivity
אוAppCompatActivity
. (b/129907905) - תוקנה בעיה שבה מקטעים במקבץ האחורי לא הועברו ל-
CREATED
לפחות לאחר שינוי הגדרה, וכתוצאה מכך לא הוזנו כראוי מקטעים של ViewModels וקטעי צאצא שנשמרו. (b/129593351) - תוקנה קריסה ב-
restoreSaveState
שנגרמה בגלל ביטול הסנכרון של המקטעים שנשמרו אחרי שמצב המכונה נשמר. (b/130433793) (aosp/947824) - תוקנו בעיות שבהן לא הייתה קריאה ל-
OnBackPressedCallback
שנוסף עם מחזור חיים של מקטעים אם ל-FragmentManager
היה מקבץ אחורי. פרטים נוספים זמינים בכתובת androidx.activity 1.0.0-alpha07. (aosp/948209) - אין יותר אכיפה של
LAYER_TYPE_HARDWARE
עבור אנימציות. אם אתם צריכים באופן ספציפי אנימציה של שכבת חומרה, הגדירו אותה כחלק מהאנימציה. (b/129486478)
גרסה 1.1.0-alpha06
3 באפריל 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
ו-androidx.fragment:fragment-testing:1.1.0-alpha06
שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- חריגים ש-FragmentManager מסמנים עכשיו כוללים את שם ה-Fragment בהודעה. (b/67759402)
שינויים ב-API
Fragment
ו-FragmentActivity
מכילים עכשיו בנאי נוסף שלוקח@LayoutRes int
, שמחליף את ההתנהגות הקודמת של הוספת הערות לכיתה ב-@ContentView
. הגישה הזו עובדת גם במודולים של אפליקציות וגם במודולים של ספריות. (b/128352521)onActivityResult()
של FragmentActivity מסומן כמו שצריך כ-@CallSuper
. (b/127971684)- שיטת ה-
instantiate
של Fragmentworks שמקבלת חבילת ארגומנטים הוצאה משימוש, והאפליקציות צריכות להשתמש בעומס היתר החדש שלinstantiate
שלא לוקח חבילה. (b/128836103) - נוספו הערות לשיטות
FragmentScenario
כמו שצריך עם@StyleRes
. (aosp/924193) - האפשרות
FragmentTabHost
הוצאה משימוש. (b/127971835) - בוצעה הסרה של
getThemedContext()
של FragmentActivity. (aosp/934078)
תיקוני באגים
- תוקנה רגרסיה בגרסה 1.1.0-alpha05 שגרמה ל-Fragment הנכנס להבהב על המסך. (b/129405432)
- תוקנה בעיה שבה מקטע הניווט הראשי היה אבד לאחר סדרת פעולות PopBackStack+replace+popBackStack. (b/124332597)
- תוקנה בעיה בשימוש ב-constructor של
@ContentView
בפעילות שלך במהלך שחזור מצב המקטע. (b/127313094) - תוקנה הלוגיקה של
setTargetFragment()
בעת החלפת Fragment יעד קיים ב-Fragment שעדיין לא צורף אל FragmentManager. (aosp/932156)
גרסה 1.1.0-alpha05
13 במרץ 2019
androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
ו-androidx.fragment:fragment-testing:1.1.0-alpha05
שוחררו. הרשימה המלאה של ההתחייבויות שכלולות בגרסה הזו זמינה כאן.
תכונות חדשות
- חיפושי הערות ב-
@ContentView
שמורים עכשיו במטמון (b/123709449)
שינויים בהתנהגות
- קריאה ל-
remove()
,hide()
,show()
,detach()
ול-setPrimaryNavigationFragment()
באמצעות Fragment שמחובר ל-FragmentManager אחר נותנת עכשיוIllegalStateException
במקום להיכשל באופן שקט (aosp/904301)
תיקוני באגים
onNewIntent
עבורFragmentActivity
מסומן עכשיו בצורה נכונה ב-@CallSuper
(b/124120586)- תוקנה בעיה שבה ניתן היה להתקשר פעמיים אל
onDismiss()
שלDialogFragment
כשמשתמשים ב-getDialog().dismiss()
או ב-getDialog().cancel()
(b/126563750)
גרסה 1.1.0-alpha04
7 בפברואר 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
ו-androidx.fragment:fragment-testing 1.1.0-alpha04
שוחררו.
תכונות חדשות
- נוספה תמיכה בהערת המחלקה
@ContentView
שמאפשרת לציין איזה קובץ XML של פריסה צריך לנפח כחלופה להחלפה שלonCreateView()
. מומלץ להציג עבודות קשורות ב-onViewCreated()
. (aosp/837619) fragment-testing
תלוי עכשיו בגרסה יציבה שלandroidx.test:core-ktx
1.1.0 (b/121209673)- עכשיו אפשר להשתמש ב-
openActionBarOverflowOrOptionsMenu
עםFragmentScenario
כדי לבדוק תפריטי אפשרויות שמתארחים ב-Fragment (b/121126668)
שינויים ב-API
- נוספה שיטה
requireArguments()
שמחזירה@NonNull Bundle
או גורמתIllegalStateException
(b/121196360) - נוספה הערה שלפיה אין לבטל את
getLifecycle()
,getViewLifecycleOwner()
ו-getViewLifecycleOwnerLiveData()
. הן יהפכו לסופיות בגרסה עתידית. אם אתם משנים את השיטה הזו, צריך להגיש בקשה להוספת תכונה. (aosp/880714) - נוספה הערה שלפיה אין לבטל את המדיניות
getViewModelStore()
, והנוסחה תהיה סופית בגרסה עתידית. אם אתם משנים את השיטה הזו, צריך להגיש בקשה להוספת תכונה. (aosp/880713) - תוקנה בעיה של תאימות בינארית לגרסאות קודמות של Fragments. (aosp/887877) (aosp/889834)
תיקוני באגים
- מחיקה של מקטעי יעד נמחקים כשמעבירים את
null
אלsetTargetFragment()
. (aosp/849969) - תוקנה בעיה שבה מקטעי יעד לא היו זמינים לפעמים בתוך
onDestroy()
או אחריו. (b/122312935) - הפונקציה onDismiss() ב-DialogFragment מופעלת עכשיו לפני
onDestroy()
. (aosp/874133) (aosp/890734)
גרסה 1.1.0-alpha03
17 בדצמבר 2018
תכונות חדשות
- ב-Fragment מוטמע עכשיו
BundleSavedStateRegistryOwner
ותלוי בספריית savedState שפורסמה [aosp/824380] - נוסף בעל הרשאה לנכס
by activityViewModels
ב-Kotlin כדי לאחזר מודלים של ViewModel שמשויכים לפעילות שמכילה את [b/119050253] - מקבל הגישה לנכס Kotlin עם
by viewModels
הורחב לשימוש בשיטת lambda אופציונלית כדי לקבל אתViewModelStoreOwner
, וכך אפשר להעביר ב-Fragment ההורה אוViewModelStoreOwner
בהתאמה אישית אחר עם קוד כמוval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
שינויים ב-API
FragmentScenario
מאפשר עכשיו לציין עיצוב כמוTheme.AppCompat
[b/119054431]. זהו שינוי תוכנה שעלול לגרום לכשל.- נוספה שיטה
requireView()
שמחזירה@NonNull View
או מקפיצהIllegalStateException
[b/120241368] - נוספה שיטת
requireParentFragment()
שמחזירה@NonNull Fragment
או מקפיצהIllegalStateException
[b/112103783]
תיקוני באגים
- תוקן מצב DisallowStateError: שמירת המצב b/120814739 נכשלה
- מעכשיו, מקטעים שמשחזרים ממצב של מכונה שמורה יקבלו תמיד ערך של
Bundle
שאינו null [b/119794496] - לאחר ההוספה מחדש, מקטעים שהוסרו לא ישתמשו יותר באובייקט
Lifecycle
אם הם נוספו מחדש [b/118880674]
גרסה 1.1.0-alpha02
3 בדצמבר 2018
תכונות חדשות
- עכשיו תוספי Kotlin של FragmentScenario מאפשרים להשתמש ב-lambda לבניית Fragment, כחלופה למעבר במכונה של
FragmentFactory
. (aosp/812913)
תיקוני באגים
- תוקן מצב DisallowStateError בשימוש במקטעים בתוך מקטעים במקבץ האחורי (b/119256498)
- תוקנה קריסה במהלך השימוש ב-
FragmentScenario.recreate()
עםFragmentFactory
(aosp/820540) - תוקנה בעיה שבה לא הייתה גישה למקטעי יעד אחרי הסרת ה-Fragment (aosp/807634)
גרסה 1.1.0-alpha01
5 בנובמבר 2018
זו המהדורה הראשונה של
פריט מידע אחד (fragment-testing
) ו-FragmentScenario
, שבנוי על
ממשקי API של androidx.test:core. פרטים נוספים זמינים במסמכי התיעוד בנושא בדיקת מקטעים.
תכונות חדשות
- מחלקה חדשה של FragmentScenario לבדיקת Fragments באופן מבודד.
- עכשיו אפשר להגדיר
FragmentFactory
בכלFragmentManager
כדי לקבוע איך נוצרים מופעים חדשים של Fragment. - נוסף נציג מורשה חדש לנכס ב-
by viewModels()
Kotlin לאחזור הצגת מודלים ממקטע. - אירועי קלט בהמתנה (כגון קליקים) מבוטלים כעת במקטע
onStop()
שינויים ב-API
- הרחבה משמעותית של הערות יכולת ה-null ב-Fragment API פלטפורמה.
תיקוני באגים
- תיקון בעיה שגרמה לכשלים של פעולות Fragment בתוך LiveData (b/77944637)
בעיות מוכרות
- לא ניתן לגשת למקטעי יעד לאחר הסרת מקטע FragmentManager.
fragment-testing
תלוי ב-androidx.test:core:1.0.0-beta01
במקום נכוןandroidx.test:core:1.0.0
.