מקטע (fragment)
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 17 ביוני 2026 | 1.8.9 | - | - | 1.9.0-alpha01 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Fragment, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { def fragment_version = "1.8.9" // 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.9" // 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. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 1.9
גרסה 1.9.0-alpha01
17 ביוני 2026
androidx.fragment:fragment-*:1.9.0-alpha01 מופץ. גרסה 1.9.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- ה-Fragment מטמיע עכשיו את הממשק
ContextAwareואפשר להשתמש בו כדי להריץ קוד כשה-Fragment מצורף. (I38019, b/477255355)
תיקוני באגים
- תוקן קראש ב-Fragment שנגרם כששולחים את הפעילות לרקע במהלך חיזוי תנועת החזרה. (I55734, b/389589678)
- הכלי UnsafeFragmentLifecycleObserverDetector לא פועל יותר במסגרת הקומפוזיציה. (Ic4176, b/501504696)
- [From Fragment 1.8.9] תוקנה בעיה שבה ביטול של חיזוי תנועת החזרה שגורמת להפעלת פעולת הסתרה, גורם לכך שהתנועה הבאה לא מונפשת בצורה תקינה כשמשתמשים באנימטורים. (I0a400, b/384765586)
- [From Fragment 1.8.9] Fixed an error where a combination of setMaxLifecycle and popBackStack could fail to move the top fragment to RESUMED. (I3448b, b/406127576)
- [From Fragment 1.8.8] תוקנה בעיה שבה FragmentManager היה קורס בניסיון לשמור את המצב של Fragments שנוספו באמצעות
setMaxLifecycle(Lifecycle.State.INITIALIZED). הקטעים האלה, שלא עברו דרךonCreate(), כבר לא כוללים מצב שמור או קריאה שלonSaveInstanceState(). (I6e37a, b/408163315) - [From Fragment 1.8.7] Fixed an issue with FragmentManager no being in the proper state after pop and replace operations in the same frame that could cause a crash in conjunction with predictive back. (I50ad1, b/380288461)
- [From Fragment 1.8.6] FragmentContainerView's
setOnApplyWindowInsetsListeneroverride now takes a null listener. (I575f0, b/282790626) - [From Fragment 1.8.5] Fixed an
IllegalStateExceptiontriggered bysaveBackStackonly after a חיזוי תנועת החזרה gesture was cancelled or interrupted. (I3387d, b/342419080) - [From Fragment 1.8.4] Fixed an
UninitializedPropertyAccessExceptioninAndroidFragmentwhen dynamically swapping out the Class yourAndroidFragmentinstance is using. (I12dea, b/365578408) - [From Fragment 1.8.4] תוקנה בעיה שבה לחיצה מהירה על לחצן החזרה של המערכת או ביצוע תנועת חזרה מהירה גורמים לקריסת רכיבי Fragment. (Ibc038, b/364804225, b/364914301)
- [From Fragment 1.8.4] Fixed an issue in fragments where interrupting a predictive back gesture would send the fragment manager into an undefined state and even up showing the wrong fragment. (If82e2, b/338624457)
- [From Fragment 1.8.3]
AndroidFragmentno longer crashes if it is added to composition while the containing activity/fragment's state is already saved. (I985e9, b/356643968) - [From Fragment 1.8.2] Triggering a system back while the FragmentManager has pending operations will no longer cause an out of bound exception. (I9ba32, b/342316801)
- [From Fragment 1.8.2]
AndroidFragmentnow properly handles cases where the parent fragment is put on the Fragment back stack, avoiding 'No view found for id' issues when popping back to that fragment. (I94608, b/347706985) - [From Fragment 1.8.2] Fragments added via the
FragmentTransaction.addmethod that takes aViewGroupnow wait foronContainerAvailablebefore progressing toonStart(). השינוי הזה משפיע על משתמשים ב-API הזה, כמוAndroidFragment, שעכשיו מחכה ש-AndroidFragmentייכנס מחדש לחיבור לפני שהוא מעביר אותו דרךonStart(). (I94608, b/347706985) - [From Fragment 1.8.1] תוקנה בעיה שבה קטע ללא מאגר הושמד באופן מיידי כשמתחילים תנועת חזרה עם חיזוי. (If6b83, b/345244539)
External Contribution
- מיזוג fragment-ktx לספריית fragment. כל התוספים של Kotlin הם עכשיו חלק מארטיפקט הפרגמנט הראשי. fragment-ktx הוא עכשיו ארטיפקט ריק לצורך תאימות. תודה, Jake Wharton! (Idabaa)
גרסה 1.8
גרסה 1.8.9
13 באוגוסט 2025
androidx.fragment:fragment-*:1.8.9 מופץ. גרסה 1.8.9 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שבה ביטול של חיזוי תנועת החזרה שפותחת פעולת הסתרה גורם לכך שהתנועה הבאה לא מונפשת בצורה תקינה כשמשתמשים באנימטורים. (I0a400, b/384765586)
- תוקנה שגיאה שבה שילוב של
setMaxLifecycleו-popBackStackעלול לגרום לכך שהקטע העליון לא יועבר למצב RESUMED. (I3448b, b/406127576)
גרסה 1.8.8
4 ביוני 2025
androidx.fragment:fragment-*:1.8.8 מופץ. גרסה 1.8.8 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שגרמה לקריסה של
FragmentManagerבניסיון לשמור את המצב של רכיבי Fragment שנוספו באמצעותsetMaxLifecycle(Lifecycle.State.INITIALIZED). הפרגמנטים האלה, שלא עברו אף פעםonCreate(), כבר לא כוללים מצב שמור אוonSaveInstanceState(). (I6e37a)
גרסה 1.8.7
20 במאי 2025
androidx.fragment:fragment-*:1.8.7 מופץ. גרסה 1.8.7 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך ש-
FragmentManagerלא היה במצב המתאים אחרי פעולות של שליפה והחלפה באותו פריים, שיכולה לגרום לקריסה בשילוב עם שליפה של היסטוריית הדפים באמצעותpopBackStackאו חיזוי תנועת החזרה. (I50ad1) - תוקנה קריסה שנגרמה כתוצאה משימוש ב-AndroidX Transitions ומכניסה למצב שבו ניסיונות מהירים רצופים של טרנזקציות של פרגמנטים מבטלים מעבר שלא התחיל, וספריית AndroidX Transition לא מנקה את מצב המעבר כמו שצריך. (ראו b/414612221). (Ib5235)
גרסה 1.8.6
12 בפברואר 2025
androidx.fragment:fragment-*:1.8.6 מופץ. גרסה 1.8.6 מכילה את השמירות האלה.
תיקוני באגים
- ההחלפה של
FragmentContainerViewב-setOnApplyWindowInsetsListenerמקבלת עכשיו מאזין null, בהתאם למה שהמסגרת מאפשרת. (I575f0, b/282790626)
גרסה 1.8.5
30 באוקטובר 2024
androidx.fragment:fragment-*:1.8.5 מופץ. גרסה 1.8.5 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג
IllegalStateExceptionשמופעל על ידיsaveBackStackרק אחרי שמבטלים או מפריעים לתנועת החלקה לחיזוי חזרה. (I3387d, b/342419080)
גרסה 1.8.4
2 באוקטובר 2024
androidx.fragment:fragment-*:1.8.4 מופץ. גרסה 1.8.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה לחיצה מהירה על הכפתור "הקודם" של המערכת או ביצוע מהיר של תנועת החזרה גורמים לקריסת רכיבי Fragments כשמשתמשים במעברים של Androidx. (Ibc038, b/364804225)
- תוקנה בעיה בקטעי קוד שבה הפרעה לתנועת חזרה ניבויית גרמה למנהל קטעי הקוד להיכנס למצב לא מוגדר, ואפילו להציג את קטע הקוד הלא נכון. (If82e2, b/338624457)
- תוקן באג
UninitializedPropertyAccessExceptionב-AndroidFragmentכשמחליפים באופן דינמי את המחלקה שמופעAndroidFragmentמשתמש בה. (I12dea)
גרסה 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מטפל עכשיו כמו שצריך במקרים שבהם קטע האב מועבר אל מקבץ הפעילויות הקודמות (back stack) של Fragment, וכך נמנעות בעיות מסוג 'לא נמצאה תצוגה למזהה' כשחוזרים לקטע הזה. (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
- ארטיפקט
fragment-composeמכיל עכשיוAndroidFragmentComposableשמאפשר להוסיף מקטעים להיררכיית Compose באמצעות שם המחלקה של המקטע. הוא מטפל אוטומטית בשמירה ובשחזור של מצב ה-Fragment. השיטה הזו אמורה לשמש כתחליף ישיר לגישה המומלצת הקודמת של שימוש ב-AndroidViewBindingכדי להרחיב Fragment. - הקריאה החוזרת (callback) של
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, ולכן היא קרובה יותר לתזמון של הקריאה החוזרת (callback) של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: מעכשיו, התכונה 'חזרה עם אנימציה' תפעל רק בעסקאות שבהן לכל הפרגמנטים יש Animator או Seekable Androidx Transition. תוקנה בעיה שבה ביטול של עסקה שאפשרה חיפוש חלקי גרם להצגת מסך שחור. (I43037, b/339169168)
גרסה 1.8.0-alpha02
17 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha02 מופץ. גרסה 1.8.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- מתוך Fragment
1.7.0-rc02: נוספו יומנים שמציינים למה הגדרה שלsharedElementבלי מעברים אחרים לא תפעל. (Iec48e) - מ-Fragment
1.7.0-rc02: תוקן באג שגרם לקריסה אם נוסף רכיב משותף שלא ניתן להעברה לעסקאות שכל המעברים האחרים בהן ניתנים להעברה. עכשיו הטרנזקציה תיחשב כטרנזקציה שלא ניתן לחפש בה. (I18ccd)
גרסה 1.8.0-alpha01
3 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha01 מופץ. גרסה 1.8.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- התג החדש
AndroidFragmentComposableמאפשר להוסיף קטעים להיררכיית הכתיבה באמצעות שם המחלקה של הקטע. הוא מטפל אוטומטית בשמירה ובשחזור של מצב ה-Fragment. אפשר להשתמש ב-API הזה כתחליף ישיר ל-AndroidViewBindingComposable.(b/312895363, Icf841)
שינויים במסמכי התיעוד
- עדכנו את התיעוד של ממשקי ה-API של
OnBackStackChangedListenerכדי לציין מתי מתבצעת קריאה לממשקי ה-API האלה ואיך צריך להשתמש בהם. (I0bfd9)
עדכון תלות
- ה-Fragment תלוי עכשיו ב-Profile Installer 1.3.1.
גרסה 1.7
גרסה 1.7.1
14 במאי 2024
androidx.fragment:fragment-*:1.7.1 מופץ. גרסה 1.7.1 מכילה את השמירות האלה.
תיקוני באגים
- מעכשיו, התכונה 'חזרה עם חיזוי' תפעל רק עבור טרנזקציות שבהן לכל הפרגמנטים יש Animator או Seekable Androidx Transition. העדכון הזה פותר בעיה שבה ביטול של עסקה שאפשרה דילוג חלקי גרם למסך ריק. (I43037, b/339169168)
גרסה 1.7.0
1 במאי 2024
androidx.fragment:fragment-*:1.7.0 מופץ. גרסה 1.7.0 מכילה את השמירות האלה.
תמיכה בחיזוי תנועת החזרה
- מעכשיו, רכיבי Fragment תומכים בתכונה 'חזרה לאחור באפליקציה עם אנימציה מקדימה' כשמשתמשים ב-
Animatorאו כשמשתמשים ב-AndroidX Transition 1.5.0. כך המשתמשים יכולים להשתמש בתנועת החלקה אחורה כדי לראות את הקטע הקודם על ידי חיפוש של Animator/Transition לפני שהם מחליטים אם לאשר את העסקה באמצעות השלמת התנועה או לבטל אותה.
| מערכת מעבר | מקור מידע בפורמט XML | תמיכה בחיזוי החזרה |
|---|---|---|
Animation |
R.anim |
לא |
Animator |
R.animator |
כן |
Framework Transition |
R.transition |
לא |
AndroidX Transition עם Transition 1.4.1 או גרסה קודמת |
R.transition |
לא |
AndroidX Transition עם Transition 1.5.0 |
R.transition |
כן |
אם נתקלתם בבעיות בתמיכה בתנועת החזרה החזויה ב-Fragments אחרי שהפעלתם את תנועת החזרה החזויה, אתם מוזמנים לדווח על בעיה ב-Fragment ולצרף פרויקט לדוגמה שבו הבעיה משתחזרת. אפשר להשבית את התכונה 'חזרה חזויה' באמצעות FragmentManager.enabledPredictiveBack(false) בonCreate() של הפעילות.
FragmentManager.OnBackStackChangedListener() מספק עכשיו את onBackStackChangeProgressed() ו-onBackStackChangeCancelled() כדי לקבל אירועים של התקדמות אחורה וביטול בהתאמה.
Fragment Compose Artifact
נוצר ארטיפקט חדש של fragment-compose שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על Fragment לארכיטקטורה שמבוססת באופן מלא על Compose.
התכונה הראשונה שזמינה בארטיפקט החדש הזה היא 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 מכילה את השמירות האלה.
עדכון תלות
- ה-Fragment תלוי עכשיו ב-Profile Installer 1.3.1.
גרסה 1.7.0-beta01
20 במרץ 2024
androidx.fragment:fragment-*:1.7.0-beta01 מופץ. גרסה 1.7.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הפונקציה
FragmentHostCallbackנכתבת עכשיו ב-Kotlin, כך שהמאפיין המציין אם ערך יכול להיות ריק (nullability) של הסוג הגנרי של Host זהה למאפיין המציין אם ערך יכול להיות ריק של סוג ההחזרה שלonGetHost(). (I40af5)
תיקוני באגים
- תוקנה בעיה שבה כשמבצעים חיזוי תנועת החזרה במקטע שלא נמצא במאגר, המקטע הזה אף פעם לא נמחק. הקטע יועבר עכשיו באופן מיידי למצב הסופי. (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 Transition, Fragments היה מציגNullPointerExceptionמ-handleOnBackProgressedאם אף פעם לא נוסףFragmentManager.OnBackStackChangedListenerבאמצעותaddOnBackStackChangedListener. (I7c835)
גרסה 1.7.0-alpha09
24 בינואר 2024
androidx.fragment:fragment-*:1.7.0-alpha09 מופץ. גרסה 1.7.0-alpha09 מכילה את השמירות האלה.
Fragment Compose Artifact
נוצר ארטיפקט חדש של fragment-compose שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על Fragment לארכיטקטורה שמבוססת באופן מלא על Compose.
התכונה הראשונה שזמינה בארטיפקט החדש הזה היא 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 Transition, Fragments יפעילNullPointerExceptionמ-handleOnBackProgressedאם אף פעם לא נוסףFragmentManager.OnBackStackChangedListenerבאמצעותaddOnBackStackChangedListener. הוספה ידנית של מאזין תפתור את הבעיה. התיקון יהיה זמין בגרסה הבאה של Fragments.
גרסה 1.7.0-alpha08
10 בינואר 2024
androidx.fragment:fragment-*:1.7.0-alpha08 מופץ. גרסה 1.7.0-alpha08 מכילה את השמירות האלה.
פינוי נפח
- הוסר פתרון עקיף לספריית Transition שתוקן ב-Transition
1.5.0-alpha06. (I04356)
גרסה 1.7.0-alpha07
29 בנובמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha07 מופץ. גרסה 1.7.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג
NullPointerExceptionשנגרם כתוצאה מהגדרת מעבר של רכיב משותף בלי להגדיר גם enter/exitTransition. (I8472b) - מ-Fragment
1.6.2: כשמבצעים ניפוח של Fragment שלFragmentContainerView, המצבים שלו כמוFragmentManager, Host ו-id נגישים עכשיו בקריאה החוזרתonInflate. (I1e44c, b/307427423) - מתוך Fragment
1.6.2: כשמשתמשים ב-clearBackStackכדי להסיר קבוצה של Fragment, כל Fragment מוטמעViewModelינוקה עכשיו כשמנקים אתViewModelsשל ה-Fragment ברמה העליונה. (I6d83c, b/296173018)
גרסה 1.7.0-alpha06
4 באוקטובר 2023
androidx.fragment:fragment-*:1.7.0-alpha06 מופץ. גרסה 1.7.0-alpha06 מכילה את השמירות האלה.
עדכון תלות
- העדכנו את Fragments כך שיסתמך על ה-API החדש
animateToStartשנוסף ב-Transition1.5.0-alpha04.
גרסה 1.7.0-alpha05
20 בספטמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha05 מופץ. גרסה 1.7.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- מעכשיו, כשמשתמשים במעברים של Androidx, יש תמיכה ב-Fragments בתכונה 'חיזוי החזרה'. כך אפשר להשתמש בתנועת החלקה אחורה כדי לעבור לקטע הקודם עם המעבר המותאם אישית של 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)
- תוקנה בעיה שמתרחשת כשמשתמשים בתכונה 'חיזוי החזרה' עם מקטעים (fragments), וניסיון לחזור פעמיים ברצף מהיר במקטע (fragment) השני לפני האחרון במקבץ הפעילויות הקודמות (back stack) גורם לקריסה. (Ifa1a4)
גרסה 1.7.0-alpha03
23 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha03 מופץ. גרסה 1.7.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שקשורה ל-Fragments כשמשתמשים בתכונה 'חיזוי החזרה'. הבעיה גרמה לכך שהמערכת דילגה על ה-Fragment הראשון במקבץ פעילויות קודמות (back stack) של מנהל ה-Fragment, וה-Activity הסתיימה כשמשתמשים בתכונה 'הקודם' של המערכת באמצעות ניווט ב-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 מכילה את השמירות האלה.
תיקוני באגים
- כשמבצעים ניפוח של Fragment של
FragmentContainerView, המצבים שלו כמוFragmentManager, Host ו-id נגישים עכשיו בקריאה החוזרתonInflate. (I1e44c, b/307427423) - כשמשתמשים ב-
clearBackStackכדי להסיר קבוצה של רכיבי Fragment, הערכים שלViewModelשל רכיבי Fragment מוטמעים ינוקו עכשיו כשערכיViewModelsשל רכיב ה-Fragment הראשי ינוקו. (I6d83c, b/296173018)
גרסה 1.6.1
26 ביולי 2023
androidx.fragment:fragment-*:1.6.1 מופץ. גרסה 1.6.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך שהמצב השמור שנשמר כשהפעילות הופסקה אבל לא נהרסה נשמר במטמון באופן שגוי גם אחרי שמופע השבר הועבר חזרה למצב
RESUMED. אם מופעל ה-API של כמה מקבצי פעילויות קודמות (back stack) כדי לשמור את המקטע (fragment) הזה ולשחזר אותו, המצב שנשמר במטמון ישמש שוב אם מופעלת מופע המקטע (fragment) הזה במקבץ הפעילויות הקודמות (back stack). (I71288, b/246289075)
עדכון תלות
- ה-Fragment תלוי עכשיו ב-Activity 1.7.2. התיקון הזה פותר בעיה שבה משתמשי Kotlin לא יכלו להרחיב את
ComponentDialogבלי תלות מפורשת ב-Activity. (b/287509323)
גרסה 1.6.0
7 ביוני 2023
androidx.fragment:fragment-*:1.6.0 מופץ. גרסה 1.6.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.5.0
- המצב השמור של
Fragments פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקותParcelableבהתאמה אישית) לבין מצב שסופק על ידי המפתח, שמאוחסן עכשיו תמיד ב-Bundleשמאפשר לקבוע בדיוק מאיפה מגיע המצב של fragment. - הממשק
FragmentManager.OnBackStackChangedListenerהורחב עם שתי קריאות חוזרות (callback) נוספות שלonBackStackChangeStartedו-onBackStackChangeCommittedשמופעלות עם כלFragmentממש לפני שהן מתווספות או מוסרות ממקבץ הפעילויות הקודמות (back stack) של המקטע (fragment), וממש אחרי שהטרנזקציה מאושרת, בהתאמה. -
FragmentStrictModeנוסףWrongNestedHierarchyViolationחדש שמזהה מתי שבר צאצא מוטמע בהיררכיית התצוגה של ההורה, אבל לא נוסף ל-childFragmentManagerשל ההורה. - ממשקי ה-API
Fragmentו-FragmentManagerשמקבליםIntentאוIntentSenderמסומנים עכשיו בצורה נכונה באמצעות@NonNullכדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API המתאימים של Android framework שהשיטות האלה קוראות להם. -
DialogFragmentAPI מאפשר עכשיו גישה ל-ComponentDialogהבסיסי באמצעותrequireComponentDialog()API. - הפרגמנט תלוי עכשיו ב-Lifecycle
2.6.1. - הפרגמנט תלוי עכשיו ב-SavedState
1.2.1. - הקטע (fragment) תלוי עכשיו ב-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) - תוקנה בעיה שבה קריאות החזרה (callbacks) של
onBackStackChangeListenerנשלחו לעסקאות שלא שינו בפועל את מקבץ הפעילויות הקודמות (back stack), אם הן שולבו עם עסקאות שכן שינו אותו. (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
-
DialogFragmentAPI מספק עכשיו גישה ל-ComponentDialogהבסיסי באמצעותrequireComponentDialog()API. (I022e3, b/234274777) - הוספנו אנוטציות ל-API של
commitNow(),executePendingTransactions()ו-popBackStackImmediate()עם@MainThread, כלומר עכשיו הם יקפיצו שגיאות build אם לא יתבצעו קריאות ל-API מה-Thread הראשי, במקום לחכות עד שהם ייכשלו בזמן הריצה. (Ic9665, b/236538905)
תיקוני באגים
- תוקן באג ב-
FragmentManagerשבו שמירה ושחזור באותו פריים עלולים לגרום לקריסה. (Ib36af, b/246519668) - הפונקציות
OnBackStackChangedListeneronBackStackChangeStartedו-onBackStackChangeCommittedשל קריאות חוזרות מופעלות עכשיו רק כשמבצעים שינוי במקבץ הפעילויות הקודמות (back stack)FragmentManager. (I66055, b/274788957)
גרסה 1.6.0-alpha08
22 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha08 מופץ. גרסה 1.6.0-alpha08 מכילה את השמירות האלה.
שינוי בהתנהגות
- התזמון של
OnBackStackChangedListener.onBackStackChangeCommitedcallback שונה כך שהוא יופעל לפני הפעלת פעולות של fragment. כך אפשר לוודא שהקריאה החוזרת אף פעם לא תעביר קטע שנותק. (I66a76, b/273568280)
תיקוני באגים
- Fragment
1.5.6: תוקנה בעיה שבה קריאה ל-clearFragmentResultListenerבתוךsetFragmentResultListenerלא פעלה אםLifecycleכבר היהSTARTEDוהתוצאה כבר הייתה זמינה. (If7458)
עדכונים של תלות
- הפרגמנט תלוי עכשיו ב-Lifecycle
2.6.1. (586fe7) - הפרגמנט תלוי עכשיו ב-SavedState
1.2.1. (078e4e) - הקטע (fragment) תלוי עכשיו ב-ProfileInstaller
1.3.0. (3fc05b)
גרסה 1.6.0-alpha07
8 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha07 מופץ. גרסה 1.6.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- מתוך Fragment
1.5.6: תוקנה בעיה שבה הסרה של Fragment כלשהו, בין אם נוספו לו פריטים בתפריט ובין אם לא, הייתה מבטלת את התוקף של התפריט של הפעילות. (50f098, b/244336571)
גרסה 1.6.0-alpha06
22 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha06 מופץ. גרסה 1.6.0-alpha06 מכילה את השמירות האלה.
שינוי בהתנהגות
- הקריאה החוזרת החדשה
onBackStackChangedStartedב-FragmentManagerשלonBackStackChangedListenerתופעל עכשיו לפני שהפרגמנטים יתחילו לעבור למצבי היעד שלהם. (I34726)
גרסה 1.6.0-alpha05
8 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha05 מופץ. גרסה 1.6.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- ממשק
FragmentManager.OnBackStackChagnedListenerכולל עכשיו שתי פונקציות קריאה חוזרת נוספות,onBackStackChangeStartedו-onBackStackChangeCommitted, שמאפשרות לקבל מידע נוסף ולשלוט יותר בשינויים שמתרחשים במקבץ הפעילויות הקודמות (back stack) ב-FragmentManager. (Ib7ce5, b/238686802)
שינויים ב-API
- ממשקי ה-API
Fragmentו-FragmentManagerשמקבליםIntentאוIntentSenderמסומנים עכשיו בצורה נכונה באמצעות@NonNullכדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API המתאימים של Android framework שהשיטות האלה קוראות להם. (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)
תיקוני באגים
- מתוך Fragment
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, עכשיו נדרש להפעיל את הפונקציה super בביטולי ברירת המחדל שלonDismiss(). (I14798, b/238928865)
תיקוני באגים
- תוקנו רגרסיות שנגרמו כתוצאה מהשילוב של ממשקי ה-callback החדשים של הספק (
OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) כדי להבטיח שהפרגמנטים תמיד יקבלו את ה-callbacks המתאימים. (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 מכילה את השמירות האלה.
תיקוני באגים
- From Fragment
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 מכילה את השמירות האלה.
שינויים בהתנהגות
- המצב השמור של
Fragments פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקותParcelableבהתאמה אישית) לבין מצב שסופק על ידי המפתח, שמאוחסן עכשיו תמיד ב-Bundleשמאפשר לקבוע בדיוק מאיפה מגיע המצב של fragment. (b/207158202)
תיקוני באגים
- מתוך Fragment
1.5.1: תוקנה רגרסיה ב-DialogFragmentCallbacksDetectorשבה שימוש בגרסת ה-lint שצורפה ל-AGP 7.4 גרם לקריסת ה-lint. (b/237567009)
עדכון תלות
- Fragment
1.5.1: הספרייה Fragment תלויה עכשיו ב-Lifecycle2.5.1. (Id204c) - מ-Fragment
1.5.1: ספריית Fragment תלויה עכשיו ב-Activity1.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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שבה הסרה של Fragment כלשהו, גם אם הוא לא הוסיף פריטים לתפריט, גרמה לביטול התפריט של הפעילות. (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בהתאמה אישית עם מארח שלא מטמיע ממשק של קריאה חוזרת (callback) של ספק (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) וקריאה לפונקציית השליחה (dispatch) שהוצאה משימוש, גורמים לכך שהשליחה לא מתבצעת לשברי צאצא. (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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה שגיאה שגרמה לקטעים במקבץ הפעילויות הקודמות (back stack) לקבל החזרות (callbacks) של
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שבה שימוש בגרסת ה-lint שצורפה ל-AGP 7.4 גרם לקריסת ה-lint. (b/237567009)
עדכון תלות
- ספריית Fragment תלויה עכשיו ב-Lifecycle
2.5.1. (Id204c) - ספריית Fragment תלויה עכשיו ב-Activity
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 Integration – ל-
Fragmentיש עכשיו אפשרות לספקViewModelProvider.Factoryבלי שמירת מצב דרךCreationExtrasשל Lifecycle2.5.0. - שילוב של רכיבי דיאלוג – מעכשיו,
DialogFragmentמשתמש ב-ComponentDialogדרך Activity1.5.0בתור תיבת הדו-שיח שמוחזרת כברירת מחדל על ידיonCreateDialog(). - שינוי מבנה של מצב שמירת המופע – התחילו שינויים באופן שבו רכיבי Fragment שומרים את מצב המופע שלהם. המטרה היא לעזור לכם לזהות בבירור את המצב שנשמר ב-fragment ואת המקור של המצב. השינויים הנוכחיים כוללים:
-
FragmentManagerשומר עכשיו את מצב המופע השמור שלו ב-Bundleבמקום ישירות ב-Parcelableבהתאמה אישית. - תוצאות שמוגדרות באמצעות
Fragment Result APIsועדיין לא נמסרו נשמרות עכשיו בנפרד מהמצב הפנימי שלFragmentManager. - המצב שמשויך לכל פרגמנט בודד נשמר עכשיו בנפרד מהמצב הפנימי של
FragmentManager, וכך אפשר לקשר בין כמות המצב השמור שמשויכת לפרגמנט בודד לבין המזהים הייחודיים שמופיעים ביומן הניפוי באגים שלFragment.
-
שינויים אחרים
- ב-
FragmentStrictModeיש עכשיו אפשרות לעקוף קנסות ספציפיים על הפרות של כללים באמצעותallowViolation()עם שם המחלקה. - ממשקי ה-API של Fragment שנועדו לספק תפריט ל-
ActionBarשל הפעילות הוצאו משימוש. ממשקי ה-APIMenuHostו-MenuProviderשנוספו ב-Activity1.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 מכילה את השמירות האלה.
Saved Instance State Refactoring
- המצב שמשויך לכל מקטע בודד נשמר עכשיו בנפרד מהמצב הפנימי של
FragmentManager, וכך אפשר לקשר בין כמות המצב השמור שמשויכת למקטע בודד לבין המזהים הייחודיים שמופיעים ביומן ניפוי הבאגים של Fragment. (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הוסיפה method חדשdismissNowשמשתמש ב-commitNowכדי ליצור שוויון עם הפונקציהshowNow. הערה: הפעולה הזו לא תגרום להסרתDialogבאופן מיידי, אלא רק תעדכן באופן סינכרוני את המצב שלFragmentManager. (I15c36, b/72644830)
Saved Instance State Refactoring
-
FragmentManagerשומר עכשיו את מצב המופע השמור שלו ב-Bundleבמקום ישירות ב-Parcelableבהתאמה אישית. זהו השלב הראשון בהגברת השקיפות לגבי מה שנשמר בפועל על ידי Fragments. (I93807, b/207158202) - תוצאות שמוגדרות באמצעות ממשקי ה-API של Fragment Result ושעדיין לא נמסרו נשמרות עכשיו בנפרד מהמצב הפנימי של
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 החדשים של התפריטים, כמו שמתואר בהערות הגרסה של Fragment1.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של הפעילות, כי הם יוצרים קשר הדוק בין ה-Fragment לבין הפעילות ולא ניתן לבדוק אותם בנפרד. ממשקי ה-APIMenuHostו-MenuProviderשנוספו ב-Activity1.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)
תיקוני באגים
- מ-Fragment
1.4.1:FragmentContainerViewלא מוצגות יותר חריגות של מצב לא חוקי כשמזהי תצוגות שנוצרו מ-XML כוללים ערכים שליליים. (Ic185b, b/213086140) - מ-Fragment
1.4.1: כשמשתמשים ב-lambda מותאם אישיתownerProducerעם הפונקציהby viewModels()lazy, המערכת תשתמש עכשיו ב-defaultViewModelProviderFactoryמהבעלים הזה אם לא סופקViewModelProvider.Factoryמותאם אישית, במקום להשתמש תמיד ב-factory של ה-fragment. (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מותאם אישית, במקום להשתמש תמיד ב-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וגם על כל מנהלי קטעי ה-Fragment של יחידות-בת שלא מגדירים מדיניות ייחודית משלהם. מידע נוסף זמין במאמר בנושא StrictMode למקטעים.
FragmentContainerViewמספק עכשיו methodgetFragment()שמחזירה את הפריט שהתווסף לאחרונה למאגר. הלוגיקה של הפעולה הזו זהה ללוגיקה שלfindFragmentById()עם המזההFragmentContainerView, אבל היא מאפשרת שרשור של הקריאה.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenarioמטמיע עכשיו אתCloseable, כך שאפשר להשתמש בו עם ה-method useשל Kotlin או עם try-with-resources.נוספה
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}כדי לציין אם להפעיל את אנימציית המעבר הרגילה של הפעילות שנלקחה מהעיצוב שלכם במעבר של Fragments.הסרנו את ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean), ועכשיו מנהל המצבים החדש הוא האפשרות היחידה שזמינה.
Multiple back stacks
FragmentManager שומרת מקבץ פעילויות קודמות (back stack) המורכב מטרנזקציות של fragment שבהן נעשה שימוש ב-addToBackStack(). כך אפשר להוציא את העסקאות האלה ולהחזיר את המצב הקודם, באמצעות המנגנונים של שמירת מצב באמצעות רכיבי Fragment כדי לאפשר לרכיבי ה-Fragment לשחזר את המצב שלהם בצורה מתאימה.
בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שלושה ממשקי API חדשים: FragmentManager, saveBackStack(String name) ו-restoreBackStack(String name).clearBackStack(String name) ממשקי ה-API האלה משתמשים באותו name כמו addToBackStack() כדי לשמור את המצב של FragmentTransaction ואת המצב של כל מקטע שנוסף בעסקאות האלה, וכדי לאפשר לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב המקורי שלהם. כך אפשר 'להחליף' ביעילות בין כמה מקבצי פעילויות קודמות (back stack) על ידי שמירת מקבץ הפעילויות הקודמות (back stack) הנוכחי ושחזור מקבץ פעילויות קודמות (back stack) שמור.
saveBackStack() פועלת באופן דומה ל-popBackStack() בכך שהיא אסינכרונית וגורמת לכל העסקאות של המקטעים שקשורות לשם הספציפי הזה להתבטל ('popped') ולכל המקטעים שנוספו להימחק ולהיפטר מהם, אבל יש כמה הבדלים חשובים:
- הערך
saveBackStack()תמיד כולל. - בניגוד ל-
popBackStack(), שיוציא את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציהsaveBackStack()לא תעשה כלום אם לא ביצעתם בעבר עסקת פרגמנט באמצעותaddToBackStack()עם אותו שם מדויק שאינו null. - המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט נשמר, הפונקציה
onSaveInstanceState()של כל פרגמנט נקראת והמצב משוחזר, וכל מופע שלViewModelשמשויך לפרגמנטים האלה נשמר (והפונקציהonCleared()לא נקראת לגביהם).
עסקאות חלקיות שאפשר להשתמש בהן עם saveBackStack() צריכות לעמוד בקריטריונים מסוימים:
- כל עסקה של שבר חייבת להשתמש ב-
setReorderingAllowed(true)כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת. - כדי להבטיח שאפשר יהיה לשחזר את קבוצת הטרנזקציות בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במקבץ פעילויות קודמות (back stack) בזמן שחלף, קבוצת הטרנזקציות שנשמרת צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת למקטעים (fragments) מחוץ לקבוצת הטרנזקציות הזו).
- כדי לוודא ש-
FragmentManagerלא מחזיר הפניות לשברירים שנשמרו אחרי שמקבץ פעילויות קודמות (back stack) נשמר, אף שבריר שנשמר לא יכול להיות שבריר שנשמר או לכלול שבריר שנשמר בקבוצת השברירים הנגזרת שלו.
בדומה ל-saveBackStack(), ל-restoreBackStack() ול-clearBackStack(), שמשחזרים או מוחקים בהתאמה את מקבץ הפעילויות הקודמות (back stack) שנשמר, גם הפונקציות האלה לא עושות כלום אם לא קראתם קודם ל-saveBackStack() עם אותו שם.
מידע נוסף זמין במאמר Multiple back stacks: A deep dive (מספר ערימות של היסטוריית חזרה: ניתוח מעמיק).
גרסה 1.4.0-rc01
3 בנובמבר 2021
androidx.fragment:fragment:1.4.0-rc01 פורסמה ללא שינויים מ-Fragment 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) - המקלדת תיסגר עכשיו באופן אוטומטי כשעוברים מקטע עם מקלדת פתוחה לקטע עם תצוגת רשימה. (I8b842, b/196852211)
-
DialogFragmentמשתמש עכשיו ב-setReorderingAllowed(true)לכל העסקאות שהוא יוצר כשמתקשרים אלshow(),showNow()אוdismiss(). (Ie2c14) - האזהרה הארוכה מאוד של Lint
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 מכילה את השמירות האלה.
Lint
- נוספה
DetachAndAttachFragmentInSameFragmentTransactionאזהרת lint לזיהוי קריאה ל-detach()וגם ל-attach()באותוFragmentבאותוFragmentTransaction– מכיוון שהפעולות המשלימות האלה מבטלות זו את זו כשהן מתבצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי שהן יבצעו פעולה כלשהי. (aosp/1832956, b/200867930) - נוספה שגיאת ה-lint
FragmentAddMenuProviderלתיקון השימוש במחזור החיים של Fragment במחזור החיים של תצוגת Fragment כשמשתמשים ב-APIaddMenuProviderשלMenuHost. (aosp/1830457, b/200326272)
עדכונים במסמכי התיעוד
- הודעות ההוצאה משימוש של ממשקי ה-API שמטופלים עכשיו על ידי ממשקי ה-API של תוצאות הפעילות, כלומר
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נכתבו מחדש ב-Kotlin כדי להבטיח שהפונקציהgetFragmentתכבד את האפשרות של ערך null. (If694a, b/189629145) - FragmentStrictMode נכתב עכשיו ב-Kotlin (I11767, b/199183506)
תיקוני באגים
- תוקנה בעיה שבה מצב של Fragment
שנוסף באמצעות
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בדיקת ה-Lint כדי לטפל טוב יותר בסוגריים מיותרים. (I2d865) - שיפרנו את
UseGetLayoutInflaterבדיקת Lint כדי לטפל במקרים נוספים של קצה. (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 מכילה את השמירות האלה.
תיקוני באגים
- מתוך Fragment
1.3.6: התצוגה של Fragment מוגדרת עכשיו כ-GONEכשמשתמשים ב-hide()כשהתצוגה הבסיסית מוגדרת כ-transitionGroup=”true”. (aosp/1766655, b/193603427) - מ-Fragment
1.3.6:FragmentActivityעכשיו תמיד מבטל את הנעילה של המצב השמור כפעולה הראשונה שלו ב-lifecycle callbacks שהוא מבטל. (I6db7a)
עדכון תלות
- מ-Fragment
1.3.6: Fragments now depends on Activity1.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מאחורי הקלעים כדי לשמור את המצב שלו. גם ה-methodssaveAllState()ו-restoreSavedState()הוצאו משימוש ב-FragmentController. אם אתם משתמשים ב-FragmentControllerכדי לארח פרגמנטים מחוץ ל-FragmentActivity, אתם צריכים להטמיע אתSavedStateRegistryOwnerב-FragmentHostCallbacks. (Iba68e, b/188734238)
תיקוני באגים
- תוקנה בעיה שבה הקריאה אל
saveBackStack()כחלק מהתמיכה בכמה ערימות חזרה נכשלת כשמבצעים אותה בו-זמנית עם הפעלתFragmentTransactionשמשתמש ב-replace(). (I73137) - תוקנה בעיה
NullPointerExceptionשהתרחשה אחרי ששחזרו באופן ידני מקבץ פעילויות קודמות (back stack) שמור, שהכיל כמה טרנזקציות, כשמשתמשים ב-APIrestoreBackStack()לתמיכה בכמה מקבצי פעילויות קודמות. בנוסף, תוקנה בעיה שבה לא בוצעה בדיקה של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)
תיקוני באגים
- From Fragment
1.3.5: Fixed a regression in shared element transitions introduced in Fragment1.3.4by aosp/1679887. מעכשיו, רכיבי Fragment מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעותtransitionGroup="true"או בעקיפין באמצעותtransitionNameאוbackground), ורכיבים משותפים לא יגרמו יותר לשגיאותIndexOutOfBoundsException. (I16484, b/188679569, b/188969304) - האפליקציה
FragmentManagerלא תקרוס יותר כשמנסים להסתיר קטע שמוסר. (I573dd, b/183634730) - בדיקת ה-lint
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)הרחבנו את המחלקה
FragmentStrictModeViolationכדי להוסיף מידע על המבנה בהתאם לכל הפרה. כך תוכלו לראות בדיוק מה גרם להפרה, יחד עם המקטע המפר (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 יגרום לחריגה. צריך לטפל בתוספות באמצעות התצוגה של כל רכיב fragment בנפרד. (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מספק עכשיו methodgetFragment()שמחזירה את הפריט שהתווסף לאחרונה למאגר. הלוגיקה של הפעולה הזו זהה ללוגיקה שלfindFragmentById()עם המזההFragmentContainerView, אבל היא מאפשרת שרשור של הקריאה. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerנוספה האפשרות
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}לציין אם להפעיל את אנימציית המעבר הרגילה של הפעילות שנלקחה מהעיצוב במעבר של Fragments. (I46652)
Multiple back stacks
FragmentManager שומרת מקבץ פעילויות קודמות (back stack) של עסקאות fragment שהשתמשו ב-addToBackStack(). כך אפשר להוציא את העסקאות האלה ולהחזיר את המצב הקודם, באמצעות המנגנונים של שמירת מצב באמצעות רכיבי Fragment כדי לאפשר לרכיבי ה-Fragment לשחזר את המצב שלהם בצורה מתאימה.
בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שני ממשקי API חדשים: FragmentManager ו-saveBackStack(String name) ו-restoreBackStack(String name). ממשקי ה-API האלה משתמשים באותו name כמו addToBackStack() כדי לשמור את המצב של FragmentTransaction ואת המצב של כל מקטע שנוסף בעסקאות האלה, וכדי לאפשר לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב המקורי שלהם. כך אפשר 'להחליף' ביעילות בין כמה מקבצי פעילויות קודמות (back stack) על ידי שמירת מקבץ הפעילויות הקודמות (back stack) הנוכחי ושחזור מקבץ פעילויות קודמות (back stack) שמור.
saveBackStack() פועלת באופן דומה ל-popBackStack() בכך שהיא אסינכרונית וגורמת לכל העסקאות של המקטעים שקשורות לשם הספציפי הזה להתבטל ('popped') ולכל המקטעים שנוספו להימחק ולהיפטר מהם, אבל יש כמה הבדלים חשובים:
- הערך
saveBackStack()תמיד כולל. - בניגוד ל-
popBackStack(), שיוציא את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציהsaveBackStack()לא תעשה כלום אם לא ביצעתם בעבר עסקת פרגמנט באמצעותaddToBackStack()עם אותו שם מדויק שאינו null. - המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט נשמר, הפונקציה
onSaveInstanceState()של כל פרגמנט נקראת והמצב משוחזר, וכל מופע שלViewModelשמשויך לפרגמנטים האלה נשמר (והפונקציהonCleared()לא נקראת לגביהם).
עסקאות חלקיות שאפשר להשתמש בהן עם saveBackStack() צריכות לעמוד בקריטריונים מסוימים:
- כל עסקה של שבר חייבת להשתמש ב-
setReorderingAllowed(true)כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת. - קבוצת העסקאות שנשמרת צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת למקטעים (fragments) מחוץ לקבוצת העסקאות הזו), כדי להבטיח שאפשר יהיה לשחזר אותן בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במקבץ פעילויות קודמות (back stack) בזמן שחלף.
- כדי לוודא ש-
FragmentManagerלא מחזיר הפניות לשברירים שנשמרו אחרי שמקבץ פעילויות קודמות (back stack) נשמר, אף שבריר שנשמר לא יכול להיות שבריר שנשמר או לכלול שבריר שנשמר בקבוצת השברירים הנגזרת שלו.
בדומה ל-saveBackStack(), הפונקציה restoreBackStack() לא עושה כלום אם לא קראתם קודם לפונקציה saveBackStack() עם אותו שם. (b/80029773)
Fragment StrictMode
ממשקי ה-API FragmentStrictMode מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של קטעים שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או להקריס את האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy שקובע אילו בדיקות מופעלות ואילו 'עונשים' מופעלים ב-FragmentManager באמצעות השיטה החדשה setStrictModePolicy(). המדיניות הזו חלה על FragmentManager וגם על כל מנהלי קטעי ה-Fragment של יחידות-בת שלא מגדירים מדיניות ייחודית משלהם. (#123, #131, #150, b/143774122)
-
detectFragmentReuse()בודק אם מופעFragmentשהוסר בעבר מתווסף מחדש ל-FragmentManager. אחרי שמופע שלFragmentנמחק והוסר מ-FragmentManager, אסור לקיים איתו אינטראקציה או לשמור הפניה אליו. (#142, b/153738653) -
detectFragmentTagUsage()מזהה מתי אתם משתמשים בתג<fragment>ב-XML של הפריסה. תמיד צריך להשתמש ב-FragmentContainerViewכשמנפחים פרגמנטים כחלק מהפריסה. (#141, b/153738235) -
detectWrongFragmentContainer()מזהה מתי מוסיפים פרגמנט למאגר שהוא לאFragmentContainerView. תמיד צריך להשתמש ב-FragmentContainerViewכמאגר לרכיבי Fragment בפריסה. (מס' 146, b/181137036) -
detectRetainInstanceUsage()מזהה מתי אתם משתמשים בממשקי ה-API setRetainInstance()אוgetRetainInstance()שהוצאו משימוש. (#140, b/153737954) -
detectSetUserVisibleHint()זיהוי השימוש ב-API setUserVisibleHint()שהוצא משימוש. (מס' 136, b/153738974) -
detectTargetFragmentUsage()מזהה מתי אתם משתמשים בממשקי ה-API שהוצאו משימוש:setTargetFragment(), getTargetFragment()אוgetTargetRequestCode(). (מס' 139, b/153737745)
שינויים ב-API
- הסרנו את ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean), ועכשיו מנהל המצבים החדש הוא האפשרות היחידה שזמינה. (I90036, b/162776418) -
FragmentScenarioמטמיע עכשיו אתCloseable, כך שאפשר להשתמש בו עם ה-method useשל Kotlin או עם try-with-resources. (מס' 121, b/143774122)
בדיקות Lint חדשות
UseGetLayoutInflaterהבדיקה של Lint מציגה עכשיו אזהרה כשמשתמשים ב-LayoutInflater.from(Context)בתוךDialogFragment– תמיד צריך להשתמש בשיטהgetLayoutInflater()של קטע הדו-שיח כדי לקבל את הערך המתאים ל-LayoutInflater. (מס' 156, b/170781346)- בדיקת
DialogFragmentCallbacksDetectorLint מציגה עכשיו אזהרה כשקוראים ל-setOnCancelListenerאו ל-setOnDismissListenerב-methodonCreateDialog()שלDialogFragment– הבעלות על מאזינים כאלה היא שלDialogFragmentעצמו, ועליכם להחליף אתonCancel()ואתonDismiss()כדי לקבל את הקריאות החוזרות האלה. (#171, b/181780047, b/187524311)
תיקוני באגים
- מ-Fragment 1.3.4: תוקנה רגרסיה שהוצגה ב-Fragment
1.3.3כשמשתמשים ב-APIViewTreeViewModelStoreOwner.get()עםViewModelProviderאו בשיטת Jetpack ComposeviewModel()בתוך Fragment. בתרחישי השימוש האלה, המערכת משתמשת עכשיו בצורה נכונה ב-ViewModelProvider.Factoryשסופק על ידי Fragment אם הוא מחליף אתgetDefaultViewModelProviderFactory()(כמו במקרה של Fragments עם הערה@AndroidEntryPointכשמשתמשים ב-Hilt). אם לא מבטלים את השיטה הזו, נוצרתSavedStateViewModelFactoryששומרת את המצב שלה ומחזירה אותו לצד התצוגה של ה-Fragment כברירת מחדל. (I5cbfa, b/186097368) - מ-Fragment 1.3.4: כשמשתמשים ב-
FragmentContainerViewב-API 29, המרווחים הפנימיים לא נשלחים יותר ללא הגבלה, וכך נפתרות בעיות שקשורות למופעים שלBottomNavigationBarו-FloatingActionButton. (I1bb78, b/186012452) - מ-Fragment 1.3.4: עכשיו אפשר לאחזר את ה-Parcelable מ-bundle של תוצאת הפרגמנט אחרי שהתהליך הסתיים. (I65932, b/187443158)
- מ-Fragment 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם הערך של
transitionGroupב-ViewGroup מוגדר כ-false, המעבר יתבצע עכשיו בצורה תקינה. (I99675)
External Contribution
- תודה ל-simonschiller על הטמעת
Closeableב-FragmentScenario. (מס' 121, b/143774122) - תודה ל-simonschiller על הוספת כל
FragmentStrictModeAPI לגרסה הזו! (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - תודה ל-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 מכילה את השמירות האלה.
תיקוני באגים
- מ-Fragment
1.4.0-alpha03: האפליקציהFragmentManagerלא תקרוס יותר כשמנסים להסתיר fragment שמוסר. (I573dd, b/183634730) - התצוגה של Fragment מוגדרת עכשיו בצורה נכונה ל-
GONEכשמשתמשים ב-hide()כשתצוגת הבסיס מוגדרת ל-transitionGroup=”true”. (aosp/1766655, b/193603427) -
FragmentActivityתמיד מבטל את הנעילה של המצב השמור בתור הפעולה הראשונה שלו בשיטות Callback של מחזור החיים שהוא מבטל. (I6db7a)
עדכון תלות
- מ-Fragment
1.3.6: Fragments now depends on Activity1.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. מעכשיו, רכיבי Fragment מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעות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()(כמו במקרה של Fragments עם הערה@AndroidEntryPoint). אם לא מבטלים את השיטה הזו, נוצרתSavedStateViewModelFactoryששומרת את המצב שלה ומחזירה אותו לצד התצוגה של ה-Fragment כברירת מחדל. (I5cbfa, b/186097368) - כשמשתמשים ב-
FragmentContainerViewב-API 29, לא מתבצע יותר שיגור של insets ללא הגבלת זמן, וכך נפתרות בעיות שקשורות למופעים שלBottomNavigationBarושלFloatingActionButton. (I1bb78, b/186012452) - עכשיו אפשר לאחזר את ה-Parcelable מחבילת התוצאות של ה-Fragment אחרי שהתהליך הסתיים. (I65932, b/187443158)
- כשמבצעים מעבר של אלמנט משותף ב-ViewGroup, אם הערך של
transitionGroupמוגדר כ-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()עם התצוגה של Fragment. (I21acf, b/181577191)
תיקוני באגים
- תוקנה רגרסיה שהוצגה ב-Fragment
1.3.2וגרמה לכך שאנימציות שלpopEnterלא פעלו כשבוצעה פעולתsetPrimaryNavFragmentב-FragmentTransaction, כמו אלה שמשמשות אתNavHostFragment. (I38c87, b/183877426) - מעכשיו,
FragmentContainerViewמוודא שכלFragmentמקבל קבוצה חדשה שלWindowInsets, כך שכל פרגמנט יכול לצרוך את השוליים באופן עצמאי. (I63f68, b/172153900) -
DialogFragmentמטפל עכשיו בצורה נכונה במקרים שבהם נוסף רכיב צאצא למאגר שיש לו אותו מזהה כמו מאגר במחלקה המותאמת אישיתDialog, וכך פותר בעיות בהיררכיית התצוגה כשמשתמשים מחדש במזהים שנמצאים בשימוש פנימי בתיבות דו-שיח כמוBottomSheetDialog. (Ie6279, b/180021387) -
FragmentManager.dump()now properly indents the first fragment in the list of active fragments. (If5c33, b/183705451)
תיקוני באגים חדשים ב-State Manager
- מנהל המצב החדש של קטעי קוד מטפל עכשיו בצורה נכונה במעברים של יציאה באמצעות פעולות הסתרה. (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 מכילה את השמירות האלה.
תיקוני באגים חדשים ב-State Manager
- כשמריצים פעולות של
popBackStack()ושלcommit()ביחד, הפעולה האחרונה תגדיר עכשיו את הכיוון לכל האנימציות, במקום להריץ חלק מהאנימציות של פתיחה וחלק מהאנימציות של כניסה. (I7072e, b/181142246) - התצוגות בהיררכיית רכיבים משותפים לא ינקו יותר את שם המעבר שלהן כשמבצעים מעבר של רכיב משותף. (I4d4a6, b/179934757)
עדכונים של תלות
- ה-Fragment תלוי עכשיו ב-Activity 1.2.2, ומתקן בעיה בבדיקת ה-lint של Activity כשמשתמשים ב-Fragment 1.3.1 ומעלה.
InvalidFragmentVersionForActivityResult - ה-Fragment תלוי עכשיו ב-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 דרך DecorView, וכך אפשר להשתמש ב-DialogFragmentעםComposeView. (Ib9290, b/180691023)
תיקוני באגים
- פרגמנטים שנופחו לפעילות
RESUMEDקיימת באמצעות FragmentContainerView מוצגים עכשיו בצורה תקינה אחרי שינוי בהגדרות. (Ie14c8, b/180538371) - אין יותר
}נוסף בסוף המקטעtoString()(I54705, b/177761088) - שיטות שהוחלפו ב-FragmentActivity יורשות עכשיו בצורה תקינה את ה-JavaDoc של שיטת הבסיס (I736ce, b/139548782)
- המסמכים של
setFragmentResultושלsetFragmentResultListenerעודכנו כדי לשקף שהם כבר לא מקבלים ערכים שניתנים לאיפוס (I990ba, b/178348386)
תיקוני באגים חדשים ב-State Manager
- תוקנה דליפת זיכרון במקטעים שנגרמה על ידי
mFocusedView(Ib4e9e, b/179925887) - Fragments קוראים עכשיו ל-
onCreateOptionsMenuבצורה תקינה כשמשתמשים בטרנזקציות של show/hide (I8bce8, b/180255554) - קטעי צאצא עם מעברים שמתחילים לפני שהקטע מוצג יגיעו עכשיו כמו שצריך אל
RESUMED(Ic11e6, b/180825150) - מעכשיו, פרגמנטים שנוצרו באמצעות התג
<fragment>תמיד יגיעו אלRESUMED(I452ac, (I9fa49)
עדכונים של תלות
- Fragment 1.3.1 תלוי ב-Activity
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
- State Manager חדש: שכתוב משמעותי של הרכיבים הפנימיים של
FragmentManagerפתר בעיות רבות שקשורות לשליחה של אירועים במחזור החיים, לאנימציות ולמעברים, ולטיפול בקטעים שנדחו. שילוב של Activity Result API: נוספה תמיכה ב-
ActivityResultRegistryAPI שהוצג ב-Activity1.2.0כדי לטפל בתהליכי עבודה שלstartActivityForResult()+onActivityResult()וגם שלrequestPermissions()+onRequestPermissionsResult()בלי להחליף שיטות ב-Fragment, בנוסף לאספקת hooks לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות.- במהדורה הזו תוקנו מספר בעיות שקשורות לקודי בקשות לא תקינים ולשליחת בקשות הרשאה שמונעות מ-Activity Result API לפעול בגרסאות קודמות של
FragmentActivity. כדי להשתמש ב-Activity Result APIs ב-FragmentActivityאו ב-AppCompatActivity, צריך לשדרג ל-Fragment 1.3.0.
- במהדורה הזו תוקנו מספר בעיות שקשורות לקודי בקשות לא תקינים ולשליחת בקשות הרשאה שמונעות מ-Activity Result API לפעול בגרסאות קודמות של
Fragment Result API: נוספה תמיכה בהעברת תוצאות בין שני רכיבי Fragment באמצעות ממשקי API חדשים ב-
FragmentManager. השיטה הזו פועלת עבור רכיבי היררכיה (הורה/צאצא), DialogFragment ורכיבים ב-Navigation, ומבטיחה שהתוצאות יישלחו רק לרכיב Fragment בזמן שהוא לפחותSTARTED. ממשקי ה-API של קטע היעד הוצאו משימוש, ועכשיו אפשר להשתמש בממשקי ה-API החדשים האלה. איך מקבלים תוצאות באמצעות Fragment Result API
FragmentOnAttachListener: הקריאה החוזרת (callback)onAttachFragment()ב-FragmentActivityוב-Fragmentיצאה משימוש. נוסףFragmentOnAttachListenerחדש כדי לספק חלופה גמישה יותר, שמאפשרת להעביר אתonAttachFragment()למאזינים נפרדים שניתן לבדוק אותם, ותמיכה בהוספת מאזין ל-FragmentManagers שאינם FragmentManager ישיר שלכם.
FragmentScenarioשיפורים: המחלקהFragmentScenarioמתוך ארטיפקטfragment-testingנכתבה מחדש ב-Kotlin ונוספו לה כמה שיפורים:-
FragmentScenarioמשתמשת עכשיו ב-setMaxLifecycle()כדי להטמיע אתmoveToState(), וכך מבטיחה התנהגות עקבית בכל רמות ה-API ומפרידה את מצב ה-Fragment מהפעילות הבסיסית. -
FragmentScenarioתומך עכשיו בהגדרתLifecycle.Stateראשוני כדי לתמוך בהצהרה על מצב הפרגמנט לפני המעבר לכלLifecycle.Stateבפעם הראשונה. - עכשיו יש חלופה ל-
FragmentScenarioAPI שלonFragmentבצורה של שיטת ההרחבה המוחשית של KotlinwithFragmentשמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון.
-
ViewTreeSupport:Fragmentתומך עכשיו בממשקי ה-APIViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View)ו-ViewTreeSavedStateRegistryOwnerשנוספו ב-Lifecycle2.3.0וב-SavedState1.1.0, כך שהוא יחזיר את ה-Fragment בתורViewModelStoreOwner, ואתSavedStateRegistryOwnerו-LifecycleOwnerשקשורים ל-view Lifecycle של ה-Fragment כשמשתמשים ב-ViewבתוךFragment.שינויים באנימציה של
TRANSIT_: אפקטי ברירת המחדל של הפרגמנטים,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEו-TRANSIT_FRAGMENT_FADE, משתמשים עכשיו ב-Animatorבמקום ב-Animation. המקורות ששימשו ליצירת האנימטורים האלה הם עכשיו פרטיים.הוצאה משימוש של
setRetainInstance(): השיטהsetRetainInstance()ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש API ספציפי לשמירת מצב שאפשר לשייך לפעילויות, לקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר, ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד. כך הם נמנעים ממקור נפוץ של דליפות, ועדיין יכולים ליהנות מהיתרונות של יצירה והרס יחידים של המצב שנשמר (כלומר, הקונסטרוקטור שלViewModelוהקריאה החוזרת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)
תיקוני באגים חדשים ב-State Manager
- התצוגה של Fragment
Lifecycleמטפלת עכשיו בצורה נכונה במקרים שבהם התצוגה של Fragment נהרסת לפני ש-Lifecycleמגיע אלCREATED, וכך נמנעות חריגות שבהן מצוין 'no event down from 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)
תיקוני באגים חדשים ב-State Manager
- תוקנה דליפה וארטיפקט ויזואלי כשמוסיפים פרגמנט עם
Animationל-FragmentContainerViewואז מפסיקים את ההוספה הזו באמצעות פעולת pop. (I952d8) - תוקנה בעיה שבה התצוגה של הפראגמנט נשארה בהיררכיית התצוגה אם היא הוחלפה במהלך השיטות
onCreate()אוonViewCreated(). (I8a7d5) - המיקוד משוחזר עכשיו בצורה תקינה לתצוגות הבסיסיות של Fragment כשממשיכים אותן. (Ifc84b)
- שילוב של פעולות pop ו-replace באותה טרנזקציה של fragment יציג עכשיו את האנימציות המתאימות (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 שלא מבצעים ניפוח של fragment באמצעות המאפיין
classאוandroid:nameמחוץ ל-FragmentActivity. (Id4397, b/172266337) - ניסיון להגדיר את מחזור החיים המקסימלי של מקטע (fragment) ל-
DESTROYEDיגרום עכשיו להקפיץ הודעת שגיאה (throw) שלIllegalArgumentException(Ie7651, b/170765622) - הפעלת FragmentScenario עם מצב
DESTROYEDתגרום עכשיו להקפיץ הודעת שגיאהIllegalArgumentException(I73590, b/170765622)
תיקוני באגים חדשים ב-State Manager
- תוקנה הבעיה שבה התצוגה לא מגיעה למצב הסופי שלה אם מפריעים למעבר של קטע שנעשה בו שימוש באפשרות
Animatorאו באחת מהאפשרויות שלTRANSIT_FRAGMENT_. (I92426, b/169874632) - תוקנה בעיה שמנעה את ההרס התקין של פרגמנטים עם
Animationיציאה. (I83d65) - יציאה מקטעים שהאפקטים שלהם הפוכים מבטלת אותם עכשיו כמו שצריך ומפעילה אותם מחדש עם אפקט הכניסה הנכון. (I62226, b/167092035)
- תוקנה בעיה שבה היציאה
Animatorמ-hide()לא פעלה. (Id7ffe) - עכשיו, קטעי וידאו מופיעים כמו שצריך כשדוחים את ההפעלה שלהם ואז מתחילים אותם מיד. (Ie713b, b/170022857)
- אם קטע מסיר את התצוגה הממוקדת שלו במהלך אנימציה, הוא לא ינסה יותר לשחזר את המיקוד בתצוגה המנותקת כשהוא יגיע אל
RESUMED(I38c65, b/172925703)
External Contribution
-
FragmentFactoryמטמון של מחלקות פרגמנטים נשמר עכשיו בנפרד עבור מופעים שונים שלClassLoader. תודה, Simon Schiller! (#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) - הסרה של מקטע (fragment) מנותק שלא נוסף למקבץ פעילויות קודמות (back stack) לא גורמת יותר לדליפת זיכרון. באדיבות ניקלאס אנסמן גירץ! (b/166489383)
- לפרגמנטים פעילים תמיד יהיה ערך שאינו null ב-
FragmentManager, ופרגמנטים עם ערך שאינו null ב-FragmentManagerתמיד ייחשבו כפעילים. (aosp/1422346) - אפקטים שמוגדרים כברירת מחדל בקטע,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEו-TRANSIT_FRAGMENT_FADE, משתמשים עכשיו ב-Animatorבמקום ב-Animation. (b/166155034)
תיקוני באגים חדשים ב-State Manager
- עכשיו, קטעי קוד משחזרים בצורה תקינה את מצב המיקוד של התצוגה שלהם, מהרגע שלפני שהם מתחילים את האנימציה. (Icc256)
- מקטעים שיש להם רק מעבר של רכיב משותף מסיימים עכשיו את האפקטים המיוחדים שלהם בצורה תקינה, כלומר הם עוברים למצב הסופי שלהם (Iaebc7, b/166658128)
- תצוגות של קטע תמיד מוסרות מהמאגר לפני שהן מושמדות. (Id5876)
- מנהל המצב החדש מסיר עכשיו באופן עקבי את תצוגת הרכיב היוצא לפני שהוא מוסיף את תצוגת הרכיב הנכנס. (I41a6e)
- מנהל המצב החדש מכבד עכשיו שינויים מפורשים בחשיפות של תצוגת fragment. כלומר, אם תגדירו את התצוגה של פרגמנט כניסה ל-
INVISIBLEלפני שהאנימציה מתחילה, הוא יישאר בלתי נראה. (b/164481490) - מעכשיו, המערכת נותנת עדיפות ל-
Animatorsעל פניAnimations, כלומר אם יש גם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 מכילה את השמירות האלה.
New State Manager
הגרסה הזו כוללת שינוי משמעותי בארכיטקטורה של ניהול המצב הפנימי של FragmentManager, שמשפיע על השליחה של שיטות מחזור חיים, אנימציות ומעברים, ועל האופן שבו מתבצע טיפול בעסקאות שנדחו. ההגדרה הזו מוצגת בממשק כברירת מחדל. פרטים נוספים זמינים בפוסט הזה בבלוג בנושא מקטעים: בנייה מחדש של הפנימיות. (b/139536619, b/147749580)
- אפשר להשתמש ב-API ניסיוני ב-
FragmentManager.enableNewStateManager(boolean)כדי לקבוע אם FragmentManager ישתמש במנהל המצב החדש. (I7b6ee)
הבעיות הבאות נפתרות רק כשמשתמשים במנהל המצבים החדש:
- הקטע הקודם של פעולת
replaceנעצר עכשיו בצורה נכונה לפני שהקטע החדש מתחיל. (b/161654580) - מעכשיו, רכיבי Fragment מונעים הפעלה של כמה אנימציות מתחרות באותם רכיבי Fragment, וכך נמנעים מקרים שבהם
Animationמבטל את כל האפקטים שלTransitionאו שבהםAnimatorו-Transitionמופעלים שניהם ברכיב Fragment בודד. (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) - הודעת השגיאה שמוצגת כשמנסים לשלב בין מופעים של framework
Transitionו-AndroidXTransitionמציינת עכשיו את הפריט עם המעבר הלא תקין. (b/155574969)
שינויים בהתנהגות
- עכשיו אפשר להתקשר אל
launch()ב-ActivityResultLauncherבשיטת מחזור החייםonCreate()של קטע. (b/161464278) - הפעלת
registerForActivityResult()אחריonCreate()מעלה עכשיו חריגה שמציינת שאסור לעשות את זה, במקום להיכשל בשקט בהצגת תוצאות אחרי שינוי בהגדרה. (b/162255449) -
FragmentActivityמשתמש עכשיו ב-OnContextAvailableListenerAPI שהוצג ב-Activity1.2.0-alpha08כדי לשחזר את המצב שלFragmentManager. כל listeners שנוספו לתת-מחלקות שלFragmentActivityיפעלו אחרי ה-listener הזה. (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, במקום להעביר תמיד את ה-Fragment למצבRESUMED. (b/159662750) - הוספנו חלופה ל-API
FragmentScenarioשלonFragmentבצורה של שיטת ההרחבה המוחשית של KotlinwithFragmentשמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון. (b/158697631)
שינויים בהתנהגות
-
FragmentScenarioמשתמשת עכשיו ב-setMaxLifecycle()כדי להטמיע אתmoveToState(), וכך מבטיחה התנהגות עקבית בכל רמות ה-API ומפרידה את מצב ה-Fragment מהפעילות הבסיסית. (b/156527405) - ה-
SavedStateRegistryOwnerשמוחזר על ידיViewTreeSavedStateRegistryOwnerקשור עכשיו למחזור החיים של תצוגת ה-Fragment. כך מוודאים שהמצב שלו יישמר וישוחזר בו-זמנית עם התצוגה של ה-Fragment. (b/158503763)
תיקוני באגים
- הקטעים ממתינים עכשיו עד שהתצוגה של הקטע מצורפת לפני שהם קוראים ל-
ViewCompat.requestApplyInsets(), וכך נמנעים מקרים שבהם בקשת השוליים נפסלה. (b/158095749) - התקשרות אל
clearFragmentResultListenerמנקה עכשיו את observer מחזור החיים בצורה תקינה. (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 מכילה את השמירות האלה.
תכונות חדשות
- הקריאה החוזרת (callback)
onAttachFragment()ב-FragmentActivityוב-Fragmentהוצאה משימוש. נוסףFragmentOnAttachListenerחדש כדי לספק חלופה גמישה יותר, שמאפשרת להעבירonAttachFragment()למאזינים נפרדים שניתן לבדוק אותם, ותמיכה בהוספת מאזין ל-FragmentManagers שאינם FragmentManager ישיר שלכם. (I06d3d)
תיקוני באגים
- עכשיו, מצב התצוגה של קטעי האב משוחזר לפני קטעי הצאצא, וכך נפתרה בעיה של סדר חזותי אחרי שינוי בהגדרות, כש-
DialogFragmentמציגDialogFragmentאחר כקטע צאצא. (b/157195715) - תוקנה בעיה שבה
UseRequireInsteadOfGetLint check לא טיפל נכון בשימושים משורשרים באופרטורים?.ו-!!. (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מ-Lifecycle2.3.0-alpha03וב-ViewTreeSavedStateRegistryOwnerמ-SavedState1.1.0-alpha01כשמשתמשים ב-ViewבתוךFragment. (aosp/1297993, aosp/1300264)
שינויים ב-API
- ב-
setFragmentResult()API וב-setFragmentResultListener()API יש עכשיוBundleו-FragmentResultListenerשאי אפשר להגדיר כ-null. כדי לנקות במפורש תוצאה או מאזין שהוגדרו קודם, משתמשים בשיטות החדשותclearFragmentResult()ו-clearFragmentResultListener(). (b/155416778) - תוספי Kotlin שמקבלים lambda מסומנים עכשיו בסימן
inline.setFragmentResultListener()(b/155323404)
שינויים בהתנהגות
-
startActivityForResult(),startIntentSenderForResult()ו-requestPermissionsשהוצאו משימוש ב-Fragmentמשתמשים עכשיו באופן פנימי ב-ActivityResultRegistry, ולכן אין יותר הגבלה על שימוש רק בביטים הנמוכים (מתחת ל-0xFFFF) עבור קודי הבקשות כשמשתמשים בממשקי ה-API האלה. (b/155518741)
עדכונים במסמכי התיעוד
- הרחבנו את התיעוד בנושא בנאי המחלקות
Fragment(@LayoutRes int)ו-DialogFragment(@LayoutRes int)כדי להבהיר שצריך לקרוא להם מהבנאי ללא ארגומנטים של מחלקות המשנה כשמשתמשים ב-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 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו תמיכה בהעברת תוצאות בין שני רכיבי Fragment באמצעות ממשקי API חדשים ב-
FragmentManager. השיטה הזו פועלת עבור רכיבי היררכיה (הורה/צאצא), DialogFragment ורכיבים ב-Navigation, ומבטיחה שהתוצאות יישלחו רק לרכיב בזמן שהוא לפחותSTARTED. (b/149787344)
שינויים ב-API
- ממשקי ה-API של קטע היעד הוצאו משימוש. כדי להעביר נתונים בין פרגמנטים, צריך להשתמש בממשקי ה-API החדשים של Fragment Result. (b/149787344)
- ממשקי ה-API
startActivityForResult()/onActivityResult()ו-requestPermissions()/onRequestPermissionsResult()ב-Fragment הוצאו משימוש. צריך להשתמש ב-Activity Result APIs. (aosp/1290887) - שינוי שעלול לגרום לבעיות ב-Activity
1.2.0-alpha04: השם של השיטהprepareCall()שונה ל-registerForActivityResult(). (aosp/1278717)
תיקוני באגים
- הפעולה
getViewLifecycleOwner()של המקטע נעצרת עכשיו לפני הקריאה ל-onSaveInstanceState(), ומשקפת את ההתנהגות של מחזור החיים של המקטע. (b/154645875) - הקריאה ל-
setMenuVisibility(false)בקטע משנה עכשיו בצורה נכונה את החשיפה של התפריטים שסופקו על ידי קטעי הצאצא שלו. (b/153593580) - תוקנה בעיה
illegalStateExceptionבהוספת פרגמנט להיררכיית התצוגה שלDialogFragmentבאמצעותFragmentContainerView. (b/154366601) - השיטה
getDefaultViewModelProviderFactory()ב-fragments כבר לא קורסת כשמארחים את ה-fragments מחוץ לפעילות. (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
- ה-methods של
prepareCallב-Fragmentהן עכשיוfinal. (b/152439361)
תיקוני באגים
- תוקנה רגרסיה שהוצגה ב-Fragment
1.3.0-alpha02כשמשתמשים ב-BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - תוקנה קריסה שהתרחשה כשמשתמשים ב-
prepareCallמתוך fragment אחרי שינוי בהגדרות. (b/152137004) - תוקנה בעיה שגרמה לכך שהמערכת התעלמה ממעברים של רכיבים משותפים וממעברי יציאה כשנעשה שימוש ב-
setTargetFragment(). (b/152023196) - מתוך Fragment
1.2.4: עודכנו כללי ProGuard של Fragment כדי לאפשר טשטוש של פרגמנטים שנשמרו. (b/151605338) - מ-Fragment
1.2.4: השבתנו את כלל LintFragmentLiveDataObserveבמחלקותDialogFragmentכי מחזור החיים שלהן ומחזור החיים של התצוגה שלהן תמיד מסונכרנים, ולכן אפשר להשתמש ב-thisאו ב-viewLifecycleOwnerכשקוראים ל-observe. (b/151765086)
שינויים בתלות
- הקטעים תלויים ב-Activity
1.2.0-alpha03, שבו בוצעו שיפורים משמעותיים ב-Activity Result API שהוצג ב-Activity1.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שהוצג ב-Activity1.2.0-alpha02כדי לטפל בתהליכי העבודה שלstartActivityForResult()+onActivityResult()וגם שלrequestPermissions()+onRequestPermissionsResult()בלי להחליף שיטות ב-Fragment, בנוסף לאספקת hooks לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות. (b/125158199)
שינויים ב-API
-
DialogFragmentעכשיו מספק בנאי שמקבל@LayoutResשמציין את הפריסה ש-onCreateView()צריך לנפח כברירת מחדל. (b/150327080) - השיטה
onActivityCreated()הוצאה משימוש. קוד שמשפיע על התצוגה של המקטע צריך להיות ב-onViewCreated()(שנקרא מיד לפניonActivityCreated()), וקוד אתחול אחר צריך להיות ב-onCreate(). כדי לקבל קריאה חוזרת ספציפית כשהפעילותonCreate()הושלמה, צריך לרשוםLifeCycleObserverב-Lifecycleשל הפעילות ב-onAttach(), ולהסיר אותה אחרי שמתקבלת הקריאה החוזרתonCreate(). (b/144309266)
תיקוני באגים
- Fragment
1.2.3: תוקן באג ב-DialogFragmentשגרם ל-StackOverflowErrorכשקוראים ל-getLayoutInflater()מתוךonCreateDialog(). (b/117894767, aosp/1258664) - מ-Fragment
1.2.3: צמצמנו את היקף כללי ProGuard הכלולים ב-Fragment כדי להבטיח שאפשר יהיה להסיר מחלקות Fragment שלא נמצאות בשימוש. (b/149665169) - From Fragment
1.2.3: Fixed false positives in theUseRequireInsteadOfGetLint check when using a local variable name that shadowed the Kotlin property name. (b/149891163) - מ-Fragment
1.2.3:FragmentContainerViewלא זורק יותרUnsupportedOperationExceptionעל שימוש בבונה שגוי בתצוגה מקדימה של פריסה. (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 רגיל שלא נשמר, ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד. כך הם נמנעים ממקור נפוץ של דליפות, ועדיין יכולים ליהנות מהיתרונות של יצירה והרס יחידים של המצב שנשמר (כלומר, הקונסטרוקטור שלViewModelוהקריאה החוזרתonCleared()שהוא מקבל). (b/143911815) - עם ההשקה של ViewPager2
1.0.0, הוצאו משימוש המחלקותFragmentPagerAdapterו-FragmentStatePagerAdapterלאינטראקציה עםViewPager. מידע נוסף על מעבר מ-ViewPager ל-ViewPager2 (b/145132715)
תיקוני באגים
- כללי Fragment ProGuard שומרים עכשיו רק את בנאי ברירת המחדל של מחלקות
Fragmentשנעשה בהן שימוש, ולא את כל המופעים שלFragment, וכך מתקנים באג שנוצר ב-Fragment1.2.1. (b/149665169 require___()כללי ה-Lint שנוספו ב-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(), ומשקפת את ההתנהגות של מחזור החיים של המקטע. התכונה הזו הושקה בעבר ב-Fragment1.3.0-alpha04. (b/154645875) - הקריאה ל-
setMenuVisibility(false)בקטע משנה עכשיו בצורה נכונה את החשיפה של התפריטים שסופקו על ידי קטעי הצאצא שלו. התכונה הזו הושקה בעבר ב-Fragment1.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 מכילה את השמירות האלה.
תיקוני באגים
- עודכנו כללי ProGuard של Fragment כדי לאפשר טשטוש של פרגמנטים שנשמרו. (b/151605338)
- השבתנו את כלל Lint
FragmentLiveDataObserveבמחלקות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)
- תוקנו תוצאות חיוביות שגויות בבדיקת
UseRequireInsteadOfGetLint כשמשתמשים בשם של משתנה מקומי שמוסתר על ידי שם המאפיין ב-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 חדשות
- כלי ה-Lint מציע להשתמש ב-
viewLifecycleOwnerבתורLifecycleOwnerלשיחות אלOnBackPressedDispatcherב-onCreateView(), ב-onViewCreated()וב-onActivityCreated(). (b/142117657) - נוסף בדיקת Lint חדשה שמאשרת שנעשה שימוש נכון ב-
debugImplementationכשמשתמשים בארטיפקטfragment-testing. (b/141500106) - במקום
checkNotNull(get___()),requireNonNull(get___())אוget___()!!, קטעי קוד מציעים עכשיו להשתמש בשיטותrequire___()המשויכות כדי לקבל הודעות שגיאה תיאוריות יותר, בכל ממשקי ה-API של קטעי הקוד שכוללים גםgetוגם מקבילה שלrequire. (aosp/1202883)
תיקוני באגים
- תוקנו קובצי Fragment ProGuard כדי למנוע אזהרות R8 (b/148963981)
- שיפרנו את בדיקת Lint הקיימת שמציעה להשתמש ב-
viewLifecycleOwnerכשמשתמשים ב-observe, כדי לטפל גם בגרסת שיטת ההרחבהlivedata-ktxשלobserve. (b/148996309) - תוקן העיצוב של הרבה בדיקות Lint (aosp/1157012)
תכנים שנוספו על ידי משתמשים חיצוניים
- תודה ל-Zac Sweers על תרומתו לבדיקות 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 מכילה את השמירות האלה.
תיקוני באגים
- ProGuard שומר עכשיו את בנאי ברירת המחדל של רכיבי Fragment שנוספו באמצעות השיטות
addו-replaceשמקבלות מופעClass(או את הגרסאות המוחשיות של Kotlin). (b/148181315) - הפונקציות
FragmentStatePagerAdapterו-FragmentPagerAdapterכבר לא מאתרות חריגים שמוחזרים על ידיFragmentManagerכשמריצים אתfinishUpdate(). (aosp/1208711) - תוקנה הבעיה שבה התג
FragmentManager.findFragment()לא פעל עם פרגמנטים שנוספו באמצעות התג<fragment>. (b/147784323) - כשמשתמשים בתג
<fragment>כדי להרחיב Fragments, תמיד מתבצעת קריאה ל-onInflate()לפניonCreate()כש-Fragments נמצאים בפריסה. (aosp/1215856) - התקשרות אל
toString()במופעFragmentManagerכבר לא גורמת לשגיאהNullPointerExceptionכשהפעילות כבר הושמדה. (b/148189412)
שינויים בתלות
- Fragments
1.2.1תלוי עכשיו ב-Lifecycle ViewModel SavedState2.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()תזמון: עכשיו, רכיבי Fragment מחכים שאנימציות היציאה, מעברי framework של יציאה ומעברי AndroidX של יציאה (כשמשתמשים ב-Transition1.3.0) יושלמו לפני שהם קוראים ל-onDestroyView().- מבוסס מחלקה
add()ו-replace(): נוספו עומסים חדשים שלadd()ו-replace()ב-FragmentTransactionשמקבליםClass<? extends Fragment>ו-Bundleאופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactoryכדי ליצור מופע של המקטע שרוצים להוסיף. בנוסף, נוספו ל-fragment-ktxתוספי Kotlin שמשתמשים בסוגים מוחשיים (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)). - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactoryהוא עכשיו פקטורי (factory) ברירת המחדל שמשמש כשמשתמשים ב-by viewModels(), ב-by activityViewModels(), בבונהViewModelProviderאו ב-ViewModelProviders.of()עם Fragment. - בדיקות Lint חדשות: נוספה בדיקת Lint חדשה שמוודאת שאתם משתמשים ב-
getViewLifecycleOwner()כשאתם צופים ב-LiveDataמ-onCreateView(), מ-onViewCreated()או מ-onActivityCreated(). - הוצאה משימוש של
getFragmentManager(): השיטותgetFragmentManager()ו-requireFragmentManager()ב-Fragment הוצאו משימוש והוחלפו בשיטה אחת,getParentFragmentManager(), שמחזירה אתFragmentManagerשאינו null שאליו נוסף ה-Fragment (אפשר להשתמש ב-isAdded()כדי לקבוע אם אפשר לבצע את הקריאה). - הוצאה משימוש של
FragmentManager.enableDebugLogging(): השיטה הסטטיתFragmentManager.enableDebugLoggingהוצאה משימוש. החל מעכשיו, FragmentManager מכבד אתLog.isLoggable()עבור התגFragmentManager, כך שאפשר להפעיל רישום ביומן שלDEBUGאוVERBOSEבלי לבצע קומפילציה מחדש של האפליקציה.
בעיות מוכרות
- ProGuard לא שומר באופן אוטומטי קטעי קוד שמופנים אליהם רק באמצעות המאפיין
classאוandroid:nameב-FragmentContainerView, ולכן צריך להוסיף ידנית כלל שמירה לכל מחלקה של קטע קוד. (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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה רגרסיה ב-Fragment
1.2.0-rc04כשמשתמשים בתג<fragment>שגרמה לקריאה שגויה שלonViewCreated()במהלך השמדה של פעילות. (b/146290333) - כשמוסיפים קטעי קוד באמצעות התג
<fragment>, המערכת מנקה עכשיו את הקטעים האלה שלא מוגדרים, גם אם הם מופיעים בפריסה רק לפעמים (כלומר, רק בפריסה לרוחב). כתוצאה מכך, המקטעים האלה מועברים עכשיו בצורה נכונה אלCREATEDגם אם הם לא בפריסה, במקום ליצור מופע שלהם אבל אף פעם לא להעביר אותם דרך שיטות מחזור החיים. (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 מכילה את השמירות האלה.
תיקוני באגים
- תוקן שינוי התנהגות לא מכוון שבו רכיבי Fragments שהוסרו עדיין מוחזרים על ידי
findFragmentById()/findFragmentByTag()בזמן שמופעלות האנימציות או המעברים שלהם. (b/143982969, aosp/1167585) - עכשיו, קטעי צאצא נעצרים בצורה נכונה לפני קטעי האב כשהפעילות שמכילה אותם קוראת ל-
onSaveInstanceState(). (b/144380645) - תוקנה בעיה שבה תצוגות סומנו באופן שגוי
INVISIBLEאחרי הצגה של Fragment מוסתר. (b/70793925) - מעברים של רכיבים משותפים של Fragment מטפלים עכשיו בתצוגות שסובבו, שונו את הגודל שלהן וכו'. (b/142835261)
עדכונים במסמכי התיעוד
- הוספנו הבהרות לתיעוד בנושא הוצאה משימוש של
setUserVisibleHint(). (b/143897055) - שיפרנו את התיעוד בנושא
setFragmentFactory()ו-getFragmentFactory()כדי להבהיר שהגדרתFragmentFactoryתשפיע גם על FragmentManager של צאצאים. (aosp/1170095)
שינויים בתלות
- ה-Fragments תלויים עכשיו ב-Lifecycle
2.2.0-rc03, ב-Lifecycle ViewModel SavedState1.0.0-rc03וב-Activity1.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, התיקון של Lint לשימוש ב-
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מוסיף עכשיו את ה-Fragment שהוגדר על ידיclassאוandroid:nameכחלק מה-inflation, וכך מוודא ש-findFragmentById()ו-findFragmentByTag()יפעלו מיד לאחר מכן. (b/142520327) - תוקנה שגיאה
IllegalStateExceptionב-FragmentContainerViewבגלל שהמצב נשמר. (b/142580713) - תוקנה בעיה
UnsupportedOperationExceptionב-FragmentContainerViewכשהכיתהFragmentContainerViewעוברת טשטוש. (b/142657034)
בעיות מוכרות
- ProGuard לא שומר באופן אוטומטי קטעי קוד שמופנים אליהם רק באמצעות המאפיין
classאוandroid:nameב-FragmentContainerView, ולכן צריך להוסיף ידנית כלל שמירה לכל מחלקה של קטע קוד. השבתנו את כלל ה-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 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה הרכיב Fragment's
onInflate()לא קיבל מאפיינים מתאימים מ-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מוסיף תמיכה בהוספת מקטע ראשוני עם תמיכה נוספת במאפייני ה-XMLandroid:nameוהאופציונליandroid:tag. בניגוד לתג<fragment>, התגFragmentContainerViewמשתמש ב-FragmentTransactionרגיל מתחת לפני השטח כדי להוסיף את הפרגמנט הראשוני, וכך מאפשר לבצע פעולות נוספות שלFragmentTransactionעלFragmentContainerViewוגם להשתמש ב-View Binding עבור הפריסה. (b/139830628, b/141177981) - ב-Fragments יש עכשיו אזהרת Lint שמציעה תיקון מהיר להחלפת
<fragment>ב-FragmentContainerView. (b/139830056)
תיקוני באגים
- תוקנה בעיה ב-
ClassCastExceptionכשמשתמשים ב-androidx.transition. (b/140680619) - כשמשתמשים ב-Transition
1.3.0-beta01, רכיבי Fragment ממתינים עכשיו לסיום המעברים של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בתצוגת הבסיס של Fragment כשמשתמשים ב-FragmentContainerView. (b/140361893) - ארטיפקט
fragment-testingתלוי עכשיו ב-AndroidX Test1.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(), שמחזירה את הערך שאינו nullFragmentManagerשאליו נוסף ה-Fragment (אפשר להשתמש ב-isAdded()כדי לקבוע אם אפשר לבצע קריאה בבטחה). (b/140574496) - השיטה הסטטית
FragmentManager.enableDebugLoggingהוצאה משימוש. ה-FragmentManager מכבד עכשיו אתLog.isLoggable()עבור התגFragmentManager, ומאפשר להפעיל את הרישום ביומן שלDEBUGאוVERBOSEבלי לבצע קומפילציה מחדש של האפליקציה. (aosp/1116591)
תיקוני באגים
- הקטעים נהרסים עכשיו בצורה תקינה בזמן שאנימציות היציאה פועלות בקטעים אחרים. (b/140574199)
- תוקנה בעיה שבה Fragments קראו ל-
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הופכת עכשיו את סדר הציור בצורה נכונה כשמוציאים מקטעים (fragments) ממקבץ הפעילויות הקודמות (back stack). (b/139104187)- תוקנה בעיה שבה האנימציה הלא נכונה הופעלה כשגם הוצאה של קטע וגם הוספה של קטע חדש בוצעו בו-זמנית. (b/111659726)
- עכשיו, פרגמנטים ממתינים לסיום המעברים (בנוסף לאנימציות, שהבעיה בהן נפתרה בFragment
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או ב-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) - נוספה method סטטית
FragmentManager.findFragment(View)לאחזור ה-Fragment שמכיל תצוגה שהורחבה על ידי Fragment. תוסף Kotlin זמין גם בfragment-ktx. (aosp/1090757) - נוספו עומסים חדשים של
add()ו-replace()ב-FragmentTransactionשמקבליםClass<? extends Fragment>ו-Bundleאופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactoryכדי ליצור מופע של המקטע שרוצים להוסיף. בנוסף, נוסף ל-fragment-ktxתוסף Kotlin שמשתמש בסוגים מוחשיים (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987) - נוספו הערות
@MainThreadל-callbacks של מחזור החייםFragment. (b/127272564) - ממשקי ה-API שקשורים לכותרת של נתיב הניווט ב-
FragmentTransactionוב-FragmentManager.BackStackEntryהוצאו משימוש. (b/138252944) - השיטה
setTransitionStyleב-FragmentTransactionהוצאה משימוש. (aosp/1011537) - הרבה מהשיטות ב-
FragmentManagerכבר לאabstract. המחלקותFragmentManagerעצמן נשארותabstractואין ליצור מהן מופעים או להרחיב אותן ישירות. צריך להמשיך לקבל רק מופע קיים מ-getSupportFragmentManager(), מ-getChildFragmentManager()וכו'.
תיקוני באגים
- מתוך Fragment
1.1.0-rc04: מעברים שנדחו ב-Fragments מבוטלים עכשיו בצורה נכונה אחרי ש-Fragments נסגרו. (b/138251858) - Fragment
1.1.0-rc03: תוקנה בעיה שבה קריאה ל-postponeEnterTransition()עם הגדרת זמן קצוב לתפוגה יותר מפעם אחת לא ביטלה את הזמנים הקצובים הקודמים לתפוגה. (b/137797118) - מתוך Fragment
1.1.0-rc02: תוקן קריסה ב-FragmentPagerAdapterוב-FragmentStatePagerAdapterכשמסירים את הפריט הנוכחי. (b/137209870) - עכשיו, לפני שמתבצעת שליחה של
onDestroyView(), המערכת מחכה שאנימציות יסתיימו. (b/136110528) - אנימציות של Fragment מתתי-Fragments ומהצאצאים שלהם מטופלות עכשיו בצורה תקינה כשמפעילים אנימציה של ה-Fragment הראשי. (b/116675313)
- תוקנה בעיה
NullPointerExceptionכשמשתמשים במעברים של רכיבים משותפים ומשלבים פעולת פתיחה ופעולת הוספה. (b/120507394) - נוסף פתרון עקיף ל-
IllegalStateExceptions כשמשתמשים ב-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: ארטיפקט
fragment-testingמספק מחלקהFragmentScenarioלבדיקת קטע קוד בבידוד. פרטים נוספים מופיעים במסמכים בנושא בדיקת רכיבי Fragment באפליקציה. - FragmentFactory: עכשיו אפשר להגדיר
FragmentFactoryב-FragmentManagerכדי לנהל את היצירה של מופעי fragment, וכך לא נדרש יותר קונסטרוקטור ללא ארגומנטים. - Kotlin Property Delegates for ViewModels: ארטיפקט
fragment-ktxמכיל עכשיו שני Kotlin property delegates: by viewModels()לגישה ל-ViewModels שמשויכים לפרגמנטים בודדים ו-by activityViewModels()לגישה ל-ViewModels בהיקף הפעילות. - מחזור חיים מקסימלי: עכשיו אפשר להגדיר מצב מקסימלי של מחזור חיים בשביל Fragment באמצעות קריאה ל-
setMaxLifecycle()ב-FragmentTransaction. הדוח הזה מחליף את הדוחsetUserVisibleHint()שהוצא משימוש. ל-FragmentPagerAdapterול-FragmentStatePagerAdapterיש constructor חדש שמאפשר לעבור להתנהגות החדשה. - ה-constructor FragmentActivity LayoutId: מחלקות משנה של
FragmentActivityיכולות עכשיו לקרוא באופן אופציונלי ל-constructor ב-FragmentActivityשמקבל מזההR.layout, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView()ב-onCreate(). הדרישה שלמחלקת המשנה יהיה בנאי ללא ארגומנטים לא משתנה. - Fragment LayoutId constructor: מחלקות משנה של
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 יוצאות לאור. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- הקטעים מבטלים עכשיו בצורה נכונה את המעברים שנדחו בקטעים שהוצאו. (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 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
androidx.lifecycle.Lifecycleשיחות חוזרות (שקשורות ספציפית ל-STARTED, ל-RESUMED, ל-PAUSED, ל-STOPPEDול-DESTROYED) עבור רכיבי Fragment מוטמעים מקוננים כעת בצורה נכונה. (b/133497591)-
OnBackPressedCallbackinstances שרשומים ב-onCreate()של Fragment מקבלים עכשיו עדיפות על פני child FragmentManager. (b/133175997) - פרגמנטים של ילדים לא מונפשים יותר כשהפרגמנט של ההורה שלהם מוחלף. (b/121017790)
- עכשיו המערכת מתעלמת מהנפשות וממעברים של Fragments כשמשתמשים ב-
animateLayoutChanges="true", וכך נפתרה בעיה שבה Fragments לא נהרסו כמו שצריך. (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
- עכשיו, כשקטע הניווט הראשי משתנה, מתבצעת קריאה חוזרת (callback) לקטע חדש של
onPrimaryNavigationFragmentChanged(boolean). aosp/960857
תיקוני באגים
- פריטי תפריט שהורחבו על ידי Fragment צאצא מוסרים עכשיו בצורה תקינה כשמסירים את Fragment האב. 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 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
הגרסה הזו לא תואמת לגרסאות Preferences 1.1.0-alpha01 עד 1.1.0-alpha04. אם אתם משתמשים בגרסה הזו של Fragments, אתם צריכים לשדרג לגרסה Preferences 1.1.0-alpha05.
תכונות חדשות
- נוסף עומס יתר חדש של
postponeEnterTransition()שמקבל זמן קצוב לתפוגה, שאחריו Fragment יקרא אוטומטית ל-startPostponedEnterTransition()b/120803208
שינויים ב-API
- שינוי שעלול לשבור תאימות: הוסרה השיטה
FragmentFactoryinstantiateשהוצאה משימוש בעבר, שקיבלה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), התצוגה של רכיבי Fragment תיהרס כמו שצריך. 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
- הקריאה ל-API
moveToState(STARTED)ב-FragmentScenarioאפשרית עכשיו רק במכשירים עם API בגרסה 24 ומעלה. (b/129880016)
שינויים בהתנהגות
- כתוצאה מ-(b/129907905), לא מתקבל קריאה חוזרת (callback) ל-
onCreateView()לגבי מקטעים (fragments) במקבץ פעילויות קודמות (back stack) כשפעילות האירוח נוצרת מחדש. מעכשיו, הפונקציהonCreateView()תופעל רק כשהמקטע יהיה גלוי (כלומר, כשמבטלים את הפעולה האחרונה במקבץ פעילויות קודמות (back stack)).
תיקוני באגים
- תוקנה בעיה שמתרחשת כשמשתמשים בתג
<fragment>ב-XML ובבונהcontentLayoutIdשלFragmentActivityאוAppCompatActivity. (b/129907905) - תוקנה בעיה שבה מקטעים במקבץ פעילויות קודמות (back stack) לא הועברו לפחות אל
CREATEDאחרי שינוי בהגדרה, ולכן לא בוצע סילוק תקין של ViewModels ושל מקטעים משניים שנשמרו. (b/129593351) - תוקנה קריסה ב-
restoreSaveStateשנגרמה מחוסר סנכרון של הפרגמנטים שנשמרו אחרי שמצב המופע נשמר. (b/130433793) (aosp/947824) - תוקנו בעיות שבהן קריאה ל-
OnBackPressedCallbackשנוסף עם מחזור חיים של fragment לא התבצעה אם ל-FragmentManagerהיה back stack. פרטים נוספים מופיעים במאמר androidx.activity 1.0.0-alpha07. (aosp/948209) - האילוץ של
LAYER_TYPE_HARDWAREלאנימציות כבר לא חל על Fragments. אם אתם צריכים אנימציה של שכבת חומרה באופן ספציפי, עליכם להגדיר אותה כחלק מהאנימציה. (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של FragmentFactory שמקבלת Bundle כארגומנט, ואפליקציות צריכות להשתמש בעומס היתר החדש שלinstantiateשלא מקבל Bundle. (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)
- תוקנה בעיה שקרתה כשמשתמשים בבוני
@ContentViewבפעילות כשמשחזרים את מצב ה-Fragment. (b/127313094) - תוקנה הלוגיקה של
setTargetFragment()כשמחליפים מקטע יעד קיים במקטע שעדיין לא צורף ל-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 יוצאות. כאן אפשר לראות את הרשימה המלאה של פעולות ה-commit שנכללות בגרסה הזו.
תכונות חדשות
- חיפושים של הערות נשמרים עכשיו במטמון (b/123709449)
@ContentView
שינויים בהתנהגות
- שיחה אל
remove(), אלhide(), אלshow(), אלdetach()ואלsetPrimaryNavigationFragment()עם Fragment שמצורף אל FragmentManager אחר, מובילה עכשיו ל-IllegalStateExceptionבמקום לכשל שקט (aosp/904301)
תיקוני באגים
- הערך
onNewIntentעבורFragmentActivityמסומן עכשיו בצורה נכונה עם@CallSuper(b/124120586) - תוקנה בעיה שבה אפשר היה לקרוא ל-
DialogFragmentonDismiss()פעמיים כשמשתמשים ב-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-testingnow depends onandroidx.test:core-ktx1.1.0 stable (b/121209673) - עכשיו אפשר להשתמש ב-
openActionBarOverflowOrOptionsMenuעםFragmentScenarioכדי לבדוק תפריטי אפשרויות של Fragment hosted (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) - תוקנה הבעיה שבה לפעמים לא היו זמינים Fragments של יעד ב-
onDestroy()או אחריו. (b/122312935) - השיטה onDismiss() של DialogFragment מופעלת עכשיו לפני
onDestroy(). (aosp/874133) (aosp/890734)
גרסה 1.1.0-alpha03
17 בדצמבר 2018
תכונות חדשות
- ה-Fragment כולל עכשיו את
BundleSavedStateRegistryOwnerותלוי בספריית SavedState החדשה [aosp/824380] - נוסף נציג מאפיינים של Kotlin כדי לאחזר ViewModels שמשויכים לפעילות המכילה [b/119050253]
by activityViewModels - ההרחבה של
by viewModelsKotlin property delegate מאפשרת להשתמש בשיטת lambda אופציונלית כדי לקבל אתViewModelStoreOwner, וכך להעביר את Fragment האב אוViewModelStoreOwnerמותאם אישית אחר באמצעות קוד כמוval viewModel: MyViewModel by viewModels(::requireParentFragment)[b/119050253]
שינויים ב-API
-
FragmentScenarioמאפשרת עכשיו לציין עיצוב כמוTheme.AppCompat[b/119054431]. זהו שינוי תוכנה שעלול לגרום לכשל. - נוספה שיטת
requireView()שמחזירה@NonNull Viewאו יוצרתIllegalStateException[b/120241368] - נוספה method
requireParentFragment()שמחזירה@NonNull Fragmentאו יוצרתIllegalStateException[b/112103783]
תיקוני באגים
- תוקן IllegalStateException: כשל בשמירת המצב b/120814739
- קטעים שמשוחזרים ממצב שמור של מופע תמיד יקבלו עכשיו
Bundle[b/119794496] - אם מוסיפים מחדש קטעים שהוסרו, הם לא משתמשים יותר באובייקט
Lifecycleשלהם [b/118880674]
גרסה 1.1.0-alpha02
3 בדצמבר 2018
תכונות חדשות
- התוספים של Kotlin ל-FragmentScenario מאפשרים עכשיו להשתמש בביטוי למדא ליצירת Fragment, כחלופה להעברה של מופע
FragmentFactory. (aosp/812913)
תיקוני באגים
- תוקן IllegalStateException כשמשתמשים ב-Fragments מקוננים במקבץ פעילויות קודמות (back stack) (b/119256498)
- תוקנה קריסה שהתרחשה כשמשתמשים ב-
FragmentScenario.recreate()עםFragmentFactory(aosp/820540) - תוקנה בעיה שגרמה לכך שלא הייתה גישה לרכיבי Fragment של היעד אחרי שהרכיב הוסר (aosp/807634)
גרסה 1.1.0-alpha01
5 בנובמבר 2018
זו הגרסה הראשונה של
fragment-testing artifact ושל FragmentScenario שמבוססת על
androidx.test:core APIs. פרטים נוספים זמינים במאמרי העזרה בנושא בדיקת קטעי קוד.
תכונות חדשות
- מחלקת FragmentScenario חדשה לבדיקת רכיבי Fragment בבידוד.
- עכשיו אפשר להגדיר
FragmentFactoryבכלFragmentManagerכדי לשלוט באופן יצירת המופעים החדשים של Fragment. - נוסף נציג חדש של מאפיין Kotlin
by viewModels()לאחזור ViewModel מ-Fragment. - אירועי קלט בהמתנה (כמו קליקים) מבוטלים עכשיו ב-
onStop()של Fragment.
שינויים ב-API
- הרחבנו באופן משמעותי את האנוטציות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) בכל ממשק Fragment API.
תיקוני באגים
- תוקנה בעיה שגרמה לכשל בפעולות של Fragment מתוך LiveData (b/77944637)
בעיות מוכרות
- אי אפשר לגשת ל-Target Fragments אחרי שמסירים Fragment מ-FragmentManager.
-
fragment-testingתלוי ב-androidx.test:core:1.0.0-beta01במקום ב-androidx.test:core:1.0.0הנכון.