מקטע (fragment)
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
13 באוגוסט 2025 | 1.8.9 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Fragment, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle
של האפליקציה או המודול:
מגניב
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. נשמח לשמוע מכם אם תגלו בעיות חדשות או אם יש לכם רעיונות לשיפור הספרייה הזו. לפני שיוצרים ספרייה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להוסיף את ההצבעה שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא כלי המעקב אחר בעיות.
גרסה 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 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שבה לחיצה מהירה על לחצן החזרה של המערכת או ביצוע מהיר של תנועת חזרה גורמים לקריסת רכיבי Fragment כשמשתמשים במעברים של 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
מטפל עכשיו בצורה נכונה במקרים שבהם קטע האב מועבר למחסנית האחורית של 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
מכיל עכשיוAndroidFragment
Composable
שמאפשר להוסיף מקטעים להיררכיית Compose באמצעות שם המחלקה של המקטע. הוא מטפל באופן אוטומטי בשמירה ובשחזור של מצב ה-Fragment. השיטה הזו אמורה לשמש כתחליף ישיר לגישה המומלצת הקודמת של שימוש ב-AndroidViewBinding
כדי להרחיב Fragment. - הקריאה החוזרת (callback) של
onBackStackChangeCancelled
בממשק שלFragmentManager
מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager
, וכך היא מתקרבת יותר למועד של הקריאה החוזרת (callback) שלonBackStackChangeCommitted
.OnBackStackChangedListener
גרסה 1.8.0-rc01
29 במאי 2024
androidx.fragment:fragment-*:1.8.0-rc01
משוחרר. גרסה 1.8.0-rc01 מכילה את הקומטים האלה.
תיקוני באגים
- הקריאה החוזרת
onBackStackChangeCancelled
בממשקFragmentManagers OnBackStackChangedListener
מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager
, ולכן היא קרובה יותר מבחינת התזמון לקריאה החוזרתonBackStackChangeCommitted
. (I5ebfb, b/332916112)
גרסה 1.8.0-beta01
14 במאי 2024
androidx.fragment:fragment-*:1.8.0-beta01
משוחרר. גרסה 1.8.0-beta01 מכילה את הקומטים האלה.
תיקוני באגים
- מ-Fragment
1.7.1
: מעכשיו, התכונה 'חזרה עם חיזוי' תפעל רק בעסקאות שבהן לכל הפרגמנטים יש 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 מכילה את הקומטים האלה.
תכונות חדשות
- ה-API החדש
AndroidFragment
Composable
מאפשר להוסיף פרגמנטים להיררכיית הכתיבה באמצעות שם מחלקת הפרגמנט. הוא מטפל באופן אוטומטי בשמירה ובשחזור של מצב ה-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
שמטרתה להקל על השימוש ב-Compose עבור ממשק המשתמש של 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, כך שהערך null של הסוג הגנרי של המארח תואם לערך null של סוג ההחזרה של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
שמטרתה להקל על השימוש ב-Compose עבור ממשק המשתמש של 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
שנוסף במעבר1.5.0-alpha04
.
גרסה 1.7.0-alpha05
20 בספטמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha05
משוחרר. גרסה 1.7.0-alpha05 מכילה את הקומיטים האלה.
תכונות חדשות
- ב-Fragments יש עכשיו תמיכה בתכונה 'חזרה עם חיזוי' כשמשתמשים ב-Androidx Transitions. כך אפשר להשתמש בתנועת החלקה אחורה כדי לעבור לקטע הקודם באמצעות המעבר המותאם אישית של Androidx לפני שמחליטים לאשר או לבטל את העסקה באמצעות תנועת החלקה שהושלמה. כדי להפעיל את התכונה הזו, צריך להסתמך על הגרסה Transition
1.5.0-alpha03
. (Ib49b4, b/285175724)
בעיות מוכרות
- יש כרגע בעיה שבה אחרי שמבטלים תנועת חזרה עם מעבר פעם אחת, בפעם הבאה שמבצעים את תנועת החזרה, המעבר לא מופעל ומוצג מסך ריק. יכול להיות שהסיבה לכך היא בעיה בספריית המעברים. (b/300157785). אם הבעיה הזו מופיעה, צריך לדווח על בעיה שקשורה ל-Fragment ולצרף פרויקט לדוגמה שבו הבעיה משוכפלת. כדי להשבית את התכונה 'חזרה חזויה', משתמשים באפשרות
FragmentManager.enabledPredictiveBack(false)
בonCreate()
של הפעילות.
גרסה 1.7.0-alpha04
6 בספטמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha04
משוחרר. גרסה 1.7.0-alpha04 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה ביטול של תנועת חזרה חזויה גרם לכך שקטעים לא הגיעו למצב הנכון במחזור החיים. (I7cffe, b/297379023)
- תוקנה רגרסיה שבה אנימציות הורשו לפעול עם מעברים. (I59f36)
- תוקנה בעיה בשימוש בתכונה 'חזרה עם תחזית' עם קטעים, שבה ניסיון לחזור פעמיים ברצף מהיר בקטע השני מהסוף במחסנית החזרה גרם לקריסה. (Ifa1a4)
גרסה 1.7.0-alpha03
23 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha03
משוחרר. גרסה 1.7.0-alpha03 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה ב-Fragments כשמשתמשים בתכונה 'חזרה עם תצוגה מקדימה', שגרמה לדילוג על ה-Fragment הראשון במחסנית החזרה של מנהל ה-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
משוחרר. הגרסה הזו פותחה בענף פנימי.
תכונות חדשות
- כשמשתמשים ב-
Animator
, רכיבי Fragment תומכים עכשיו בתכונה 'חזרה לאחור באפליקציה עם אנימציה מקדימה'. כך תוכלו להשתמש בתנועת החלקה אחורה כדי לראות את הקטע הקודם עם האנימטור המותאם אישית שלכם לפני שתחליטו אם לאשר את העסקה באמצעות תנועת ההחלקה שהושלמה או לבטל אותה. אפשר גם להשבית את ההתנהגות החדשה הזו באמצעות הניסוי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
כדי להסיר קבוצה של פרגמנטים, הערכים שלViewModel
של כל פרגמנט מוטבע ינוקו כשערכיViewModels
של פרגמנט האב ינוקו. (I6d83c, b/296173018)
גרסה 1.6.1
26 ביולי 2023
androidx.fragment:fragment-*:1.6.1
משוחרר. גרסה 1.6.1 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה בעיה שבה המצב השמור שנשמר כשהפעילות הופסקה אבל לא נהרסה נשמר במטמון באופן שגוי גם אחרי שהמופע של ה-Fragment הועבר חזרה למצב
RESUMED
. אם מופעלת שמירה ושחזור של אותו קטע באמצעות API של כמה מחסניות חזרה, המצב שנשמר במטמון ישמש שוב. (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
- המצב השמור של
Fragment
s פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקותParcelable
בהתאמה אישית) לבין מצב שסופק על ידי המפתח, שמאוחסן עכשיו תמיד ב-Bundle
שמאפשר לקבוע בדיוק מאיפה מגיע המצב של fragment. - הממשק
FragmentManager.OnBackStackChangedListener
הורחב עם שתי קריאות חוזרות נוספות שלonBackStackChangeStarted
ו-onBackStackChangeCommitted
שמופעלות עם כלFragment
ממש לפני שהן מתווספות או מוסרות ממחסנית החלקים הקודמים, וממש אחרי שהטרנזקציה מאושרת, בהתאמה. -
FragmentStrictMode
נוסףWrongNestedHierarchyViolation
חדש שמזהה מתי שבר צאצא מוטמע בהיררכיית התצוגה של ההורה, אבל לא נוסף ל-childFragmentManager
של ההורה. - ממשקי ה-API
Fragment
ו-FragmentManager
שמקבליםIntent
אוIntentSender
מסומנים עכשיו בצורה נכונה באמצעות@NonNull
כדי למנוע העברה של ערך null, כי העברה כזו תמיד גורמת לקריסה מיידית של ממשקי ה-API המתאימים של Android framework שהשיטות האלה קוראות להם. -
DialogFragment
מאפשרת עכשיו גישה ל-ComponentDialog
הבסיסי באמצעותrequireComponentDialog()
API. - ה-Fragment תלוי עכשיו ב-Lifecycle
2.6.1
. - ה-Fragment תלוי עכשיו ב-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
נשלחו לעסקאות שלא שינו בפועל את מחסנית החזרה, אם הן שולבו עם עסקאות שכן שינו אותה. (I0eb5c, b/279306628)
גרסה 1.6.0-beta01
19 באפריל 2023
androidx.fragment:fragment-*:1.6.0-beta01
משוחרר. גרסה 1.6.0-beta01 מכילה את הקומיטים האלה.
תיקוני באגים
- השימוש ב-
postponeEnterTransition
עם הגדרת זמן קצוב לתפוגה והחלפת הקטע שנדחה כבר לא גורם לדליפה של הקטע שנדחה. (I2ec7d, b/276375110) - הקריאות החוזרות (callback) החדשות
onBackStackChangeStarted
ו-onBackStackChangeCommitted
ישלחו עכשיו את הפראגמנט רק פעם אחת, גם אם כמה עסקאות מכילות את אותו פראגמנט. (Ic6b69)
גרסה 1.6.0-alpha09
5 באפריל 2023
androidx.fragment:fragment-*:1.6.0-alpha09
משוחרר. גרסה 1.6.0-alpha09 מכילה את הקומיטים האלה.
שינויים ב-API
-
DialogFragment
מאפשרת עכשיו גישה ל-ComponentDialog
הבסיסי באמצעותrequireComponentDialog()
API. (I022e3, b/234274777) - הוספנו הערות ל-API של
commitNow()
,executePendingTransactions()
ו-popBackStackImmediate()
עם@MainThread
, כלומר עכשיו הם יחזירו שגיאות בנייה אם לא יתבצעו קריאות מה-thread הראשי, במקום להמתין עד לכישלון בזמן הריצה. (Ic9665, b/236538905)
תיקוני באגים
- תוקן באג ב-
FragmentManager
שבו שמירה ושחזור באותו פריים עלולים לגרום לקריסה. (Ib36af, b/246519668) - הפונקציות
OnBackStackChangedListener
onBackStackChangeStarted
ו-onBackStackChangeCommitted
של הקריאה החוזרת מופעלות עכשיו רק כשמשנים את מחסנית החזרהFragmentManager
. (I66055, b/274788957)
גרסה 1.6.0-alpha08
22 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את הקומיטים האלה.
שינוי בהתנהגות
- התזמון של
OnBackStackChangedListener.onBackStackChangeCommited
callback שונה כך שהוא יתבצע לפני הפעולות של fragment. כך אפשר לוודא שהקריאה החוזרת אף פעם לא תעביר קטע שנותק. (I66a76, b/273568280)
תיקוני באגים
- Fragment
1.5.6
: תוקנה בעיה שבה קריאה ל-clearFragmentResultListener
בתוךsetFragmentResultListener
לא פעלה אםLifecycle
כבר היהSTARTED
והתוצאה כבר הייתה זמינה. (If7458)
עדכונים של יחסי תלות
- ה-Fragment תלוי עכשיו ב-Lifecycle
2.6.1
. (586fe7) - ה-Fragment תלוי עכשיו ב-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 מכילה את הקומיטים האלה.
שינוי בהתנהגות
- הקריאה החוזרת (callback) החדשה
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
, שמאפשרות לקבל מידע נוסף ולשלוט יותר טוב כשמתרחשים שינויים במחסנית החזרה ב-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)
תיקוני באגים
- תוקנו רגרסיות שנגרמו כתוצאה מהשילוב של ממשקי התקשרות חזרה חדשים של ספק (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) כדי להבטיח שקטעי קוד תמיד יקבלו את ההתקשרות חזרה המתאימה. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
גרסה 1.6.0-alpha02
24 באוגוסט 2022
הגרסאות androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
ו-androidx.fragment:fragment-testing:1.6.0-alpha02
יוצאות. גרסה 1.6.0-alpha02 מכילה את הקומיטים האלה.
תיקוני באגים
- 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 מכילה את הקומיטים האלה.
שינויים בהתנהגות
- המצב השמור של
Fragment
s פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקות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
בהתאמה אישית עם מארח שלא מטמיע ממשק של פונקציית קריאה חוזרת של ספק (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) וקריאה לפונקציית השליחה שהוצאה משימוש, גורמים לכך שהשליחה לשברי משנה נכשלת. (I9b380)
גרסה 1.5.3
21 בספטמבר 2022
הגרסאות androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
ו-androidx.fragment:fragment-testing:1.5.3
יוצאות. גרסה 1.5.3 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקנה שגיאה שגרמה להחזרות (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 – ל-
Fragment
יש עכשיו אפשרות לספקViewModelProvider.Factory
ללא מצב דרךCreationExtras
של Lifecycle2.5.0
. - שילוב של תיבת דו-שיח של רכיב – מעכשיו,
DialogFragment
משתמש ב-ComponentDialog
דרך Activity1.5.0
כתיבת הדו-שיח שמוחזרת כברירת מחדל על ידיonCreateDialog()
. - שינוי מבנה של מצב שמור של מופע – חל שינוי באופן שבו רכיבי 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 מכילה את הקומיטים האלה.
שינוי מבנה של מצב מופע שמור
- המצב שמשויך לכל מקטע בודד נשמר עכשיו בנפרד מהמצב הפנימי של
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
נוספה שיטה חדשהdismissNow
שמשתמשת ב-commitNow
כדי להשיג שוויון עם הפונקציהshowNow
. הערה: הפעולה הזו לא תגרום להסרתDialog
באופן מיידי, אלא רק תעדכן באופן סינכרוני את המצב שלFragmentManager
. (I15c36, b/72644830)
שינוי מבנה של מצב מופע שמור
-
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
מותאם אישית, במקום להשתמש תמיד במפעל של הפראגמנט. (I56170, b/214106513)
גרסה 1.4.0
17 בנובמבר 2021
הגרסאות androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
ו-androidx.fragment:fragment-testing:1.4.0
יוצאות. גרסה 1.4.0 מכילה את הקומיטים האלה.
שינויים חשובים מאז גרסה 1.3.0
- ממשקי ה-API
FragmentStrictMode
מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של קטעים שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או לגרום לקריסת האפליקציה. אפשר להגדיר אתFragmentStrictMode.Policy
ששולט באילו בדיקות מופעלות ובאילו 'עונשים' מופעלים ב-FragmentManager
באמצעות השיטה החדשהsetStrictModePolicy()
. המדיניות הזו חלה עלFragmentManager
וגם על כל מנהלי קטעי הילדים שלא מגדירים מדיניות ייחודית משלהם. מידע נוסף מופיע במאמר בנושא StrictMode for fragments.
FragmentContainerView
כולל עכשיו את השיטהgetFragment()
שמחזירה את ה-fragment שהתווסף לאחרונה למאגר התגים. השיטה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם המזהה שלFragmentContainerView
, אבל מאפשרת שרשור של הקריאה.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
כולל עכשיו אתCloseable
, כך שאפשר להשתמש בו עם ה-method use
של Kotlin או עם try-with-resources.נוספה
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את אנימציית המעבר הרגילה של הפעילות שנלקחה מהעיצוב במעבר של רכיבי Fragment.ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean)
הוסר, והכלי החדש לניהול מצב הוא עכשיו האפשרות היחידה שזמינה.
Multiple back stacks
FragmentManager
שומר על ערימת חזרה שמורכבת מעסקאות של fragment שהשתמשו ב-addToBackStack()
. כך תוכלו להציג את העסקאות האלה בחלון קופץ ולחזור למצב הקודם, באמצעות המנגנונים של שמירת מצב באמצעות פרגמנטים כדי לאפשר לפרגמנטים לשחזר את המצב שלהם בצורה מתאימה.
בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שלושה ממשקי FragmentManager
API חדשים: saveBackStack(String name)
, restoreBackStack(String name)
ו-clearBackStack(String name)
. ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל מקטע שנוסף בעסקאות האלה, ומאפשרים לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב שלהם. כך אפשר 'להחליף' בין כמה ערימות של היסטוריית חזרה אחורה על ידי שמירת הערימה הנוכחית ושחזור ערימה שמורה.
saveBackStack()
פועלת באופן דומה ל-popBackStack()
בכך שהיא אסינכרונית וגורמת לכל טרנזקציות הפרגמנטים שקשורות לשם הספציפי הזה להתבטל ('להימחק') ולכל הפרגמנטים שנוספו להימחק ולהוסר, אבל יש כמה הבדלים חשובים:
- הערך
saveBackStack()
תמיד כולל. - בניגוד ל-
popBackStack()
, שפותח את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציהsaveBackStack()
לא עושה כלום אם לא ביצעתם בעבר טרנזקציית פרגמנט באמצעותaddToBackStack()
עם אותו שם מדויק שאינו null. - המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט מאוחסן, הפונקציה
onSaveInstanceState()
של כל פרגמנט נקראת והמצב משוחזר, וכל מופע שלViewModel
שמשויך לפרגמנטים האלה נשמר (והפונקציהonCleared()
לא נקראת לגביהם).
כדי להשתמש בעסקאות חלקיות עם saveBackStack()
, הן צריכות לעמוד בקריטריונים מסוימים:
- בכל עסקה של שבר צריך להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת. - קבוצת העסקאות שנשמרת צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת לשברים מחוץ לקבוצת העסקאות הזו), כדי להבטיח שאפשר יהיה לשחזר אותן בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במחסנית החזרה בזמן שחלף.
- כדי לוודא שהפונקציה
FragmentManager
לא מחזירה הפניות לשברים שנשמרו אחרי שהמערך האחורי נשמר, אף שבר שנשמר לא יכול להיות שבר שנשמר או לכלול שבר שנשמר בקבוצת הצאצאים שלו.
בדומה לפונקציות saveBackStack()
, restoreBackStack()
ו-clearBackStack()
, שמשחזרות או מוחקות את היסטוריית החזרה שנשמרה, בהתאמה, הפונקציות האלה לא עושות כלום אם לא קראתם קודם לפונקציה 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
- נוספה אזהרת lint לזיהוי קריאה ל-
detach()
וגם ל-attach()
באותוFragment
באותוFragmentTransaction
– מכיוון שהפעולות המשלימות האלה מבטלות זו את זו כשהן מתבצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי שהן יבצעו פעולה כלשהי.DetachAndAttachFragmentInSameFragmentTransaction
(aosp/1832956, b/200867930) - נוספה שגיאת ה-lint
FragmentAddMenuProvider
לתיקון השימוש במחזור החיים של Fragment במחזור החיים של תצוגת Fragment כשמשתמשים ב-APIaddMenuProvider
שלMenuHost
. (aosp/1830457, b/200326272)
עדכונים במסמכי התיעוד
- הודעת הוצאה משימוש של ממשקי API שעכשיו מטופלים על ידי ממשקי Activity Result 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)
עדכון תלות
- From 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
מאחורי הקלעים כדי לשמור את המצב שלו. גם השיטותsaveAllState()
ו-restoreSavedState()
הוצאו משימוש ב-FragmentController
. אם אתם משתמשים ב-FragmentController
כדי לארח רכיבים מחוץ ל-FragmentActivity
, אתם צריכים להטמיע אתSavedStateRegistryOwner
ב-FragmentHostCallbacks
. (Iba68e, b/188734238)
תיקוני באגים
- תוקנה בעיה שבה הקריאה אל
saveBackStack()
כחלק מהתמיכה במספר ערימות חזרה נכשלת כשמבצעים אותה בו-זמנית עם הפעלתFragmentTransaction
שמשתמשת ב-replace()
. (I73137) - תוקנה בעיה
NullPointerException
שהתרחשה אחרי ששחזרו ידנית ערימה של היסטוריית חזרה שנשמרה והכילה כמה טרנזקציות, כשמשתמשים ב-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.4
by aosp/1679887. מעכשיו, קטעי קוד מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעות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)הרחבנו את המחלקה
FragmentStrictMode
Violation
כדי להוסיף מידע על המבנה בהתבסס על כל הפרה. כך תוכלו לראות בדיוק מה גרם להפרה, כולל הקטע המפר (If5118, b/187871150). כלViolation
מכיל את הפרטים הבאים:-
WrongFragmentContainerViolation
מכיל עכשיו אתViewGroup
שניסית להוסיף ל-Fragment
. (I83c75, b/187871150) - הורחב ל-
TargetFragmentUsageViolation
,SetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
ו-GetTargetFragmentRequestCodeUsageViolation
, כאשרSetTargetFragmentUsageViolation
מכיל את קטע היעד ואת קוד הבקשה. (I741b4, b/187871150) -
SetUserVisibleHintViolation
מכיל עכשיו את הערך הבוליאני שהועבר אלsetUserVisibleHint()
. (I00585, b/187871150) -
FragmentTagUsageViolation
מכיל עכשיו את ViewGroup שהתג<fragment>
ניסה להרחיב לתוכו קטע.(I5dbbc, b/187871150) -
FragmentReuseViolation
מכיל עכשיו את המזהה הייחודי של המופע הקודם שלFragment
שגרם להפרה. (I0544d, b/187871150) -
RetainInstanceUsageViolation
הוא עכשיו מופשט ויש לו שני תת-מחלקות,SetRetainInstanceUsageViolation
ו-GetRetainInstanceUsageViolation
, שמייצגות את שני המקרים של סוג ההפרה. (Ic81e5, b/187871150)
-
שינויים בהתנהגות
-
FragmentContainerView
מעכשיו מוציא חריגה כשמנסים לשנות את המאפייןfitsSystemWindow
באופן פרוגרמטי או באמצעות XML. צריך לטפל בתוספות באמצעות התצוגה של כל רכיב 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
כולל עכשיו את השיטהgetFragment()
שמחזירה את ה-fragment שהתווסף לאחרונה למאגר התגים. השיטה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם המזהה שלFragmentContainerView
, אבל מאפשרת שרשור של הקריאה. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
נוספה
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את אנימציית המעבר הרגילה של הפעילות שנלקחה מהעיצוב במעבר של רכיבי Fragment. (I46652)
Multiple back stacks
FragmentManager
שומר על ערימת חזרה שמורכבת מעסקאות של fragment שהשתמשו ב-addToBackStack()
. כך תוכלו להציג את העסקאות האלה בחלון קופץ ולחזור למצב הקודם, באמצעות המנגנונים של שמירת מצב באמצעות פרגמנטים כדי לאפשר לפרגמנטים לשחזר את המצב שלהם בצורה מתאימה.
בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שני ממשקי API חדשים: FragmentManager
ו-saveBackStack(String name)
.restoreBackStack(String name)
ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל מקטע שנוסף בעסקאות האלה, ומאפשרים לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב שלהם. כך אפשר 'להחליף' בין כמה ערימות של היסטוריית חזרה אחורה על ידי שמירת הערימה הנוכחית ושחזור ערימה שמורה.
saveBackStack()
פועלת באופן דומה ל-popBackStack()
בכך שהיא אסינכרונית וגורמת לכל טרנזקציות הפרגמנטים שקשורות לשם הספציפי הזה להתבטל ('להימחק') ולכל הפרגמנטים שנוספו להימחק ולהוסר, אבל יש כמה הבדלים חשובים:
- הערך
saveBackStack()
תמיד כולל. - בניגוד ל-
popBackStack()
, שפותח את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציהsaveBackStack()
לא עושה כלום אם לא ביצעתם בעבר טרנזקציית פרגמנט באמצעותaddToBackStack()
עם אותו שם מדויק שאינו null. - המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט מאוחסן, הפונקציה
onSaveInstanceState()
של כל פרגמנט נקראת והמצב משוחזר, וכל מופע שלViewModel
שמשויך לפרגמנטים האלה נשמר (והפונקציהonCleared()
לא נקראת לגביהם).
כדי להשתמש בעסקאות חלקיות עם saveBackStack()
, הן צריכות לעמוד בקריטריונים מסוימים:
- בכל עסקה של שבר צריך להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת. - קבוצת העסקאות שנשמרת צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת לשברים מחוץ לקבוצת העסקאות הזו), כדי להבטיח שאפשר יהיה לשחזר אותן בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במחסנית החזרה בזמן שחלף.
- כדי לוודא שהפונקציה
FragmentManager
לא מחזירה הפניות לשברים שנשמרו אחרי שהמערך האחורי נשמר, אף שבר שנשמר לא יכול להיות שבר שנשמר או לכלול שבר שנשמר בקבוצת הצאצאים שלו.
בדומה ל-saveBackStack()
, הפונקציה restoreBackStack()
לא עושה כלום אם לא קראתם קודם לפונקציה saveBackStack()
עם אותו שם. (b/80029773)
Fragment StrictMode
ממשקי ה-API FragmentStrictMode
מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של קטעים שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או לגרום לקריסת האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy
ששולט באילו בדיקות מופעלות ובאילו 'עונשים' מופעלים ב-FragmentManager
באמצעות השיטה החדשה setStrictModePolicy()
. המדיניות הזו חלה על FragmentManager
וגם על כל מנהלי קטעי הילדים שלא מגדירים מדיניות ייחודית משלהם. (#123, #131, #150, b/143774122)
-
detectFragmentReuse()
בודק אם מופעFragment
שהוסר בעבר מתווסף מחדש ל-FragmentManager
. אסור לקיים אינטראקציה עם מופעFragment
או לשמור הפניה אליו אחרי שהוא נהרס והוסר מ-FragmentManager
. (#142, b/153738653) -
detectFragmentTagUsage()
מזהה מתי משתמשים בתג<fragment>
ב-XML של הפריסה. תמיד צריך להשתמש ב-FragmentContainerView
כשמנפחים פרגמנטים כחלק מהפריסה. (מס' 141, b/153738235) -
detectWrongFragmentContainer()
מזהה מתי מוסיפים פרגמנט למאגר שהוא לאFragmentContainerView
. תמיד צריך להשתמש ב-FragmentContainerView
כמאגר של רכיבי ה-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)- בדיקת
DialogFragmentCallbacksDetector
Lint מציגה עכשיו אזהרה כשמתבצעת קריאה ל-setOnCancelListener
או ל-setOnDismissListener
בשיטהonCreateDialog()
שלDialogFragment
– מאזינים אלה הם בבעלותDialogFragment
עצמו, ועליכם לבטל אתonCancel()
ו-onDismiss()
כדי לקבל את הקריאות החוזרות האלה. (#171, b/181780047, b/187524311)
תיקוני באגים
- מ-Fragment 1.3.4: תוקנה רגרסיה שהוצגה ב-Fragment
1.3.3
כשמשתמשים ב-API ViewTreeViewModelStoreOwner.get()
עםViewModelProvider
או בשיטה Jetpack Compose שלviewModel()
בתוך Fragment. בתרחישי השימוש האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory
שסופק על ידי ה-Fragment אם הוא מחליף אתgetDefaultViewModelProviderFactory()
(כמו במקרה של 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
מוגדר כ-false ב-ViewGroup, המעבר יתבצע עכשיו בצורה תקינה. (I99675)
External Contribution
- תודה ל-simonschiller על הטמעת
Closeable
ב-FragmentScenario
. (#121, b/143774122) - תודה ל-simonschiller על הוספת כל
FragmentStrictMode
API לגרסה הזו! (#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
תמיד מבטל את הנעילה של המצב השמור בתור הפעולה הראשונה שלו ב-lifecycle callbacks שהוא מבטל. (I6db7a)
עדכון תלות
- From 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. מעכשיו, קטעי קוד מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעות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
כשמשתמשים ב-APIViewTreeViewModelStoreOwner.get()
עםViewModelProvider
או בשיטת Jetpack ComposeviewModel()
בתוך 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
ב-ViewGroup מוגדר כ-false, המעבר יתבצע עכשיו בצורה תקינה. (I99675)
גרסה 1.3.3
21 באפריל 2021
הגרסאות androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
ו-androidx.fragment:fragment-testing:1.3.3
יוצאות. גרסה 1.3.3 מכילה את הקומיטים האלה.
תכונות חדשות
- השימוש ב-
SavedStateViewModelFactory
עכשיו עובד כשמשתמשים בו עםSavedStateRegistryOwner
שמוחזר על ידי שימוש ב-ViewTreeSavedStateRegistryOwner.get()
עם התצוגה של 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()
מוסיף עכשיו כניסה נכונה לפריט הראשון ברשימת הפריטים הפעילים. (If5c33, b/183705451)
תיקוני באגים חדשים ב-State Manager
- מנהל המצב החדש של רכיבי Fragment מטפל עכשיו בצורה תקינה במעברי יציאה עם פעולות הסתרה. (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)
תיקוני באגים
- קטעי קוד שהורחבו לפעילות שכבר קיימת באמצעות FragmentContainerView מוצגים עכשיו בצורה תקינה אחרי שינוי בהגדרות.
RESUMED
(Ie14c8, b/180538371) - אין יותר
}
נוסף בסוף הפרגמנטtoString()
(I54705, b/177761088) - שיטות שהוחלפו ב-FragmentActivity יורשות עכשיו בצורה תקינה את ה-JavaDoc של שיטת הבסיס (I736ce, b/139548782)
- המסמכים של
setFragmentResult
ושלsetFragmentResultListener
עודכנו כדי לשקף שהם כבר לא מקבלים ערכים שניתנים לאיפוס (I990ba, b/178348386)
תיקוני באגים חדשים ב-State Manager
- תוקן דליפת זיכרון בשברים שנגרמה על ידי
mFocusedView
(Ib4e9e, b/179925887) - מעכשיו, קטעי קוד קוראים ל-
onCreateOptionsMenu
בצורה תקינה כשמשתמשים בעסקאות של הצגה/הסתרה (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: נוספה תמיכה ב-API
ActivityResultRegistry
שהוצג ב-Activity1.2.0
כדי לטפל בתהליכי עבודה שלstartActivityForResult()
+onActivityResult()
וגם שלrequestPermissions()
+onRequestPermissionsResult()
בלי להחליף שיטות ב-Fragment, בנוסף לאספקת ווים לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות.- במהדורה הזו תוקנו מספר בעיות שקשורות לקודי בקשות לא תקינים ולשליחת בקשות הרשאה שמונעות מ-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
בפעם הראשונה. - עכשיו יש חלופה ל-
FragmentScenario
API שלonFragment
בצורה של שיטת ההרחבה המוחשית של KotlinwithFragment
שמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון.
-
ViewTree
Support: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
, וכך נמנעות חריגות שבהן מצוין 'אין אירוע down מ-INITIALIZED'. (eda2bd, b/176138645) - כשמשתמשים ב-
FragmentContainerView
, קטעים שמשתמשים ב-Animator
מופיעים עכשיו בסדר הנכון. (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) - ניסיון להגדיר את משך החיים המקסימלי של פרגמנט ל-
DESTROYED
יגרום עכשיו להפעלתIllegalArgumentException
(Ie7651, b/170765622) - הפעלת FragmentScenario עם מצב
DESTROYED
תגרום עכשיו להצגתIllegalArgumentException
(I73590, b/170765622)
תיקוני באגים חדשים ב-State Manager
- תוקנה הבעיה שבה התצוגה לא מגיעה למצב הסופי שלה אם קוטעים מעבר של fragment שהשתמש ב-
Animator
או באחת מהאפשרויות שלTRANSIT_FRAGMENT_
. (I92426, b/169874632) - תוקנה בעיה שמנעה את ההרס התקין של פרגמנטים עם
Animation
יציאה. (I83d65) - יציאה מקטעים שהאפקטים שלהם הפוכים מבטלת אותם עכשיו כמו שצריך ומפעילה אותם מחדש עם אפקט הכניסה הנכון. (I62226, b/167092035)
- תוקנה בעיה שבה היציאה
Animator
מ-hide()
לא פעלה. (Id7ffe) - עכשיו אפשר לראות את המקטעים בצורה תקינה כשדוחים את ההתחלה שלהם ומתחילים אותם מיד. (Ie713b, b/170022857)
- אם קטע מסיר את התצוגה הממוקדת שלו במהלך אנימציה, הוא לא ינסה יותר לשחזר את המיקוד בתצוגה המנותקת כשהוא יגיע אל
RESUMED
(I38c65, b/172925703)
External Contribution
-
FragmentFactory
שומר עכשיו במטמון מחלקות של רכיבי Fragment בנפרד עבור מופעים שונים של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)
שינויים בהתנהגות
- קבצי משאבים של Fragment הוגדרו כפרטיים בצורה נכונה. (aosp/1425237)
תיקוני באגים
- פרגמנטים שנוצרו באמצעות התג
<fragment>
ימתינו עכשיו בצורה תקינה עד שהתצוגות שלהם יתווספו למאגר לפני שהם יעברו למצב STARTED (I02f4c) - אפקטי היציאה של קטעים שגלויים ואז
setMaxLifecycle()
עדCREATED
פועלים עכשיו כמו שצריך. (b/165822335) - הסרה של פרגמנט מנותק שלא נוסף למחסנית החזרה כבר לא גורמת לדליפת זיכרון. באדיבות ניקלאס אנסמן גירץ! (b/166489383)
- מעכשיו, תמיד יהיה ערך שאינו null ל-
FragmentManager
של פרגמנטים פעילים, ופרגמנטים עם ערך שאינו null ל-FragmentManager
תמיד ייחשבו כפעילים. (aosp/1422346) - אפקטי ברירת המחדל של קטע,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
ו-TRANSIT_FRAGMENT_FADE
, משתמשים עכשיו ב-Animator
במקום ב-Animation
. (b/166155034)
תיקוני באגים חדשים ב-State Manager
- מעכשיו, הפעולות של Fragments משחזרות בצורה תקינה את מצב המיקוד של התצוגה שלהן, ממש לפני שהאנימציה שלהן מתחילה. (Icc256)
- פרגמנטים שיש להם רק מעבר של רכיב משותף מסיימים עכשיו את האפקטים המיוחדים שלהם בצורה תקינה, כלומר הם עוברים למצב הסופי שלהם (Iaebc7, b/166658128)
- תצוגות של קטע קוד תמיד מוסרות מהמאגר לפני שהן מושמדות. (Id5876)
- מנהל המצב החדש מסיר עכשיו באופן עקבי את תצוגת הרכיב היוצא לפני שהוא מוסיף את תצוגת הרכיב הנכנס. (I41a6e)
- מנהל המצב החדש מכבד עכשיו שינויים מפורשים בחשיפה של תצוגת fragment. כלומר, אם מגדירים את התצוגה של פרגמנט כניסה ל-
INVISIBLE
לפני שהאנימציה מתחילה, הוא יישאר בלתי נראה. (b/164481490) - מעכשיו, המערכת נותנת עדיפות ל-
Animators
על פניAnimations
, כלומר אם שניהם מופיעים בקטע קוד, המערכת תפעיל רק אתAnimator
ותתעלם מ-Animation
. (b/167579557) - מנהל המצבים החדש לא גורם יותר להבהוב של קטעים כשמשתמשים באנימציות כניסה. (b/163084315)
בעיה ידועה
כשמשתמשים במנהל המצבים החדש, אם לוחצים על 'חזרה' במהלך כניסה של אפקט מיוחד במקום לחזור לקטע הקודם, קטע הקוד הישן לא מתווסף מחדש, וכתוצאה מכך מוצג מסך ריק. (b/167259187, b/167092035, b/168442830)
גרסה 1.3.0-alpha08
19 באוגוסט 2020
הגרסאות androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
ו-androidx.fragment:fragment-testing:1.3.0-alpha08
יוצאות. גרסה 1.3.0-alpha08 מכילה את הקומיטים האלה.
New State Manager
הגרסה הזו כוללת שינוי משמעותי בארכיטקטורה של ניהול המצב הפנימי של FragmentManager
, שמשפיע על השליחה של שיטות מחזור חיים, אנימציות ומעברים, ועל האופן שבו מתבצע טיפול בעסקאות שנדחו. ההגדרה הזו מוצגת בממשק כברירת מחדל. מידע נוסף זמין בפוסט בבלוג בנושא Fragments: Rebuilding the Internals. (b/139536619, b/147749580)
- אפשר להשתמש ב-API ניסיוני ב-
FragmentManager.enableNewStateManager(boolean)
כדי לקבוע אם FragmentManager ישתמש במנהל המצב החדש. (I7b6ee)
הבעיות הבאות נפתרות רק כשמשתמשים במנהל המצבים החדש:
- הקטע הקודם של פעולת
replace
נעצר עכשיו בצורה נכונה לפני שהקטע החדש מתחיל. (b/161654580) - האנימציות של המעברים בין הפרגמנטים לא יתחרו יותר זו בזו, כך שלא יקרו מקרים שבהם אנימציה של
Animation
תבטל את כל האפקטים שלTransition
, או שאנימציה שלAnimator
ואנימציה שלTransition
יפעלו שתיהן בפרגמנט מסוים. (b/149569323) - הפונקציות
enterTransition
ו-exitTranstion
מופעלות עכשיו על כל הפרגמנטים שנכנסים ויוצאים, ולא רק על הפרגמנט האחרון שנכנס והפרגמנט הראשון שיוצא. (b/149344150) - פרגמנטים שההפעלה שלהם נדחתה לא נתקעים יותר במצב
CREATED
, אלא עוברים למצבSTARTED
עם פרגמנטים אחרים. (b/129035555) - תוקנה הבעיה שבה הפעולות של
FragmentManager
בוצעו לא לפי הסדר כששילבו בין טרנזקציה שנדחתה וסודרה מחדש לבין טרנזקציה שלא סודרה מחדש. (b/147297731) - אם דוחים את הצגת הפרגמנטים, לא יוצגו יותר פרגמנטים ביניים באופן זמני כשמציגים כמה פרגמנטים בו-זמנית. (b/37140383)
- הפונקציה
FragmentManager
מחזירה עכשיו את הפרגמנטים הנכונים כשקוראים לפונקציהfindFragmentById()
אוfindFragmentByTag()
מתוך הקריאה החוזרת (callback)onAttachFragment()
. (b/153082833) - פרגמנטים כבר לא קוראים ל-
onCreateView()
בפרגמנטים שמושמדים כשהפרגמנט שמחליף אותם נדחה. (b/143915710) - הודעת השגיאה שמוצגת כשמנסים לשלב בין מופעים של framework
Transition
ו-AndroidXTransition
מציינת עכשיו את הפריט עם המעבר הלא תקין. (b/155574969)
שינויים בהתנהגות
- עכשיו אפשר להתקשר אל
launch()
ב-ActivityResultLauncher
בשיטת מחזור החייםonCreate()
של קטע. (b/161464278) - הפעלת
registerForActivityResult()
אחריonCreate()
גורמת עכשיו להצגת חריגה שמציינת שזה לא מותר, במקום לגרום לכשל שקט באספקת התוצאות אחרי שינוי בהגדרה. (b/162255449) -
FragmentActivity
משתמש עכשיו ב-OnContextAvailableListener
API שהוצג ב-Activity1.2.0-alpha08
כדי לשחזר את המצב שלFragmentManager
. כל listener שנוסף לתת-מחלקות של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) - הוספנו חלופה ל-
FragmentScenario
API שלonFragment
בצורה של שיטת ההרחבה המוחשית של KotlinwithFragment
שמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון. (b/158697631)
שינויים בהתנהגות
-
FragmentScenario
משתמשת עכשיו ב-setMaxLifecycle()
כדי להטמיע אתmoveToState()
, וכך מבטיחה התנהגות עקבית בכל רמות ה-API ומפרידה בין מצב ה-Fragment לבין הפעילות הבסיסית. (b/156527405) - ה-
SavedStateRegistryOwner
שמוחזר על ידיViewTreeSavedStateRegistryOwner
קשור עכשיו למחזור החיים של תצוגת ה-Fragment. כך מוודאים שהמצב שלו יישמר וישוחזר בו-זמנית עם התצוגה של הפריט. (b/158503763)
תיקוני באגים
- הקטעים ממתינים עכשיו עד שהתצוגה של הקטע מצורפת לפני שהם קוראים ל-
ViewCompat.requestApplyInsets()
, וכך נמנעים מקרים שבהם בקשת השוליים נפסלה. (b/158095749) - התקשרות אל
clearFragmentResultListener
מנקה עכשיו את האובייקט lifecycle 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) - תוקנה בעיה שבה
UseRequireInsteadOfGet
Lint 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
- ממשקי ה-API
setFragmentResult()
ו-setFragmentResultListener()
מקבלים עכשיו את הערכיםBundle
ו-FragmentResultListener
, בהתאמה, שהם לא null. כדי לנקות במפורש תוצאה או מאזין שהוגדרו קודם, משתמשים בשיטות החדשותclearFragmentResult()
ו-clearFragmentResultListener()
. (b/155416778) - התוספים של
setFragmentResultListener()
Kotlin שמקבלים ביטוי למדה מסומנים עכשיו בסימןinline
. (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, ומבטיחה שהתוצאות יישלחו רק ל-Fragment בזמן שהוא לפחות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
: השבתנו את כללFragmentLiveDataObserve
Lint בשיעוריDialogFragment
כי מחזור החיים שלהם ומחזור החיים של התצוגה שלהם תמיד מסונכרנים, ולכן אפשר להשתמש ב-this
או ב-viewLifecycleOwner
כשקוראים ל-observe
. (b/151765086)
שינויים בתלות
- השימוש ב-Fragments תלוי ב-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, וגם כדי לספק נקודות חיבור לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות. (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) - מגרסה Fragment
1.2.3
: תוקנו תוצאות חיוביות כוזבות בבדיקת LintUseRequireInsteadOfGet
כשמשתמשים בשם של משתנה מקומי שמוצל על ידי שם המאפיין של Kotlin. (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
לכל Views שמוחזרים על ידי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)
- תוקנו תוצאות חיוביות שגויות בבדיקת
UseRequireInsteadOfGet
Lint כשמשתמשים בשם של משתנה מקומי שמוסתר על ידי שם המאפיין של Kotlin. (b/149891163) -
FragmentContainerView
לא יציג יותר את השגיאהUnsupportedOperationException
אם נעשה שימוש בבונה הלא נכון בתצוגה מקדימה של פריסה. (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___()!!
, עכשיו מוצע להשתמש ב-methods המשויכותrequire___()
כדי לקבל הודעות שגיאה תיאוריות יותר לכל ממשקי ה-API של Fragment שכוללים גם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 נשמר עכשיו בנאי ברירת המחדל של קטעי קוד שנוספו באמצעות השיטות
add
ו-replace
שמקבלות מופעClass
(או את הגרסאות המוחשיות של Kotlin). (b/148181315) - הפונקציות
FragmentStatePagerAdapter
ו-FragmentPagerAdapter
כבר לא מאתרות חריגים שמוחזרים על ידיFragmentManager
כשמריצים אתfinishUpdate()
. (aosp/1208711) - תוקנה הבעיה שבה התג
FragmentManager.findFragment()
לא פעל עם פרגמנטים שנוספו באמצעות התג<fragment>
. (b/147784323) - כשמשתמשים בתג
<fragment>
כדי להרחיב רכיבי Fragment, תמיד מתבצעת קריאה ל-onInflate()
לפניonCreate()
כשנמצאים בפריסה. (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()
תזמון: קטעי קוד ממתינים עכשיו עד להשלמת אנימציות יציאה, מעברים של framework יציאה ומעברים של AndroidX יציאה (כשמשתמשים ב-Transition1.3.0
) לפני הקריאה ל-onDestroyView()
.- מבוסס מחלקה
add()
וreplace()
: נוספו עומסים חדשים שלadd()
וreplace()
ב-FragmentTransaction
שמקבליםClass<? extends Fragment>
וBundle
אופציונלי של ארגומנטים. בשיטות האלה משתמשים ב-FragmentFactory
כדי ליצור מופע של Fragment להוספה. בנוסף, נוספו ל-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()
, שמחזירה את הערך שאינו nullFragmentManager
שאליו נוסף ה-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>
, הם נמחקים בצורה תקינה גם אם הם מופיעים בפריסה רק לפעמים (כלומר, רק בפריסה לרוחב). כתוצאה מכך, רכיבי ה-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 מכילה את הקומיטים האלה.
תיקוני באגים
- תוקן שינוי התנהגות לא מכוון שבו מקטעים שהוסרו עדיין מוחזרים על ידי
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
) משתמש עכשיו בתחביר של גישה למאפייני KotlinviewLifecycleOwner
במקום ב-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
(בנוסף למעברים ולאנימציות של המסגרת, שתוקנו ב-Fragment1.2.0-alpha03
וב-Fragment1.2.0-alpha02
, בהתאמה) לפני שליחתonDestroyView()
. (aosp/1119841) - כשמשתמשים בTransition
1.3.0-beta01
, רכיבי Fragment מבטלים עכשיו בצורה תקינה מעברים שלandroidx.transition
לפני שמתחילים מעברים או אנימציות חדשים באותו מאגר. (aosp/1119841) - תוקנה בעיה ב-API 17 ובגרסאות קודמות, כשמשתמשים במעברים
androidx.transition
בתצוגת הבסיס של Fragment כשמשתמשים ב-FragmentContainerView
. (b/140361893) - Artifact
fragment-testing
תלוי עכשיו ב-AndroidX Test1.2.0
, וכך נפתרה בעיה של חוסר תאימות לגרסה האחרונה של Espresso 3.2.0. (b/139100149) - הוסר השימוש ב-
Log.w
ב-FragmentManager. (aosp/1126468)
בעיות מוכרות
- רכיבי
onInflate()
של Fragment לא מקבלים מאפיינים מתאימים מ-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)
תיקוני באגים
- מעכשיו, רכיבי Fragment נהרסים בצורה תקינה בזמן שאנימציות יציאה פועלות ברכיבי Fragment אחרים. (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
הופך עכשיו את סדר הציור בצורה נכונה כשמוציאים פרגמנטים מהמחסנית האחורית. (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) - נוספה שיטת
FragmentManager.findFragment(View)
סטטית לאחזור ה-Fragment שמכיל תצוגה שהורחבה על ידי Fragment. תוסף Kotlin זמין גם ב-fragment-ktx
. (aosp/1090757) - נוספו עומסים חדשים של
add()
ו-replace()
ב-FragmentTransaction
שמקבליםClass<? extends Fragment>
ו-Bundle
אופציונלי של ארגומנטים. בשיטות האלה משתמשים ב-FragmentFactory
כדי ליצור מופע של Fragment להוספה. בנוסף, נוספו ל-fragment-ktx
תוספי Kotlin שמשתמשים בסוגים מוחשיים (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)
). (b/126124987) - ההערות
@MainThread
נוספו לקריאות החוזרות (callback) של מחזור החיים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()
, המערכת מחכה לסיום האנימציות של רכיבי Fragment. (b/136110528) - אנימציות של קטעי קוד (Fragment) מקטעי קוד צאצאים וצאצאים שלהם מטופלות עכשיו בצורה תקינה כשמפעילים אנימציה של קטע הקוד האב. (b/116675313)
- תוקנה בעיה
NullPointerException
כשמשתמשים במעברים של רכיבים משותפים ומשלבים פעולת פתיחה ופעולת הוספה. (b/120507394) - נוסף פתרון עקיף ל-
IllegalStateException
s כשמשתמשים ב-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 LayoutId של FragmentActivity: מחלקות משנה של
FragmentActivity
יכולות עכשיו לקרוא באופן אופציונלי ל-constructor ב-FragmentActivity
שמקבל מזההR.layout
, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView()
ב-onCreate()
. הדרישה שלמחלקת המשנה יהיה בנאי ללא ארגומנטים לא משתנה. - ה-constructor Fragment LayoutId: מחלקות משנה של
Fragment
יכולות עכשיו לקרוא באופן אופציונלי ל-constructor ב-Fragment
שמקבל מזההR.layout
, שמציין את הפריסה שצריך להשתמש בה בשבר הזה כחלופה לביטול שלonCreateView()
. אפשר להגדיר את הפריסה המורחבת ב-onViewCreated()
. - דחייה עם פסק זמן: נוספה עומס יתר חדש של
postponeEnterTransition()
עם פסק זמן.
גרסה 1.1.0-rc04
7 באוגוסט 2019
הגרסאות androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
ו-androidx.fragment:fragment-testing:1.1.0-rc04
יוצאות לאור. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תיקוני באגים
- הקטעים מבטלים עכשיו בצורה נכונה את המעברים שנדחו בקטעים שהוצאו. (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
callbacks (במיוחד אלה שקשורים ל-STARTED
, ל-RESUMED
, ל-PAUSED
, ל-STOPPED
ול-DESTROYED
) עבור רכיבי Fragment מוטמעים מקוננים עכשיו בצורה נכונה. (b/133497591) - מופעי
OnBackPressedCallback
שנרשמו ב-onCreate()
של Fragment מקבלים עכשיו עדיפות על פני 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
- שינוי שעלול לשבור תאימות: הוסרה השיטה
FragmentFactory
instantiate
שהוצאה משימוש בעבר, שקיבלהBundle
. aosp/953856 - שינוי שעלול לשבור תאימות: הקבועים
RESUME_ONLY_CURRENT_FRAGMENT
ו-USE_SET_USER_VISIBLE_HINT
ב-FragmentPagerAdapter
וב-FragmentStatePagerAdapter
שונו לשמותBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
ו-BEHAVIOR_SET_USER_VISIBLE_HINT
, בהתאמה. aosp/954782
תיקוני באגים
- פרגמנטים שהגבלנו את מחזור החיים שלהם באמצעות
setMaxLifecycle()
לא יחזרו יותר למצב פעיל לפני שיגיעו למצב הסופי שלהם. b/131557151 - כשמשתמשים ב-
setMaxLifecycle(Lifecycle.State.CREATED)
, התצוגה של Fragments תיהרס בצורה תקינה. aosp/954180
גרסה 1.1.0-alpha07
25 באפריל 2019
הגרסאות androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
ו-androidx.fragment:fragment-testing:1.1.0-alpha07
יוצאות. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
- עכשיו אפשר להגדיר מצב מחזור חיים מקסימלי ל-Fragment על ידי קריאה ל-
setMaxLifecycle()
ב-FragmentTransaction
. הדוח הזה מחליף את הדוחsetUserVisibleHint()
שהוצא משימוש. ל-FragmentPagerAdapter
ול-FragmentStatePagerAdapter
יש constructor חדש שמאפשר לעבור להתנהגות החדשה. (b/129780800)
שינויים ב-API
- הקריאה ל-API
moveToState(STARTED)
ב-FragmentScenario
אפשרית עכשיו רק במכשירים עם API בגרסה 24 ומעלה. (b/129880016)
שינויים בהתנהגות
- כתוצאה מ-(b/129907905), פרגמנטים במחסנית האחורית לא יקבלו קריאה חוזרת אל
onCreateView()
כשהפעילות המארחת נוצרת מחדש. מעכשיו, הפונקציהonCreateView()
תופעל רק כשהקטע יהפוך לגלוי (כלומר, כשמבצעים פעולת הוצאה מהמחסנית של הפעולות הקודמות).
תיקוני באגים
- תוקנה בעיה שקרתה כשמשתמשים בתג
<fragment>
ב-XML ובבונהcontentLayoutId
שלFragmentActivity
אוAppCompatActivity
. (b/129907905) - תוקנה בעיה שגרמה לכך שקטעים במחסנית הקודמת לא הועברו לפחות אל
CREATED
אחרי שינוי בהגדרות, ולכן לא בוצע סילוק תקין של ViewModels ושל קטעים משניים שנשמרו. (b/129593351) - תוקנה קריסה ב-
restoreSaveState
שנגרמה מחוסר סנכרון של הפרגמנטים שנשמרו אחרי שמצב המופע נשמר. (b/130433793) (aosp/947824) - תוקנו בעיות שבהן קריאה ל-
OnBackPressedCallback
שנוסף עם מחזור חיים של fragment לא התבצעה אם ל-FragmentManager
היה back stack. פרטים נוספים זמינים במאמר בנושא androidx.activity 1.0.0-alpha07. (aosp/948209) - ב-Fragments, האילוץ של
LAYER_TYPE_HARDWARE
לאנימציות כבר לא מתבצע. אם אתם צריכים אנימציה של שכבת חומרה, עליכם להגדיר אותה כחלק מהאנימציה. (b/129486478)
גרסה 1.1.0-alpha06
3 באפריל 2019
הגרסאות androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
ו-androidx.fragment:fragment-testing:1.1.0-alpha06
יוצאות. כאן אפשר לראות את הקומיטים שכלולים בגרסה הזו.
תכונות חדשות
- החריגים שמוחזרים על ידי FragmentManager כוללים עכשיו את שם ה-Fragment בהודעה. (b/67759402)
שינויים ב-API
-
Fragment
ו-FragmentActivity
מכילים עכשיו בנאי שני שמקבל@LayoutRes int
, שמחליף את ההתנהגות הקודמת של הוספת הערה לכיתה באמצעות@ContentView
. הגישה הזו פועלת גם במודולים של אפליקציות וגם במודולים של ספריות. (b/128352521) - הפונקציה
onActivityResult()
של FragmentActivity מסומנת עכשיו בצורה נכונה כ-@CallSuper
. (b/127971684) - הוצאנו משימוש את השיטה
instantiate
של 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 שכלולות בגרסה הזו.
תכונות חדשות
- חיפושים של הערות
@ContentView
נשמרים עכשיו במטמון (b/123709449)
שינויים בהתנהגות
- שיחה אל
remove()
, אלhide()
, אלshow()
, אלdetach()
ואלsetPrimaryNavigationFragment()
עם Fragment שמצורף ל-FragmentManager אחר, מובילה עכשיו ל-IllegalStateException
במקום לכשל שקט (aosp/904301)
תיקוני באגים
-
onNewIntent
עבורFragmentActivity
מסומן עכשיו בצורה נכונה עם@CallSuper
(b/124120586) - תוקנה בעיה שבה אפשר היה לקרוא ל-
onDismiss()
שלDialogFragment
פעמיים כשמשתמשים ב-getDialog().dismiss()
או ב-getDialog().cancel()
(b/126563750)
גרסה 1.1.0-alpha04
7 בפברואר 2019
הגרסאות androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
ו-androidx.fragment:fragment-testing 1.1.0-alpha04
יוצאות.
תכונות חדשות
- נוספה תמיכה בהערת המחלקה
@ContentView
שמאפשרת לציין איזה קובץ XML של פריסה צריך להרחיב כחלופה לביטול שלonCreateView()
. מומלץ לצפות בעבודות שקשורות לנושא ב-onViewCreated()
. (aosp/837619) -
fragment-testing
now depends onandroidx.test:core-ktx
1.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) - תוקנה בעיה שבה לפעמים לא היו זמינים קטעי יעד ב-
onDestroy()
או אחריו. (b/122312935) - השיטה onDismiss() של DialogFragment מופעלת עכשיו לפני
onDestroy()
. (aosp/874133) (aosp/890734)
גרסה 1.1.0-alpha03
17 בדצמבר 2018
תכונות חדשות
- הקומפוננטה Fragment מטמיעה עכשיו את
BundleSavedStateRegistryOwner
ותלויה בספריית SavedState החדשה [aosp/824380] - נוסף
by activityViewModels
נציג מאפיינים של Kotlin כדי לאחזר ViewModels שמשויכים לפעילות המכילה [b/119050253] - ההרשאה
by viewModels
Kotlin 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] - נוספה שיטה
requireParentFragment()
שמחזירה@NonNull Fragment
או יוצרת חריגהIllegalStateException
[b/112103783]
תיקוני באגים
- תוקנה IllegalStateException: כשל בשמירת המצב b/120814739
- כשמשחזרים רכיבי Fragment ממצב מופע שמור, הם תמיד מקבלים עכשיו ערך שאינו null
Bundle
[b/119794496] - אם מוסיפים מחדש קטעים שהוסרו, הם לא משתמשים יותר באובייקט
Lifecycle
שלהם [b/118880674]
גרסה 1.1.0-alpha02
3 בדצמבר 2018
תכונות חדשות
- ההרחבות של Kotlin ב-FragmentScenario מאפשרות עכשיו להשתמש בביטוי למדא ליצירת Fragment, כחלופה להעברת מופע של
FragmentFactory
. (aosp/812913)
תיקוני באגים
- תוקן IllegalStateException כשמשתמשים ב-Fragments מקוננים במחסנית האחורית (b/119256498)
- תוקנה קריסה שהתרחשה כשמשתמשים ב-
FragmentScenario.recreate()
עםFragmentFactory
(aosp/820540) - תוקנה בעיה שבה לא הייתה גישה ל-Fragments של היעד אחרי שה-Fragment הוסר (aosp/807634)
גרסה 1.1.0-alpha01
5 בנובמבר 2018
זו הגרסה הראשונה של הארטיפקט fragment-testing
ושל FragmentScenario
, שמבוססים על ממשקי ה-API של androidx.test:core. פרטים נוספים זמינים במסמכי התיעוד בנושא בדיקת מקטעים.
תכונות חדשות
- מחלקת FragmentScenario חדשה לבדיקת רכיבי Fragment בבידוד.
- עכשיו אפשר להגדיר
FragmentFactory
בכלFragmentManager
כדי לשלוט באופן יצירת המופעים החדשים של Fragment. - נוסף נציג מאפיינים חדש של Kotlin
by viewModels()
לאחזור ViewModel מ-Fragment. - אירועי קלט בהמתנה (כמו קליקים) מבוטלים עכשיו ב-
onStop()
של Fragment.
שינויים ב-API
- הרחבנו משמעותית את ההערות לגבי אפשרות קבלת ערך null בכל ממשק 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
הנכון.