מקטע (fragment)
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
12 בפברואר 2025 | 1.8.6 | - | - | - |
הצהרת יחסי תלות
כדי להוסיף תלות ב-Fragment, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
dependencies { def fragment_version = "1.8.3" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.3" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 1.8
גרסה 1.8.6
12 בפברואר 2025
androidx.fragment:fragment-*:1.8.6
משוחרר. גרסה 1.8.6 מכילה את ההוספות האלה.
תיקוני באגים
- עכשיו, ההחרגה של
setOnApplyWindowInsetsListener
ב-FragmentContainerView
מקבלת מאזין 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 Transitions. (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 back stack, וכך נמנעות בעיות מסוג 'לא נמצאה תצוגה למזהה' כשחוזרים לקטע הזה. (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
בממשקOnBackStackChangedListener
שלFragmentManager
מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager
, כך שהיא מתואמת יותר עם התזמון של קריאת החזרה (callback) שלonBackStackChangeCommitted
.
גרסה 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 או Androidx Transition שניתן לחיפוש. התיקון הזה פותר בעיה שבה ביטול של טרנזקציה שניתן לדלג עליה באופן חלקי גורם למסך שחור. (I43037, b/339169168)
גרסה 1.8.0-alpha02
17 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha02
משוחרר. גרסת 1.8.0-alpha02 כוללת את ההוספות האלה.
תיקוני באגים
- מקטע קוד
1.7.0-rc02
: נוספו יומנים כדי לציין למה הגדרתsharedElement
ללא מעברים אחרים תגרום לכך שהקוד לא יפעל. (Iec48e) - מ-Fragment
1.7.0-rc02
: תוקן באג שגרם לקריסה אם נוסף רכיב משותף שלא ניתן לדלג עליו לעסקאות שבהן כל המעברים האחרים היו ניתנים לדילוג. עכשיו העסקה תסומן כראוי כעסקה שלא ניתן לדלג אליה. (I18ccd)
גרסה 1.8.0-alpha01
3 באפריל 2024
androidx.fragment:fragment-*:1.8.0-alpha01
משוחרר. הגרסה 1.8.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- הפונקציה החדשה
AndroidFragment
Composable
מאפשרת להוסיף קטעי קוד להיררכיית ה-Compose באמצעות שם הכיתה של קטע הקוד. הוא מטפל באופן אוטומטי בשמירה ובשחזור של המצב של ה-Fragment. אפשר להשתמש ב-Composable
כתחליף ישיר ל-AndroidViewBinding. (b/312895363, Icf841)
שינויים במסמכי התיעוד
- מסמכי תיעוד מעודכנים לממשקי ה-API של
OnBackStackChangedListener
, שמציינים מתי הם נקראים ואיך צריך להשתמש בהם. (I0bfd9)
עדכון יחסי התלות
- הקטע הזה תלוי עכשיו ב-Profile Installer 1.3.1.
גרסה 1.7
גרסה 1.7.1
14 במאי 2024
androidx.fragment:fragment-*:1.7.1
משוחרר. גרסה 1.7.1 מכילה את ההוספות האלה.
תיקוני באגים
- מעכשיו, האפשרות 'חזרה חזוי' תפעל רק בעסקאות שבהן לכל הקטעים יש Animator או Androidx Transition שניתן לחיפוש. התיקון הזה פותר בעיה שבה ביטול של טרנזקציה שניתן לדלג בה חלקית גורם למסך ריק. (I43037, b/339169168)
גרסה 1.7.0
1 במאי 2024
androidx.fragment:fragment-*:1.7.0
משוחרר. גרסת 1.7.0 כוללת את ההוספות האלה.
תמיכה בחיזוי תנועות חזרה
- עכשיו יש תמיכה ב-Fragments בחזרה חזוייה מתוך האפליקציה כשמשתמשים ב-
Animator
או ב-AndroidX Transition 1.5.0. כך המשתמשים יכולים להשתמש בתנועת החזרה כדי לראות את החלק הקודם על ידי דילוג על האנימציה/המעבר, לפני שהם מחליטים אם לבצע את העסקה על ידי השלמת התנועה או לבטל אותה.
מערכת המעבר | משאב 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
חדש שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על 'קטע' לארכיטקטורה שמבוססת על 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 כוללת את ההוספות האלה.
עדכון יחסי התלות
- הקטע הזה תלוי עכשיו ב-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, כך שאפשרות האפסיות של הסוג הגנרי של המארח תואמת לאפשרות האפסיות של סוג ההחזרה שלonGetHost()
. (I40af5)
תיקוני באגים
- תוקנה בעיה שבה, כשמבצעים תנועה חזרה חזויה על קטע שלא נמצא במאגר, הקטע הזה אף פעם לא נהרס. עכשיו, ה-Fragment יועבר באופן מיידי למצב הסופי. (Ida0d9)
- תוקנה בעיה ב-Fragments שבה הפרעה למעברים נכנסים באמצעות תנועת חזרה חזוייה גרמה להרס התצוגה הנכנסת והותירה מסך ריק. (Id3f22, b/319531491)
גרסה 1.7.0-alpha10
7 בפברואר 2024
androidx.fragment:fragment-*:1.7.0-alpha10
משוחרר. גרסה 1.7.0-alpha10 מכילה את ההצהרות האלה.
תיקוני באגים
- תוקנה הבעיה המוכרת במהדורה הקודמת של Fragment, שבה כשמשתמשים בתמיכה של Fragment בחזרה חזוי ל-
Animator
או ל-AndroidX Transition, רכיבי Fragment יפיקו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
חדש שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על 'קטע' לארכיטקטורה שמבוססת על 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 בחזרה חזרה חזרה (Predictive Back) עבור
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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
ניקוי
- הסרת הפתרון החלופי לספריית Transition, שטופל ב-Transition
1.5.0-alpha06
. (I04356)
גרסה 1.7.0-alpha07
29 בנובמבר 2023
androidx.fragment:fragment-*:1.7.0-alpha07
משוחרר. גרסה 1.7.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תוקן באג ב-
NullPointerException
שנגרם כתוצאה מהגדרת מעבר של רכיב משותף ואי-הגדרה של enterTransition/exitTransition. (I8472b) - מ-Fragment
1.6.2
: כשה-Fragment שלFragmentContainerView
מתנפח, אפשר לגשת למצבים שלו, כמוFragmentManager
, Host ו-id, ב-callback שלonInflate
. (I1e44c, b/307427423) - מקטע קוד
1.6.2
: כשמשתמשים ב-clearBackStack
כדי להסיר קבוצה של קטעי קוד, עכשיו כלViewModel
של קטע קוד בתצוגת עץ יימחקו כשה-ViewModels
של קטע הקוד ההורה יימחקו. (I6d83c, b/296173018)
גרסה 1.7.0-alpha06
4 באוקטובר 2023
androidx.fragment:fragment-*:1.7.0-alpha06
משוחרר. גרסה 1.7.0-alpha06 מכילה את ההוספות האלה.
עדכון יחסי תלות
- העדכנו את ה-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)
בעיות מוכרות
- יש כרגע בעיה שבה אחרי שמבטלים תנועת חזרה עם מעבר פעם אחת, בפעם הבאה שמתחילים את תנועת החזרה לא מתבצע מעבר, וכתוצאה מכך המסך נשאר ריק. יכול להיות שהסיבה לכך היא בעיה בספריית Transition. (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)
- תוקנו נסיגות (regressions) שבהן המערכת איפשרה להפעיל אנימציות עם מעברים. (I59f36)
- תוקנה בעיה בשימוש בתכונה 'חזרה חזוי' עם קטעים, שבה ניסיון לחזור אחורה פעמיים ברצף מהיר בקטע השני מתוך הקטעים האחרונים בסטאק החזרה גורם לקריסה. (Ifa1a4)
גרסה 1.7.0-alpha03
23 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha03
משוחרר. גרסה 1.7.0-alpha03 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה ב-Fragments כשמשתמשים בחזרה חזויית, שגרמה לדילוג על ה-Fragment הראשון ב-back stack של מנהל ה-Fragments ולסיום הפעילות כשמשתמשים בחזרה למערכת באמצעות ניווט ב-3 לחצנים או באמצעות התנועה החזויית 'חזרה'. (I0664b, b/295231788)
גרסה 1.7.0-alpha02
9 באוגוסט 2023
androidx.fragment:fragment-*:1.7.0-alpha02
משוחרר. גרסה 1.7.0-alpha02 כוללת את ההצהרות האלה.
תיקוני באגים
- כשמשתמשים ב-Fragments עם תנועות חזרה חזויות מ-API 34, אם אתם משתמשים במערכת מעברים שלא תומכת בסימון (
Animations
,Transitions
) או שאין כלל מעברים, המערכת של Fragments תמתין עכשיו עד שהתנועה תושלם לפני שהיא תבצע את פעולת החזרה. (I8100c)
גרסה 1.7.0-alpha01
7 ביוני 2023
androidx.fragment:fragment-*:1.7.0-alpha01
משוחרר. הגרסה הזו מפותחת בהסתעפות פנימית.
תכונות חדשות
- עכשיו התכונה Fragments מספקת תמיכה באפליקציה חזויה כשמשתמשים ב-
Animator
. כך תוכלו להשתמש בתנועת החזרה כדי לראות את החלק הקודם עם האנימציה בהתאמה אישית לפני שתחליטו אם לבצע את העסקה באמצעות התנוחה המושלמת או לבטל אותה. אפשר גם להשבית את ההתנהגות החדשה הזו באמצעותenablePredictiveBack()
הניסיוני ולהעביר את הערךfalse
.
גרסה 1.6
גרסה 1.6.2
1 בנובמבר 2023
androidx.fragment:fragment-*:1.6.2
משוחרר. גרסה 1.6.2 כוללת את השמירות האלה.
תיקוני באגים
- כשה-Fragment של
FragmentContainerView
מתנפח, אפשר לגשת לסטטוסים שלו, כמוFragmentManager
, Host ו-id, ב-callback שלonInflate
. (I1e44c, b/307427423) - כשמשתמשים ב-
clearBackStack
כדי להסיר קבוצה של קטעי קוד, עכשיו כלViewModel
של קטעי קוד בתצוגת עץ יימחקו כשה-ViewModels
של קטעי הקוד ההורה יימחקו. (I6d83c, b/296173018)
גרסה 1.6.1
26 ביולי 2023
androidx.fragment:fragment-*:1.6.1
משוחרר. גרסה 1.6.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה המצב השמור שנשמר כשהפעילות הופסקה אבל לא הושמדת נשמר במטמון באופן שגוי, גם אחרי שמכונה של קטע הקוד הועברה חזרה למצב
RESUMED
. המצב הזה במטמון ישמש לשימוש חוזר אם מופע הפלח הזה היה ב-back stack כשהשתמשתם ב-API של כמה back stacks כדי לשמור ולשחזר את הפלח. (I71288, b/246289075)
עדכון יחסי תלות
- הרכיב 'קטע' תלוי עכשיו ב-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
שמאפשר לקבוע בדיוק מאיפה מגיע המצב של קטע קוד. - הממשק
FragmentManager.OnBackStackChangedListener
הורחב בשני קריאות חזרה (callbacks) נוספות שלonBackStackChangeStarted
ו-onBackStackChangeCommitted
, שנקראות עם כלFragment
ממש לפני שהן מתווספות או מוסרות מסטאק החזרה לאחור של הפלח, ומיד אחרי שהטרנזקציה מתבצעת, בהתאמה. FragmentStrictMode
נוספהWrongNestedHierarchyViolation
חדשה שמזהה מתי קטע צאצא מוטמע בהיררכיית התצוגה של ההורה שלו, אבל לא נוסף ל-childFragmentManager
של ההורה.- ממשקי ה-API
Fragment
ו-FragmentManager
שמקבליםIntent
אוIntentSender
מסומנים עכשיו כראוי באמצעות@NonNull
כדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API הרלוונטיים של Android framework שהשיטות האלה קוראות אליהם. DialogFragment
מספק עכשיו גישה ל-ComponentDialog
הבסיסי באמצעות ה-API שלrequireComponentDialog()
.- החלק המודגש תלוי עכשיו ב-Lifecycle
2.6.1
. - ה-Fragment תלוי עכשיו ב-SavedState
1.2.1
. - המקטע תלוי עכשיו ב-ProfileInstaller
1.3.0
. הארטיפקט
fragment-testing-manifest
מפריד בין הרשומות במניפסט לשאר הרכיבים של בדיקת הקטעים. כלומר, תוכלו:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
כך אפשר למנוע התנגשויות שנובעות מהבדלים בגרסאות בין
fragment-testing
לביןandroidx.test
גרסה 1.6.0-rc01
10 במאי 2023
androidx.fragment:fragment-*:1.6.0-rc01
משוחרר. גרסה 1.6.0-rc01 כוללת את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לשליחת
ActivityResult
עם קוד הבקשה הלא נכון כשנשלחו כמה בקשותstartActivityForResult
ברצף. (If0b9d, b/249519359) - תוקנה בעיה שבה קריאות החזרה (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) - פונקציות ה-callbacks החדשות
onBackStackChangeStarted
ו-onBackStackChangeCommitted
ישלחו עכשיו קטע רק פעם אחת, גם אם כמה עסקאות מכילות את אותו קטע. (Ic6b69)
גרסה 1.6.0-alpha09
5 באפריל 2023
androidx.fragment:fragment-*:1.6.0-alpha09
משוחרר. גרסה 1.6.0-alpha09 מכילה את ההוספות האלה.
שינויים ב-API
DialogFragment
מספק עכשיו גישה ל-ComponentDialog
הבסיסי באמצעות ה-API שלrequireComponentDialog()
. (I022e3, b/234274777)- הוספה של הערה
@MainThread
לממשקי ה-API של הקטעיםcommitNow()
,executePendingTransactions()
ו-popBackStackImmediate()
. כלומר, מעכשיו הם יגרמו לשגיאות build אם לא יתבצעו קריאות אליהם מהשרשור הראשי, במקום להמתין לכשל בזמן הריצה. (Ic9665, b/236538905)
תיקוני באגים
- תוקן באג ב-
FragmentManager
שבו שמירה ושחזור באותו פריים עלולים לגרום לקריסה. (Ib36af, b/246519668) - פונקציות ה-callback
OnBackStackChangedListener
,onBackStackChangeStarted
ו-onBackStackChangeCommitted
פועלות עכשיו רק כשמשהו משתנה ב-stack העורפיFragmentManager
. (I66055, b/274788957)
גרסה 1.6.0-alpha08
22 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha08
משוחרר. גרסה 1.6.0-alpha08 מכילה את ההצהרות האלה.
שינוי התנהגות
- תזמון הקריאה החוזרת (callback) של
OnBackStackChangedListener.onBackStackChangeCommited
הותאם כך שתתבצע לפני ביצוע פעולות הפלח. כך מוודאים שלעולם לא יועבר ל-callback קטע קוד מנותק. (I66a76, b/273568280)
תיקוני באגים
- מקטע קוד
1.5.6
: תוקנה בעיה שבה קריאה ל-clearFragmentResultListener
בתוךsetFragmentResultListener
לא עבדה אם ה-Lifecycle
כבר היהSTARTED
ותוצאה כבר הייתה זמינה. (If7458)
עדכוני יחסי תלות
- החלק המודגש תלוי עכשיו ב-Lifecycle
2.6.1
. (586fe7) - ה-Fragment תלוי עכשיו ב-SavedState
1.2.1
. (078e4e) - המקטע תלוי עכשיו ב-ProfileInstaller
1.3.0
. (3fc05b)
גרסה 1.6.0-alpha07
8 במרץ 2023
androidx.fragment:fragment-*:1.6.0-alpha07
משוחרר. גרסה 1.6.0-alpha07 מכילה את ההוספות האלה.
תיקוני באגים
- מ-Fragment
1.5.6
: תוקנה בעיה שבה הסרת כל קטע, גם אם הוא הוסיף פריטים לתפריט וגם אם לא, גרמה לביטול התוקף של התפריט של הפעילות. (50f098, b/244336571)
גרסה 1.6.0-alpha06
22 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha06
משוחרר. גרסה 1.6.0-alpha06 מכילה את ההצהרות האלה.
שינוי התנהגות
- קריאת ה-back-call החדשה של
onBackStackChangedStarted
ב-onBackStackChangedListener
שלFragmentManager
תופעל עכשיו לפני שהקטעים יתחילו לעבור לסטטוסי היעד שלהם. (I34726)
גרסה 1.6.0-alpha05
8 בפברואר 2023
androidx.fragment:fragment-*:1.6.0-alpha05
משוחרר. גרסה 1.6.0-alpha05 מכילה את ההצהרות האלה.
תכונות חדשות
- ממשק
FragmentManager.OnBackStackChagnedListener
מציע עכשיו שתי קריאות חזרה נוספות,onBackStackChangeStarted
ו-onBackStackChangeCommitted
, שמאפשרות לקבל מידע נוסף ולשלוט בשינויים ב-back stack ב-FragmentManager
. (Ib7ce5, b/238686802)
שינויים ב-API
- ממשקי ה-API
Fragment
ו-FragmentManager
שמקבליםIntent
אוIntentSender
מסומנים עכשיו כראוי באמצעות@NonNull
כדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API הרלוונטיים של Android framework שהשיטות האלה קוראות אליהם. (I06fd4)
גרסה 1.6.0-alpha04
7 בדצמבר 2022
androidx.fragment:fragment-*:1.6.0-alpha04
משוחרר. גרסה 1.6.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
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 בהגדרות ה-override שלonDismiss()
. (I14798, b/238928865)
תיקוני באגים
- תוקנו נסיגות (regressions) שנגרמו על ידי השילוב של ממשקי ה-callback החדשים של הספקים (
OnConfigurationChangedProvider
, OnMultiWindowModeChangedProvider
, OnTrimMemoryProvider
, OnPictureInPictureModeChangedProvider
) כדי להבטיח שתמיד יתקבלו קריאות החזרה (callbacks) מתאימות בקטעי הקוד. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
גרסה 1.6.0-alpha02
24 באוגוסט 2022
התכונות androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
וגם androidx.fragment:fragment-testing:1.6.0-alpha02
משוחררות. גרסה 1.6.0-alpha02 מכילה את ההוספות האלה.
תיקוני באגים
- מקטע קוד
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
שמאפשר לקבוע בדיוק מאיפה מגיע המצב של קטע קוד. (b/207158202)
תיקוני באגים
- מתוך קטע קוד
1.5.1
: תיקון רגרסיה ב-DialogFragmentCallbacksDetector
, שבה שימוש בגרסה של איתור השגיאות שכלולה בחבילה של AGP 7.4 גורם לקריסה של איתור השגיאות. (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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- תוקנה בעיה שבה הסרת כל קטע, גם אם הוא הוסיף פריטים לתפריט וגם אם לא, גרמה לביטול התוקף של התפריט של הפעילות. (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 מכילה את ההצהרות האלה.
תיקוני באגים
- תוקנה שגיאה שגרמה לקטעי קוד במחסנית העורפי לקבל קריאות חזרה מסוג
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
ו-onConfigurationChanged()
. (I34581, I8dfe6, b/242570955) - קטעי צאצא בתצוגת עץ לא יקבלו יותר מספר קריאות חוזרות של
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
אוonConfigurationChanged()
. (I690b3, Id0096, If9d6b, I2cba2)
גרסה 1.5.2
10 באוגוסט 2022
התכונות androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
וגם androidx.fragment:fragment-testing:1.5.2
משוחררות. גרסה 1.5.2 כוללת את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה ביצוע עסקה מסוג
popBackStack()
ועסקה מסוגreplace()
בו-זמנית עלול לגרום לקטעי קוד יוצאים להריץ אתAnimation
/Animator
הלא נכון. (Ib1c07, b/214835303)
גירסה 1.5.1
27 ביולי 2022
התכונות androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
וגם androidx.fragment:fragment-testing:1.5.1
משוחררות. גרסה 1.5.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון רגרסיה ב-
DialogFragmentCallbacksDetector
, שבה שימוש בגרסה של איתור השגיאות שכלולה ב-AGP 7.4 גורם לקריסה של איתור השגיאות. (b/237567009)
עדכון יחסי התלות
- ספריית ה-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
ללא מצב (stateless) דרךCreationExtras
של2.5.0
לניהול מחזור חיים. - שילוב תיבת דו-שיח של רכיב –
DialogFragment
משתמש עכשיו ב-ComponentDialog
דרך הפעילות1.5.0
בתור תיבת הדו-שיח שמוגדרת כברירת מחדל וחוזרת על ידיonCreateDialog()
. - שינוי מבנה של מצב מכונה ששמור – התחיל שינוי בדרך שבה קטעי קוד שומרים את מצב המכונה שלהם. המטרה היא לעזור לזהות בבירור את המצב שנשמר בחלקיק ואת המקור שלו. השינויים הנוכחיים כוללים את האפשרויות הבאות:
FragmentManager
שומר עכשיו את מצב המכונה השמור ב-Bundle
במקום ישירות ב-Parcelable
בהתאמה אישית.- תוצאות שהוגדרו באמצעות
Fragment Result APIs
ושעדיין לא נשלחו נשמרות עכשיו בנפרד מהמצב הפנימי שלFragmentManager
. - המצב שמשויך לכל קטע ספציפי נשמר עכשיו בנפרד מהמצב הפנימי של
FragmentManager
, כך שאפשר למצוא התאמה בין כמות המצב השמור שמשויך לקטע ספציפי לבין המזהים הייחודיים שמופיעים ברישום ביומן ניפוי הבאגים שלFragment
.
שינויים אחרים
FragmentStrictMode
מאפשר עכשיו לקטעי קוד פרטיים של צד שלישי לעקוף סנקציות ספציפיות על הפרות באמצעות שימוש ב-allowViolation()
עם שם הכיתה.- ממשקי ה-API של הקטעים (fragments) שמיועדים לספק תפריט ל-
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
, כך שאפשר למצוא התאמה בין כמות המצבים השמורים שמשויכים לקטע ספציפי לבין המזהים הייחודיים שמופיעים ביומני ניפוי הבאגים של הקטעים. (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 כוללת את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-API
- נוספה ל-
DialogFragment
שיטה חדשה שלdismissNow
שמשתמשת ב-commitNow
כדי לשמור על תאימות לפונקציהshowNow
. שימו לב שהפעולה הזו לא תגרום לסגירת ה-Dialog
באופן מיידי, אלא רק תעדכן את המצב של ה-FragmentManager
באופן סינכרוני. (I15c36, b/72644830)
שינוי מבנה של מצב של מכונה שמורה
FragmentManager
שומר עכשיו את מצב המכונה השמור ב-Bundle
במקום ישירות ב-Parcelable
בהתאמה אישית. זהו השלב הראשון בשיפור השקיפות לגבי מה שנשמר בפועל על ידי Fragments. (I93807, b/207158202)- תוצאות שהוגדרו דרך Fragment Result APIs ושעדיין לא נשלחו נשמרות עכשיו בנפרד מהמצב הפנימי של
FragmentManager
. כך תוכלו לקבל שקיפות נוספת לגבי התוצאות שנשמרות כחלק ממצב המכונה השמור. (I6ea12, b/207158202)
גרסה 1.5.0-alpha05
6 באפריל 2022
התכונות androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
וגם androidx.fragment:fragment-testing:1.5.0-alpha05
משוחררות. גרסה 1.5.0-alpha05 מכילה את ההצהרות האלה.
שינויים ב-API
- המאפיין
setHasOptionsMenu()
שלFragment
הוצא משימוש. כדי לנהל תפריטים ופריטי תפריט, צריך להשתמש במקום זאת בממשקי ה-API החדשים של התפריטים, בהתאם להערות המוצר לגרסה של1.5.0-alpha04
. (I7b4b4, b/226438239)
גרסה 1.5.0-alpha04
23 במרץ 2022
התכונות androidx.fragment:fragment:1.5.0-alpha04
, androidx.fragment:fragment-ktx:1.5.0-alpha04
וגם androidx.fragment:fragment-testing:1.5.0-alpha04
משוחררות. גרסה 1.5.0-alpha04 מכילה את ההצהרות האלה.
שינויים ב-API
- ממשקי ה-API של הקטעים לצורך הצגת תפריט ב-
ActionBar
של הפעילות הוצאו משימוש כי הם מקשרים בצורה הדוקה את הקטע לפעילות, ולא ניתן לבדוק אותם בנפרד. ממשקי ה-APIMenuHost
ו-MenuProvider
שנוספו ב-Activity1.4.0-alpha01
מספקים ממשק API מקביל שאפשר לבדוק, שמתחשב במחזור החיים של הרכיבים, שבו עליכם להשתמש בקטעים. (I50a59, I20758)
תיקוני באגים
- עכשיו יש ב-
SavedStateViewFactory
תמיכה בשימוש ב-CreationExtras
גם אם הוא הותחל באמצעותSavedStateRegistryOwner
. אם מציינים פרמטרים נוספים, המערכת מתעלמת מהארגומנטים שהועברו ל-init. (I6c43b, b/224844583)
גרסה 1.5.0-alpha03
23 בפברואר 2022
התכונות androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
וגם androidx.fragment:fragment-testing:1.5.0-alpha03
משוחררות. גרסה 1.5.0-alpha03 מכילה את ההצהרות האלה.
שינויים ב-API
- עכשיו אפשר להעביר את
CreationExtras
לפונקציותby viewModels()
ו-by activityViewModels()
. (Ibefe7, b/217601110)
שינויים בהתנהגות
- עכשיו ב-
DialogFragment
נעשה שימוש ב-ComponentDialog
בתור תיבת הדו-שיח שמוגדרת כברירת מחדל וחוזרת על ידיonCreateDialog()
. (If3784, b/217618170)
גרסה 1.5.0-alpha02
9 בפברואר 2022
התכונות androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
וגם androidx.fragment:fragment-testing:1.5.0-alpha02
משוחררות. גרסה 1.5.0-alpha02 מכילה את ההוספות האלה.
תכונות חדשות
FragmentStrictMode
מאפשר עכשיו לקטעי קוד פרטיים של צד שלישי לעקוף סנקציות ספציפיות על הפרות באמצעות שימוש ב-allowViolation()
עם שם הכיתה. (I8f678)
גרסה 1.5.0-alpha01
26 בינואר 2022
התכונות androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
וגם androidx.fragment:fragment-testing:1.5.0-alpha01
משוחררות. גרסה 1.5.0-alpha01 כוללת את ההצהרות האלה.
תכונות חדשות
Fragment
משתלב עכשיו עם ViewModel CreationExtras, שהוצג כחלק מ-Lifecycle2.5.0-alpha01
. (I3060b, b/207012585)
תיקוני באגים
- מתוך קטע קוד
1.4.1
:FragmentContainerView
לא יוצר יותר חריגה של מצב לא חוקי כשמספרי התצוגה שנוצרו מ-XML הם בעלי ערכים שליליים. (Ic185b, b/213086140) - מ-Fragment
1.4.1
: כשמשתמשים ב-lambdaownerProducer
בהתאמה אישית עם הפונקציה העצלניתby viewModels()
, מעכשיו היא תשתמש ב-defaultViewModelProviderFactory
מהבעלים הזה אם לא יסופקViewModelProvider.Factory
בהתאמה אישית, במקום להשתמש תמיד במפעל של ה-fragment. (I56170, b/214106513) - תוקנה קריסה שנגרמה בגישה ל-
ViewModel
בפעם הראשונה מ-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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים חשובים מאז גרסה 1.3.0
- ממשקי ה-API של
FragmentStrictMode
מספקים בדיקות זמן ריצה שמאפשרות לוודא שהאפליקציה או הספריות שאתם תלויים בהן לא קוראות לממשקי API של קטעי קוד שהוצאו משימוש. כשמתגלה הפרה, אפשר להדפיס הודעת יומן, להפעיל מאזין מותאם אישית או לגרום לקריסה של האפליקציה. אפשר להגדיר אתFragmentStrictMode.Policy
שמחליט אילו בדיקות מופעלות ואילו 'עונשים' מופעלים ב-FragmentManager
באמצעות השיטה החדשהsetStrictModePolicy()
. המדיניות הזו חלה עלFragmentManager
הזה, ועל כל מנהל קטעי הקוד הצאצאים שלא מגדיר מדיניות ייחודית משלו. StrictMode עבור קטעי קוד FragmentContainerView
כולל עכשיו את השיטהgetFragment()
שמחזירה את הקטע שנוסף לקונטיינר לאחרונה. הקריאה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם המזהה שלFragmentContainerView
, אבל מאפשרת לשרשר את הקריאה.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
מיישם עכשיו אתCloseable
, כך שאפשר להשתמש בו עם השיטהuse
או עם try-with-resources של Kotlin.הוספנו את הערך
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את אנימציית המעבר הרגילה של Activity שנלקחה מהנושא שלכם במעבר בין קטעים.ממשק ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean)
הוסר, ומנהל המצבים החדש הוא האפשרות היחידה שזמינה עכשיו.
מספר סטאקים של חזרה אחורה
ה-FragmentManager
שומר על סטאק אחורה שמורכב מעסקאות של קטעי קוד שהשתמשו ב-addToBackStack()
. כך תוכלו לבטל את העסקאות האלה ולחזור למצב הקודם, באמצעות המנגנונים לשמירה של מצב באמצעות קטעים כדי לאפשר לקטעים לשחזר את המצב שלהם בצורה מתאימה.
במהדורה הזו אנחנו מרחיבים את המנגנונים האלה ומספקים שלושה ממשקי FragmentManager
API חדשים: saveBackStack(String name)
, restoreBackStack(String name)
ו-clearBackStack(String name)
. ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל קטע שנוסף בעסקאות האלה, ולאפשר לכם לשחזר מאוחר יותר את העסקאות האלה ואת הקטעים שלהן עם המצב שלהן ללא שינוי. כך תוכלו 'להחליף' בין כמה סטאקים של דפים לאחור, על ידי שמירת הסטאק הנוכחי ושחזור של סטאק ששמרתם.
הפונקציה saveBackStack()
פועלת באופן דומה ל-popBackStack()
, בכך שהיא אסינכררונית וכתוצאה מכך כל עסקאות הפיצ'רים חזרה לשם הספציפי הזה יבואו לביטול ('pop') וכל הפיצ'רים שנוספו ייהרסו ויוסרו, אבל יש כמה הבדלים חשובים:
- הערך של
saveBackStack()
תמיד כולל. - בניגוד לפונקציה
popBackStack()
, שמפעילה את כל העסקאות בסטאק האחורי אם השם שצוין לא נמצא בסטאק האחורי או אם צוין שם null, הפונקציהsaveBackStack()
לא מבצעת שום פעולה אם לא התחייבתם בעבר לעסקת מקטע באמצעותaddToBackStack()
עם השם המדויק הזה, שהוא לא null. - המצב של כל הקטעים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל קטע יאוחסן,
onSaveInstanceState()
של כל קטע יקרא והמצב הזה ישוחזר, וכל המופעים שלViewModel
שמשויכים לקטעים האלה יישמרו (ו-onCleared()
לא יקרא בהם).
עסקאות הפיצ'רים שאפשר להשתמש בהן עם saveBackStack()
חייבות לעמוד בקריטריונים מסוימים:
- כל עסקה של מקטע חייבת להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שניתן יהיה לשחזר את העסקאות כפעולה אטומית אחת. - קבוצת הטרנזקציות שנשמרת חייבת להיות עצמאית (כלומר, לא יכולות להיות בה הפניות מפורשות לקטעים מחוץ לקבוצת הטרנזקציות הזו), כדי להבטיח שניתן יהיה לשחזר אותה בכל שלב מאוחר יותר, ללא קשר לשינויים שבוצעו ב-back stack בזמן שחלף.
- כדי לוודא שה-
FragmentManager
לא מחזיר הפניות לקטעי קוד שנשמרו אחרי שמירת סטאק החזרה, אף קטע קוד שנשמר לא יכול להיות קטע קוד שנשמר או להכיל קטע קוד שנשמר בקבוצה הטרנזיטיבית של קטעי הקוד הצאצאים שלו.
בדומה לפונקציות saveBackStack()
, restoreBackStack()
ו-clearBackStack()
, שמשחזרות סטאק אחורה שנשמר בעבר או מנקות סטאק אחורה שנשמר בעבר, בהתאמה, שתי הפונקציות האלה לא מבצעות שום פעולה אם לא התקשרתם בעבר לפונקציה saveBackStack()
עם אותו שם.
מידע נוסף זמין במאמר מספר סטאקים קודמים: ניתוח מעמיק.
גרסה 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()
לאורך כל ההיררכיה שלהם לפני שהם יפעילו את פונקציית ה-callback שלהם. (Iedc20, b/77504618) - מעכשיו, המקלדת תיסגר באופן אוטומטי כשעוברים מקטע עם מקלדת פתוחה לקטע עם תצוגת מיחזור. (I8b842, b/196852211)
DialogFragment
משתמש עכשיו ב-setReorderingAllowed(true)
לכל העסקאות שהוא יוצר כשאתם קוראים ל-show()
, ל-showNow()
או ל-dismiss()
. (Ie2c14)- האזהרה הארוכה במיוחד של Lint ב-
DetachAndAttachFragmentInSameFragmentTransaction
מקוצרת ל-DetachAndAttachSameFragment
. (e9eca3)
גרסה 1.4.0-alpha10
29 בספטמבר 2021
התכונות androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
וגם androidx.fragment:fragment-testing:1.4.0-alpha10
משוחררות. גרסה 1.4.0-alpha10 מכילה את ההצהרות האלה.
Lint
- הוספנו את האזהרה
DetachAndAttachFragmentInSameFragmentTransaction
לזיהוי קריאה גם ל-detach()
וגם ל-attach()
באותוFragment
באותוFragmentTransaction
– מאחר שהפעולות המשלימות האלה מבטלות זו את זו כשהן מתבצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי לבצע בפועל פעולה כלשהי. (aosp/1832956, b/200867930) - הוספנו את שגיאת ה-lint
FragmentAddMenuProvider
לתיקון שימושים של מחזור החיים של ה-Fragment למחזור החיים של תצוגת ה-Fragment כשמשתמשים ב-APIaddMenuProvider
שלMenuHost
. (aosp/1830457, b/200326272)
עדכונים במסמכי התיעוד
- הוספנו פרטים נוספים להודעת ההוצאה משימוש לגבי ממשקי ה-API שמנוהלים עכשיו על ידי Activity Result APIs, כלומר
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
ו-onRequestPermissionsResult
. (cce80f) - הוספנו פרטים נוספים להודעה על ההוצאה משימוש של
onActivityCreated()
ב-Fragment
וב-DialogFragment
. (224db4)
גרסה 1.4.0-alpha09
15 בספטמבר 2021
התכונות androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
וגם androidx.fragment:fragment-testing:1.4.0-alpha09
משוחררות. גרסה 1.4.0-alpha09 מכילה את ההצהרות האלה.
תכונות חדשות
- עכשיו אפשר להפעיל את הפונקציה
clearBackStack(name)
כדי למחוק כל מצב ששמור באמצעותsaveBackStack(name)
. (I70cd7)
שינויים ב-API
- הכיתה
FragmentContainerView
נכתבה מחדש ב-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 מכילה את ההוספות האלה.
תיקוני באגים
- שיפור בדיקת ה-Lint של
UseRequireInsteadOfGet
כדי לטפל טוב יותר בסוגריים מיותרים. (I2d865) - שיפור בדיקת ה-Lint של
UseGetLayoutInflater
כדי לטפל בתרחישים קיצוניים נוספים. (Ie5423)
גרסה 1.4.0-alpha07
18 באוגוסט 2021
הגרסאות androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
ו-androidx.fragment:fragment-testing:1.4.0-alpha07
פורסמו ללא שינויים משמעותיים. גרסה 1.4.0-alpha07 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
גרסה 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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תיקוני באגים
- מ-Fragment
1.3.6
: תצוגת ה-Fragment מוגדרת עכשיו כראוי ל-GONE
כשמשתמשים ב-hide()
כשהתצוגה ברמה הבסיסית מוגדרת כ-transitionGroup=”true”
. (aosp/1766655, b/193603427) - מ-Fragment
1.3.6
:FragmentActivity
תמיד פותח עכשיו את המצב השמור כפעולה הראשונה שלו בקריאות החזרה (callbacks) של מחזור החיים, שמשנות את ברירת המחדל. (I6db7a)
עדכון יחסי התלות
- מ-Fragment
1.3.6
: עכשיו, קטעי הקוד תלויים בפעילות1.2.4
(I3a66c)
גרסה 1.4.0-alpha04
30 ביוני 2021
התכונות androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
וגם androidx.fragment:fragment-testing:1.4.0-alpha04
משוחררות. גרסה 1.4.0-alpha04 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
שינויים ב-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)
תיקוני באגים
- מ-Fragment
1.3.5
: תוקנה נסיגה בתנועות של רכיבים משותפים שנוספה ב-Fragment1.3.4
על ידי 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. יש לטפל בהוספות האלה בתצוגה של כל קטע בנפרד. (Ie6651, b/187304502)
גרסה 1.4.0-alpha01
18 במאי 2021
התכונות androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
וגם androidx.fragment:fragment-testing:1.4.0-alpha01
משוחררות. גרסה 1.4.0-alpha01 מכילה את ההוספות האלה.
תכונות חדשות
FragmentContainerView
כולל עכשיו את השיטהgetFragment()
שמחזירה את הקטע שנוסף לקונטיינר לאחרונה. הקריאה הזו משתמשת באותה לוגיקה כמוfindFragmentById()
עם המזהה שלFragmentContainerView
, אבל מאפשרת לשרשר את הקריאה. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
הוספנו את הערך
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
כדי לציין אם להפעיל את אנימציית המעבר הרגילה של Activity שנלקחה מהנושא שלכם במעבר בין קטעים. (I46652)
מספר סטאקים של חזרה אחורה
ה-FragmentManager
שומר על סטאק אחורה שמורכב מעסקאות של קטעי קוד שהשתמשו ב-addToBackStack()
. כך תוכלו לבטל את העסקאות האלה ולחזור למצב הקודם, באמצעות המנגנונים לשמירה של מצב באמצעות קטעים כדי לאפשר לקטעים לשחזר את המצב שלהם בצורה מתאימה.
במהדורה הזו אנחנו מרחיבים את המנגנונים האלה ומספקים שני ממשקי API חדשים של FragmentManager
: saveBackStack(String name)
ו-restoreBackStack(String name)
. ממשקי ה-API האלה משתמשים באותו name
כמו addToBackStack()
כדי לשמור את המצב של FragmentTransaction
ואת המצב של כל קטע שנוסף בעסקאות האלה, ולאפשר לכם לשחזר מאוחר יותר את העסקאות האלה ואת הקטעים שלהן עם המצב שלהן. כך תוכלו 'להחליף' בין כמה סטאקים של דפים לאחור, על ידי שמירת הסטאק הנוכחי ושחזור של סטאק ששמרתם.
הפונקציה saveBackStack()
פועלת באופן דומה ל-popBackStack()
, בכך שהיא אסינכררונית וכתוצאה מכך כל עסקאות הפיצ'רים חזרה לשם הספציפי הזה יבואו לביטול ('pop') וכל הפיצ'רים שנוספו יימחקו ויוסרו, אבל יש כמה הבדלים חשובים:
- הערך של
saveBackStack()
תמיד כולל. - בניגוד לפונקציה
popBackStack()
, שמפעילה את כל העסקאות בסטאק האחורי אם השם שצוין לא נמצא בסטאק האחורי או אם צוין שם null, הפונקציהsaveBackStack()
לא מבצעת שום פעולה אם לא התחייבתם בעבר לעסקת מקטע באמצעותaddToBackStack()
עם השם המדויק הזה, שהוא לא null. - המצב של כל הקטעים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל קטע יאוחסן,
onSaveInstanceState()
של כל קטע יקרא והמצב הזה ישוחזר, וכל המופעים שלViewModel
שמשויכים לקטעים האלה יישמרו (ו-onCleared()
לא יקרא בהם).
עסקאות הפיצ'רים שאפשר להשתמש בהן עם saveBackStack()
חייבות לעמוד בקריטריונים מסוימים:
- כל עסקה של קטע חייבת להשתמש ב-
setReorderingAllowed(true)
כדי להבטיח שניתן יהיה לשחזר את העסקאות כפעולה אטומית אחת. - קבוצת הטרנזקציות שנשמרת חייבת להיות עצמאית (כלומר, לא יכולות להיות בה הפניות מפורשות לקטעים מחוץ לקבוצת הטרנזקציות הזו), כדי להבטיח שניתן יהיה לשחזר אותה בכל שלב מאוחר יותר, ללא קשר לשינויים שבוצעו ב-back stack בזמן שחלף.
- כדי לוודא שה-
FragmentManager
לא מחזיר הפניות לקטעי קוד שנשמרו אחרי שמירת סטאק החזרה, אף קטע קוד שנשמר לא יכול להיות קטע קוד שנשמר או להכיל קטע קוד שנשמר בקבוצה הטרנזיטיבית של קטעי הקוד הצאצאים שלו.
בדומה ל-saveBackStack()
, הפונקציה restoreBackStack()
לא מבצעת שום פעולה אם לא התקשרתם קודם ל-saveBackStack()
עם אותו שם. (b/80029773)
Fragment StrictMode
ממשקי ה-API של FragmentStrictMode
מספקים בדיקות זמן ריצה שמאפשרות לוודא שהאפליקציה או הספריות שאתם תלויים בהן לא קוראות לממשקי API של קטעי קוד שהוצאו משימוש. כשמתגלה הפרה, אפשר להדפיס הודעת יומן, להפעיל מאזין מותאם אישית או לגרום לקריסה של האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy
שמחליט אילו בדיקות מופעלות ואילו 'עונשים' מופעלים ב-FragmentManager
באמצעות השיטה החדשה setStrictModePolicy()
. המדיניות הזו חלה על FragmentManager
הזה, ועל כל מנהל קטעי הקוד הצאצאים שלא מגדיר מדיניות ייחודית משלו. (#123, #131, #150, b/143774122)
detectFragmentReuse()
מזהה אם מכונה שלFragment
שהוסרה בעבר נוספת מחדש ל-FragmentManager
. אסור לבצע פעולות על מכונה שלFragment
או לשמור על הפניה אליה אחרי שהיא נמחקה והוסרה מ-FragmentManager
. (#142, b/153738653)detectFragmentTagUsage()
מזהה מתי אתם משתמשים בתג<fragment>
ב-XML של הפריסה. תמיד צריך להשתמש ב-FragmentContainerView
כשמנפחים קטעים כחלק מהפריסה. (#141, b/153738235)detectWrongFragmentContainer()
מזהה כשמוסיפים קטע קוד למאגר תגים שהוא לאFragmentContainerView
. תמיד צריך להשתמש ב-FragmentContainerView
בתור מאגר לקטעי הקוד בפריסה. (#146, b/181137036)detectRetainInstanceUsage()
מזהה מתי אתם משתמשים בממשקי ה-APIsetRetainInstance()
אוgetRetainInstance()
שהוצאו משימוש. (#140, b/153737954)detectSetUserVisibleHint()
מזהה מתי אתם משתמשים ב-APIsetUserVisibleHint()
שהוצא משימוש. (#136, b/153738974)detectTargetFragmentUsage()
מזהה מתי אתם משתמשים בממשקי ה-APIsetTargetFragment()
, getTargetFragment()
אוgetTargetRequestCode()
שהוצאו משימוש. (#139, b/153737745)
שינויים ב-API
- ממשק ה-API הניסיוני של
FragmentManager.enableNewStateManager(boolean)
הוסר, ומנהל המצבים החדש הוא עכשיו האפשרות היחידה שזמינה. (I90036, b/162776418) FragmentScenario
מיישם עכשיו אתCloseable
, כך שאפשר להשתמש בו עם השיטהuse
או עם try-with-resources של Kotlin. (#121, b/143774122)
בדיקות חדשות של Lint
- בדיקת ה-Lint של
UseGetLayoutInflater
מזהירה עכשיו כשמשתמשים ב-LayoutInflater.from(Context)
בתוךDialogFragment
– תמיד צריך להשתמש בשיטהgetLayoutInflater()
של קטע התי dialog כדי לקבל את ה-for המתאים ל-LayoutInflater
. (#156, b/170781346) - בדיקת ה-Lint של
DialogFragmentCallbacksDetector
מזהירה עכשיו כשקוראים ל-setOnCancelListener
או ל-setOnDismissListener
בשיטהonCreateDialog()
שלDialogFragment
– הבעלים של המאזינים האלה הואDialogFragment
עצמו, וצריך לשנות אתonCancel()
ו-onDismiss()
כדי לקבל את קריאות החזרה האלה. (#171, b/181780047, b/187524311)
תיקוני באגים
- מ-Fragment 1.3.4: תוקנה נסיגה לאחור שהופיעה ב-Fragment
1.3.3
כשמשתמשים ב-API שלViewTreeViewModelStoreOwner.get()
עםViewModelProvider
או בשיטה של Jetpack Compose שלviewModel()
בתוך Fragment. בתרחישי השימוש האלה, עכשיו נעשה שימוש נכון ב-ViewModelProvider.Factory
שסופק על ידי ה-Fragment אם הוא מבטל אתgetDefaultViewModelProviderFactory()
(כמו ש-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 מחבילת התוצאות של ה-fragment אחרי סיום התהליך. (I65932, b/187443158)
- מ-קטע קוד 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם הערך של
transitionGroup
ב-ViewGroup מוגדר כ-false, עכשיו הוא יבצע את המעבר כראוי. (I99675)
תרומה חיצונית
- תודה ל-simonschiller על ההטמעה של
Closeable
ב-FragmentScenario
. (#121, b/143774122) - תודה ל-simonschiller על הוספת כל ממשק ה-API של
FragmentStrictMode
לגרסה הזו. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - תודה ל-tatocaster על הוספת בדיקת ה-Lint של
UseGetLayoutInflater
. (#156, b/170781346) - תודה ל-tatocaster על הוספת בדיקת ה-Lint של
DialogFragmentCallbacksDetector
. (#171, b/181780047)
גרסה 1.3
גרסה 1.3.6
21 ביולי 2021
התכונות androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
וגם androidx.fragment:fragment-testing:1.3.6
משוחררות. גרסה 1.3.6 מכילה את ההצהרות האלה.
תיקוני באגים
- מקטע קוד
1.4.0-alpha03
: ה-FragmentManager
לא יתקרוס יותר כשמנסים להסתיר קטע קוד שהוסר. (I573dd, b/183634730) - התצוגה של ה-Fragment מוגדרת עכשיו כראוי ל-
GONE
כשמשתמשים ב-hide()
, כשבתצוגת הבסיס מוגדרתtransitionGroup=”true”
. (aosp/1766655, b/193603427) FragmentActivity
תמיד פותח את המצב השמור כפעולה הראשונה בקריאות החזרה (callbacks) של מחזור החיים שהוא מבטל. (I6db7a)
עדכון יחסי התלות
- מ-Fragment
1.3.6
: עכשיו, קטעי הקוד תלויים בפעילות1.2.4
(I3a66c)
גרסה 1.3.5
16 ביוני 2021
התכונות androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
וגם androidx.fragment:fragment-testing:1.3.5
משוחררות. גרסה 1.3.5 מכילה את השמירות האלה.
תיקוני באגים
- תוקן נסיגה בטרנזיציות של רכיבים משותפים שנוספו ב-Fragment
1.3.4
על ידי aosp/1679887. עכשיו אפשר להשתמש בקטעי קוד בצורה נכונה בקבוצות של מעברים (שנקבעו ישירות באמצעותtransitionGroup="true"
או בעקיפין באמצעותtransitionName
אוbackground
), ורכיבים משותפים לא יגרמו יותר להודעותIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304)
גרסה 1.3.4
18 במאי 2021
התכונות androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
וגם androidx.fragment:fragment-testing:1.3.4
משוחררות. גרסה 1.3.4 מכילה את ההוספות האלה.
תיקוני באגים
- תוקנה נסיגה שהופיעה ב-Fragment
1.3.3
כשמשתמשים ב-API שלViewTreeViewModelStoreOwner.get()
עםViewModelProvider
או בשיטה שלviewModel()
ב-Jetpack Compose בתוך Fragment כשמשתמשים ב-Hilt. בתרחישי לדוגמה האלה, מעכשיו נעשה שימוש נכון ב-ViewModelProvider.Factory
שסופק על ידי ה-Fragment אם הוא מבטל אתgetDefaultViewModelProviderFactory()
(כמו שמתבצע ב-Fragments עם הערות@AndroidEntryPoint
). אם לא מבטלים את הגדרת ברירת המחדל של השיטה הזו, נוצרSavedStateViewModelFactory
ששומר ומשחזר את המצב שלו לצד התצוגה של ה-Fragment. (I5cbfa, b/186097368) - כשמשתמשים ב-
FragmentContainerView
ב-API 29, המערכת לא תפרסם יותר תצוגות מפורטות ללא הגבלת זמן, וכך יפתרו בעיות במכונות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 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
- עכשיו אפשר להשתמש ב-
SavedStateViewModelFactory
עם הערךSavedStateRegistryOwner
שמוחזר באמצעותViewTreeSavedStateRegistryOwner.get()
עם התצוגה של ה-Fragment. (I21acf, b/181577191)
תיקוני באגים
- תוקן נסיגה (regression) שהופיעה בקטע
1.3.2
, שגרמה לכך שהאנימציות שלpopEnter
לא יפעלו כשמפעיליםFragmentTransaction
שכלל פעולתsetPrimaryNavFragment
, כמו אלה שבהן נעשה שימוש על ידיNavHostFragment
. (I38c87, b/183877426) FragmentContainerView
מבטיח עכשיו שלכלFragment
תישלח קבוצה חדשה שלWindowInsets
, כדי שכל קטע יוכל לצרוך את ה-insets באופן עצמאי. (I63f68, b/172153900)DialogFragment
מטפל עכשיו כראוי במקרים שבהם קטע צאצא נוסף לקונטיינר שיש לו את אותו מזהה כמו קונטיינר בכיתה בהתאמה אישיתDialog
. כך מתוקנות בעיות בהיררכיית התצוגה כשמשתמשים שוב במזהים ששימשו באופן פנימי תיבת דו-שיח כמוBottomSheetDialog
. (Ie6279, b/180021387)FragmentManager.dump()
עכשיו מוסיף הפסקה נכונה לתחילת הפלח הראשון ברשימת הפלחים הפעילים. (If5c33, b/183705451)
תיקוני באגים חדשים ב-State Manager
- מנהל המצב החדש של הפלח מטפל עכשיו בצורה תקינה במעברים של יציאה עם פעולות הסתרה. (I9e4de, b/184830265)
גרסה 1.3.2
24 במרץ 2021
התכונות androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
וגם androidx.fragment:fragment-testing:1.3.2
משוחררות. גרסה 1.3.2 מכילה את ההצהרות האלה.
תיקוני באגים חדשים ב-State Manager
- כשמריצים את הפעולות
popBackStack()
ו-commit()
יחד, הפעולה האחרונה תגדיר עכשיו את הכיוון לכל האנימציות, במקום להריץ חלק מהאנימציות של הופעה וחלק מהאנימציות של כניסה. (I7072e, b/181142246) - כשמבצעים מעבר של רכיב משותף, שם המעבר לא יימחק יותר בתצוגות בתוך היררכיית רכיבים משותפים. (I4d4a6, b/179934757)
עדכוני יחסי תלות
- Fragment תלוי עכשיו ב-Activity 1.2.2, וכך תוקנה בעיה בבדיקת ה-lint של
InvalidFragmentVersionForActivityResult
ב-Activity כשמשתמשים ב-Fragment 1.3.1 ואילך. - עכשיו, הספרייה 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)
תיקוני באגים
- עכשיו, אחרי שינוי בתצורה, קטעי קוד (fragments) שמתנפחים לפעילות
RESUMED
שכבר קיימת באמצעות FragmentContainerView מוצגים בצורה תקינה. (Ie14c8, b/180538371) - אין יותר
}
נוסף בסוף הקטעtoString()
(I54705, b/177761088) - שיטות ששונו ב-FragmentActivity עוברות עכשיו בירושה בצורה תקינה את שיטת הבסיס javaDoc (I736ce, b/139548782)
- במסמכי העזרה של
setFragmentResult
ו-setFragmentResultListener
עודכנו המסמכים של הפרמטרים כך שיציינו שהם לא מקבלים יותר ערכים nullable (I990ba, b/178348386)
תיקוני באגים חדשים ב-State Manager
- תוקן דליפת זיכרון בקטעים שנגרמה על ידי
mFocusedView
(Ib4e9e, b/179925887) - עכשיו, כשמשתמשים בהצגה או בהסתרה של עסקאות, קטעי הקוד קוראים ל-
onCreateOptionsMenu
בצורה תקינה (I8bce8, b/180255554) - עכשיו, קטעי צאצא עם מעברים שמתחילים לפני שמיקום הרכיב נקבע יגיעו כראוי אל
RESUMED
(Ic11e6, b/180825150) - מעכשיו, קטעי קוד שנפחתם באמצעות התג
<fragment>
תמיד יגיעו אלRESUMED
(I452ac, (I9fa49)
עדכוני יחסי תלות
- קטע 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
- מנהל מצב חדש: כתיבה מחדש של הרכיבים הפנימיים של
FragmentManager
תיקנה מספר בעיות שקשורות לשליחה של אירועי מחזור חיים, אנימציות ומעברים, ולאופן הטיפול בקטעים שהושהו. שילוב של Activity Result API: הוספנו תמיכה ב-API
ActivityResultRegistry
שהוצג ב-Activity1.2.0
כדי לטפל בתהליכים שלstartActivityForResult()
+onActivityResult()
וגם בתהליכים שלrequestPermissions()
+onRequestPermissionsResult()
בלי לשנות את שיטות ה-Fragment, בנוסף לספק הוקס לבדיקה של התהליכים האלה. כדאי לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות.- במהדורה הזו תוקנו מספר בעיות שקשורות לקודי בקשות לא חוקיים ולשליחת בקשות הרשאה, שמונעות את העבודה של Activity Result API בגרסאות קודמות של
FragmentActivity
. כדי להשתמש בממשקי Activity Result API ב-FragmentActivity
או ב-AppCompatActivity
, צריך לשדרג ל-Fragment 1.3.0.
- במהדורה הזו תוקנו מספר בעיות שקשורות לקודי בקשות לא חוקיים ולשליחת בקשות הרשאה, שמונעות את העבודה של Activity Result API בגרסאות קודמות של
Fragment Result API: נוספה תמיכה בהעברת תוצאות בין שני קטעי Fragment באמצעות ממשקי API חדשים ב-
FragmentManager
. האפשרות הזו פועלת עבור קטעי קוד במורשת (הורה/צאצא), קטעי קוד מסוג DialogFragment וקטעי קוד ב-Navigation, ומבטיחה שהתוצאות יישלחו ל-Fragment רק כשהוא בסטטוסSTARTED
לפחות. ממשקי ה-API של קטעי היעד הוצאו משימוש לטובת ממשקי ה-API החדשים האלה. איך מקבלים תוצאות באמצעות Fragment Result APIFragmentOnAttachListener
: הקריאה החוזרת (callback)onAttachFragment()
ב-FragmentActivity
וב-Fragment
הוצאה משימוש. הוספנוFragmentOnAttachListener
חדש כדי לספק חלופה גמישה יותר, שמאפשרת להעביר אתonAttachFragment()
למאזינים נפרדים שניתן לבדוק, ותמיכה בהוספת מאזין ל-FragmentManagers שאינם FragmentManager הצאצא הישיר שלכם.שיפורים ב-
FragmentScenario
: הכיתהFragmentScenario
מהארטיפקטfragment-testing
נכתבה מחדש ב-Kotlin ונוספו לה כמה שיפורים:FragmentScenario
משתמש עכשיו ב-setMaxLifecycle()
כדי להטמיע אתmoveToState()
, וכך מבטיח התנהגות עקבית בכל רמות ה-API ומפריד את המצב של ה-Fragment מהפעילות הבסיסית.FragmentScenario
תומך עכשיו בהגדרתLifecycle.State
ראשוני כדי לתמוך בהצהרה על מצב הפלח לפני המעבר לכלLifecycle.State
בפעם הראשונה.- עכשיו יש חלופה ל-API
FragmentScenario
שלonFragment
, בדמות שיטת התוסףwithFragment
של Kotlin, שמאפשרת להחזיר ערך. חשוב לציין שהיא גורמת להשלכת מחדש של חריגים שהופעלו בבלוק הנתון.
תמיכה ב-
ViewTree
:Fragment
תומך עכשיו בממשקי ה-APIViewTreeLifecycleOwner.get(View)
, ViewTreeViewModelStoreOwner.get(View)
ו-ViewTreeSavedStateRegistryOwner
שנוספו ב-Lifecycle2.3.0
וב-SavedState1.1.0
, כך שהוא יחזיר את ה-Fragment בתורViewModelStoreOwner
, ו-SavedStateRegistryOwner
ו-LifecycleOwner
שמקושרים למחזור החיים של התצוגה של ה-Fragment כשמשתמשים ב-View
בתוךFragment
.שינויים באנימציה של
TRANSIT_
: באפקטים שמוגדרים כברירת מחדל לקטעים,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
ו-TRANSIT_FRAGMENT_FADE
, נעשה עכשיו שימוש ב-Animator
במקום ב-Animation
. המשאבים ששימשו ליצירת האנימציות האלה הם עכשיו פרטיים.הוצאה משימוש של
setRetainInstance()
: השיטהsetRetainInstance()
ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש ממשק API ספציפי לשמירת מצב שאפשר לשייך ל-Activities, ל-Fragments ולתרשים הניווט. כך המפתחים יכולים להשתמש ב-Fragment רגיל, לא שמור, ולשמור בנפרד את המצב הספציפי שהם רוצים לשמור. כך הם יכולים להימנע ממקור נפוץ של דליפות, תוך שמירה על המאפיינים השימושיים של יצירה והרס יחידים של המצב השמור (כלומר, המבנה שלViewModel
והקריאה החוזרת (callback) שלonCleared()
שהוא מקבל).הוצאה משימוש של מתאם ViewPager 1: עם השקת ViewPager2
1.0.0
, הכיתותFragmentPagerAdapter
ו-FragmentStatePagerAdapter
ליצירת אינטראקציה עםViewPager
הוצאו משימוש. מעבר מ-ViewPager ל-ViewPager2
גרסה 1.3.0-rc02
27 בינואר 2021
התכונות androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
וגם androidx.fragment:fragment-testing:1.3.0-rc02
משוחררות. גרסה 1.3.0-rc02 כוללת את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה רכיב הורה
DialogFragment
הופיע מעל רכיב צאצאDialogFragment
אחרי שינוי בהגדרות. עכשיו, קטעי תיבת דו-שיח של צאצאים תמיד מופיעים מעל קטעי תיבת דו-שיח של הורה. (I30806, b/177439520) - תוקנה בעיה שבה ביצוע פעולת
hide
עםAnimation
גורם לקטע המוסתר להבהב בסוף האנימציה. (I57e22, b/175417675) - קטעי קוד עם מעברים שנוספו לפני שמצרפים את היררכיית התצוגה מגיעים עכשיו ל-
RESUMED
בצורה תקינה. (I1fc1d, b/177154873)
תיקוני באגים חדשים ב-State Manager
- התצוגה של ה-Fragment
Lifecycle
מטפלת עכשיו כראוי במקרים שבהם התצוגה של ה-Fragment נהרסת לפני שה-Lifecycle
מגיע ל-CREATED
, וכך נמנעים חריגות עם הכיתוב "no event down from 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 באותה עסקה של קטע קוד יוביל עכשיו להצגת האנימציות המתאימות (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 באופן מלא, תוך שמירה על תאימות למקור ולקובץ הבינארי באמצעות ממשקי ה-API הפונקציונליים של Kotlin 1.4 ל-FragmentAction
. (I19d31)
שינויים בהתנהגות
- עכשיו אפשר להשתמש ב-FragmentContainerViews שלא מנפחים קטע באמצעות המאפיין
class
אוandroid:name
מחוץ ל-FragmentActivity
. (Id4397, b/172266337) - ניסיון להגדיר את משך החיים המקסימלי של קטע ל-
DESTROYED
יגרום עכשיו להודעת השגיאהIllegalArgumentException
(Ie7651, b/170765622) - איפוס של FragmentScenario עם מצב
DESTROYED
יגרום עכשיו להשלכתIllegalArgumentException
(I73590, b/170765622)
תיקוני באגים חדשים ב-State Manager
- תוקנה בעיה שבה התצוגה לא הגיעה למצב הסופי שלה אם הפסקת מעבר של קטע שבו נעשה שימוש ב-
Animator
או באחת מהאפשרויות שלTRANSIT_FRAGMENT_
. (I92426, b/169874632) - תוקנה בעיה שגרמה לכך שקטעי קוד עם
Animation
יוצא לא נהרסים כראוי. (I83d65) - קטעי יציאה שהאפקטים שלהם הוחלפו עכשיו מתבטלים בצורה נכונה ומתחילים מחדש עם אפקט הכניסה המתאים. (I62226, b/167092035)
- תוקנה בעיה שבה הפונקציה exit
Animator
שלhide()
לא הייתה פועלת. (Id7ffe) - עכשיו, כשמאחרים את ההפעלה של קטעים ומפעילים אותם מיד לאחר מכן, הם מופיעים בצורה תקינה. (Ie713b, b/170022857)
- כשקטעים מסירים את התצוגה שבה הם ממוקדים במהלך אנימציה, הם לא ינסו יותר לשחזר את המיקוד בתצוגה המופרדת ברגע שהם מגיעים ל-
RESUMED
(I38c65, b/172925703)
תרומה חיצונית
FragmentFactory
שומר עכשיו במטמון סיווגים של קטעי קוד בנפרד למופעים שונים שלClassLoader
. תודה, Simon Schiller! (#87, b/113886460)
גרסה 1.3.0-beta01
1 באוקטובר 2020
התכונות androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
וגם androidx.fragment:fragment-testing:1.3.0-beta01
משוחררות. גרסה 1.3.0-beta01 מכילה את ההצהרות האלה על ביצוע שינויים (commits).
תכונות חדשות
setMaxLifecycle()
תומך עכשיו בהגדרת המצבLifecycle
ל-INITIALIZING
, כל עוד הקטע לא הועבר אלCREATED
. (b/159662173)
שינויים ב-API
- שדרוג androidx לשימוש ב-Kotlin 1.4 (Id6471, b/165307851, b/165300826)
שינויים בהתנהגות
- קבצי המשאבים של הקטעים הוגדרו כפרטיים בצורה תקינה. (aosp/1425237)
תיקוני באגים
- עכשיו, קטעי קוד שמנפחים באמצעות התג
<fragment>
ימתינו כראוי עד שהצפיות שלהם יתווספו למאגר לפני שהם יעברו למצב 'התחיל' (I02f4c) - עכשיו, כשמשתמשים עוברים על קטעים שגלויים ואז על קטעים
setMaxLifecycle()
עדCREATED
, האפקטים שלהם בסיום הקריאה פועלים כראוי. (b/165822335) - הסרה של קטע מנותק שלא נוסף ל-back stack לא גורמת יותר לדליפה בזיכרון. באדיבות Nicklas Ansman Giertz! (b/166489383)
- מעכשיו, לקטעים פעילים תמיד יהיה ערך
FragmentManager
שאינו null, וקטעים עם ערךFragmentManager
שאינו null ייחשבו תמיד כפעילים. (aosp/1422346) - בהשפעות ברירת המחדל של הקטעים,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
ו-TRANSIT_FRAGMENT_FADE
, נעשה עכשיו שימוש ב-Animator
במקום ב-Animation
. (b/166155034)
תיקוני באגים חדשים ב-State Manager
- עכשיו, כשהאנימציה מתחילה, הפריטים משחזרים בצורה נכונה את מצב המיקוד של התצוגה. (Icc256)
- עכשיו, בקטעים שיש בהם רק מעבר של רכיב משותף, האפקטים המיוחדים מושלמים כראוי, כלומר הם עוברים למצב הסופי שלהם (Iaebc7, b/166658128)
- תצוגות של קטעי קוד תמיד יוסרו מהמאגר לפני שהן יימחקו. (Id5876)
- מנהל המצב החדש מסיר עכשיו באופן עקבי את תצוגת הפלח היוצא לפני שהוא מוסיף את תצוגת הפלח הנכנס. (I41a6e)
- מנהל המצב החדש מתייחס עכשיו לשינויים מפורשים בחשיפה של תצוגת קטע. כלומר, אם תגדירו את התצוגה של קטע נכנס ל-
INVISIBLE
לפני שהאנימציה תתחיל, הוא יישאר בלתי נראה בפועל. (b/164481490) - מעכשיו, בקטעי קוד המערכת נותנת עדיפות ל-
Animators
על פניAnimations
, כלומר קטע קוד עם שניהם יפעל רק אתAnimator
ויתעלם מ-Animation
. (b/167579557) - מנהל המצב החדש כבר לא גורם לקטעים להבהב כשמשתמשים באנימציות כניסה. (b/163084315)
בעיה ידועה
כשמשתמשים במנהל המצבים החדש, אם לוחצים על 'הקודם' במהלך כניסה לאפקט מיוחד במקום לחזור לקטע הקודם, הקטע הישן לא מתווסף מחדש, וכתוצאה מכך מופיע מסך ריק. (b/167259187, b/167092035, b/168442830)
גרסה 1.3.0-alpha08
19 באוגוסט 2020
התכונות androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
וגם androidx.fragment:fragment-testing:1.3.0-alpha08
משוחררות. גרסה 1.3.0-alpha08 מכילה את ההצהרות האלה.
מנהל מצב חדש
במהדורה הזו בוצע שינוי משמעותי בניהול המצב הפנימי של FragmentManager
, שמשפיע על שליחת השיטות של מחזור החיים, על אנימציות ועל מעברים, ועל האופן שבו מטפלים בטרנזקציות שהושהו. ההגדרה הזו מוצגת בממשק כברירת מחדל. פרטים נוספים זמינים בפוסט Fragments: Rebuilding the Internals. (b/139536619, b/147749580)
- אפשר להשתמש ב-API ניסיוני ב-
FragmentManager.enableNewStateManager(boolean)
כדי לקבוע אם מערכת הניהול של ה-FragmentManager תשתמש במנהל המצב החדש. (I7b6ee)
הבעיות הבאות נפתרות רק כשמשתמשים במנהל המצב החדש:
- החלק הקודם של פעולת
replace
נעצר עכשיו בצורה תקינה לפני שהחלק החדש מתחיל. (b/161654580) - עכשיו אפשר למנוע מצב שבו יהיו כמה אנימציות מתחרות באותו מקטע, כדי למנוע מקרים שבהם
Animation
יגבור על כל האפקטים שלTransition
או שבהםAnimator
ו-Transition
יפעלו בו-זמנית באותו מקטע. (b/149569323) - עכשיו פועלים
enterTransition
ו-exitTranstion
של כל הקטעים הנכנסים והיוצאים, ולא רק הקטעים האחרונים שנכנסו והקטעים הראשונים שיוצאים. (b/149344150) - קטעי קוד שהושהו לא נתקעים יותר במצב
CREATED
, אלא עוברים למצבSTARTED
עם קטעי קוד אחרים. (b/129035555) - תוקנה בעיה שבה
FragmentManager
היה מבצע פעולות בסדר שגוי כשמשלב טרנזקציה שהוזמנה מחדש והושתה עם טרנזקציה שלא הוזמנה מחדש. (b/147297731) - הצגת כמה קטעים בו-זמנית לא תוביל יותר להצגה זמנית של קטעי ביניים כשמאחרים את הצגת הקטעים. (b/37140383)
FragmentManager
מחזירה עכשיו את הקטעים הנכונים כשקוראים ל-findFragmentById()
או ל-findFragmentByTag()
מתוך הקריאה החוזרת (callback) שלonAttachFragment()
. (b/153082833)- כשהקטע שמחליף אותם נדחה, קטעי הקוד כבר לא קוראים ל-
onCreateView()
בקטעים שנמחקים. (b/143915710) - הודעת השגיאה שמופיעה כשמנסים לשלב בין מודל
Transition
לבין מכונות AndroidXTransition
כוללת עכשיו את הקטע עם המעבר הלא חוקי. (b/155574969)
שינויים בהתנהגות
- עכשיו אפשר להפעיל את
launch()
ב-ActivityResultLauncher
בשיטת מחזור החייםonCreate()
של קטע קוד. (b/161464278) - קריאה ל-
registerForActivityResult()
אחריonCreate()
גורמת עכשיו להשלכת חריגה שמציינת שאסור לעשות זאת, במקום להיכשל בשקט בהצגת תוצאות אחרי שינוי הגדרה. (b/162255449) FragmentActivity
משתמש עכשיו ב-APIOnContextAvailableListener
שהוצג בפעילות1.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)- הוספנו חלופה ל-API
FragmentScenario
שלonFragment
, בדמות שיטת ההרחבהwithFragment
של Kotlin, שמאפשרת להחזיר ערך. חשוב לציין שהיא גורמת להשלכת מחדש של חריגים שהופעלו בבלוק הנתון. (b/158697631)
שינויים בהתנהגות
FragmentScenario
משתמש עכשיו ב-setMaxLifecycle()
כדי להטמיע אתmoveToState()
, וכך מבטיח התנהגות עקבית בכל רמות ה-API ומפריד את המצב של ה-Fragment מהפעילות הבסיסית. (b/156527405)- הערך של
SavedStateRegistryOwner
שהחזירViewTreeSavedStateRegistryOwner
מקושר עכשיו למחזור החיים של תצוגת הפלח. כך מובטח שהמצב שלו נשמר ומשוחזר באותו זמן שבו מתבצעת השחזור של התצוגה של הקטע. (b/158503763)
תיקוני באגים
- עכשיו, לפני קריאה ל-
ViewCompat.requestApplyInsets()
, קטעי הקוד ממתינים שהתצוגה שלהם תצורף, כדי למנוע מקרים שבהם הבקשה להוספה נדחית. (b/158095749) - קריאה ל-
clearFragmentResultListener
מנקה עכשיו בצורה תקינה את משתמש המעקב אחרי מחזור החיים. (b/159274993)
גרסה 1.3.0-alpha06
10 ביוני 2020
התכונות androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
וגם androidx.fragment:fragment-testing:1.3.0-alpha06
משוחררות. גרסה 1.3.0-alpha06 מכילה את ההוספות האלה.
תכונות חדשות
- הקריאה החוזרת (callback)
onAttachFragment()
ב-FragmentActivity
וב-Fragment
הוצאה משימוש. הוספנו אתFragmentOnAttachListener
החדש כדי לספק חלופה גמישה יותר, שמאפשרת להעביר אתonAttachFragment()
למאזינים נפרדים שניתן לבדוק, ותמיכה בהוספת מאזין ל-FragmentManagers מלבד FragmentManager הצאצא הישיר. (I06d3d)
תיקוני באגים
- מצב התצוגה של קטעי הקוד ההורה משוחזר עכשיו לפני קטעי הקוד הצאצאים, וכך מתוקנת בעיה של סדר חזותי אחרי שינוי בהגדרות, כשקטע קוד
DialogFragment
מציג קטע קודDialogFragment
אחר כקטע קוד צאצא. (b/157195715) - תוקנה בעיה שבה בדיקת ה-Lint של
UseRequireInsteadOfGet
לא טיפלה כראוי בשימוש בשרשור של האופרטורים?.
ו-!!
. (b/157677616)
גרסה 1.3.0-alpha05
20 במאי 2020
התכונות androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
וגם androidx.fragment:fragment-testing:1.3.0-alpha05
משוחררות. גרסה 1.3.0-alpha05 מכילה את ההצהרות האלה.
תכונות חדשות
- נוספה תמיכה ב-
ViewTreeViewModelStoreOwner
מ-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) - התוספים של Kotlin מסוג
setFragmentResultListener()
שמקבלים פונקציית lambda מסומנים עכשיו כ-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 החדשים של תוצאות קטעי קוד. (b/149787344)
- ממשקי ה-API
startActivityForResult()
/onActivityResult()
ו-requestPermissions()
/onRequestPermissionsResult()
ב-Fragment הוצאו משימוש. צריך להשתמש ב-Activity Result APIs. (aosp/1290887) - שינוי שגורם לשבירה מפעילות
1.2.0-alpha04
: השם של השיטהprepareCall()
השתנה ל-registerForActivityResult()
. (aosp/1278717)
תיקוני באגים
getViewLifecycleOwner()
של החלקיק מושבת עכשיו לפני הקריאה ל-onSaveInstanceState()
, כפי שמשקף את ההתנהגות של מחזור החיים של החלקיק. (b/154645875)- קריאה ל-
setMenuVisibility(false)
על קטע קוד עכשיו משנה בצורה נכונה את החשיפה של התפריטים שסופקו על ידי קטעי הקוד הצאצאים שלו. (b/153593580) - תוקנה בעיה ב-
illegalStateException
כשמוסיפים קטע קוד ליררכיית התצוגה שלDialogFragment
באמצעותFragmentContainerView
. (b/154366601) - השיטה
getDefaultViewModelProviderFactory()
בקטעי קוד כבר לא קורסת כשמארחים את הקטעים מחוץ לפעילות. (b/153762914)
גרסה 1.3.0-alpha03
1 באפריל 2020
התכונות androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
וגם androidx.fragment:fragment-testing:1.3.0-alpha03
משוחררות. גרסה 1.3.0-alpha03 מכילה את ההוספות האלה.
שינויים ב-API
- השיטות
prepareCall
ב-Fragment
הן עכשיוfinal
. (b/152439361)
תיקוני באגים
- תוקנה נסיגה (regression) שהופיעה בקטע
1.3.0-alpha02
כשמשתמשים ב-BottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - תוקן קריסה שעלולה להתרחש כשמשתמשים ב-
prepareCall
מתוך קטע אחרי שינוי בתצורה. (b/152137004) - תוקנה בעיה שבה המערכת התעלמה מרכיבים משותפים וממעברים של יציאה כשמשתמשים ב-
setTargetFragment()
. (b/152023196) - מ-Fragment
1.2.4
: עודכנו כללי ProGuard של Fragment כדי לאפשר ערפול של קטעי קוד שנשמרו. (b/151605338) - מ-Fragment
1.2.4
: השבתנו את כלל ה-Lint שלFragmentLiveDataObserve
בכיתותDialogFragment
כי מחזור החיים שלהן ומחזור החיים של התצוגה תמיד מסונכרנים, כך שבטוח להשתמש ב-this
או ב-viewLifecycleOwner
כשקוראים ל-observe
. (b/151765086)
שינויים ביחסי התלות
- הפיצ'רים האלה תלויים בפעילות
1.2.0-alpha03
, שבה בוצעו שיפורים משמעותיים ב-Activity Result API שהוצג בפעילות1.2.0-alpha02
.
גרסה 1.3.0-alpha02
18 במרץ 2020
התכונות androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
וגם androidx.fragment:fragment-testing:1.3.0-alpha02
משוחררות. גרסה 1.3.0-alpha02 מכילה את ההצהרות האלה.
תכונות חדשות
- הוספנו תמיכה ב-API של
ActivityResultRegistry
, שהוצג ב-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)
תיקוני באגים
- מקטע קוד
1.2.3
: תוקן באג ב-DialogFragment
שגרם ל-StackOverflowError
כשקוראים ל-getLayoutInflater()
מתוךonCreateDialog()
. (b/117894767, aosp/1258664) - מ-Fragment
1.2.3
: צמצמנו את היקף הכללים של ProGuard שכלולים ב-Fragment כדי להבטיח שאפשר יהיה להסיר כיתות Fragment שלא בשימוש. (b/149665169) - מ-Fragment
1.2.3
: תוקנו תוצאות חיוביות שגויות בבדיקת Lint שלUseRequireInsteadOfGet
כשמשתמשים בשם משתנה מקומי שהצליל כמו שם המאפיין ב-Kotlin. (b/149891163) - מקטע קוד
1.2.3
:FragmentContainerView
כבר לא גורם להשלכתUnsupportedOperationException
בגלל שימוש ב-constructor שגוי בתצוגה המקדימה של הפריסה. (b/149707833)
בעיות מוכרות
- תיבת הדו-שיח של
BottomSheetDialogFragment
לא ממוקמת יותר כראוי במסך. (b/151652127)
גרסה 1.3.0-alpha01
4 במרץ 2020
התכונות androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
וגם androidx.fragment:fragment-testing:1.3.0-alpha01
משוחררות. גרסה 1.3.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- הוספנו תמיכה ב-API של
ViewTreeLifecycleOwner.get(View)
שנוסף ב-Lifecycle2.3.0-alpha01
, כך שהוא יחזיר אתviewLifecycleOwner
של ה-Fragment בתורLifecycleOwner
לכל תצוגות (Views) שמוחזרות על ידיonCreateView()
. (aosp/1182955)
שינויים ב-API
- השיטה
setRetainInstance()
ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש ממשק API ספציפי לשמירת מצב שאפשר לשייך ל-Activities, ל-Fragments ולתרשים הניווט. כך המפתחים יכולים להשתמש ב-Fragment רגיל, לא שמור, ולשמור בנפרד את המצב הספציפי שהם רוצים לשמור. כך הם יכולים להימנע ממקור נפוץ של דליפות, תוך שמירה על המאפיינים השימושיים של יצירה והרס יחידים של המצב השמור (כלומר, המבנה הגנרטיבי שלViewModel
והקריאה החוזרת (callback) שלonCleared()
שהוא מקבל). (b/143911815) - עם השקת ViewPager2
1.0.0
, המחלקותFragmentPagerAdapter
ו-FragmentStatePagerAdapter
ליצירת אינטראקציה עםViewPager
הוצאו משימוש. מעבר מ-ViewPager ל-ViewPager2 (b/145132715)
תיקוני באגים
- כללי ProGuard של Fragment שומרים עכשיו בצורה נכונה רק על מחלקות ה-
Fragment
של קונסטרוקטור ברירת המחדל שבהן נעשה שימוש, ולא על כל המופעים שלFragment
. כך תוקנה נסיגה לאחור שהופיעה ב-Fragment1.2.1
. (b/149665169 - כללי ה-Lint מסוג
require___()
שנוספו בקטע1.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 של קטעי קוד כדי לאפשר ערפול של קטעי קוד שנשמרו. (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)
- תוקנו תוצאות חיוביות שגויות בבדיקת Lint של
UseRequireInsteadOfGet
כשמשתמשים בשם משתנה מקומי שמוצג בצל של שם המאפיין ב-Kotlin. (b/149891163) FragmentContainerView
כבר לא גורם להשלכתUnsupportedOperationException
בגלל שימוש ב-constructor שגוי בתצוגה המקדימה של הפריסה. (b/149707833)
גרסה 1.2.2
גרסה 1.2.2
19 בפברואר 2020
התכונות androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
וגם androidx.fragment:fragment-testing:1.2.2
משוחררות. גרסה 1.2.2 כוללת את ההצהרות האלה.
בדיקות חדשות של Lint
- Lint מציע להשתמש ב-
viewLifecycleOwner
בתורLifecycleOwner
לשיחות ל-OnBackPressedDispatcher
ב-onCreateView()
, ב-onViewCreated()
וב-onActivityCreated()
. (b/142117657) - נוספה בדיקת Lint חדשה שמאשרת שאתם משתמשים ב-
debugImplementation
הנכון כשאתם משתמשים ב-artifact שלfragment-testing
. (b/141500106) - ב-Fragments, מוצע עכשיו להשתמש בשיטות
require___()
המשויכות כדי לקבל הודעות שגיאה תיאוריות יותר, במקוםcheckNotNull(get___())
,requireNonNull(get___())
אוget___()!!
, בכל ממשקי ה-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 שומר עכשיו את ה-constructor שמוגדר כברירת מחדל של קטעי קוד שנוספו באמצעות השיטות
add
ו-replace
, שמקבלים מופע שלClass
(או את הגרסאות המאומתות של Kotlin). (b/148181315) FragmentStatePagerAdapter
ו-FragmentPagerAdapter
כבר לא תופסים חריגות שמשוחררות על ידיFragmentManager
כשמריצים אתfinishUpdate()
. (aosp/1208711)- תוקנה בעיה שבה
FragmentManager.findFragment()
לא עבד עם קטעים שנוספו באמצעות התג<fragment>
. (b/147784323) - עכשיו, כשקטעי קוד מתנפחים באמצעות התג
<fragment>
, הם תמיד מקבלים קריאה ל-onInflate()
לפניonCreate()
כשהם בפריסת האתר. (aosp/1215856) - קריאה ל-
toString()
במכונה שלFragmentManager
לא גורמת יותר להשלכתNullPointerException
כשהפעילות כבר הושמדה. (b/148189412)
שינויים ביחסי התלות
- עכשיו, קטעי הקוד
1.2.1
תלויים ב-Lifecycle 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
הוא הקונטיינר המומלץ ביותר להוספה דינמית של קטעי קוד, והוא מחליף את השימוש ב-FrameLayout
או בפריסות אחרות. הוא תומך גם באותםclass
,android:name
ו-android:tag
אופציונליים כמו התג<fragment>
, אבל משתמש ב-FragmentTransaction
רגיל כדי להוסיף את הקטע הראשוני הזה, במקום נתיב הקוד המותאם אישית שבו משתמש<fragment>
. - תזמון
onDestroyView()
: עכשיו, לפני קריאה ל-onDestroyView()
, קטעי הקוד מחכים שהאנימציות של היציאה, המעברים של היציאה מה-framework והמעברים של היציאה מ-AndroidX (כשמשתמשים ב-Transition1.3.0
) יסתיימו. add()
ו-replace()
מבוססי-כיתה: נוספו עומסי יתר חדשים שלadd()
ו-replace()
ב-FragmentTransaction
, שמקבליםClass<? extends Fragment>
ו-Bundle
אופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactory
כדי ליצור מופע של ה-Fragment שרוצים להוסיף. תוספים של Kotlin שמשתמשים בסוגי reified (כלומרfragmentTransaction.replace<YourFragment>(R.id.container)
) נוספו גם ל-fragment-ktx
.- שילוב של SavedState ב-Lifecycle ViewModel:
SavedStateViewModelFactory
הוא עכשיו המפעל שמוגדר כברירת מחדל כשמשתמשים ב-by viewModels()
, ב-by activityViewModels()
, ב-constructor שלViewModelProvider
או ב-ViewModelProviders.of()
עם Fragment. - בדיקות Lint חדשות: נוספה בדיקת Lint חדשה שמבטיחה שאתם משתמשים ב-
getViewLifecycleOwner()
כשאתם צופים ב-LiveData
מ-onCreateView()
, מ-onViewCreated()
או מ-onActivityCreated()
. - הוצאה משימוש של
getFragmentManager()
: השיטותgetFragmentManager()
ו-requireFragmentManager()
ב-Fragment הוצאו משימוש והוחלפו בשיטה יחידה,getParentFragmentManager()
, שמחזירה את ה-FragmentManager
שאינו null שאליו ה-Fragment נוסף (אפשר להשתמש ב-isAdded()
כדי לקבוע אם בטוח לבצע קריאה). - הוצאה משימוש של
FragmentManager.enableDebugLogging()
: השיטה הסטטיתFragmentManager.enableDebugLogging
הוצאה משימוש. FragmentManager מתייחס עכשיו ל-Log.isLoggable()
בתגFragmentManager
, כך שאפשר להפעיל את הרישום ביומן שלDEBUG
או שלVERBOSE
בלי להדר את האפליקציה מחדש.
בעיות מוכרות
- ProGuard לא שומר באופן אוטומטי קטעי קוד שמצוינים רק באמצעות המאפיין
class
אוandroid:name
ב-FragmentContainerView
. לכן, צריך להוסיף ידנית כלל שמורה לכל סוג של קטע קוד. (b/142601969) - כשאתם מוסיפים
NavHostFragment
באמצעותclass
אוandroid:name
ב-XML עםFragmentContainerView
, אי אפשר להשתמש ב-findNavController()
ב-onCreate()
של הפעילות. (b/142847973)
גרסה 1.2.0-rc05
8 בינואר 2020
התכונות androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
וגם androidx.fragment:fragment-testing:1.2.0-rc05
משוחררות. גרסה 1.2.0-rc05 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקן נסיגה ב-Fragment
1.2.0-rc04
כשמשתמשים בתג<fragment>
, שגרמה לקריאה שגויה ל-onViewCreated()
במהלך השמדת הפעילות. (b/146290333) - עכשיו, כשמוסיפים קטעי קוד באמצעות התג
<fragment>
, הנתונים שאינם מוגדרים נמחקים כראוי גם אם הם מופיעים בפריסת האתר רק לפעמים (כלומר, רק בפריסת האתר בפורמט לרוחב). כתוצאה מכך, ה-Fragments האלה מועברים עכשיו בצורה נכונה אל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()
עדיין מחזירים קטעי Fragment שהוסרו בזמן שהאנימציות או המעברים שלהם יוצאים לפועל. (b/143982969, aosp/1167585) - עכשיו, כשהפעילות המכילה קוראת ל-
onSaveInstanceState()
, קטעי הקוד הצאצאים מופסקים בצורה נכונה לפני ההורים שלהם. (b/144380645) - תוקנה בעיה שבה צפיות סומנו בצורה שגויה ב-
INVISIBLE
אחרי ש-Fragment מוסתר הופיע. (b/70793925) - מעברים של רכיבים משותפים בקטעי קוד מטפלים עכשיו בתצוגות שסובבו, שונו בהן הגדלים וכו' (b/142835261)
עדכונים במסמכי התיעוד
- הבהרנו את המסמכים בנושא ההוצאה משימוש של
setUserVisibleHint()
. (b/143897055) - שיפרנו את המסמכים לגבי
setFragmentFactory()
ו-getFragmentFactory()
כדי להבהיר טוב יותר שהגדרתFragmentFactory
תשפיע גם על FragmentManagers צאצאים. (aosp/1170095)
שינויים ביחסי התלות
- עכשיו, קטעים תלויים ב-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, תיקון ה-LintFix לשימוש ב-
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)
תיקוני באגים
- כעת, כשהקריאות החוזרות (callbacks)
onDismiss
ו-onCancel
ב-DialogFragment
מופעלות, מובטח שהערך שלDialogInterface
שהועברו אליהן הוא לא null ושהערך שמוחזר על ידיgetDialog()
הוא לא null. (b/141974033) FragmentContainerView
מוסיף עכשיו את ה-Fragment שמוגדר על ידיclass
אוandroid:name
כחלק מהנפח, וכך מוודא ש-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 כוללת את ההצהרות האלה.
תיקוני באגים
- תוקנה בעיה שבה
onInflate()
של Fragment לא קיבל מאפיינים מתאימים מ-FragmentContainerView
, מה שגרם לבעיות במקרים כמוNavHostFragment
. (b/142421837)
גרסה 1.2.0-beta01
9 באוקטובר 2019
התכונות androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
וגם androidx.fragment:fragment-testing:1.2.0-beta01
משוחררות. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.
תכונות חדשות
FragmentContainerView
מוסיף תמיכה בהוספת קטע ראשוני עם תמיכה נוספת במאפייני ה-XMLandroid:name
ו-android:tag
האופציונליים. בניגוד לתג<fragment>
, התגFragmentContainerView
משתמש ב-FragmentTransaction
רגיל מתחת לפני השטח כדי להוסיף את החלק הראשון, ומאפשר לבצע פעולות נוספות שלFragmentTransaction
ב-FragmentContainerView
ומאפשר להשתמש ב-View Binding לפריסה. (b/139830628, b/141177981)- הקוד של הפלחים מכיל עכשיו אזהרה של Lint עם הצעה לתיקון מהיר: החלפת
<fragment>
ב-FragmentContainerView
. (b/139830056)
תיקוני באגים
- תוקן באג ב-
ClassCastException
כשמשתמשים ב-androidx.transition
. (b/140680619) - כשמשתמשים במעבר
1.3.0-beta01
, רכיבי ה-Fragment ממתינים עכשיו לסיום של מעבריandroidx.transition
(בנוסף למעברים ולאנימציות של המסגרת, שתוקנו ב-Fragment1.2.0-alpha03
וב-Fragment1.2.0-alpha02
, בהתאמה) לפני שליחתonDestroyView()
. (aosp/1119841) - כשמשתמשים במעבר
1.3.0-beta01
, עכשיו אפשר לבטל את המעברים שלandroidx.transition
בצורה תקינה ב-Fragments לפני שמתחילים מעברים או אנימציות חדשים באותו מאגר. (aosp/1119841) - תוקנה בעיה ב-API מגרסה 17 ומטה, כשמשתמשים במעברים מסוג
androidx.transition
בתצוגת הבסיס של ה-Fragment כשמשתמשים ב-FragmentContainerView
. (b/140361893) - הארטיפקט
fragment-testing
תלוי עכשיו ב-AndroidX Test1.2.0
, כדי לפתור את אי-התאימות ל-Espresso 3.2.0 העדכני. (b/139100149) - הוסר השימוש ב-
Log.w
ב-FragmentManager. (aosp/1126468)
בעיות מוכרות
- רכיבי
onInflate()
של הפלח לא מקבלים מאפיינים מתאימים מ-FragmentContainerView
, וכתוצאה מכך יש מקרים שבהם הקוד לא פועל כמו שצריך, למשלNavHostFragment
. (b/142421837)
גרסה 1.2.0-alpha04
18 בספטמבר 2019
התכונות androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
וגם androidx.fragment:fragment-testing:1.2.0-alpha04
משוחררות. גרסה 1.2.0-alpha04 מכילה את ההצהרות האלה.
שינויים ב-API
- השיטות
getFragmentManager()
ו-requireFragmentManager()
ב-Fragment
הוצאו משימוש והוחלפו בשיטה יחידהgetParentFragmentManager()
, שמחזירה את ה-FragmentManager
שאינו null שאליו ה-Fragment נוסף (אפשר להשתמש ב-isAdded()
כדי לקבוע אם בטוח לבצע קריאה). (b/140574496) - השיטה הסטטית
FragmentManager.enableDebugLogging
הוצאה משימוש. FragmentManager מתייחס עכשיו ל-Log.isLoggable()
בתגFragmentManager
, ומאפשר להפעיל את הרישום ביומן שלDEBUG
או שלVERBOSE
בלי לבצע הידור מחדש של האפליקציה. (aosp/1116591)
תיקוני באגים
- עכשיו, כשאנימציות יציאה פועלות בקטעים אחרים, הקטעים נהרסים כראוי. (b/140574199)
- תוקנה בעיה שבה קטעי קוד של Fragments קוראים ל-
Activity.findViewById()
במקרים שבעבר הם לא עשו זאת. (aosp/1116431)
גרסה 1.2.0-alpha03
5 בספטמבר 2019
התכונות androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
וגם androidx.fragment:fragment-testing:1.2.0-alpha03
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
שינויים ב-API
FragmentContainerView
הוא עכשיוfinal
. (b/140133091)
תיקוני באגים
FragmentContainerView
הופך עכשיו את סדר הציור בצורה נכונה כשמפעילים את הפונקציה pop על קטעי קוד מהמקבץ האחורי. (b/139104187)- תוקנה בעיה שבה האנימציה הלא נכונה הופיעה כשהצגת קטע קוד מוצגת בחלון קופץ והוספת קטע קוד חדש בו-זמנית. (b/111659726)
- עכשיו, לפני שליחת
onDestroyView()
, קטעי הקוד ממתינים לסיום המעברים (בנוסף לאנימציות, שהבעיה שלהן תוקנה בקטע קוד1.2.0-alpha02
). (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
משוחררים. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תכונות חדשות
SavedStateViewModelFactory
הוא עכשיו המפעל שמוגדר כברירת מחדל כשמשתמשים ב-by viewModels()
, ב-by activityViewModels()
, ב-constructor של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 שרוצים להוסיף. תוספים של Kotlin שמשתמשים בסוגי reified (כלומר,fragmentTransaction.replace<YourFragment>(R.id.container)
) נוספו גם ל-fragment-ktx
. (b/126124987) - נוספו הערות
@MainThread
לקריאות חזרה (callbacks) של מחזור החיים שלFragment
. (b/127272564) - ממשקי ה-API שקשורים לכותרת של נתיב הניווט ב-
FragmentTransaction
וב-FragmentManager.BackStackEntry
הוצאו משימוש. (b/138252944) - השיטה
setTransitionStyle
ב-FragmentTransaction
הוצאה משימוש. (aosp/1011537) - הרבה מהשיטות ב-
FragmentManager
כבר לאabstract
.FragmentManager
עצמו נשארabstract
ואסור ליצור או להרחיב אותו ישירות. צריך להמשיך לקבל רק מופע קיים מ-getSupportFragmentManager()
, מ-getChildFragmentManager()
וכו'.
תיקוני באגים
- מ-Fragment
1.1.0-rc04
: עכשיו, כשמשתמשים ב-Fragments, הם מבטלים באופן תקין את המעברים שהוקפאו ב-Fragments that have been popped. (b/138251858) - מתוך קטע קוד
1.1.0-rc03
: תוקנה בעיה שבה קריאה ל-postponeEnterTransition()
עם זמן קצוב יותר מפעם אחת לא ביטלה את חלון הזמן הקצוב הקודם. (b/137797118) - מ-Fragment
1.1.0-rc02
: תוקן קריסה ב-FragmentPagerAdapter
וב-FragmentStatePagerAdapter
במהלך הסרת הפריט הנוכחי. (b/137209870) - עכשיו, קטעי הקוד מחכים לסיום האנימציות לפני שהם שולחים את
onDestroyView()
. (b/136110528) - עכשיו המערכת מטפלת כראוי באנימציות של קטעי קוד (fragments) מקטעי קוד צאצאים ומצאצאים שלהם כשמפעילים אנימציה של ה-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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תכונות חדשות
- FragmentManager קורא עכשיו ל-
requestApplyInsets()
אחרי שמצרפים את התצוגה של ה-Fragment, ורק לפני הקריאה ל-onViewCreated()
, כדי לוודא שתמיד יש לתצוגה את ה-insets הנכונים. (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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
שינויים חשובים מאז גרסה 1.0.0
- fragment-testing: הארטיפקט
fragment-testing
מספק את הכיתהFragmentScenario
לבדיקה של קטע קוד בנפרד. פרטים נוספים זמינים במסמכים בנושא בדיקת הקטעים של האפליקציה. - FragmentFactory: מעכשיו אפשר להגדיר
FragmentFactory
ב-FragmentManager
כדי לנהל את היצירה של מכונות של קטעי קוד, וכך לבטל את הדרישה הקפדנית ליצירת קונסטרוקטור ללא ארגומנטים. - הענקת גישה לנכסי Kotlin ל-ViewModels: הארטיפקט
fragment-ktx
מכיל עכשיו שני נכסי Kotlin להענקת גישה:by viewModels()
לגישה ל-ViewModels שמשויכים לחלק הספציפי, ו-by activityViewModels()
לגישה ל-ViewModels ברמת הפעילות. - Max Lifecycle: עכשיו אפשר להגדיר מצב Max Lifecycle ל-Fragment על ידי קריאה ל-
setMaxLifecycle()
ב-FragmentTransaction
. המדיניות הזו מחליפה את המדיניותsetUserVisibleHint()
שהוצאה משימוש. ל-FragmentPagerAdapter
ול-FragmentStatePagerAdapter
יש קונסטרוקטור חדש שמאפשר לעבור להתנהגות החדשה. - ה-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
משוחררים. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תיקוני באגים
- עכשיו, כשמשתמשים ב-Fragments, המערכת מבטלת בצורה נכונה את המעברים שהועברו למועד מאוחר יותר באירוע 'ה-Fragments הוצאו'. (b/138251858)
גרסה 1.1.0-rc03
19 ביולי 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
וגם androidx.fragment:fragment-testing:1.1.0-rc03
משוחררים. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תיקוני באגים
- תוקנה בעיה שבה קריאה ל-
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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תיקוני באגים
- תוקן קריסה ב-
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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תיקוני באגים
- עכשיו, כשמשתמשים בפעולות
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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תיקוני באגים
- קריאות חזרה מסוג
androidx.lifecycle.Lifecycle
(שקשורות במיוחד ל-STARTED
, ל-RESUMED
, ל-PAUSED
, ל-STOPPED
ול-DESTROYED
) ל-Fragments בתצוגת עץ עכשיו מוטמעות בתצוגת עץ בצורה תקינה. (b/133497591) - עכשיו, מכונות
OnBackPressedCallback
שרשומים ב-onCreate()
של Fragment מקבלות עדיפות על פני FragmentManager הצאצא. (b/133175997) - כשהקטע הראשי מוחלף, כבר לא מתבצעת אנימציה של קטעי הצאצא. (b/121017790)
- מעכשיו, אנימציות ומעברים של קטעי קוד מתעלמים כשמשתמשים ב-
animateLayoutChanges="true"
. כך תוקנה בעיה שבה קטעי הקוד לא הושמדו כראוי. (b/116257087)
גרסה 1.1.0-alpha09
16 במאי 2019
התכונות androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
וגם androidx.fragment:fragment-testing:1.1.0-alpha09
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
שינויים ב-API
- עכשיו, כשהקטע הראשי של הניווט משתנה, קטעי הקוד מקבלים קריאה חוזרת (callback) לשיטה חדשה של
onPrimaryNavigationFragmentChanged(boolean)
. aosp/960857
תיקוני באגים
- פריטים בתפריט שנוצרו על ידי קטע צאצא מוסרים עכשיו בצורה תקינה כשהקטע ההורה מוסר. b/131581013
גרסה 1.1.0-alpha08
7 במאי 2019
התכונות androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
וגם androidx.fragment:fragment-testing:1.1.0-alpha08
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
הגרסה הזו לא תואמת ל-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
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תכונות חדשות
- עכשיו אפשר להגדיר מצב מקסימלי של מחזור חיים ל-Fragment על ידי קריאה ל-
setMaxLifecycle()
ב-FragmentTransaction
. המדיניות הזו מחליפה את המדיניותsetUserVisibleHint()
שהוצאה משימוש. ל-FragmentPagerAdapter
ול-FragmentStatePagerAdapter
יש קונסטרוקטור חדש שמאפשר לעבור להתנהגות החדשה. (b/129780800)
שינויים ב-API
- עכשיו אפשר להפעיל את
moveToState(STARTED)
ב-FragmentScenario
רק במכשירים עם API ברמה 24 ואילך. (b/129880016)
שינויים בהתנהגות
- כתוצאה מהבעיה ב-b/129907905, כשהפעילות המארחת תיווצר מחדש, לא תישלח קריאה חוזרת (callback) ל-
onCreateView()
לקטעי הקוד (fragments) ב-back stack. מעכשיו,onCreateView()
יקרא רק כשהקטע המוצג יהיה גלוי (כלומר, כשהערימה הקודמת תוסר).
תיקוני באגים
- תוקנה בעיה בשימוש בתג
<fragment>
ב-XML וב-constructorcontentLayoutId
שלFragmentActivity
אוAppCompatActivity
. (b/129907905) - תוקנה בעיה שבה קטעי קוד (fragments) ב-back stack לא הועברו ל-
CREATED
לפחות אחרי שינוי בהגדרות, וכתוצאה מכך לא בוצע ניהול נכון של ViewModels ושל קטעי קוד (fragments) שנשמרו על ידי הצאצאים. (b/129593351) - תוקנה קריסה ב-
restoreSaveState
שנגרמה כתוצאה מחוסר סנכרון של הקטעים שנשמרו אחרי שמצב המכונה נשמר. (b/130433793) (aosp/947824) - תוקנו בעיות שבהן
OnBackPressedCallback
שנוסף עם מחזור חיים של קטע לא הופעל אם ל-FragmentManager
היה סטאק אחורה. פרטים נוספים זמינים במאמר androidx.activity 1.0.0-alpha07. (aosp/948209) - קטעי קוד לא אוכפים יותר את
LAYER_TYPE_HARDWARE
לצורך אנימציות. אם אתם צריכים אנימציה של שכבת חומרה באופן ספציפי, צריך להגדיר אותה כחלק מהאנימציה. (b/129486478)
גרסה 1.1.0-alpha06
3 באפריל 2019
התכונות androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
וגם androidx.fragment:fragment-testing:1.1.0-alpha06
משוחררות. ההתחייבויות (commits) שכלולות בגרסה הזו מפורטות כאן.
תכונות חדשות
- חריגות שמופקות על ידי 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
constructors ב-Activity כשמשחזרים את המצב של Fragment. (b/127313094) - תוקנה הלוגיקה של
setTargetFragment()
כשמחליפים מקטע יעד קיים ב-Fragment שעדיין לא מצורף ל-FragmentManager. (aosp/932156)
גרסה 1.1.0-alpha05
13 במרץ 2019
התכונות androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
וגם androidx.fragment:fragment-testing:1.1.0-alpha05
משוחררות. כאן אפשר למצוא את הרשימה המלאה של השינויים שכלולים בגרסה הזו.
תכונות חדשות
- חיפושים של הערות
@ContentView
שמורים עכשיו במטמון (b/123709449)
שינויים בהתנהגות
- קריאה ל-
remove()
, ל-hide()
, ל-show()
, ל-detach()
ול-setPrimaryNavigationFragment()
עם Fragment שמצורף ל-FragmentManager אחר מפעילה עכשיוIllegalStateException
במקום להיכשל בשקט (aosp/904301)
תיקוני באגים
onNewIntent
עבורFragmentActivity
מסומן עכשיו בצורה נכונה עם@CallSuper
(b/124120586)- תוקנה בעיה שבה אפשר היה לקרוא פעמיים ל-
onDismiss()
שלDialogFragment
כשמשתמשים ב-getDialog().dismiss()
או ב-getDialog().cancel()
(b/126563750)
גרסה 1.1.0-alpha04
7 בפברואר 2019
התכונות androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
וגם androidx.fragment:fragment-testing 1.1.0-alpha04
משוחררות.
תכונות חדשות
- נוספה תמיכה בהערה של המחלקה
@ContentView
, שמאפשרת לציין איזה קובץ XML של פריסה צריך להתנפח, כחלופה לשינוי שלonCreateView()
. מומלץ לבצע את העבודה הקשורה לצפייה ב-onViewCreated()
. (aosp/837619) fragment-testing
תלוי עכשיו ב-androidx.test:core-ktx
1.1.0 יציב (b/121209673)- עכשיו אפשר להשתמש ב-
openActionBarOverflowOrOptionsMenu
עםFragmentScenario
כדי לבדוק תפריטי אפשרויות שמתארחים בקטעי קוד (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 property delegate כדי לאחזר ViewModels שמשויכים ל-Activity שמכיל אותם [b/119050253] - ה-delegate של נכס
by viewModels
ב-Kotlin הורחב כך שיקבל שיטה אופציונלית מסוג 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: Failure saving state b/120814739
- עכשיו, כשמשחזרים קטעי קוד ממצב המכונה השמור, תמיד מקבלים
Bundle
שאינו null [b/119794496] - אם מוסיפים מחדש קטעי קוד שהוסרו, הם לא משתמשים שוב באובייקט
Lifecycle
[b/118880674]
גרסה 1.1.0-alpha02
3 בדצמבר 2018
תכונות חדשות
- התוספים של Kotlin ל-FragmentScenario מאפשרים עכשיו להשתמש ב-lambda ליצירת Fragment כחלופה להעברת מופע של
FragmentFactory
. (aosp/812913)
תיקוני באגים
- תוקן IllegalStateException בשימוש ב-Fragments בתצוגת עץ ב-back stack (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 לבדיקה של קטעי קוד (fragments) בנפרד.
- עכשיו אפשר להגדיר
FragmentFactory
בכלFragmentManager
כדי לשלוט באופן יצירת המופעים החדשים של ה-Fragment. - נוספה
by viewModels()
חדשה של Kotlin לניהול נכסים, שמאפשרת לאחזר ViewModels מ-Fragment. - אירועי קלט בהמתנה (כמו קליקים) מבוטלים עכשיו ב-
onStop()
של ה-Fragment.
שינויים ב-API
- הרחבנו באופן משמעותי את ההערות לגבי יכולת האפסיות (nullability) ב-Fragment API.
תיקוני באגים
- תיקון בעיה שגרמה לפעולות של Fragment להיכשל מתוך LiveData (b/77944637)
בעיות מוכרות
- אי אפשר לגשת ל-Fragments יעדים אחרי שה-Fragment הוסר מ-FragmentManager.
- הערך של
fragment-testing
תלוי ב-androidx.test:core:1.0.0-beta01
במקום ב-androidx.test:core:1.0.0
הנכון.