מקטע (fragment)

פילוח האפליקציה למספר מסכים עצמאיים שמתארחים ב-Activity.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫23 בספטמבר 2026 1.9.1 - - -

הצהרה על יחסי תלות

כדי להוסיף תלות ב-Fragment, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

מגניב

dependencies {
    def fragment_version = "1.9.1"

    // 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.9.1"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גרסה 1.9

גרסה 1.9.1

‫23 בספטמבר 2026

‫androidx.fragment:fragment-*:1.9.1 מופץ. גרסה 1.9.1 מכילה את השמירות האלה.

גרסה 1.9.0

‫12 באוגוסט 2026

‫androidx.fragment:fragment-*:1.9.0 מופץ. גרסה 1.9.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.8.0:

  • ‫Fragment מטמיע עכשיו את הממשק ContextAware ואפשר להשתמש בו כדי להריץ קוד כשהקטע מצורף.
  • הקומפוזיציה AndroidFragment מקבלת עכשיו פרמטר maxLifecycle שמאפשר להגביל את מצב מחזור החיים של Fragment המוטמע.
  • ספריית Fragment תומכת עכשיו במעקב אחר אירועים במחזור החיים של המערכת באמצעות Jetpack Tracing.

גרסה ‎1.9.0-rc01

‫29 ביולי 2026

‫androidx.fragment:fragment-*:1.9.0-rc01 מופץ. גרסה ‎1.9.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • כשמשתמשים ב-FragmentScenario.launchInContainer, הקטע שנבדק נמצא עכשיו בתוך FragmentContainerView. (Ia6273, ‏ b/531550353)

גרסה ‎1.9.0-alpha02

‫1 ביולי 2026

‫androidx.fragment:fragment-*:1.9.0-alpha02 מופץ. גרסה ‎1.9.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • מוסיפים פרמטר maxLifecycle ל-AndroidFragment composable. כך תוכלו להגביל את מצב מחזור החיים של Fragment המוטמע, ולקבל שליטה מדויקת יותר בהתנהגות שלו בהגדרות מורכבות של ממשק משתמש, כמו רכיבי החלפה בין דפים או כרטיסיות. ‫(Ie99b5, ‏ b/526109804)
  • ספריית Fragment תומכת עכשיו בתיעוד עקבות המערכת של אירוע במחזור חיים באמצעות Jetpack Tracing. (Ibc63b, ‏ b/112161409)

גרסה ‎1.9.0-alpha01

‫17 ביוני 2026

‫androidx.fragment:fragment-*:1.9.0-alpha01 מופץ. גרסה ‎1.9.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • ה-Fragment מיישם עכשיו את הממשק ContextAware ואפשר להשתמש בו כדי להריץ קוד כשה-Fragment מצורף. (I38019, b/477255355)

תיקוני באגים

  • תוקן קראש ב-Fragment שנגרם כששולחים את הפעילות לרקע במהלך חיזוי תנועת החזרה. (I55734, b/389589678)
  • הכלי UnsafeFragmentLifecycleObserverDetector לא פועל יותר בתוך הקומפוזיציה. (Ic4176, ‏ b/501504696)
  • ‫[From Fragment 1.8.9] תוקנה הבעיה שבה ביטול של חיזוי תנועת החזרה שפותחת פעולת הסתרה גורם לכך שהתנועה הבאה לא מונפשת בצורה נכונה כשמשתמשים באנימטורים. (I0a400, b/384765586)
  • ‫[From Fragment 1.8.9] Fixed an error where a combination of setMaxLifecycle and popBackStack could fail to move the top fragment to RESUMED. ‫(I3448b, ‏ b/406127576)
  • ‫[From Fragment 1.8.8] תוקנה בעיה שגרמה לקריסה של FragmentManager בזמן ניסיון לשמור את המצב של Fragments שנוספו באמצעות setMaxLifecycle(Lifecycle.State.INITIALIZED). הפרגמנטים האלה, שלא עברו דרך onCreate(), כבר לא כוללים מצב שמור או קריאה של onSaveInstanceState(). (I6e37a, b/408163315)
  • [מתוך Fragment 1.8.7] תוקנה בעיה שבה FragmentManager לא היה במצב המתאים אחרי פעולות pop ו-replace באותו פריים, שיכולה לגרום לקריסה בשילוב עם תכונת החזרה החזויה. (I50ad1, ‏ b/380288461)
  • ‫[From Fragment 1.8.6] ‫FragmentContainerView's setOnApplyWindowInsetsListener override now takes a null listener. ‫(I575f0, ‏ b/282790626)
  • [From Fragment 1.8.5] Fixed an IllegalStateException triggered by saveBackStack only after a חיזוי תנועת החזרה gesture was cancelled or interrupted. (I3387d, b/342419080)
  • ‫[From Fragment 1.8.4] Fixed an UninitializedPropertyAccessException in AndroidFragment when dynamically swapping out the Class your AndroidFragment instance is using. (I12dea, ‏ b/365578408)
  • ‫[From Fragment 1.8.4] תוקנה בעיה שבה לחיצה מהירה על לחצן החזרה של המערכת או ביצוע מחוות חזרה מהירה גורמים לקריסה של Fragments. (Ibc038, ‏ b/364804225, ‏ b/364914301)
  • ‫[From Fragment 1.8.4] תוקנה בעיה בקטעי קוד שבה הפרעה לתנועת ניווט חזוי אחורה גרמה למנהל קטעי הקוד לעבור למצב לא מוגדר, ואפילו להציג את קטע הקוד הלא נכון. (If82e2, b/338624457)
  • ‫[From Fragment 1.8.3] AndroidFragment no longer crashes if it is added to composition while the containing activity/fragment's state is already saved. (I985e9, ‏ b/356643968)
  • ‫[From Fragment 1.8.2] Triggering a system back while the FragmentManager has pending operations will no longer cause an out of bound exception. (I9ba32, b/342316801)
  • ‫[From Fragment 1.8.2] ‫AndroidFragment now properly handles cases where the parent fragment is put on the Fragment back stack, avoiding 'No view found for id' issues when popping back to that fragment. ‫(I94608, ‏ b/347706985)
  • ‫[From Fragment 1.8.2] Fragments added via the FragmentTransaction.add method that takes a ViewGroup now wait for onContainerAvailable before progressing to onStart(). השינוי הזה משפיע על משתמשים ב-API הזה, כמו AndroidFragment, שעכשיו מחכה ש-AndroidFragment ייכנס מחדש לרכיב לפני שהוא מעביר אותו דרך onStart(). (I94608, ‏ b/347706985)
  • ‫[From Fragment 1.8.1] תוקנה בעיה שגרמה לכך שקטע בלי מאגר תגים נהרס באופן מיידי כשמתחילים תנועת חזרה עם חיזוי. (If6b83, b/345244539)

External Contribution

  • מיזוג fragment-ktx לספריית fragment. כל התוספים של Kotlin הם עכשיו חלק מארטיפקט הפרגמנט הראשי. fragment-ktx הוא עכשיו ארטיפקט ריק לצורך תאימות. תודה ל-Jake Wharton! (Idabaa)

גרסה 1.8

גרסה 1.8.9

‫13 באוגוסט 2025

‫androidx.fragment:fragment-*:1.8.9 מופץ. גרסה 1.8.9 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה הבעיה שבה ביטול של חיזוי תנועת החזרה שפותחת פעולת הסתרה גורם לכך שהתנועה הבאה לא מונפשת בצורה תקינה כשמשתמשים באנימטורים. (I0a400, b/384765586)
  • תוקנה שגיאה שבה שילוב של setMaxLifecycle ו-popBackStack עלול לגרום לכך שהקטע העליון לא יועבר למצב RESUMED. (I3448b, b/406127576)

גרסה 1.8.8

‫4 ביוני 2025

‫androidx.fragment:fragment-*:1.8.8 מופץ. גרסה 1.8.8 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לקריסה של FragmentManager בניסיון לשמור את המצב של רכיבי Fragments שנוספו באמצעות setMaxLifecycle(Lifecycle.State.INITIALIZED). הקטעים האלה, שלא עברו אף פעם דרך onCreate(), כבר לא כוללים מצב שמור או קריאה של onSaveInstanceState(). (I6e37a)

גרסה 1.8.7

‫20 במאי 2025

‫androidx.fragment:fragment-*:1.8.7 מופץ. גרסה 1.8.7 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שהרכיב FragmentManager לא היה במצב המתאים אחרי פעולות של הוצאה מהמחסנית והחלפה באותו פריים, שיכולה לגרום לקריסה בשילוב עם הוצאה מהמחסנית של היסטוריית הדפים באמצעות popBackStack או באמצעות חיזוי תנועת החזרה. (I50ad1)
  • תוקנה קריסה שנגרמה כתוצאה משימוש ב-AndroidX Transitions ומכניסה למצב שבו ניסיונות רצופים מהירים של טרנזקציות של פרגמנטים מבטלים מעבר שלא התחיל, וספריית AndroidX Transition לא מנקה את מצב המעבר כמו שצריך. (ראו b/414612221). (Ib5235)

גרסה 1.8.6

‫12 בפברואר 2025

‫androidx.fragment:fragment-*:1.8.6 מופץ. גרסה 1.8.6 מכילה את השמירות האלה.

תיקוני באגים

  • ההחלפה של FragmentContainerView ב-setOnApplyWindowInsetsListener מקבלת עכשיו מאזין null, בהתאם למה שהמסגרת מאפשרת. ‫(I575f0, ‏ b/282790626)

גרסה 1.8.5

‫30 באוקטובר 2024

‫androidx.fragment:fragment-*:1.8.5 מופץ. גרסה 1.8.5 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג IllegalStateException שמופעל על ידי saveBackStack רק אחרי שמבטלים או מפסיקים את המחווה 'חיזוי תנועת החזרה'. (I3387d, ‏ b/342419080)

גרסה 1.8.4

‫2 באוקטובר 2024

‫androidx.fragment:fragment-*:1.8.4 מופץ. גרסה 1.8.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה לחיצה מהירה על הכפתור "הקודם" של המערכת או ביצוע מהיר של תנועת החזרה גורמים לקריסת רכיבי Fragment כשמשתמשים במעברים של Androidx. (Ibc038, b/364804225)
  • תוקנה בעיה בקטעי קוד שבה הפרעה לתנועת חזרה ניבויית גרמה למנהל קטעי הקוד להיכנס למצב לא מוגדר, ואפילו להציג את קטע הקוד הלא נכון. (If82e2, b/338624457)
  • תוקן באג UninitializedPropertyAccessException ב-AndroidFragment כשמחליפים באופן דינמי את המחלקה שמופע AndroidFragment משתמש בה. (I12dea)

גרסה 1.8.3

‫4 בספטמבר 2024

‫androidx.fragment:fragment-*:1.8.3 מופץ. גרסה 1.8.3 מכילה את השמירות האלה.

תיקוני באגים

  • ‫FragmentManager לוקח עכשיו בחשבון בצורה נכונה פעולות בהמתנה כשמבצעים את חיזוי תנועת החזרה. הפעולה הזו אמורה להבטיח שגיבוי המערכת לא יגרום יותר לשגיאה IndexOutOfBoundsException. (I9ba32, b/342316801)
  • ‫AndroidFragment לא קורס יותר אם הוא מתווסף לקומפוזיציה בזמן שהמצב של הפעילות או הקטע שמכילים אותו כבר נשמר. (I985e9, ‏ b/356643968)

גרסה 1.8.2

‫24 ביולי 2024

‫androidx.fragment:fragment-*:1.8.2 מופץ. גרסה 1.8.2 מכילה את השמירות האלה.

תיקוני באגים

  • ‫AndroidFragment מטפל עכשיו כמו שצריך במקרים שבהם קטע האב מועבר אל מקבץ הפעילויות הקודמות (back stack) של Fragment, וכך נמנעות בעיות מסוג 'לא נמצאה תצוגה עבור מזהה' כשחוזרים לקטע הזה. (I94608)
  • קטעים שנוספו באמצעות השיטה FragmentTransaction.add שמקבלת ViewGroup, ממתינים עכשיו ל-onContainerAvailable לפני שהם עוברים ל-onStart(). השינוי הזה משפיע על משתמשים ב-API הזה, כמו AndroidFragment, שעכשיו מחכה ש-AndroidFragment יחזור להרכבה לפני שהוא מעביר אותו דרך onStart(). (I94608)

גרסה 1.8.1

‫26 ביוני 2024

‫androidx.fragment:fragment-*:1.8.1 מופץ. גרסה 1.8.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שקטעים ללא מאגר תגים DESTROYED באופן מיידי כשמתחילים תנועת חזרה עם חיזוי. עכשיו הן מוחזקות במצב CREATED עד לסיום התנועה. (If6b83, b/345244539)

גרסה 1.8.0

‫12 ביוני 2024

‫androidx.fragment:fragment-*:1.8.0 מופץ. גרסה 1.8.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.7.0

  • ארטיפקט fragment-compose מכיל עכשיו AndroidFragment Composable שמאפשר להוסיף מקטעים להיררכיית Compose באמצעות שם מחלקת המקטעים. הוא מטפל אוטומטית בשמירה ובשחזור של מצב ה-Fragment. הגישה הזו אמורה לשמש כתחליף ישיר לגישה המומלצת הקודמת של שימוש ב-AndroidViewBinding כדי להרחיב Fragment.
  • הקריאה החוזרת (callback) של onBackStackChangeCancelled בממשק OnBackStackChangedListener של FragmentManager מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager, ולכן היא קרובה יותר מבחינת התזמון לקריאה החוזרת של 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 או Seekable Androidx Transition. תוקנה בעיה שבה ביטול של עסקה שאפשרה דילוג חלקי גרם להצגת מסך שחור. (I43037, b/339169168)

גרסה ‎1.8.0-alpha02

‫17 באפריל 2024

‫androidx.fragment:fragment-*:1.8.0-alpha02 מופץ. גרסה ‎1.8.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך Fragment 1.7.0-rc02: נוספו יומנים שמציינים למה הגדרה של sharedElement בלי מעברים אחרים לא תפעל. (Iec48e)
  • מתוך Fragment 1.7.0-rc02: תוקן באג שגרם לקריסה אם נוסף רכיב משותף שלא ניתן להעברה לעסקאות שכל המעברים האחרים בהן ניתנים להעברה. מעכשיו העסקה תיחשב כעסקה שלא ניתן לחפש בה. (I18ccd)

גרסה ‎1.8.0-alpha01

‫3 באפריל 2024

‫androidx.fragment:fragment-*:1.8.0-alpha01 מופץ. גרסה ‎1.8.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • התכונה החדשה AndroidFragment Composable מאפשרת להוסיף קטעים להיררכיית הכתיבה באמצעות שם המחלקה של הקטע. הוא מטפל אוטומטית בשמירה ובשחזור של מצב ה-Fragment. אפשר להשתמש ב-API הזה כתחליף ישיר ל-AndroidViewBinding Composable.(b/312895363, Icf841)

שינויים במסמכי העזרה

  • עדכנו את התיעוד של ממשקי ה-API של OnBackStackChangedListener כדי לציין מתי מתבצעת קריאה לממשקי ה-API האלה ואיך צריך להשתמש בהם. (I0bfd9)

עדכון של תלות

גרסה 1.7

גרסה 1.7.1

‫14 במאי 2024

‫androidx.fragment:fragment-*:1.7.1 מופץ. גרסה 1.7.1 מכילה את השמירות האלה.

תיקוני באגים

  • מעכשיו, התכונה 'חזרה עם חיזוי' תפעל רק עבור טרנזקציות שבהן לכל הפרגמנטים יש Animator או Seekable Androidx Transition. העדכון הזה פותר בעיה שבה ביטול של עסקה שאפשרה חיפוש חלקי גרם להצגת מסך ריק. (I43037, b/339169168)

גרסה 1.7.0

‫1 במאי 2024

‫androidx.fragment:fragment-*:1.7.0 מופץ. גרסה 1.7.0 מכילה את השמירות האלה.

תמיכה בחיזוי תנועת החזרה

  • כשמשתמשים ב-Animator או ב-AndroidX Transition 1.5.0, רכיבי Fragment תומכים עכשיו בתכונה 'חזרה מהאפליקציה עם אנימציה מקדימה'. כך המשתמשים יכולים להשתמש בתנועת החזרה כדי לראות את הקטע הקודם על ידי חיפוש ב-Animator/Transition לפני שהם מחליטים אם לאשר את העסקה באמצעות השלמת התנועה או ביטול.
מערכת מעבר מקור מידע בפורמט XML תמיכה בחיזוי החזרה
Animation R.anim לא
Animator R.animator כן
Framework Transition R.transition לא
‫AndroidX Transition עם Transition 1.4.1 או גרסה מוקדמת יותר R.transition לא
‫AndroidX Transition עם Transition 1.5.0 R.transition כן

אם נתקלתם בבעיות בתמיכה בחיזוי החזרה ב-Fragments אחרי הפעלת חיזוי תנועת החזרה, אתם יכולים לדווח על בעיה ב-Fragment ולצרף פרויקט לדוגמה שבו הבעיה משתחזרת. כדי להשבית את חיזוי החזרה, אפשר להשתמש בFragmentManager.enabledPredictiveBack(false) בonCreate() של ה-Activity.

‫FragmentManager.OnBackStackChangedListener() מספק עכשיו את onBackStackChangeProgressed() ו-onBackStackChangeCancelled() כדי לקבל אירועים של התקדמות חזרה ותוצאות ביטול בהתאמה.

Fragment Compose Artifact

נוצר ארטיפקט fragment-compose חדש שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על Fragment לארכיטקטורה שמבוססת באופן מלא על Compose.

התכונה הראשונה שזמינה בארטיפקט החדש הזה היא content שיטת הרחבה ב-Fragment, שמטרתה להקל על השימוש בפיתוח נייטיב לממשק המשתמש של Fragment מסוים. השיטה יוצרת בשבילכם ComposeView ומגדירה את ViewCompositionStrategy הנכון.

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

גרסה ‎1.7.0-rc02

‫17 באפריל 2024

‫androidx.fragment:fragment-*:1.7.0-rc02 מופץ. גרסה ‎1.7.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • נוספו יומנים שמציינים למה הגדרה של sharedElement בלי מעברים אחרים לא תפעל. (Iec48e)
  • תוקן באג שגרם לקריסה אם נוסף רכיב משותף שלא ניתן להעברה לעסקאות שבהן כל המעברים האחרים ניתנים להעברה. מעכשיו העסקה תיחשב כעסקה שלא ניתן לחפש בה. (I18ccd)

גרסה ‎1.7.0-rc01

‫3 באפריל 2024

‫androidx.fragment:fragment-*:1.7.0-rc01 מופץ. גרסה ‎1.7.0-rc01 מכילה את השמירות האלה.

עדכון של תלות

גרסה ‎1.7.0-beta01

‫20 במרץ 2024

‫androidx.fragment:fragment-*:1.7.0-beta01 מופץ. גרסה ‎1.7.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • ‫FragmentHostCallback נכתב עכשיו ב-Kotlin כדי שהמאפיין המציין אם ערך יכול להיות ריק (nullability) של הסוג הגנרי של Host יתאים למאפיין המציין אם ערך יכול להיות ריק של סוג ההחזרה של 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, Fragments היה מפעיל NullPointerException מ-handleOnBackProgressed אם אף FragmentManager.OnBackStackChangedListener לא נוסף דרך addOnBackStackChangedListener. (I7c835)

גרסה ‎1.7.0-alpha09

‫24 בינואר 2024

‫androidx.fragment:fragment-*:1.7.0-alpha09 מופץ. גרסה ‎1.7.0-alpha09 מכילה את השמירות האלה.

Fragment Compose Artifact

נוצר ארטיפקט fragment-compose חדש שמתמקד בתמיכה באפליקציות שנמצאות בתהליך מעבר מארכיטקטורה שמבוססת על Fragment לארכיטקטורה שמבוססת באופן מלא על Compose.

התכונה הראשונה שזמינה בארטיפקט החדש הזה היא content extension method ב-Fragment, שמטרתה להקל על השימוש בפיתוח נייטיב לממשק המשתמש של Fragment מסוים. היא עושה זאת על ידי יצירת ComposeView בשבילכם והגדרת ViewCompositionStrategy הנכון. ‪(561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

תכונות חדשות

  • ‫FragmentManager.OnBackStackChangedListener() מספק עכשיו את onBackStackChangeProgressed() וonBackStackChangeCancelled() כדי לקבל אירועים של התקדמות חזרה ניבויית וביטול, בהתאמה. (214b87)

בעיה ידועה

  • כשמשתמשים בתמיכה של Fragment בגיבוי חיזוי ל-Animator או ב-AndroidX Transition, ‏ Fragments יפעיל NullPointerException מ-handleOnBackProgressed אם אף פעם לא נוסף FragmentManager.OnBackStackChangedListener באמצעות addOnBackStackChangedListener. הוספה ידנית של listener תפתור את הבעיה. התיקון יהיה זמין בגרסה הבאה של Fragments.

גרסה ‎1.7.0-alpha08

‫10 בינואר 2024

‫androidx.fragment:fragment-*:1.7.0-alpha08 מופץ. גרסה ‎1.7.0-alpha08 מכילה את השמירות האלה.

ניקוי

גרסה ‎1.7.0-alpha07

‫29 בנובמבר 2023

‫androidx.fragment:fragment-*:1.7.0-alpha07 מופץ. גרסה ‎1.7.0-alpha07 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג NullPointerException שנגרם כתוצאה מהגדרת מעבר של רכיב משותף בלי להגדיר גם enter/exitTransition. (I8472b)
  • מ-Fragment 1.6.2: כש-Fragment של FragmentContainerView מורחב, המצבים שלו כמו FragmentManager, Host ו-id נגישים עכשיו בקריאה החוזרת onInflate. (I1e44c, b/307427423)
  • מתוך Fragment 1.6.2: כשמשתמשים ב-clearBackStack כדי להסיר קבוצה של Fragment, כל Fragment מוטבע ViewModel ינוקה עכשיו כשמנקים את ViewModels של ה-Fragment ברמה העליונה. (I6d83c, b/296173018)

גרסה ‎1.7.0-alpha06

‫4 באוקטובר 2023

‫androidx.fragment:fragment-*:1.7.0-alpha06 מופץ. גרסה ‎1.7.0-alpha06 מכילה את השמירות האלה.

עדכון תלות

  • העדכנו את Fragments כך שיהיה תלוי ב-animateToStart API החדש שנוסף ב-Transition 1.5.0-alpha04.

גרסה ‎1.7.0-alpha05

‫20 בספטמבר 2023

‫androidx.fragment:fragment-*:1.7.0-alpha05 מופץ. גרסה ‎1.7.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • התכונה 'חיזוי החזרה' נתמכת עכשיו ב-Fragments כשמשתמשים ב-Androidx Transitions. כך אפשר להשתמש בתנועת החזרה כדי לעבור לקטע הקודם עם המעבר המותאם אישית של Androidx לפני שמחליטים אם לאשר או לבטל את העסקה באמצעות התנועה שהושלמה. כדי להפעיל את התכונה הזו, צריך להסתמך על הגרסה Transition 1.5.0-alpha03. (Ib49b4, ‏ b/285175724)

בעיות מוכרות

  • יש כרגע בעיה שבה אחרי שמבטלים תנועת חזרה עם מעבר פעם אחת, בפעם הבאה שמבצעים את תנועת החזרה המעבר לא יפעל ויוצג מסך ריק. יכול להיות שהסיבה לכך היא בעיה בספריית המעברים. (b/300157785). אם הבעיה הזו מופיעה, צריך לדווח על בעיה שקשורה ל-Fragment ולצרף פרויקט לדוגמה שבו הבעיה משוכפלת. כדי להשבית את חיזוי החזרה, אפשר להשתמש בFragmentManager.enabledPredictiveBack(false) בonCreate() של ה-Activity.

גרסה ‎1.7.0-alpha04

‫6 בספטמבר 2023

‫androidx.fragment:fragment-*:1.7.0-alpha04 מופץ. גרסה ‎1.7.0-alpha04 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה כשביטלו תנועת חזרה חזויה, לא היה אפשר להעביר את הפרגמנטים למצב מחזור החיים הנכון. (I7cffe, ‏ b/297379023)
  • תוקנה רגרסיה שבה הופעלו אנימציות עם מעברים. (I59f36)
  • תוקנה בעיה שמתרחשת כשמשתמשים בתכונה 'חיזוי החזרה' עם מקטעים (fragments), וניסיון לחזור פעמיים ברצף מהיר בקטע השני לפני האחרון במקבץ פעילויות קודמות (back stack) גורם לקריסה. (Ifa1a4)

גרסה ‎1.7.0-alpha03

‫23 באוגוסט 2023

‫androidx.fragment:fragment-*:1.7.0-alpha03 מופץ. גרסה ‎1.7.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה ב-Fragments כשמשתמשים בחיזוי החזרה, שגרמה לדילוג על ה-Fragment הראשון במקבץ פעילויות קודמות (back stack) של מנהל ה-Fragment ולסיום ה-Activity כשמשתמשים בחזרה של המערכת באמצעות ניווט ב-3 כפתורים או באמצעות חיזוי תנועת החזרה. (I0664b, ‏ b/295231788)

גרסה ‎1.7.0-alpha02

‫9 באוגוסט 2023

‫androidx.fragment:fragment-*:1.7.0-alpha02 מופץ. גרסה ‎1.7.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • כשמשתמשים ב-Fragments עם תנועות ניווט חזויות אחורה מ-API 34, אם משתמשים במערכת מעברים שלא תומכת בחיפוש (Animations, Transitions) או ללא מעברים בכלל, Fragments ימתין עכשיו עד שהתנועה תושלם לפני ביצוע הפעולה 'חזרה'. (I8100c)

גרסה ‎1.7.0-alpha01

‫7 ביוני 2023

‫androidx.fragment:fragment-*:1.7.0-alpha01 מופץ. הגרסה הזו פותחה בענף פנימי.

תכונות חדשות

  • כשמשתמשים ב-Animator, רכיבי Fragment תומכים עכשיו בחיזוי תנועת החזרה באפליקציה. כך תוכלו להשתמש בתנועת החזרה כדי לראות את הקטע הקודם עם האנימטור המותאם אישית שלכם לפני שתחליטו אם לאשר את העסקה באמצעות התנועה שהושלמה או לבטל אותה. אפשר גם להשבית את ההתנהגות החדשה הזו באמצעות התכונה הניסיונית enablePredictiveBack() ולהעביר את false.

גרסה 1.6

גרסה 1.6.2

1 בנובמבר 2023

‫androidx.fragment:fragment-*:1.6.2 מופץ. גרסה 1.6.2 מכילה את השמירות האלה.

תיקוני באגים

  • כשמבצעים ניפוח של Fragment של FragmentContainerView, המצבים שלו, כמו FragmentManager, Host ו-id, נגישים עכשיו בקריאה החוזרת onInflate. (I1e44c, b/307427423)
  • כשמשתמשים ב-clearBackStack כדי להסיר קבוצה של פרגמנטים, כל הפרגמנטים המקוננים ViewModel ינוקו עכשיו כשמנקים את הפרגמנטים של האב ViewModels. (I6d83c, b/296173018)

גרסה 1.6.1

26 ביולי 2023

‫androidx.fragment:fragment-*:1.6.1 מופץ. גרסה 1.6.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה המצב השמור שאוחסן כשהפעילות הופסקה אבל לא נהרסה נשמר במטמון באופן שגוי גם אחרי שהמופע של הפראגמנט הועבר חזרה למצב RESUMED. אם מופעלת האפשרות לשמירה ולשחזור של מקטע (fragment) באמצעות ה-API של כמה מקבצי פעילויות קודמות (back stack), המצב שנשמר במטמון ישמש שוב אם מופעלת האפשרות לשמירה ולשחזור של מקטע (fragment) באמצעות ה-API של כמה מקבצי פעילויות קודמות (back stack). ‫(I71288, ‏ b/246289075)

עדכון תלות

  • ה-Fragment תלוי עכשיו ב-Activity 1.7.2. התיקון הזה פותר בעיה שבה משתמשי Kotlin לא יכלו להרחיב את ComponentDialog בלי תלות מפורשת ב-Activity. (b/287509323)

גרסה 1.6.0

‫7 ביוני 2023

‫androidx.fragment:fragment-*:1.6.0 מופץ. גרסה 1.6.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.5.0

  • המצב השמור של Fragments פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקות Parcelable בהתאמה אישית) לבין מצב שסופק על ידי המפתח, שמאוחסן עכשיו תמיד ב-Bundle שמאפשר לקבוע בדיוק מאיפה מגיע המצב של fragment.
  • ממשק FragmentManager.OnBackStackChangedListener הורחב עם שתי קריאות חוזרות נוספות של onBackStackChangeStarted ו-onBackStackChangeCommitted שמופעלות עם כל Fragment ממש לפני שהן מתווספות או מוסרות ממקבץ הפעילויות הקודמות (back stack) של המקטע, וממש אחרי שהטרנזקציה מאושרת, בהתאמה.
  • ‫FragmentStrictMode נוסף WrongNestedHierarchyViolation חדש שמזהה מתי קטע צאצא מוטמע בהיררכיית התצוגה של ההורה שלו, אבל לא נוסף ל-childFragmentManager של ההורה.
  • ממשקי ה-API‏ Fragment ו-FragmentManager שמקבלים Intent או IntentSender מסומנים עכשיו בצורה נכונה באמצעות @NonNull כדי למנוע העברה של ערך null, כי ערך null תמיד יגרום לקריסה מיידית של ממשקי ה-API המתאימים של Android framework שהמתודות האלה קוראות להם.
  • ‫DialogFragment מספק עכשיו גישה ל-ComponentDialog הבסיסי דרך requireComponentDialog() API.
  • ה-Fragment תלוי עכשיו ב-Lifecycle 2.6.1.
  • ה-Fragment תלוי עכשיו ב-SavedState 1.2.1.
  • ה-Fragment תלוי עכשיו ב-ProfileInstaller 1.3.0.
  • הארטיפקט fragment-testing-manifest מפריד את רשומות המניפסט משאר רכיבי הבדיקה של הפרגמנט. כלומר, אתם יכולים:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    כך נמנעות התנגשויות בגלל הבדלים בגרסאות בין fragment-testing לבין androidx.test

גרסה ‎1.6.0-rc01

‫10 במאי 2023

‫androidx.fragment:fragment-*:1.6.0-rc01 מופץ. גרסה ‎1.6.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לשליחת ActivityResults עם קוד בקשה שגוי כשבוצעו כמה בקשות startActivityForResult ברצף. (If0b9d, ‏ b/249519359)
  • תוקנה בעיה שבה קריאות חוזרות (callbacks) של onBackStackChangeListener נשלחו לעסקאות שלא שינו בפועל את מחסנית החזרה (back stack) אם הן שולבו עם עסקאות שכן שינו אותה. (I0eb5c, b/279306628)

גרסה ‎1.6.0-beta01

‫19 באפריל 2023

‫androidx.fragment:fragment-*:1.6.0-beta01 מופץ. גרסה ‎1.6.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • שימוש ב-postponeEnterTransition עם פסק זמן והחלפה של קטע שהושהה כבר לא גורם לדליפה של הקטע שהושהה. ‫(I2ec7d, ‏ b/276375110)
  • הקריאות החוזרות (callback) החדשות onBackStackChangeStarted ו-onBackStackChangeCommitted ישלחו עכשיו את הפריט רק פעם אחת, גם אם כמה טרנזקציות מכילות את אותו פריט. (Ic6b69)

גרסה ‎1.6.0-alpha09

‫5 באפריל 2023

‫androidx.fragment:fragment-*:1.6.0-alpha09 מופץ. גרסה ‎1.6.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • ‫DialogFragment מספק עכשיו גישה ל-ComponentDialog הבסיסי דרך requireComponentDialog() API. (I022e3, ‏ b/234274777)
  • ה-API של ה-Fragment commitNow(),‏ executePendingTransactions() ו-popBackStackImmediate() קיבלו את האנוטציה @MainThread, כלומר עכשיו הם יקפיצו שגיאות build אם לא יופעלו מה-Thread הראשי, במקום להמתין עד לכישלון בזמן הריצה. (Ic9665, b/236538905)

תיקוני באגים

  • תוקן באג ב-FragmentManager שבו שמירה ושחזור באותו פריים עלולים לגרום לקריסה. (Ib36af, ‏ b/246519668)
  • ‫OnBackStackChangedListener onBackStackChangeStarted ו-onBackStackChangeCommitted callbacks מופעלים עכשיו רק כשמשנים את FragmentManager back stack. (I66055, ‏ b/274788957)

גרסה ‎1.6.0-alpha08

‫22 במרץ 2023

‫androidx.fragment:fragment-*:1.6.0-alpha08 מופץ. גרסה ‎1.6.0-alpha08 מכילה את השמירות האלה.

שינוי בהתנהגות

  • התזמון של OnBackStackChangedListener.onBackStackChangeCommited callback שונה כך שהוא יופעל לפני הפעלת פעולות של fragment. כך מוודאים שהקריאה החוזרת אף פעם לא תעביר קטע שנותק. (I66a76, b/273568280)

תיקוני באגים

  • מתוך Fragment 1.5.6: תוקנה בעיה שבה קריאה ל-clearFragmentResultListener בתוך setFragmentResultListener לא פעלה אם Lifecycle כבר היה STARTED ותוצאה כבר הייתה זמינה. (If7458)

עדכונים של יחסי תלות

גרסה ‎1.6.0-alpha07

‫8 במרץ 2023

‫androidx.fragment:fragment-*:1.6.0-alpha07 מופץ. גרסה ‎1.6.0-alpha07 מכילה את השמירות האלה.

תיקוני באגים

  • מ-Fragment 1.5.6: תוקנה בעיה שבה הסרה של Fragment כלשהו, בין אם הוא הוסיף פריטים לתפריט ובין אם לא, הייתה מבטלת את התוקף של התפריט של הפעילות. ‫(50f098, b/244336571)

גרסה ‎1.6.0-alpha06

‫22 בפברואר 2023

‫androidx.fragment:fragment-*:1.6.0-alpha06 מופץ. גרסה ‎1.6.0-alpha06 מכילה את השמירות האלה.

שינוי בהתנהגות

  • הקריאה החוזרת (callback) החדשה onBackStackChangedStarted ב-FragmentManager של onBackStackChangedListener תופעל עכשיו לפני שהקטעים יתחילו לעבור למצבי היעד שלהם. (I34726)

גרסה ‎1.6.0-alpha05

‫8 בפברואר 2023

‫androidx.fragment:fragment-*:1.6.0-alpha05 מופץ. גרסה ‎1.6.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • ממשק FragmentManager.OnBackStackChagnedListener כולל עכשיו שתי פונקציות קריאה חוזרת נוספות, onBackStackChangeStarted ו-onBackStackChangeCommitted, שמאפשרות לקבל מידע נוסף ולשלוט יותר טוב בשינויים במקבץ הפעילויות הקודמות (back stack) ב-FragmentManager. (Ib7ce5, b/238686802)

שינויים ב-API

  • ממשקי ה-API‏ Fragment ו-FragmentManager שמקבלים את הערכים Intent או IntentSender, מתויגים עכשיו בצורה נכונה באמצעות @NonNull כדי למנוע העברה של ערך null. העברה של ערך null תמיד גורמת לקריסה מיידית של ממשקי ה-API המתאימים של Android framework שהשיטות האלה קוראות להם. (I06fd4)

גרסה ‎1.6.0-alpha04

‫7 בדצמבר 2022

‫androidx.fragment:fragment-*:1.6.0-alpha04 מופץ. גרסה ‎1.6.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentStrictMode נוסף WrongNestedHierarchyViolation חדש שמזהה מתי קטע צאצא מוטמע בהיררכיית התצוגה של ההורה שלו, אבל לא נוסף ל-childFragmentManager של ההורה. (I72521, ‏ b/249299268)

שינויים בהתנהגות

  • המקטעים משחזרים עכשיו את המצב SavedStateRegistry לפני onAttach(), כדי להבטיח שהוא זמין מכל שיטות מחזור החיים כלפי מעלה. (I1e2b1)

שינויים ב-API

  • הארטיפקט fragment-testing-manifest מפריד את רשומות המניפסט משאר רכיבי הבדיקה של הפרגמנט. כלומר, אתם יכולים:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

כך נמנעות התנגשויות בגלל הבדלים בין הגרסאות של fragment-testing ו-androidx.test.(I8e534, b/128612536)

תיקוני באגים

  • מ-Fragment 1.5.5: מעכשיו, המצב של ViewModel לא יישמר יותר באופן שגוי כחלק מהמצב השמור של מאגר התצוגות. ‫(I10d2b, ‏ b/253546214)

גרסה ‎1.6.0-alpha03

‫5 באוקטובר 2022

הגרסאות androidx.fragment:fragment:1.6.0-alpha03,‏ androidx.fragment:fragment-ktx:1.6.0-alpha03 וגם androidx.fragment:fragment-testing:1.6.0-alpha03 יוצאות. גרסה ‎1.6.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • במקרים של מחלקות שמרחיבות את DialogFragment, עכשיו נדרש להפעיל את הפונקציה super בביטולי ברירת המחדל של onDismiss(). ‫(I14798, ‏ b/238928865)

תיקוני באגים

  • תוקנו רגרסיות שנגרמו כתוצאה מהשילוב של ממשקי ה-callback החדשים של הספק (OnConfigurationChangedProvider, ‏ OnMultiWindowModeChangedProvider, ‏ OnTrimMemoryProvider, ‏ OnPictureInPictureModeChangedProvider) כדי להבטיח שהפרגמנטים תמיד יקבלו את ה-callbacks המתאימים. ‫(I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

גרסה ‎1.6.0-alpha02

‫24 באוגוסט 2022

הגרסאות androidx.fragment:fragment:1.6.0-alpha02,‏ androidx.fragment:fragment-ktx:1.6.0-alpha02 וגם androidx.fragment:fragment-testing:1.6.0-alpha02 יוצאות. גרסה ‎1.6.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך Fragment 1.5.2: תוקנה בעיה שבה הפעלה של טרנזקציות popBackStack() ו-replace() בו-זמנית עלולה לגרום להפעלת Animation/Animator שגויים ב-fragments שיוצאים. (Ib1c07, ‏ b/214835303)

גרסה ‎1.6.0-alpha01

‫27 ביולי 2022

הגרסאות androidx.fragment:fragment:1.6.0-alpha01,‏ androidx.fragment:fragment-ktx:1.6.0-alpha01 וגם androidx.fragment:fragment-testing:1.6.0-alpha01 יוצאות. גרסה ‎1.6.0-alpha01 מכילה את השמירות האלה.

שינויים בהתנהגות

  • המצב השמור של Fragments פוצל לחלוטין בין מצב הספרייה הפרטית (מחלקות Parcelable בהתאמה אישית) לבין מצב שסופק על ידי המפתח, שמאוחסן עכשיו תמיד ב-Bundle שמאפשר לקבוע בדיוק מאיפה מגיע המצב של fragment. (b/207158202)

תיקוני באגים

  • ‫Fragment 1.5.1: תוקנה רגרסיה ב-DialogFragmentCallbacksDetector שבה שימוש בגרסת ה-lint שצורפה ל-AGP 7.4 גרם לקריסה של lint. (b/237567009)

עדכון של תלות

גירסה 1.5

גרסה 1.5.7

‫19 באפריל 2023

הגרסאות androidx.fragment:fragment:1.5.7,‏ androidx.fragment:fragment-ktx:1.5.7 וגם androidx.fragment:fragment-testing:1.5.7 יוצאות. גרסה 1.5.7 מכילה את השמירות האלה.

תיקוני באגים

  • שימוש ב-postponeEnterTransition עם הגדרת זמן קצוב לתפוגה והחלפת הקטע שנדחה כבר לא גורם לדליפה של הקטע שנדחה. ‫(I2ec7d, b/276375110)

גרסה 1.5.6

‫22 במרץ 2023

הגרסאות androidx.fragment:fragment:1.5.6,‏ androidx.fragment:fragment-ktx:1.5.6 וגם androidx.fragment:fragment-testing:1.5.6 יוצאות. גרסה 1.5.6 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה הסרה של Fragment כלשהו, גם אם הוא לא הוסיף פריטים לתפריט, ביטלה את התוקף של התפריט של הפעילות. ‫(50f098, b/244336571)
  • תוקנה בעיה שבה קריאה ל-clearFragmentResultListener בתוך setFragmentResultListener לא פעלה אם Lifecycle כבר היה STARTED והתוצאה כבר הייתה זמינה. (If7458)

גרסה 1.5.5

‫7 בדצמבר 2022

הגרסאות androidx.fragment:fragment:1.5.5,‏ androidx.fragment:fragment-ktx:1.5.5 וגם androidx.fragment:fragment-testing:1.5.5 יוצאות. גרסה 1.5.5 מכילה את השמירות האלה.

תיקוני באגים

  • מעכשיו, מצב ViewModel לא יישמר יותר בטעות כחלק מהמצב השמור של רישום התצוגה. ‫(I10d2b, ‏ b/253546214)

גרסה 1.5.4

24 באוקטובר 2022

הגרסאות androidx.fragment:fragment:1.5.4,‏ androidx.fragment:fragment-ktx:1.5.4 וגם androidx.fragment:fragment-testing:1.5.4 יוצאות. גרסה 1.5.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה שגיאה שבה שימוש ב-FragmentController בהתאמה אישית עם מארח שלא מטמיע ממשק קריאה חוזרת של ספק (OnConfigurationChangedProvider,‏ OnMultiWindowModeChangedProvider,‏ OnTrimMemoryProvider,‏ OnPictureInPictureModeChangedProvider) וקריאה לפונקציית השליחה שהוצאה משימוש, גורמים לכך שהשליחה לשברי משנה נכשלת. (I9b380)

גרסה 1.5.3

‫21 בספטמבר 2022

הגרסאות androidx.fragment:fragment:1.5.3,‏ androidx.fragment:fragment-ktx:1.5.3 וגם androidx.fragment:fragment-testing:1.5.3 יוצאות. גרסה 1.5.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה שגיאה שגרמה להחזרות (callbacks) של onMultiWindowModeChanged(),‏ onPictureInPictureModeChanged(),‏ onLowMemory() ו-onConfigurationChanged() על מקטעים (fragments) במקבץ פעילויות קודמות (back stack). (I34581, ‏ I8dfe6, ‏ b/242570955)
  • פרגמנטים של צאצאים מוטמעים לא יקבלו יותר מספר קריאות חוזרות (callback) של onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() או onConfigurationChanged(). (I690b3, ‏ Id0096, ‏ If9d6b, ‏ I2cba2)

גרסה 1.5.2

‫10 באוגוסט 2022

הגרסאות androidx.fragment:fragment:1.5.2,‏ androidx.fragment:fragment-ktx:1.5.2 וגם androidx.fragment:fragment-testing:1.5.2 יוצאות. גרסה 1.5.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה הפעלה של טרנזקציה מסוג popBackStack() וטרנזקציה מסוג replace() בו-זמנית עלולה לגרום להפעלת Animation או Animator שגויים על ידי פרגמנטים יוצאים. (Ib1c07, ‏ b/214835303)

גירסה 1.5.1

‫27 ביולי 2022

הגרסאות androidx.fragment:fragment:1.5.1,‏ androidx.fragment:fragment-ktx:1.5.1 וגם androidx.fragment:fragment-testing:1.5.1 יוצאות. גרסה 1.5.1 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה ב-DialogFragmentCallbacksDetector שבה שימוש בגרסת ה-lint שצורפה ל-AGP 7.4 גרם לקריסת ה-lint. (b/237567009)

עדכון של תלות

גרסה 1.5.0

29 ביוני 2022

הגרסאות androidx.fragment:fragment:1.5.0,‏ androidx.fragment:fragment-ktx:1.5.0 וגם androidx.fragment:fragment-testing:1.5.0 יוצאות. גרסה 1.5.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.4.0

  • ‫CreationExtras Integration – ל-Fragment יש עכשיו אפשרות לספק ViewModelProvider.Factory בלי שמירת מצב דרך Lifecycle 2.5.0’s CreationExtras.
  • שילוב של תיבת דו-שיח של רכיב – DialogFragment משתמש עכשיו ב-ComponentDialog דרך Activity 1.5.0 כתיבת הדו-שיח שמוחזרת כברירת מחדל על ידי onCreateDialog().
  • שינוי מבנה של מצב שמור של מופע – חל שינוי באופן שבו רכיבי Fragment שומרים את מצב המופע שלהם. המטרה היא לעזור לכם לזהות בבירור את המצב שנשמר בקטע ואת המקור של המצב. השינויים הנוכחיים כוללים את הפעולות הבאות:
    • ‫FragmentManager שומרת עכשיו את מצב המופע השמור שלה ב-Bundle במקום ישירות ב-Parcelable בהתאמה אישית.
    • תוצאות שמוגדרות באמצעות Fragment Result APIs ועדיין לא נמסרו נשמרות עכשיו בנפרד מהמצב הפנימי של FragmentManager.
    • המצב שמשויך לכל מקטע נשמר עכשיו בנפרד מהמצב הפנימי של FragmentManager, וכך אפשר לקשר בין כמות המצב השמור שמשויכת למקטע לבין המזהים הייחודיים שמופיעים ביומן הניפוי באגים של Fragment.

שינויים אחרים

  • ב-FragmentStrictMode יש עכשיו אפשרות לעקוף קנסות ספציפיים על הפרות של כללים באמצעות allowViolation() עם שם המחלקה.
  • ממשקי ה-API של Fragment למתן תפריט ל-ActionBar של הפעילות הוצאו משימוש. ממשקי ה-API‏ MenuHost ו-MenuProvider שנוספו ב-Activity 1.4.0 מספקים משטח API שניתן לבדיקה ומודע למחזור החיים, שצריך להשתמש בו בשברים.

גרסה ‎1.5.0-rc01

‫11 במאי 2022

הגרסאות androidx.fragment:fragment:1.5.0-rc01,‏ androidx.fragment:fragment-ktx:1.5.0-rc01 וגם androidx.fragment:fragment-testing:1.5.0-rc01 יוצאות. גרסה ‎1.5.0-rc01 מכילה את השמירות האלה.

שינוי מבנה של מצב מופע שנשמר

  • המצב שמשויך לכל מקטע בודד נשמר עכשיו בנפרד מהמצב הפנימי של FragmentManager, וכך אפשר לקשר בין כמות המצב השמור שמשויכת למקטע בודד לבין המזהים הייחודיים שמופיעים ברישום הבאגים של המקטע. (a153e0, b/207158202)

גרסה ‎1.5.0-beta01

‫20 באפריל 2022

הגרסאות androidx.fragment:fragment:1.5.0-beta01,‏ androidx.fragment:fragment-ktx:1.5.0-beta01 וגם androidx.fragment:fragment-testing:1.5.0-beta01 יוצאות. גרסה ‎1.5.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • ‫DialogFragment הוסיף method חדש dismissNow שמשתמש ב-commitNow כדי ליצור שוויון עם הפונקציה showNow. הערה: הפעולה הזו לא תגרום להסרת Dialog באופן מיידי, אלא רק תעדכן באופן סינכרוני את המצב של FragmentManager. (I15c36, b/72644830)

שינוי מבנה של מצב מופע שנשמר

  • ‫FragmentManager שומר עכשיו את מצב המכונה השמורה שלו ב-Bundle במקום ישירות ב-Parcelable בהתאמה אישית. זהו השלב הראשון במתן שקיפות נוספת לגבי מה שנשמר בפועל על ידי Fragments. ‫(I93807, ‏ b/207158202)
  • תוצאות שמוגדרות באמצעות ממשקי ה-API של Fragment Result ושעדיין לא נמסרו נשמרות עכשיו בנפרד מהמצב הפנימי של FragmentManager. כך תוכלו לקבל שקיפות נוספת לגבי התוצאות שנשמרות כחלק ממצב המופע השמור. ‫(I6ea12, ‏ b/207158202)

גרסה ‎1.5.0-alpha05

‫6 באפריל 2022

הגרסאות androidx.fragment:fragment:1.5.0-alpha05,‏ androidx.fragment:fragment-ktx:1.5.0-alpha05 וגם androidx.fragment:fragment-testing:1.5.0-alpha05 יוצאות. גרסה ‎1.5.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

גרסה ‎1.5.0-alpha04

‫23 במרץ 2022

הגרסאות androidx.fragment:fragment:1.5.0-alpha04,‏ androidx.fragment:fragment-ktx:1.5.0-alpha04 וגם androidx.fragment:fragment-testing:1.5.0-alpha04 יוצאות. גרסה ‎1.5.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוצאנו משימוש את ממשקי ה-API של Fragment שמאפשרים לספק תפריט לActionBar של הפעילות, כי הם יוצרים קשר הדוק בין ה-Fragment לפעילות ולא ניתן לבדוק אותם בנפרד. ממשקי ה-API‏ MenuHost ו-MenuProvider שנוספו ב-Activity 1.4.0-alpha01 מספקים משטח API שניתן לבדיקה ומודע למחזור החיים, שצריך להשתמש בו בשברים. ‫(I50a59, ‏ I20758)

תיקוני באגים

  • עכשיו אפשר להשתמש ב-SavedStateViewFactory עם CreationExtras גם אם הוא אותחל עם SavedStateRegistryOwner. אם מספקים תוספים, המערכת מתעלמת מהארגומנטים שמוגדרים בהפעלה. ‫(I6c43b, ‏ b/224844583)

גרסה ‎1.5.0-alpha03

23 בפברואר 2022

הגרסאות androidx.fragment:fragment:1.5.0-alpha03,‏ androidx.fragment:fragment-ktx:1.5.0-alpha03 וגם androidx.fragment:fragment-testing:1.5.0-alpha03 יוצאות. גרסה ‎1.5.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • עכשיו אפשר להעביר את CreationExtras לפונקציות by viewModels() ו-by activityViewModels(). (Ibefe7, b/217601110)

שינויים בהתנהגות

גרסה ‎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 1.4.1: FragmentContainerView לא מתקבלת יותר חריגה ממצב לא חוקי כשמזהי תצוגה שנוצרו מ-XML כוללים ערכים שליליים. (Ic185b, ‏ b/213086140)
  • מ-Fragment 1.4.1: כשמשתמשים ב-lambda מותאם אישית ownerProducer עם הפונקציה העצלנית by viewModels(), המערכת תשתמש עכשיו ב-defaultViewModelProviderFactory מהבעלים הזה אם לא סופק ViewModelProvider.Factory מותאם אישית, במקום להשתמש תמיד במפעל של ה-fragment. (I56170, b/214106513)
  • תוקנה קריסה שהתרחשה כשניגשים ל-ViewModel בפעם הראשונה מתוך קריאה חוזרת (callback) של registerForActivityResult() של Fragment. (Iea2b3)

גרסה 1.4

גרסה 1.4.1

‫26 בינואר 2022

הגרסאות androidx.fragment:fragment:1.4.1,‏ androidx.fragment:fragment-ktx:1.4.1 וגם androidx.fragment:fragment-testing:1.4.1 יוצאות. גרסה 1.4.1 מכילה את השמירות האלה.

תיקוני באגים

  • הפונקציה FragmentContainerView לא זורקת יותר חריגה של מצב לא חוקי כשמזהי תצוגות שנוצרו מ-XML כוללים ערכים שליליים. (Ic185b, ‏ b/213086140)
  • כשמשתמשים בפונקציית lambda מותאמת אישית ownerProducer עם הפונקציה העצלנית by viewModels(), המערכת תשתמש עכשיו ב-defaultViewModelProviderFactory מהבעלים הזה אם לא סופק ViewModelProvider.Factory מותאם אישית, במקום להשתמש תמיד במפעל של הפראגמנט. (I56170, b/214106513)

גרסה 1.4.0

17 בנובמבר 2021

הגרסאות androidx.fragment:fragment:1.4.0,‏ androidx.fragment:fragment-ktx:1.4.0 וגם androidx.fragment:fragment-testing:1.4.0 יוצאות. גרסה 1.4.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.3.0

  • ממשקי ה-API‏ FragmentStrictMode מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של רכיבי Fragment שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או להקריס את האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy שקובע אילו בדיקות מופעלות ואילו 'עונשים' מופעלים ב-FragmentManager באמצעות השיטה החדשה setStrictModePolicy(). המדיניות הזו חלה על FragmentManager וגם על כל מנהלי קטעי צאצא שלא מגדירים מדיניות ייחודית משלהם. מידע נוסף זמין במאמר בנושא StrictMode למקטעים.
  • ‫FragmentContainerView מספק עכשיו method‏ getFragment() שמחזירה את ה-fragment שהתווסף לאחרונה לקונטיינר. הלוגיקה זהה ללוגיקה של findFragmentById() עם המזהה של FragmentContainerView, אבל אפשר לשרשר את הקריאה.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • ‫FragmentScenario מטמיע עכשיו את Closeable, כך שאפשר להשתמש בו עם ה-method ‏use של Kotlin או עם try-with-resources.

  • נוספה התגית FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} כדי לציין אם להפעיל את האנימציה הרגילה של מעבר פעילות שנלקחה מהעיצוב שלכם במעבר של Fragments.

  • הסרנו את ה-API הניסיוני של FragmentManager.enableNewStateManager(boolean), ועכשיו הכלי החדש לניהול מצבים הוא האפשרות היחידה שזמינה.

Multiple back stacks

‫FragmentManager שומר על מקבץ פעילויות קודמות (back stack) שמורכבת מעסקאות של קטעי קוד שהשתמשו ב-addToBackStack(). כך אפשר להוציא את העסקאות האלה ולהחזיר את המצב הקודם, באמצעות המנגנונים של שמירת מצב עם פרגמנטים כדי לאפשר לפרגמנטים לשחזר את המצב שלהם בצורה מתאימה.

בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שלושה ממשקי FragmentManager API חדשים: saveBackStack(String name),‏ restoreBackStack(String name) ו-clearBackStack(String name). ממשקי ה-API האלה משתמשים באותו name כמו addToBackStack() כדי לשמור את המצב של FragmentTransaction ואת המצב של כל מקטע שנוסף בעסקאות האלה, ומאפשרים לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב שלהם. כך אפשר 'להחליף' ביעילות בין כמה מקבצי פעילויות קודמות (back stack) על ידי שמירת מקבץ הפעילויות הקודמות (back stack) הנוכחי ושחזור מקבץ פעילויות קודמות (back stack) שמור.

הפונקציה saveBackStack() פועלת באופן דומה ל-popBackStack() בכך שהיא אסינכרונית וגורמת לכל טרנזקציות הפרגמנטים שקשורות לשם הספציפי הזה להתבטל ('popped') ולכל הפרגמנטים שנוספו להימחק ולהוסר, אבל יש ביניהן כמה הבדלים חשובים:

  • האפליקציה saveBackStack() תמיד כוללת את כל המשתמשים.
  • בניגוד ל-popBackStack(), שפותח את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציה saveBackStack() לא עושה כלום אם לא ביצעתם בעבר טרנזקציית fragment באמצעות addToBackStack() עם אותו שם מדויק שאינו null.
  • המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט נשמר, הפונקציה onSaveInstanceState() של כל פרגמנט נקראת והמצב משוחזר, וכל מופע של ViewModel שמשויך לפרגמנטים האלה נשמר (והפונקציה onCleared() לא נקראת לגביהם).

עסקאות חלקיות שאפשר להשתמש בהן עם saveBackStack() צריכות לעמוד בקריטריונים מסוימים:

  • בכל עסקה של מקטע צריך להשתמש ב-setReorderingAllowed(true) כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת.
  • כדי להבטיח שאפשר יהיה לשחזר את קבוצת העסקאות בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במקבץ פעילויות קודמות (back stack) בזמן שחלף, קבוצת העסקאות שנשמרה צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת לשברים מחוץ לקבוצת העסקאות הזו).
  • אף מקטע (fragment) שנשמר לא יכול להיות מקטע (fragment) שנשמר או לכלול מקטע (fragment) שנשמר בקבוצת הצאצאים שלו, כדי להבטיח ש-FragmentManager לא יחזיר הפניות למקטעים (fragment) שנשמרו אחרי שהמקבץ פעילויות קודמות (back stack) נשמר.

בדומה לפונקציות saveBackStack(), restoreBackStack() ו-clearBackStack(), שמשחזרות או מוחקות בהתאמה את מקבץ הפעילויות הקודמות שנשמר, גם הפונקציות האלה לא עושות כלום אם לא קראתם קודם לפונקציה saveBackStack() עם אותו שם.

מידע נוסף זמין במאמר Multiple back stacks: A deep dive (מספר ערימות של היסטוריית חזרה: ניתוח מעמיק).

גרסה ‎1.4.0-rc01

‫3 בנובמבר 2021

‫androidx.fragment:fragment:1.4.0-rc01 פורסמה ללא שינויים מ-Fragment 1.4.0-beta01. גרסה ‎1.4.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.4.0-beta01

‫27 באוקטובר 2021

הגרסאות androidx.fragment:fragment:1.4.0-beta01,‏ androidx.fragment:fragment-ktx:1.4.0-beta01 וגם androidx.fragment:fragment-testing:1.4.0-beta01 יוצאות. גרסה ‎1.4.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • עכשיו, פרגמנטים ראשיים ישלחו את onHiddenChanged() למטה בכל ההיררכיה שלהם לפני הפעלת הקריאה החוזרת שלהם. (Iedc20, ‏ b/77504618)
  • המקלדת תיסגר עכשיו באופן אוטומטי כשעוברים מקטע עם מקלדת פתוחה לקטע עם תצוגת רכיבים שניתנים לשימוש חוזר. (I8b842, b/196852211)
  • ‫DialogFragment משתמש עכשיו ב-setReorderingAllowed(true) לכל העסקאות שהוא יוצר כשמבצעים קריאה ל-show(), ל-showNow() או ל-dismiss(). (Ie2c14)
  • אזהרת ה-Lint הארוכה מאוד של DetachAndAttachFragmentInSameFragmentTransaction קוצרה ל-DetachAndAttachSameFragment. (e9eca3)

גרסה ‎1.4.0-alpha10

‫29 בספטמבר 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha10,‏ androidx.fragment:fragment-ktx:1.4.0-alpha10 וגם androidx.fragment:fragment-testing:1.4.0-alpha10 יוצאות. גרסה ‎1.4.0-alpha10 מכילה את השמירות האלה.

Lint

  • נוספה DetachAndAttachFragmentInSameFragmentTransaction אזהרת lint לזיהוי קריאה ל-detach() ול-attach() באותו Fragment באותו FragmentTransaction – מכיוון שהפעולות המשלימות האלה מבטלות זו את זו כשהן מתבצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי שהן יבצעו פעולה כלשהי. (aosp/1832956, b/200867930)
  • נוספה שגיאת ה-lint‏ FragmentAddMenuProvider לתיקון השימוש במחזור החיים של Fragment במחזור החיים של תצוגת Fragment כשמשתמשים ב-API‏ addMenuProvider של MenuHost. (aosp/1830457, b/200326272)

עדכונים במאמרי העזרה

  • הודעת הוצאה משימוש של ממשקי API שמטופלים עכשיו על ידי Activity Result APIs, כלומר startActivityForResult,‏ startIntentSenderForResult,‏ onActivityResult,‏ requestPermissions ו-onRequestPermissionsResult, הורחבה וכוללת עכשיו פרטים נוספים. (cce80f)
  • הודעת ההוצאה משימוש של onActivityCreated() עבור Fragment וגם עבור DialogFragment הורחבה עם פרטים נוספים. (224db4)

גרסה ‎1.4.0-alpha09

‫15 בספטמבר 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha09,‏ androidx.fragment:fragment-ktx:1.4.0-alpha09 וגם androidx.fragment:fragment-testing:1.4.0-alpha09 יוצאות. גרסה ‎1.4.0-alpha09 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו אפשר להתקשר אל clearBackStack(name) כדי לנקות כל מצב שנשמר בעבר באמצעות saveBackStack(name). (I70cd7)

שינויים ב-API

  • המחלקות FragmentContainerView נכתבו מחדש ב-Kotlin כדי להבטיח שהפונקציה getFragment תכבד את האפשרות של ערך null. (If694a, b/189629145)
  • ‫FragmentStrictMode נכתב עכשיו ב-Kotlin‏ (I11767, ‏ b/199183506)

תיקוני באגים

  • תוקנה בעיה שבה המצב של Fragment שנוסף באמצעות setReorderingAllowed(true) ואז הוסר מיד לפני ביצוע עסקאות בהמתנה לא נוקה כמו שצריך. (I8ccb8)

גרסה ‎1.4.0-alpha08

‫1 בספטמבר 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha08,‏ androidx.fragment:fragment-ktx:1.4.0-alpha08 וגם androidx.fragment:fragment-testing:1.4.0-alpha08 יוצאות. גרסה ‎1.4.0-alpha08 מכילה את השמירות האלה.

תיקוני באגים

  • שיפרנו את UseRequireInsteadOfGet בדיקת ה-Lint כדי לטפל טוב יותר בסוגריים מיותרים. (I2d865)
  • שיפרנו את UseGetLayoutInflater בדיקת Lint כדי לטפל במקרים נוספים של קצה. (Ie5423)

גרסה ‎1.4.0-alpha07

‫18 באוגוסט 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 ו-androidx.fragment:fragment-testing:1.4.0-alpha07 יוצאות ללא שינויים משמעותיים. גרסה ‎1.4.0-alpha07 מכילה את השמירות האלה.

גרסה ‎1.4.0-alpha06

‫4 באוגוסט 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha06,‏ androidx.fragment:fragment-ktx:1.4.0-alpha06 וגם androidx.fragment:fragment-testing:1.4.0-alpha06 יוצאות. גרסה ‎1.4.0-alpha06 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שקשורה למספר מחסניות חזרה כשעוברים במהירות בין מחסניות חזרה, שמופיעה כ-IllegalStateException בזמן שחזור של FragmentTransaction או כעותק שני של קטע שמופיע. (I9039f)
  • תוקנה בעיה שבה FragmentManager שמר עותק של מצב שנשמר בעבר באמצעות saveBackStack() גם אחרי שהמצב הזה שוחזר. (Ied212)
  • השיטה dismissAllowingStateLoss() של DialogFragment כבר לא קורסת כשמפעילים אותה אחרי שהסטטוס נשמר, כשמוסיפים את DialogFragment באופן ספציפי באמצעות השיטה show(FragmentTransaction, String). (I84422)

גרסה ‎1.4.0-alpha05

‫21 ביולי 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha05,‏ androidx.fragment:fragment-ktx:1.4.0-alpha05 וגם androidx.fragment:fragment-testing:1.4.0-alpha05 יוצאות. גרסה ‎1.4.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • מתוך Fragment 1.3.6: התצוגה של Fragment מוגדרת עכשיו בצורה נכונה ל-GONE כשמשתמשים ב-hide() כשהתצוגה הבסיסית מוגדרת ל-transitionGroup=”true”. ‫(aosp/1766655, ‏ b/193603427)
  • מ-Fragment 1.3.6: FragmentActivity עכשיו תמיד מבטל את הנעילה של המצב השמור כפעולה הראשונה שלו ב-lifecycle callbacks שהוא מבטל. (I6db7a)

עדכון של תלות

גרסה ‎1.4.0-alpha04

‫30 ביוני 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha04,‏ androidx.fragment:fragment-ktx:1.4.0-alpha04 וגם androidx.fragment:fragment-testing:1.4.0-alpha04 יוצאות. גרסה ‎1.4.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • ‫FragmentManager משתמש עכשיו ב-SavedStateRegistry מאחורי הקלעים כדי לשמור את המצב שלו. גם ה-methods‏ saveAllState() ו-restoreSavedState() הוצאו משימוש ב-FragmentController. אם אתם משתמשים ב-FragmentController כדי לארח קטעים מחוץ ל-FragmentActivity, אתם צריכים להטמיע את SavedStateRegistryOwner ב-FragmentHostCallbacks. (Iba68e, b/188734238)

תיקוני באגים

  • תוקנה בעיה שבה הקריאה אל saveBackStack() כחלק מהתמיכה בכמה ערימות חזרה נכשלת כשמבצעים אותה בו-זמנית עם הפעלת FragmentTransaction שמשתמשת ב-replace(). (I73137)
  • תוקנה בעיה NullPointerException שהתרחשה אחרי ששחזרו באופן ידני מקבץ פעילויות קודמות (back stack) שנשמר והכיל כמה טרנזקציות, כשנעשה שימוש ב-API‏ restoreBackStack() לתמיכה בכמה מקבצי פעילויות קודמות (back stack). בנוסף, תוקנה בעיה שבה לא בוצעה בדיקה של 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: תוקנה רגרסיה במעברים של רכיבים משותפים שהוצגה ב-Fragment 1.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. צריך לטפל בתוספות באמצעות התצוגה של כל רכיב Fragment בנפרד. (Ie6651, b/187304502)

גרסה ‎1.4.0-alpha01

‫18 במאי 2021

הגרסאות androidx.fragment:fragment:1.4.0-alpha01,‏ androidx.fragment:fragment-ktx:1.4.0-alpha01 וגם androidx.fragment:fragment-testing:1.4.0-alpha01 יוצאות. גרסה ‎1.4.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentContainerView מספק עכשיו method‏ getFragment() שמחזירה את ה-fragment שהתווסף לאחרונה לקונטיינר. הלוגיקה זהה ללוגיקה של findFragmentById() עם המזהה של FragmentContainerView, אבל אפשר לשרשר את הקריאה. (Ife17a, ‏ b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • נוספה האפשרות FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} לציין אם להפעיל את האנימציה הרגילה של מעבר בין פעילויות שנלקחה מהעיצוב במעבר בין קטעים. (I46652)

Multiple back stacks

‫FragmentManager שומר על מקבץ פעילויות קודמות (back stack) שמורכבת מעסקאות של קטעי קוד שהשתמשו ב-addToBackStack(). כך אפשר להוציא את העסקאות האלה מהמחסנית ולחזור למצב הקודם, באמצעות המנגנונים של שמירת מצב באמצעות פרגמנטים כדי לאפשר לפרגמנטים לשחזר את המצב שלהם בצורה מתאימה.

בגרסה הזו הרחבנו את המנגנונים האלה והוספנו שני ממשקי API חדשים: FragmentManager ו-saveBackStack(String name) ו-restoreBackStack(String name). ממשקי ה-API האלה משתמשים באותו name כמו addToBackStack() כדי לשמור את המצב של FragmentTransaction ואת המצב של כל מקטע שנוסף בעסקאות האלה, וכדי לאפשר לכם לשחזר מאוחר יותר את העסקאות האלה ואת המקטעים שלהן עם המצב שלהם. כך אפשר 'להחליף' ביעילות בין כמה מקבצי פעילויות קודמות (back stack) על ידי שמירת מקבץ הפעילויות הקודמות (back stack) הנוכחי ושחזור מקבץ פעילויות קודמות (back stack) שמור.

הפונקציה saveBackStack() פועלת באופן דומה ל-popBackStack() בכך שהיא אסינכרונית וגורמת לכל טרנזקציות הפרגמנטים שקשורות לשם הספציפי הזה להתבטל ('popped') ולכל הפרגמנטים שנוספו להימחק ולהוסר, אבל יש ביניהן כמה הבדלים חשובים:

  • האפליקציה saveBackStack() תמיד כוללת את כל המשתמשים.
  • בניגוד ל-popBackStack(), שפותח את כל העסקאות במחסנית האחורית אם השם שצוין לא נמצא במחסנית האחורית או אם צוין שם null, הפונקציה saveBackStack() לא עושה כלום אם לא ביצעתם בעבר טרנזקציית fragment באמצעות addToBackStack() עם אותו שם מדויק שאינו null.
  • המצב של כל הפרגמנטים שנוספו מהעסקאות האלה נשמר. כלומר, מצב התצוגה של כל פרגמנט נשמר, הפונקציה onSaveInstanceState() של כל פרגמנט נקראת והמצב משוחזר, וכל מופע של ViewModel שמשויך לפרגמנטים האלה נשמר (והפונקציה onCleared() לא נקראת לגביהם).

עסקאות חלקיות שאפשר להשתמש בהן עם saveBackStack() צריכות לעמוד בקריטריונים מסוימים:

  • בכל עסקה של מקטע צריך להשתמש ב-setReorderingAllowed(true) כדי להבטיח שאפשר יהיה לשחזר את העסקאות כפעולה אטומית אחת.
  • כדי להבטיח שאפשר יהיה לשחזר את קבוצת העסקאות בכל שלב מאוחר יותר, בלי קשר לשינויים שבוצעו במקבץ פעילויות קודמות (back stack) בזמן שחלף, קבוצת העסקאות שנשמרה צריכה להיות עצמאית (כלומר, לא יכולה להיות הפניה מפורשת לשברים מחוץ לקבוצת העסקאות הזו).
  • כדי לוודא ש-FragmentManager לא מחזירה הפניות לשברים שנשמרו אחרי שמקבץ פעילויות קודמות (back stack) נשמר, אף שבר שנשמר לא יכול להיות שבר שנשמר או לכלול שבר שנשמר בקבוצת השברים הצאצאים שלו.

בדומה ל-saveBackStack(), הפונקציה restoreBackStack() לא עושה כלום אם לא קראתם קודם ל-saveBackStack() עם אותו שם. (b/80029773)

Fragment StrictMode

ממשקי ה-API‏ FragmentStrictMode מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של רכיבי Fragment שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או להקריס את האפליקציה. אפשר להגדיר את 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() מזהה כשמוסיפים רכיב fragment למאגר שהוא לא FragmentContainerView. תמיד צריך להשתמש ב-FragmentContainerView כמאגר לרכיבי Fragment בפריסה. (מס' 146, ‏ b/181137036)
  • ‫detectRetainInstanceUsage() מזהה מתי אתם משתמשים בממשקי ה-API ‏setRetainInstance() או getRetainInstance() שהוצאו משימוש. (מס' 140, ‏ b/153737954)
  • ‫detectSetUserVisibleHint() מזהה מתי משתמשים ב-API ‏setUserVisibleHint() שהוצא משימוש. ‫(#136, b/153738974)
  • ‫detectTargetFragmentUsage() מזהה מתי אתם משתמשים בממשקי ה-API שהוצאו משימוש: setTargetFragment(), getTargetFragment() או getTargetRequestCode(). (מס' 139, b/153737745)

שינויים ב-API

בדיקות Lint חדשות

  • UseGetLayoutInflater בדיקת Lint מציגה עכשיו אזהרה כשמשתמשים ב-LayoutInflater.from(Context) בתוך DialogFragment – תמיד צריך להשתמש בשיטה getLayoutInflater() של רכיב הדיאלוג כדי לקבל את הערך המתאים ל-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, לא מתבצע יותר שיגור של insets ללא הגבלה, וכך נפתרות בעיות שקשורות למופעים של BottomNavigationBar ו-FloatingActionButton. (I1bb78, b/186012452)
  • מ-Fragment 1.3.4: עכשיו אפשר לאחזר את ה-Parcelable מ-bundle של תוצאת הפרגמנט אחרי שהתהליך הסתיים. (I65932, ‏ b/187443158)
  • מ-Fragment 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם הערך של transitionGroup ב-ViewGroup מוגדר כ-false, המעבר יתבצע עכשיו בצורה תקינה. (I99675)

External Contribution

גרסה 1.3

גרסה 1.3.6

‫21 ביולי 2021

הגרסאות androidx.fragment:fragment:1.3.6,‏ androidx.fragment:fragment-ktx:1.3.6 וגם androidx.fragment:fragment-testing:1.3.6 יוצאות. גרסה 1.3.6 מכילה את השמירות האלה.

תיקוני באגים

  • מ-Fragment 1.4.0-alpha03: האפליקציה FragmentManager לא תקרוס יותר כשמנסים להסתיר fragment שמוסר. (I573dd, b/183634730)
  • התצוגה של Fragment מוגדרת עכשיו בצורה נכונה ל-GONE כשמשתמשים ב-hide() כשתצוגת הבסיס מוגדרת ל-transitionGroup=”true”. ‫(aosp/1766655, ‏ b/193603427)
  • ‫FragmentActivity עכשיו תמיד מבטל את הנעילה של המצב השמור כפעולה הראשונה שלו בשיטות callback של מחזור החיים שהוא מבטל. (I6db7a)

עדכון של תלות

גרסה 1.3.5

‫16 ביוני 2021

הגרסאות androidx.fragment:fragment:1.3.5,‏ androidx.fragment:fragment-ktx:1.3.5 וגם androidx.fragment:fragment-testing:1.3.5 יוצאות. גרסה 1.3.5 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה במעברים של רכיבים משותפים שהוצגה ב-Fragment 1.3.4 על ידי aosp/1679887. מעכשיו, רכיבי Fragment מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעות transitionGroup="true" או בעקיפין באמצעות transitionName או background), ורכיבים משותפים לא יגרמו יותר לשגיאות IndexOutOfBoundsException. (I16484, ‏ b/188679569, ‏ b/188969304)

גרסה 1.3.4

‫18 במאי 2021

הגרסאות androidx.fragment:fragment:1.3.4,‏ androidx.fragment:fragment-ktx:1.3.4 וגם androidx.fragment:fragment-testing:1.3.4 יוצאות. גרסה 1.3.4 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה שהוצגה ב-Fragment 1.3.3 כשמשתמשים ב-API ‏ViewTreeViewModelStoreOwner.get() עם ViewModelProvider או בשיטת Jetpack Compose ‏viewModel() בתוך Fragment כשמשתמשים ב-Hilt. בתרחישי השימוש האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory שסופק על ידי Fragment אם הוא מחליף את getDefaultViewModelProviderFactory() (כמו במקטעי Fragment עם ההערה @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 מכילה את השמירות האלה.

תכונות חדשות

  • השימוש ב-SavedStateViewModelFactory פועל עכשיו כשמשתמשים בו עם SavedStateRegistryOwner שמוחזר על ידי שימוש ב-ViewTreeSavedStateRegistryOwner.get() עם התצוגה של Fragment. (I21acf, ‏ b/181577191)

תיקוני באגים

  • תוקנה רגרסיה שהוצגה ב-Fragment 1.3.2 וגרמה לכך שאנימציות של popEnter לא הופעלו כשבוצעה פעולת setPrimaryNavFragment ב-FragmentTransaction, כמו אלה שמשמשות את NavHostFragment. ‫(I38c87, ‏ b/183877426)
  • FragmentContainerView מוודא עכשיו שכל Fragment מקבל קבוצה חדשה של WindowInsets, וכך כל פרגמנט יכול לצרוך את השוליים באופן עצמאי. (I63f68, b/172153900)
  • DialogFragment עכשיו מטפל כמו שצריך במקרים שבהם מתווסף פריט צאצא למאגר שיש לו אותו מזהה כמו למאגר בכיתה המותאמת אישית Dialog, ומתקן בעיות בהיררכיית התצוגה כשמשתמשים מחדש במזהים שנמצאים בשימוש פנימי בתיבות דו-שיח כמו BottomSheetDialog. ‫(Ie6279, ‏ b/180021387)
  • ‫FragmentManager.dump() עכשיו יש הזחה נכונה של הפרגמנט הראשון ברשימת הפרגמנטים הפעילים. (If5c33, ‏ b/183705451)

תיקוני באגים חדשים ב-State Manager

  • מנהל המצב החדש של רכיבי Fragment מטפל עכשיו בצורה נכונה במעברים של יציאה באמצעות פעולות הסתרה. ‫(I9e4de, ‏ b/184830265)

גרסה 1.3.2

‫24 במרץ 2021

הגרסאות androidx.fragment:fragment:1.3.2,‏ androidx.fragment:fragment-ktx:1.3.2 וגם androidx.fragment:fragment-testing:1.3.2 יוצאות. גרסה 1.3.2 מכילה את השמירות האלה.

תיקוני באגים חדשים ב-State Manager

  • כשמריצים פעולות של popBackStack() ושל commit() ביחד, הפעולה האחרונה תגדיר עכשיו את הכיוון לכל האנימציות, במקום להריץ חלק מהאנימציות של פתיחת חלון קופץ וחלק מהאנימציות של כניסה. (I7072e, ‏ b/181142246)
  • כשמבצעים מעבר בין רכיבים משותפים, שם המעבר של התצוגות בהיררכיית רכיבים משותפים לא יימחק יותר. (I4d4a6, b/179934757)

עדכונים של יחסי תלות

  • ‫Fragment תלוי עכשיו ב-Activity 1.2.2, ומתקן בעיה בבדיקת lint של Activity‏ InvalidFragmentVersionForActivityResult כשמשתמשים ב-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)

תיקוני באגים

  • עכשיו אפשר לראות בצורה תקינה פרגמנטים שנוצרו בפעילות RESUMED קיימת באמצעות FragmentContainerView אחרי שינוי בהגדרות. (Ie14c8, ‏ b/180538371)
  • אין יותר } נוסף בסוף המקטע toString() (I54705, ‏ b/177761088)
  • שיטות שהוחלפו ב-FragmentActivity יורשות עכשיו בצורה תקינה את ה-javaDoc של שיטת הבסיס (I736ce, ‏ b/139548782)
  • המסמכים של setFragmentResult ושל setFragmentResultListener עודכנו כדי לשקף שהם כבר לא מקבלים ערכים שניתנים לאיפוס (I990ba, b/178348386)

תיקוני באגים חדשים ב-State Manager

  • תוקנה דליפת זיכרון בשברים שנגרמה על ידי mFocusedView (Ib4e9e, ‏ b/179925887)
  • כשמשתמשים בעסקאות של הצגה/הסתרה (I8bce8,‏ b/180255554), קטעי קוד קוראים עכשיו ל-onCreateOptionsMenu בצורה תקינה.
  • מקטעי צאצא עם מעברים שמתחילים לפני שהמקטע מוצג יגיעו עכשיו כמו שצריך אל RESUMED (Ic11e6, ‏ b/180825150)
  • מעכשיו, פרגמנטים שנוצרו באמצעות התג <fragment> תמיד יגיעו אל RESUMED (I452ac, (I9fa49)

עדכונים של יחסי תלות

גרסה 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

  • New State Manager: בוצע שכתוב משמעותי של הרכיבים הפנימיים של FragmentManager, ובעקבות זאת תוקנו בעיות רבות שקשורות לשליחת אירועים במחזור החיים, לאנימציות ולמעברים, ולטיפול בקטעים שנדחו.
  • שילוב של Activity Result API: נוספה תמיכה ב-API‏ ActivityResultRegistry שהוצג ב-Activity 1.2.0 כדי לטפל בתהליכי עבודה של startActivityForResult()+onActivityResult() וגם של requestPermissions()+onRequestPermissionsResult() בלי להחליף שיטות ב-Fragment, בנוסף לאספקת hooks לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות.

    • בגרסה הזו תוקנו כמה בעיות שקשורות לקודי בקשות לא תקינים ולשליחת בקשות הרשאה שמונעות את הפעולה של Activity Result API בגרסאות קודמות של FragmentActivity. כדי להשתמש ב-Activity Result APIs ב-FragmentActivity או ב-AppCompatActivity, צריך לשדרג ל-Fragment 1.3.0.
  • ‫Fragment Result API: נוספה תמיכה בהעברת תוצאות בין שני רכיבי Fragment באמצעות ממשקי API חדשים ב-FragmentManager. השיטה הזו פועלת עבור קטעי היררכיה (הורה/צאצא), DialogFragment וקטעים ב-Navigation, והיא מבטיחה שהתוצאות יישלחו רק ל-Fragment בזמן שהוא לפחות STARTED. ממשקי ה-API של קטע היעד הוצאו משימוש, ועכשיו אפשר להשתמש בממשקי ה-API החדשים האלה. איך מקבלים תוצאות באמצעות Fragment Result API

  • ‫FragmentOnAttachListener: השימוש בקריאה החוזרת onAttachFragment() ב-FragmentActivity וב-Fragment יצא משימוש. נוסף FragmentOnAttachListener חדש כדי לספק חלופה גמישה יותר, שמאפשרת להעביר את onAttachFragment() למאזינים נפרדים שניתן לבדוק אותם, ותמיכה בהוספת מאזין ל-FragmentManagers שאינם FragmentManager ישיר שלכם.

  • FragmentScenario שיפורים: המחלקה FragmentScenario מהארטיפקט fragment-testing נכתבה מחדש ב-Kotlin ועברה מספר שיפורים:

    • ‫FragmentScenario משתמש עכשיו ב-setMaxLifecycle() כדי להטמיע את moveToState(), וכך מבטיח התנהגות עקבית בכל רמות ה-API ומפריד את מצב ה-Fragment מה-Activity הבסיסי.
    • ‫FragmentScenario תומך עכשיו בהגדרת Lifecycle.State ראשוני כדי לתמוך בהצהרה על מצב הפרגמנט לפני המעבר לכל Lifecycle.State בפעם הראשונה.
    • יש עכשיו חלופה ל-API‏ FragmentScenario של onFragment בצורה של שיטת ההרחבה המוחשית של Kotlin‏ withFragment שמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון.
  • ‫ViewTree תמיכה: Fragment תומך עכשיו בממשקי ה-API‏ ViewTreeLifecycleOwner.get(View), ‏ ViewTreeViewModelStoreOwner.get(View) ו-ViewTreeSavedStateRegistryOwner שנוספו ב-Lifecycle 2.3.0 וב-SavedState 1.1.0, כך שהוא יחזיר את ה-Fragment בתור ViewModelStoreOwner, ואת SavedStateRegistryOwner ו-LifecycleOwner שקשורים ל-view Lifecycle של ה-Fragment כשמשתמשים ב-View בתוך Fragment.

  • TRANSIT_ שינויים באנימציה: אפקטי ברירת המחדל של הפרגמנטים, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE ו-TRANSIT_FRAGMENT_FADE, משתמשים עכשיו ב-Animator במקום ב-Animation. המקורות ששימשו ליצירת האנימטורים האלה הם עכשיו פרטיים.

  • הוצאה משימוש של setRetainInstance(): ה-method‏ setRetainInstance() ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש API ספציפי לשמירת מצב שאפשר לשייך לפעילויות, לקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר, ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד. כך הם נמנעים ממקור נפוץ של דליפות, ועדיין יכולים להשתמש במאפיינים השימושיים של יצירה והרס יחידים של המצב שנשמר (כלומר, ה-constructor של ViewModel והקריאה החוזרת onCleared() שהוא מקבל).

  • הוצאה משימוש של מתאם ViewPager 1: עם ההשקה של ViewPager2 1.0.0, הוצאו משימוש המחלקות FragmentPagerAdapter ו-FragmentStatePagerAdapter ליצירת אינטראקציה עם ViewPager. אפשר לעיין במאמר העברה מ-ViewPager ל-ViewPager2.

גרסה ‎1.3.0-rc02

‫27 בינואר 2021

הגרסאות androidx.fragment:fragment:1.3.0-rc02,‏ androidx.fragment:fragment-ktx:1.3.0-rc02 וגם androidx.fragment:fragment-testing:1.3.0-rc02 יוצאות. גרסה ‎1.3.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה רכיב הורה DialogFragment הופיע מעל רכיב צאצא DialogFragment אחרי שינוי בהגדרות. עכשיו, רכיבי צאצא של תיבת דו-שיח תמיד מופיעים מעל רכיבי הורה של תיבת דו-שיח. (I30806, b/177439520)
  • תוקנה בעיה שבה ביצוע פעולה של hide עם Animation גרם להבהוב של קטע ההסתרה בסוף האנימציה. ‫(I57e22, ‏ b/175417675)
  • מקטעים עם מעברים שנוספו לפני צירוף היררכיית התצוגה מגיעים עכשיו אל RESUMED כמו שצריך. (I1fc1d, ‏ b/177154873)

תיקוני באגים חדשים ב-State Manager

  • התצוגה של Fragment Lifecycle מטפלת עכשיו בצורה נכונה במקרים שבהם התצוגה של Fragment מושמדת לפני ש-Lifecycle מגיע אל CREATED, וכך נמנעות חריגות שבהן מצוין 'אין אירוע down מ-INITIALIZED'. (eda2bd, b/176138645)
  • כשמשתמשים ב-FragmentContainerView, קטעים שמשתמשים ב-Animator מופיעים עכשיו בסדר הנכון. (Id9aa3, ‏ b/176089197)

גרסה ‎1.3.0-rc01

‫16 בדצמבר 2020

הגרסאות androidx.fragment:fragment:1.3.0-rc01,‏ androidx.fragment:fragment-ktx:1.3.0-rc01 וגם androidx.fragment:fragment-testing:1.3.0-rc01 יוצאות. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • הפונקציה onPrepareOptionsMenu() פועלת עכשיו לפי אותה לוגיקה כמו onCreateOptionsMenu(), והיא לא מופעלת יותר כשקטע אב מפעיל את setMenuVisibility(false). (Id7de8, ‏ b/173203654)

תיקוני באגים חדשים ב-State Manager

  • תוקן דליפה וארטיפקט ויזואלי כשמוסיפים קטע עם Animation ל-FragmentContainerView ואז מפסיקים את ההוספה הזו באמצעות פעולת pop. (I952d8)
  • תוקנה בעיה שבה התצוגה של הפריט הייתה נשארת בהיררכיית התצוגה אם היא הוחלפה במהלך השיטות onCreate() או onViewCreated(). (I8a7d5)
  • המיקוד משוחזר עכשיו בצורה תקינה לתצוגות הבסיסיות של Fragment כשממשיכים אותן. (Ifc84b)
  • כשמשלבים פעולות של הוצאה והחלפה באותה טרנזקציה של fragment, האנימציות הנכונות מוצגות עכשיו (Ifd4e4,‏ b/170328691)

גרסה ‎1.3.0-beta02

‫2 בדצמבר 2020

הגרסאות androidx.fragment:fragment:1.3.0-beta02,‏ androidx.fragment:fragment-ktx:1.3.0-beta02 וגם androidx.fragment:fragment-testing:1.3.0-beta02 יוצאות. גרסה ‎1.3.0-beta02 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentScenario עבר המרה מלאה ל-Kotlin תוך שמירה על תאימות למקור ולבינארי באמצעות שימוש בממשקי Kotlin 1.4's functional עבור FragmentAction. (I19d31)

שינויים בהתנהגות

  • אפשר להשתמש עכשיו ב-FragmentContainerViews שלא מרחיבים fragment באמצעות המאפיין class או android:name מחוץ ל-FragmentActivity. (Id4397, ‏ b/172266337)
  • ניסיון להגדיר את מחזור החיים המקסימלי של מקטע (fragment) ל-DESTROYED יגרום עכשיו להקפיץ הודעת שגיאה (throw) IllegalArgumentException (Ie7651, b/170765622)
  • הפעלת FragmentScenario עם מצב DESTROYED תגרום עכשיו להקפיץ הודעת שגיאה IllegalArgumentException (I73590, ‏ b/170765622)

תיקוני באגים חדשים ב-State Manager

  • תוקנה הבעיה שבה התצוגה לא מגיעה למצב הסופי שלה אם מפריעים למעבר של קטע שהשתמש באפשרות Animator או באחת מהאפשרויות TRANSIT_FRAGMENT_. (I92426, ‏ b/169874632)
  • תוקנה בעיה שמנעה את ההרס התקין של פרגמנטים עם Animation יציאה. (I83d65)
  • כשיוצאים מקטעים שהאפקטים שלהם הפוכים, הם מבוטלים עכשיו כמו שצריך ומופעלים מחדש עם אפקט הכניסה הנכון. (I62226, b/167092035)
  • תוקנה בעיה שבה היציאה Animator של hide() לא פעלה. (Id7ffe)
  • עכשיו, קטעי וידאו מופיעים כמו שצריך כשדוחים את ההפעלה שלהם ואז מתחילים אותם מיד. (Ie713b, b/170022857)
  • אם קטע מסיר את התצוגה הממוקדת שלו במהלך אנימציה, המערכת לא תנסה יותר לשחזר את המיקוד בתצוגה המנותקת אחרי שהיא תגיע אל RESUMED (I38c65,‏ b/172925703)

External Contribution

  • ‫FragmentFactory מאחסן עכשיו במטמון מחלקות של קטעי קוד בנפרד עבור מופעים שונים של ClassLoader. תודה, Simon Schiller! (#87, b/113886460)

גרסה ‎1.3.0-beta01

‫1 באוקטובר 2020

הגרסאות androidx.fragment:fragment:1.3.0-beta01,‏ androidx.fragment:fragment-ktx:1.3.0-beta01 וגם androidx.fragment:fragment-testing:1.3.0-beta01 יוצאות. גרסה ‎1.3.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • הפונקציה setMaxLifecycle() תומכת עכשיו בהגדרת המצב של Lifecycle ל-INITIALIZING, כל עוד הפריט לא הועבר ל-CREATED. (b/159662173)

שינויים ב-API

שינויים בהתנהגות

  • קבצי משאבים של Fragment הוגדרו כפרטיים בצורה נכונה. (aosp/1425237)

תיקוני באגים

  • קטעי קוד שהורחבו באמצעות התג <fragment> ימתינו עכשיו בצורה תקינה עד שהתצוגות שלהם יתווספו למאגר לפני שיעברו למצב STARTED ‏ (I02f4c)
  • אפקטי היציאה של פרגמנטים שגלויים ואז setMaxLifecycle() ל-CREATED מופעלים עכשיו כמו שצריך. (b/165822335)
  • הסרה של מקטע (fragment) מנותק שלא נוסף למקבץ פעילויות קודמות (back stack) כבר לא גורמת לדליפת זיכרון. באדיבות ניקלאס אנסמן גירץ! (b/166489383)
  • לפרגמנטים פעילים תמיד יהיה ערך שאינו null ב-FragmentManager, ופרגמנטים עם ערך שאינו null ב-FragmentManager תמיד ייחשבו כפעילים. (aosp/1422346)
  • אפקטים שמוגדרים כברירת מחדל לקטע, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE ו-TRANSIT_FRAGMENT_FADE, משתמשים עכשיו ב-Animator במקום ב-Animation. (b/166155034)

תיקוני באגים חדשים ב-State Manager

  • עכשיו אפשר לשחזר את מצב המיקוד של התצוגה של רכיבי Fragment כמו שצריך, ממש לפני שהאנימציה שלהם מתחילה. (Icc256)
  • פרגמנטים שיש להם רק מעבר של רכיב משותף משלימים עכשיו את האפקטים המיוחדים שלהם בצורה תקינה, כלומר הם עוברים למצב הסופי שלהם (Iaebc7,‏ b/166658128)
  • תצוגות של קטעים תמיד מוסרות מהקונטיינר לפני שהן מושמדות. (Id5876)
  • מנהל המצב החדש מסיר עכשיו באופן עקבי את תצוגת הפרגמנט היוצאת לפני שהוא מוסיף את תצוגת הפרגמנט הנכנסת. (I41a6e)
  • מנהל המצב החדש מכבד עכשיו שינויים מפורשים בחשיפה של תצוגת fragment. כלומר, אם תגדירו את התצוגה של מקטע הכניסה ל-INVISIBLE לפני שהאנימציה מתחילה, הוא יישאר בלתי נראה. (b/164481490)
  • מעכשיו, כשמפעילים קטע עם שני סוגי מודעות, המערכת נותנת עדיפות ל-Animators על פני Animations, כלומר היא תפעיל רק את Animator ותתעלם מ-Animation. (b/167579557)
  • מנהל המצבים החדש לא גורם יותר להבהוב של קטעים כשמשתמשים באנימציות כניסה. (b/163084315)

בעיה ידועה

כשמשתמשים במנהל המצבים החדש, אם לוחצים על 'חזרה' במהלך כניסה לאפקט מיוחד במקום לחזור לקטע הקודם, קטע הקוד הישן לא מתווסף מחדש, וכתוצאה מכך מוצג מסך ריק. (b/167259187, b/167092035, b/168442830)

גרסה ‎1.3.0-alpha08

‫19 באוגוסט 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha08,‏ androidx.fragment:fragment-ktx:1.3.0-alpha08 וגם androidx.fragment:fragment-testing:1.3.0-alpha08 יוצאות. גרסה ‎1.3.0-alpha08 מכילה את השמירות האלה.

New State Manager

הגרסה הזו כוללת שינוי משמעותי במבנה של ניהול המצב הפנימי של FragmentManager, שמשפיע על השליחה של שיטות מחזור חיים, אנימציות ומעברים, ועל אופן הטיפול בעסקאות שנדחו. ההגדרה הזו מוצגת בממשק כברירת מחדל. פרטים נוספים זמינים בפוסט הזה בבלוג בנושא מקטעים: בנייה מחדש של הפנימיים. (b/139536619, b/147749580)

  • אפשר להשתמש ב-API experimental ב-FragmentManager.enableNewStateManager(boolean) כדי לקבוע אם FragmentManager ישתמש במנהל המצב החדש. (I7b6ee)

הבעיות הבאות נפתרות רק כשמשתמשים בכלי החדש לניהול מצבים:

  • הקטע הקודם של פעולת replace נעצר עכשיו בצורה נכונה לפני שהקטע החדש מתחיל. (b/161654580)
  • מעכשיו, מעברים בין פרגמנטים מונעים הפעלה של כמה אנימציות מתחרות באותם פרגמנטים, וכך נמנעים מקרים שבהם Animation מבטל את כל האפקטים של Transition, או שמפעילים גם Animator וגם Transition בפרגמנט בודד. (b/149569323)
  • החישובים של enterTransition ו-exitTranstion של כל הפרגמנטים שנכנסים ויוצאים מופעלים עכשיו, ולא רק של הפרגמנט האחרון שנכנס והפרגמנט הראשון שיוצא. (b/149344150)
  • פרגמנטים שהושהה העיבוד שלהם לא נתקעים יותר במצב CREATED, אלא עוברים למצב STARTED עם פרגמנטים אחרים. (b/129035555)
  • תוקנה הבעיה שבה FragmentManager ביצע פעולות לא לפי הסדר כששילב בין עסקה שנדחתה ושונתה לבין עסקה שלא שונתה. (b/147297731)
  • אם תפוצצו כמה פרגמנטים בו-זמנית, לא יוצגו יותר פרגמנטים ביניים באופן זמני כשדוחים פרגמנטים. (b/37140383)
  • הפונקציה FragmentManager מחזירה עכשיו את הפרגמנטים הנכונים כשמפעילים את הפונקציות findFragmentById() או findFragmentByTag() מתוך הקריאה החוזרת (callback) onAttachFragment(). (b/153082833)
  • כשדוחים את החלפת הפרגמנט, הפרגמנטים כבר לא קוראים ל-onCreateView() כשהפרגמנטים מושמדים. (b/143915710)
  • הודעת השגיאה שמופיעה כשמנסים לשלב בין מופעים של framework‏ Transition ו-AndroidX‏ Transition מציינת עכשיו את הפראגמנט עם המעבר הלא תקין. (b/155574969)

שינויים בהתנהגות

  • עכשיו אפשר להתקשר אל launch() ב-ActivityResultLauncher בשיטת מחזור החיים onCreate() של מקטע. (b/161464278)
  • הפעלת registerForActivityResult() אחרי onCreate() גורמת עכשיו לשגיאה שמציינת שזה לא מותר, במקום שלא יוחזרו תוצאות אחרי שינוי בהגדרה. (b/162255449)
  • ‫FragmentActivity משתמש עכשיו ב-OnContextAvailableListener API שהוצג ב-Activity 1.2.0-alpha08 כדי לשחזר את המצב של FragmentManager. כל listeners שנוספו לתת-מחלקות של FragmentActivity יפעלו אחרי ה-listener הזה. (I513da)

תיקוני באגים

  • הערכים של ActivityOptions שעוברים דרך startIntentSenderForResult() מכובדים עכשיו. (b/162247961)

בעיה ידועה

  • כשמשתמשים במנהל המצבים החדש, הגדרה ישירה של החשיפה של תצוגת הבסיס של הפריט אחרי onViewCreated() ולפני onResume() גורמת לכך שהחשיפה שהגדרתם מוחלפת על ידי FragmentManager, ששולט בחשיפה של תצוגת הבסיס. כפתרון עקיף, תמיד צריך להשתמש בפעולות hide() ו-show() כדי לשנות את החשיפה של המקטע. (b/164481490)

גרסה ‎1.3.0-alpha07

‫22 ביולי 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha07,‏ androidx.fragment:fragment-ktx:1.3.0-alpha07 וגם androidx.fragment:fragment-testing:1.3.0-alpha07 יוצאות. גרסה ‎1.3.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentScenario תומך עכשיו בהגדרה של מצב מחזור חיים ראשוני של CREATED, ‏STARTED או RESUMED, במקום להעביר תמיד את ה-Fragment למצב RESUMED. (b/159662750)
  • הוספנו חלופה ל-API‏ FragmentScenario של onFragment בצורה של Kotlin reified extension method‏ withFragment שמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון. (b/158697631)

שינויים בהתנהגות

  • ‫FragmentScenario משתמש עכשיו ב-setMaxLifecycle() כדי להטמיע את moveToState(), וכך מבטיח התנהגות עקבית בכל רמות ה-API ומפריד את מצב ה-Fragment מה-Activity הבסיסי. (b/156527405)
  • ה-SavedStateRegistryOwner שמוחזר על ידי ViewTreeSavedStateRegistryOwner קשור עכשיו למחזור החיים של תצוגת המקטע. כך המצב שלו נשמר ומשוחזר באותו הזמן כמו התצוגה של ה-Fragment. (b/158503763)

תיקוני באגים

  • הקטעים ממתינים עכשיו עד שהתצוגה של הקטע מצורפת לפני שהם קוראים ל-ViewCompat.requestApplyInsets(), וכך נמנעים מקרים שבהם בקשת השוליים נפסלה. (b/158095749)
  • התקשרות אל clearFragmentResultListener מנקה עכשיו את ה-lifecycle observer בצורה תקינה. (b/159274993)

גרסה ‎1.3.0-alpha06

‫10 ביוני 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha06,‏ androidx.fragment:fragment-ktx:1.3.0-alpha06 וגם androidx.fragment:fragment-testing:1.3.0-alpha06 יוצאות. גרסה ‎1.3.0-alpha06 מכילה את השמירות האלה.

תכונות חדשות

  • הקריאה החוזרת (callback) ‏onAttachFragment() ב-FragmentActivity וב-Fragment הוצאה משימוש. נוסף FragmentOnAttachListener חדש כדי לספק חלופה גמישה יותר, שמאפשרת להעביר onAttachFragment() למאזינים נפרדים שניתן לבדוק אותם, ותמיכה בהוספת מאזין ל-FragmentManagers שאינם FragmentManager ישיר שלכם. (I06d3d)

תיקוני באגים

  • עכשיו, מצב התצוגה של פרגמנטים ראשיים משוחזר לפני מצב התצוגה של פרגמנטים משניים, וכך נפתרה בעיה של סדר חזותי אחרי שינוי בהגדרה, כשפרגמנט DialogFragment הציג פרגמנט DialogFragment אחר כפרגמנט משני. (b/157195715)
  • תוקנה בעיה שבה UseRequireInsteadOfGet Lint check לא טיפל נכון בשימושים משורשרים באופרטורים ?. ו-!!. (b/157677616)

גרסה ‎1.3.0-alpha05

20 במאי 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha05,‏ androidx.fragment:fragment-ktx:1.3.0-alpha05 וגם androidx.fragment:fragment-testing:1.3.0-alpha05 יוצאות. גרסה ‎1.3.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

שינויים ב-API

  • ב-APIs‏ setFragmentResult() ו-setFragmentResultListener() יש עכשיו Bundle ו-FragmentResultListener שאי אפשר להגדיר כ-null. כדי לנקות במפורש תוצאה או מאזין שהוגדרו קודם, משתמשים בשיטות החדשות clearFragmentResult() ו-clearFragmentResultListener(). (b/155416778)
  • תוספי setFragmentResultListener() Kotlin שמקבלים 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 החדשים של Fragment Result. (b/149787344)
  • ממשקי ה-API ‏startActivityForResult()/onActivityResult() ו-requestPermissions()/onRequestPermissionsResult() ב-Fragment הוצאו משימוש. צריך להשתמש ב-Activity Result APIs. (aosp/1290887)
  • שינוי שעלול לשבור תאימות מ-Activity 1.2.0-alpha04: השם של השיטה prepareCall() שונה ל-registerForActivityResult(). (aosp/1278717)

תיקוני באגים

  • הפעולה getViewLifecycleOwner() של המקטע נעצרת עכשיו לפני הקריאה ל-onSaveInstanceState(), ומשקפת את ההתנהגות של מחזור החיים של המקטע. (b/154645875)
  • קריאה ל-setMenuVisibility(false) בקטע קוד משנה עכשיו את החשיפה של התפריטים שסופקו על ידי קטעי הקוד המשניים שלו. (b/153593580)
  • תוקנה בעיה שגרמה ל-illegalStateException כשמוסיפים fragment להיררכיית התצוגה של DialogFragment באמצעות FragmentContainerView. (b/154366601)
  • השיטה getDefaultViewModelProviderFactory() ב-fragments כבר לא קורסת כשמארחים את ה-fragments מחוץ לפעילות. (b/153762914)

גרסה ‎1.3.0-alpha03

‫1 באפריל 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha03,‏ androidx.fragment:fragment-ktx:1.3.0-alpha03 וגם androidx.fragment:fragment-testing:1.3.0-alpha03 יוצאות. גרסה ‎1.3.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • ה-methods של prepareCall ב-Fragment הן עכשיו final. (b/152439361)

תיקוני באגים

  • תוקנה רגרסיה שהוצגה ב-Fragment 1.3.0-alpha02 כשמשתמשים ב-BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163)
  • תוקנה קריסה שהתרחשה כשמשתמשים ב-prepareCall מתוך fragment אחרי שינוי בהגדרות. (b/152137004)
  • תוקנה בעיה שגרמה לכך שהמערכת התעלמה ממעברים של רכיבים משותפים וממעברי יציאה כשנעשה שימוש ב-setTargetFragment(). (b/152023196)
  • ‫Fragment 1.2.4: עודכנו כללי ProGuard של Fragment כדי לאפשר טשטוש של פרגמנטים שנשמרו. (b/151605338)
  • מ-Fragment 1.2.4: השבתנו את כלל Lint‏ FragmentLiveDataObserve במחלקות DialogFragment כי מחזור החיים שלהן ומחזור החיים של התצוגה שלהן תמיד מסונכרנים, ולכן אפשר להשתמש ב-this או ב-viewLifecycleOwner כשקוראים ל-observe. (b/151765086)

שינויים בתלות

  • הקטעים תלויים ב-Activity 1.2.0-alpha03, שבו בוצעו שיפורים משמעותיים ב-Activity Result API שהוצג ב-Activity 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 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף תמיכה ב-ActivityResultRegistry API שהוצג ב-Activity 1.2.0-alpha02 כדי לטפל בתהליכי העבודה של startActivityForResult()+onActivityResult() וגם של requestPermissions()+onRequestPermissionsResult() בלי להחליף שיטות ב-Fragment, בנוסף לאספקת נקודות חיבור לבדיקת תהליכי העבודה האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות. (b/125158199)

שינויים ב-API

  • ‫DialogFragment מספק עכשיו בנאי שמקבל @LayoutRes שמציין את הפריסה ש-onCreateView() צריך לנפח כברירת מחדל. (b/150327080)
  • השיטה onActivityCreated() הוצאה משימוש. קוד שמשפיע על התצוגה של המקטע צריך להיות ב-onViewCreated() (שנקרא מיד לפני onActivityCreated()), וקוד אתחול אחר צריך להיות ב-onCreate(). כדי לקבל קריאה חוזרת ספציפית כשהפעילות onCreate() הושלמה, צריך לרשום LifeCycleObserver ב-Lifecycle של הפעילות ב-onAttach(), ולהסיר אותה אחרי שמקבלים את הקריאה החוזרת onCreate(). (b/144309266)

תיקוני באגים

  • ‫Fragment 1.2.3: תוקן באג ב-DialogFragment שגרם ל-StackOverflowError כשקוראים ל-getLayoutInflater() מתוך onCreateDialog(). (b/117894767, aosp/1258664)
  • ‫Fragment 1.2.3: צמצמנו את היקף הכללים של ProGuard שכלולים ב-Fragment כדי לוודא שאפשר להסיר מחלקות Fragment שלא נמצאות בשימוש. (b/149665169)
  • ‫Fragment 1.2.3: תוקנו תוצאות חיוביות כוזבות בבדיקת Lint‏ UseRequireInsteadOfGet כשמשתמשים בשם של משתנה מקומי שמוסתר על ידי שם המאפיין של Kotlin. (b/149891163)
  • מ-Fragment 1.2.3: FragmentContainerView לא זורק יותר UnsupportedOperationException על שימוש בבונה שגוי בתצוגה מקדימה של פריסה. (b/149707833)

בעיות מוכרות

  • המיקום של תיבת הדו-שיח של BottomSheetDialogFragment במסך כבר לא תקין. (b/151652127)

גרסה ‎1.3.0-alpha01

4 במרץ 2020

הגרסאות androidx.fragment:fragment:1.3.0-alpha01,‏ androidx.fragment:fragment-ktx:1.3.0-alpha01 וגם androidx.fragment:fragment-testing:1.3.0-alpha01 יוצאות. גרסה ‎1.3.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • הוספנו תמיכה ב-API‏ ViewTreeLifecycleOwner.get(View) שנוסף ב-Lifecycle 2.3.0-alpha01, כך שהוא יחזיר את viewLifecycleOwner של ה-Fragment בתור LifecycleOwner לכל התצוגות שמוחזרות על ידי onCreateView(). (aosp/1182955)

שינויים ב-API

  • השיטה setRetainInstance() ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש API ספציפי לשמירת מצב שאפשר לשייך לפעילויות, לקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר, ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד. כך הם נמנעים ממקור נפוץ של דליפות, ועדיין יכולים להשתמש במאפיינים השימושיים של יצירה והרס יחידים של המצב שנשמר (כלומר, ה-constructor של ViewModel והקריאה החוזרת onCleared() שהוא מקבל). (b/143911815)
  • עם ההשקה של ViewPager2 1.0.0, הוצאו משימוש המחלקות FragmentPagerAdapter ו-FragmentStatePagerAdapter ליצירת אינטראקציה עם ViewPager. אפשר לעיין במאמר העברה מ-ViewPager ל-ViewPager2. (b/145132715)

תיקוני באגים

  • כללי Fragment ProGuard שומרים עכשיו רק על בנאים (constructors) שמוגדרים כברירת מחדל במחלקות Fragment שנעשה בהן שימוש, ולא על כל המופעים של Fragment, וכך מתקנים באג שנוצר ב-Fragment 1.2.1. (b/149665169
  • הכללים של require___() Lint שנוספו ב-Fragment 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(), ומשקפת את ההתנהגות של מחזור החיים של המקטע. התכונה הזו הושקה בעבר ב-Fragment 1.3.0-alpha04. (b/154645875)
  • קריאה ל-setMenuVisibility(false) בקטע קוד משנה עכשיו את החשיפה של התפריטים שסופקו על ידי קטעי הקוד המשניים שלו. התכונה הזו הושקה בעבר ב-Fragment 1.3.0-alpha04. (b/153593580)

גרסה 1.2.4

גרסה 1.2.4

‫1 באפריל 2020

הגרסאות androidx.fragment:fragment:1.2.4,‏ androidx.fragment:fragment-ktx:1.2.4 וגם androidx.fragment:fragment-testing:1.2.4 יוצאות. גרסה 1.2.4 מכילה את השמירות האלה.

תיקוני באגים

  • עודכנו כללי ProGuard של Fragment כדי לאפשר טשטוש של פרגמנטים שנשמרו. (b/151605338)
  • השבתנו את כלל Lint‏ FragmentLiveDataObserve במחלקות DialogFragment כי מחזור החיים שלהן ומחזור החיים של התצוגה שלהן תמיד מסונכרנים, ולכן אפשר להשתמש ב-this או ב-viewLifecycleOwner כשקוראים ל-observe. (b/151765086)

גרסה 1.2.3

גרסה 1.2.3

‫18 במרץ 2020

הגרסאות androidx.fragment:fragment:1.2.3,‏ androidx.fragment:fragment-ktx:1.2.3 וגם androidx.fragment:fragment-testing:1.2.3 יוצאות. גרסה 1.2.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג ב-DialogFragment שגרם ל-StackOverflowError כשמתקשרים אל getLayoutInflater() מתוך onCreateDialog(). (b/117894767, aosp/1258665)
  • צמצמנו את ההיקף של כללי ProGuard הכלולים ב-Fragment כדי לוודא שאפשר להסיר מחלקות Fragment שלא נמצאות בשימוש. (b/149665169)
  • תוקנו תוצאות חיוביות שגויות בבדיקת UseRequireInsteadOfGet Lint כשמשתמשים בשם של משתנה מקומי שמוסתר על ידי שם המאפיין של Kotlin. (b/149891163)
  • ‫FragmentContainerView כבר לא יוצר UnsupportedOperationException אם נעשה שימוש ב-constructor שגוי בתצוגה המקדימה של הפריסה. (b/149707833)

גרסה 1.2.2

גרסה 1.2.2

‫19 בפברואר 2020

הגרסאות androidx.fragment:fragment:1.2.2,‏ androidx.fragment:fragment-ktx:1.2.2 וגם androidx.fragment:fragment-testing:1.2.2 יוצאות. גרסה 1.2.2 מכילה את השמירות האלה.

בדיקות Lint חדשות

  • ‫Lint מציע להשתמש ב-viewLifecycleOwner כ-LifecycleOwner לקריאות ל-OnBackPressedDispatcher ב-onCreateView(), ב-onViewCreated() וב-onActivityCreated(). (b/142117657)
  • נוסף בדיקת Lint חדשה שמאשרת שנעשה שימוש נכון ב-debugImplementation כשמשתמשים בארטיפקט fragment-testing. (b/141500106)
  • במקום checkNotNull(get___()), requireNonNull(get___()) או get___()!!, עכשיו מוצע להשתמש בשיטות require___() המשויכות לכל ממשקי ה-API של Fragment שכוללים גם get וגם מקבילה של require, כדי לקבל הודעות שגיאה תיאוריות יותר. (aosp/1202883)

תיקוני באגים

  • תוקנו קובצי Fragment ProGuard כדי למנוע אזהרות R8 ‏ (b/148963981)
  • שיפרנו את בדיקת ה-Lint הקיימת שמציעה להשתמש ב-viewLifecycleOwner כשמשתמשים ב-observe, כדי לטפל גם בגרסת ה-method של התוסף livedata-ktx של observe. (b/148996309)
  • תוקן העיצוב של הרבה בדיקות Lint (‏aosp/1157012)

תוכן חיצוני שהוסף

  • תודה ל-Zac Sweers על תרומתו לבדיקות require___() Lint בשם 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 מכילה את השמירות האלה.

תיקוני באגים

  • אם מוסיפים פרגמנטים באמצעות השיטות add ו-replace שמקבלות מופע Class (או את הגרסאות המוחשיות של Kotlin), ה-constructor שמוגדר כברירת מחדל נשמר על ידי ProGuard. (b/148181315)
  • הפונקציות FragmentStatePagerAdapter ו-FragmentPagerAdapter לא מאתרות יותר חריגים שמוחזרים על ידי FragmentManager כשמריצים את finishUpdate(). (aosp/1208711)
  • תוקנה בעיה שבה התג FragmentManager.findFragment() לא פעל עם פרגמנטים שהוספו באמצעות התג <fragment>. (b/147784323)
  • כשמשתמשים בפריסות, קטעי קוד שנוצרו באמצעות התג <fragment> תמיד מקבלים קריאה ל-onInflate() לפני onCreate(). (aosp/1215856)
  • הקריאה ל-toString() במופע FragmentManager כבר לא מחזירה NullPointerException כשהפעילות כבר הושמדה. (b/148189412)

שינויים בתלות

גרסה 1.2.0

גרסה 1.2.0

‫22 בינואר 2020

הגרסאות androidx.fragment:fragment:1.2.0,‏ androidx.fragment:fragment-ktx:1.2.0 וגם androidx.fragment:fragment-testing:1.2.0 יוצאות. גרסה 1.2.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.1.0

  • ‫FragmentContainerView: מומלץ מאוד להשתמש ב-FragmentContainerView כקונטיינר להוספה דינמית של Fragments, במקום להשתמש ב-FrameLayout או בפריסות אחרות. הוא תומך גם באותם פרמטרים class, android:name ובפרמטר האופציונלי android:tag כמו בתג <fragment>, אבל הוא משתמש ב-FragmentTransaction רגיל כדי להוסיף את הקטע הראשוני הזה, במקום בנתיב הקוד המותאם אישית שבו משתמש תג <fragment>.
  • onDestroyView() תזמון: עכשיו, קטעי קוד מחכים שאנימציות יציאה, מעברים של framework יציאה ומעברים של AndroidX יציאה (כשמשתמשים ב-Transition 1.3.0) יושלמו לפני שהם קוראים ל-onDestroyView().
  • מבוסס מחלקה add() ו-replace(): נוספו עומסים חדשים של add() ו-replace() ב-FragmentTransaction שמקבלים Class<? extends Fragment> ו-Bundle אופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactory כדי ליצור מופע של המקטע שרוצים להוסיף. בנוסף, הוספנו ל-fragment-ktx תוספים של Kotlin שמשתמשים בסוגים reified (כלומר, fragmentTransaction.replace<YourFragment>(R.id.container)).
  • ‫Lifecycle ViewModel SavedState Integration: SavedStateViewModelFactory הוא עכשיו הפקטורי שמוגדר כברירת מחדל כשמשתמשים ב-by viewModels(), ב-by activityViewModels(), בבונה ViewModelProvider או ב-ViewModelProviders.of() עם Fragment.
  • בדיקות Lint חדשות: נוספה בדיקת Lint חדשה שמוודאת שאתם משתמשים ב-getViewLifecycleOwner() כשאתם צופים ב-LiveData מ-onCreateView(), מ-onViewCreated() או מ-onActivityCreated().
  • הוצאה משימוש של getFragmentManager(): השיטות getFragmentManager() ו-requireFragmentManager() ב-Fragment הוצאו משימוש והוחלפו בשיטה אחת, getParentFragmentManager(), שמחזירה את הערך שאינו null‏ FragmentManager שאליו נוסף ה-Fragment (אפשר להשתמש ב-isAdded() כדי לקבוע אם אפשר לבצע את הקריאה בבטחה).
  • הוצאה משימוש של FragmentManager.enableDebugLogging(): השיטה הסטטית FragmentManager.enableDebugLogging הוצאה משימוש. החל מעכשיו, FragmentManager מכבד את Log.isLoggable() עבור התג FragmentManager, כך שאפשר להפעיל רישום ביומן של DEBUG או VERBOSE בלי לבצע קומפילציה מחדש של האפליקציה.

בעיות מוכרות

  • ‫ProGuard לא שומר באופן אוטומטי קטעי קוד שמפנים אליהם רק באמצעות המאפיין class או android:name ב-FragmentContainerView, ולכן צריך להוסיף ידנית כלל שמירה לכל מחלקה של קטע קוד. (b/142601969)
  • כשמוסיפים NavHostFragment באמצעות class או android:name ב-XML עם FragmentContainerView, אי אפשר להשתמש ב-findNavController() ב-onCreate() של הפעילות. (b/142847973)

גרסה ‎1.2.0-rc05

‫8 בינואר 2020

הגרסאות androidx.fragment:fragment:1.2.0-rc05,‏ androidx.fragment:fragment-ktx:1.2.0-rc05 וגם androidx.fragment:fragment-testing:1.2.0-rc05 יוצאות. גרסה ‎1.2.0-rc05 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה רגרסיה ב-Fragment 1.2.0-rc04 כשמשתמשים בתג <fragment> שגרמה לקריאה לא נכונה של onViewCreated() במהלך כיבוי סופי של פעילות. (b/146290333)
  • כשמוסיפים קטעים באמצעות התג <fragment>, הם נמחקים בצורה תקינה גם אם הם מופיעים בפריסה רק לפעמים (כלומר, רק בפריסה לרוחב). כתוצאה מכך, המקטעים האלה מועברים עכשיו בצורה נכונה אל CREATED גם אם הם לא בפריסה, במקום ליצור מופע שלהם אבל אף פעם לא להעביר אותם דרך שיטות מחזור החיים. (b/145769287)

גרסה ‎1.2.0-rc04

18 בדצמבר 2019

הגרסאות androidx.fragment:fragment:1.2.0-rc04,‏ androidx.fragment:fragment-ktx:1.2.0-rc04 וגם androidx.fragment:fragment-testing:1.2.0-rc04 יוצאות. גרסה ‎1.2.0-rc04 מכילה את השמירות האלה.

תיקוני באגים

  • התאמנו את האנימציות של TRANSIT_FRAGMENT_OPEN,‏ TRANSIT_FRAGMENT_CLOSE ו-TRANSIT_FRAGMENT_FADE כדי למנוע בעיות חזותיות. (b/145468417)

גרסה ‎1.2.0-rc03

4 בדצמבר 2019

הגרסאות androidx.fragment:fragment:1.2.0-rc03,‏ androidx.fragment:fragment-ktx:1.2.0-rc03 וגם androidx.fragment:fragment-testing:1.2.0-rc03 יוצאות. גרסה ‎1.2.0-rc03 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן שינוי התנהגות לא מכוון שבו מקטעים שהוסרו עדיין מוחזרים על ידי findFragmentById() / findFragmentByTag() בזמן שהאנימציות או המעברים שלהם פועלים. (b/143982969, ‏ aosp/1167585)
  • עכשיו, קטעי צאצא נעצרים בצורה נכונה לפני קטעי האב שלהם כשפעילות המכילה קוראת ל-onSaveInstanceState(). (b/144380645)
  • תוקנה בעיה שבה תצוגות סומנו באופן שגוי בסימן INVISIBLE אחרי הצגה של Fragment מוסתר. (b/70793925)
  • מעברים של רכיבים משותפים של Fragment מטפלים עכשיו בתצוגות שסובבו, שונו את הגודל שלהן וכו'. (b/142835261)

עדכונים במאמרי העזרה

  • הבהרנו את תיעוד הוצאת המוצר משימוש בנושא setUserVisibleHint(). (b/143897055)
  • שיפרנו את התיעוד בנושא setFragmentFactory() ו-getFragmentFactory() כדי להבהיר שהגדרת FragmentFactory תשפיע גם על FragmentManagers צאצאים. (aosp/1170095)

שינויים בתלות

  • ‫Fragments תלויים עכשיו ב-Lifecycle 2.2.0-rc03, ב-Lifecycle ViewModel SavedState 1.0.0-rc03 וב-Activity 1.1.0-rc03.

גרסה ‎1.2.0-rc02

‫7 בנובמבר 2019

הגרסאות androidx.fragment:fragment:1.2.0-rc02,‏ androidx.fragment:fragment-ktx:1.2.0-rc02 וגם androidx.fragment:fragment-testing:1.2.0-rc02 יוצאות. גרסה ‎1.2.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • ב-Kotlin, התיקון של Lint לשימוש ב-getViewLifecycleOwner() כשמבצעים מעקב אחרי LiveData מ-onCreateView(),‏ onViewCreated() או onActivityCreated() (הוצג ב-Fragment 1.2.0-rc01) משתמש עכשיו בתחביר של גישה למאפיינים ב-Kotlin‏ viewLifecycleOwner במקום ב-getViewLifecycleOwner(). (aosp/1143821)

גרסה ‎1.2.0-rc01

‫23 באוקטובר 2019

הגרסאות androidx.fragment:fragment:1.2.0-rc01,‏ androidx.fragment:fragment-ktx:1.2.0-rc01 וגם androidx.fragment:fragment-testing:1.2.0-rc01 יוצאות. גרסה ‎1.2.0-rc01 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentContainerView תומך עכשיו במאפיין class בנוסף למאפיין android:name, ומשקף את הפונקציונליות של תג <fragment>. (b/142722242)
  • נוסף בדיקת Lint חדשה שמוודאת שאתם משתמשים ב-getViewLifecycleOwner() כשאתם צופים ב-LiveData מ-onCreateView(), מ-onViewCreated() או מ-onActivityCreated(). (b/137122478)

תיקוני באגים

  • הקריאות החוזרות (callback) onDismiss ו-onCancel ב-DialogFragment מבטיחות עכשיו שהערך DialogInterface שמועבר אליהן לא יהיה null, ושהערך שמוחזר מ-getDialog() לא יהיה null כשהן מופעלות. (b/141974033)
  • ‫FragmentContainerView מוסיף עכשיו את ה-Fragment שהוגדר על ידי class או android:name כחלק מה-inflation, וכך מוודא ש-findFragmentById() ו-findFragmentByTag() יפעלו מיד לאחר מכן. (b/142520327)
  • תוקנה שגיאה IllegalStateException ב-FragmentContainerView בגלל שהמצב נשמר. (b/142580713)
  • תוקנה בעיה UnsupportedOperationException ב-FragmentContainerView כשהכיתה FragmentContainerView עוברת טשטוש. (b/142657034)

בעיות מוכרות

  • ‫ProGuard לא שומר באופן אוטומטי קטעי קוד שמפנים אליהם רק באמצעות המאפיין class או android:name ב-FragmentContainerView, ולכן צריך להוסיף ידנית כלל שמירה לכל מחלקה של קטע קוד. השבתנו את כלל ה-Lint שמציע לעבור אל FragmentContainerView עד שהבעיה הזו תיפתר באמצעות aapt2. (b/142601969)

גרסה ‎1.2.0-beta02

‫11 באוקטובר 2019

הגרסאות androidx.fragment:fragment:1.2.0-beta02,‏ androidx.fragment:fragment-ktx:1.2.0-beta02 וגם androidx.fragment:fragment-testing:1.2.0-beta02 יוצאות. גרסה ‎1.2.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שבה הרכיב Fragment‏ onInflate() לא קיבל מאפיינים מתאימים מ-FragmentContainerView, מה שגרם לבעיות במקרים כמו NavHostFragment. (b/142421837)

גרסה ‎1.2.0-beta01

‫9 באוקטובר 2019

הגרסאות androidx.fragment:fragment:1.2.0-beta01,‏ androidx.fragment:fragment-ktx:1.2.0-beta01 וגם androidx.fragment:fragment-testing:1.2.0-beta01 יוצאות. גרסה ‎1.2.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • ‫FragmentContainerView נוספה תמיכה בהוספת מקטע ראשוני עם תמיכה נוספת במאפייני ה-XML‏ android:name והאופציונלי android:tag. בניגוד לתג <fragment>, התג FragmentContainerView משתמש ב-FragmentTransaction רגיל מתחת לפני השטח כדי להוסיף את הפרגמנט הראשוני, וכך מאפשר לבצע פעולות נוספות של FragmentTransaction על FragmentContainerView וגם להשתמש ב-View Binding עבור הפריסה. (b/139830628, ‏ b/141177981)
  • הקטעים מכילים עכשיו אזהרת Lint שמציעה תיקון מהיר להחלפת <fragment> ב-FragmentContainerView. (b/139830056)

תיקוני באגים

  • תוקנה בעיה ב-ClassCastException כשמשתמשים ב-androidx.transition. (b/140680619)
  • כשמשתמשים ב-Transition 1.3.0-beta01, רכיבי Fragment ממתינים עכשיו לסיום המעברים של androidx.transition (בנוסף למעברים ולאנימציות של framework, שתוקנו ב-Fragment 1.2.0-alpha03 וב-Fragment 1.2.0-alpha02, בהתאמה) לפני שליחת onDestroyView(). (aosp/1119841)
  • כשמשתמשים ב-Transition 1.3.0-beta01, מעכשיו המערכת מבטלת מעברים של androidx.transition כמו שצריך לפני שהיא מתחילה מעברים או אנימציות חדשים באותו מאגר. (aosp/1119841)
  • תוקנה בעיה ב-API 17 ובגרסאות קודמות, שמתרחשת כשמשתמשים במעברים androidx.transition בתצוגת הבסיס של Fragment כשמשתמשים ב-FragmentContainerView. (b/140361893)
  • הארטיפקט fragment-testing תלוי עכשיו ב-AndroidX Test 1.2.0, וכך נפתרה בעיה של חוסר תאימות לגרסה האחרונה של Espresso 3.2.0. (b/139100149)
  • השימוש ב-Log.w הוסר ב-FragmentManager. (aosp/1126468)

בעיות מוכרות

  • המאפיינים של onInflate() Fragment לא מתקבלים מ-FragmentContainerView, ולכן יש מקרים שבהם לא ניתן להשתמש ב-NavHostFragment. (b/142421837)

גרסה ‎1.2.0-alpha04

‫18 בספטמבר 2019

הגרסאות androidx.fragment:fragment:1.2.0-alpha04,‏ androidx.fragment-ktx:example:1.2.0-alpha04 וגם androidx.fragment:fragment-testing:1.2.0-alpha04 יוצאות. גרסה ‎1.2.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • השיטות getFragmentManager() ו-requireFragmentManager() ב-Fragment הוצאו משימוש והוחלפו בשיטה אחת, getParentFragmentManager(), שמחזירה את FragmentManager שאינו null, שאליו נוסף ה-Fragment (אפשר להשתמש ב-isAdded() כדי לקבוע אם אפשר לבצע קריאה בבטחה). (b/140574496)
  • השיטה הסטטית FragmentManager.enableDebugLogging הוצאה משימוש. ה-FragmentManager מכבד עכשיו את Log.isLoggable() עבור התג FragmentManager, ומאפשר להפעיל רישום ביומן של DEBUG או VERBOSE בלי לבצע קומפילציה מחדש של האפליקציה. (aosp/1116591)

תיקוני באגים

  • הקטעים נהרסים עכשיו בצורה תקינה בזמן שאנימציות היציאה פועלות בקטעים אחרים. (b/140574199)
  • תוקנה בעיה שבה רכיבי Fragment קראו ל-Activity.findViewById() במקרים שבהם הם לא עשו זאת קודם. (aosp/1116431)

גרסה ‎1.2.0-alpha03

‫5 בספטמבר 2019

הגרסאות androidx.fragment:fragment:1.2.0-alpha03,‏ androidx.fragment:fragment-ktx:1.2.0-alpha03 וגם androidx.fragment:fragment-testing:1.2.0-alpha03 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים ב-API

  • המוצר FragmentContainerView נקרא עכשיו final. (b/140133091)

תיקוני באגים

  • FragmentContainerView הופכת עכשיו את סדר הציור בצורה נכונה כשמוציאים מקטעים (fragments) ממקבץ הפעילויות הקודמות (back stack). (b/139104187)
  • תוקנה בעיה שבה האנימציה הלא נכונה הופעלה כשגם הוצאתם פריט מהמחסנית וגם הוספתם פריט חדש בו-זמנית. (b/111659726)
  • הפרגמנטים ממתינים עכשיו לסיום המעברים (בנוסף לאנימציות, שהבעיה בהן נפתרה ב-Fragment 1.2.0-alpha02) לפני שליחת onDestroyView(). (b/138741697)

גרסה ‎1.2.0-alpha02

‫7 באוגוסט 2019

‫androidx.fragment:fragment:1.2.0-alpha02, ‏androidx.fragment:fragment-ktx:1.2.0-alpha02 וגם androidx.fragment:fragment-testing:11.2.0-alpha02. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • ‫SavedStateViewModelFactory היא עכשיו ברירת המחדל המקורית שמשמשת כשמשתמשים ב-by viewModels(), ב-by activityViewModels(), בבונה ViewModelProvider או ב-ViewModelProviders.of() עם Fragment. (b/135716331)
  • אנימציות ברירת המחדל כשמשתמשים ב-TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE עם setTransition ב-FragmentTransaction עודכנו כך שיתאימו לאנימציות שמשמשות פעילויות במכשירי Android 10. (aosp/1012812, aosp/1014730)

שינויים ב-API

  • הגרסה הזו כוללת את FragmentContainerView כקונטיינר מומלץ מאוד להוספה דינמית של Fragments, במקום השימוש ב-FrameLayout וכו', כי היא פותרת בעיות של סדר שכבות באנימציה ושליחה של חלונות שוליים ל-Fragments. (b/37036000, ‏ aosp/985243, ‏ b/136494650)
  • נוספה method סטטית FragmentManager.findFragment(View) לאחזור ה-Fragment שמכיל תצוגה שהורחבה על ידי Fragment. תוסף Kotlin זמין גם ב-fragment-ktx. (aosp/1090757)
  • נוספו עומסים חדשים של add() ו-replace() ב-FragmentTransaction שמקבלים Class<? extends Fragment> ו-Bundle אופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactory כדי ליצור מופע של המקטע שרוצים להוסיף. בנוסף, הוספנו ל-fragment-ktx תוסף Kotlin שמשתמש בסוגים מוחשיים (כלומר, fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987)
  • נוספו הערות @MainThread ל-callbacks של מחזור החיים Fragment. (b/127272564)
  • ממשקי ה-API שקשורים לכותרת של נתיב הניווט ב-FragmentTransaction וב-FragmentManager.BackStackEntry הוצאו משימוש. (b/138252944)
  • השיטה setTransitionStyle ב-FragmentTransaction הוצאה משימוש. (aosp/1011537)
  • הרבה מהשיטות ב-FragmentManager כבר לא abstract. הערך של FragmentManager נשאר abstract ואסור ליצור ממנו מופע ישירות או להרחיב אותו. צריך להמשיך לקבל רק מופע קיים מ-getSupportFragmentManager(), מ-getChildFragmentManager() וכו'.

תיקוני באגים

  • מתוך Fragment 1.1.0-rc04: מעברים שנדחו ב-Fragments מבוטלים עכשיו בצורה נכונה אחרי שבוצע pop ל-Fragments. (b/138251858)
  • ‫Fragment 1.1.0-rc03: תוקנה בעיה שבה קריאה ל-postponeEnterTransition() עם פסק זמן יותר מפעם אחת לא ביטלה את פסק הזמן הקודם. (b/137797118)
  • ‫Fragment 1.1.0-rc02: תוקן קריסה ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter כשמסירים את הפריט הנוכחי. (b/137209870)
  • עכשיו, רכיבי Fragment מחכים שאנימציות יסתיימו לפני שהם שולחים onDestroyView(). (b/136110528)
  • אנימציות של Fragment מ-child fragments ומצאצאיהם מטופלות עכשיו בצורה תקינה כשמפעילים אנימציה של ה-parent Fragment. (b/116675313)
  • תוקנה בעיה NullPointerException כשמשתמשים במעברים של רכיבים משותפים ומשלבים פעולת פתיחה ופעולת הוספה. (b/120507394)
  • נוסף פתרון עקיף ל-IllegalStateExceptions כשמשתמשים ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter בבדיקות Robolectric. (b/137201343)

גרסה ‎1.2.0-alpha01

‫2 ביולי 2019

הגרסאות androidx.fragment:fragment:1.2.0-alpha01,‏ androidx.fragment:fragment-ktx:1.2.0-alpha01 וגם androidx.fragment:fragment-testing:1.2.0-alpha01 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • הפונקציה FragmentManager קוראת עכשיו ל-requestApplyInsets() אחרי צירוף התצוגה של Fragment ולפני הקריאה ל-onViewCreated(), כדי לוודא שהתצוגה תמיד כוללת את השוליים הנכונים. (b/135945162)

תיקוני באגים

  • תוקן באג NullPointerException כשפותחים חלון קופץ של FragmentTransaction שהשתמש ב-setPrimaryNavigationFragment() לפני replace(). (b/134673465)

גרסה 1.1.0

גרסה 1.1.0

‫5 בספטמבר 2019

הגרסאות androidx.fragment:fragment:1.1.0,‏ androidx.fragment:fragment-ktx:1.1.0 וגם androidx.fragment:fragment-testing:1.1.0 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים חשובים מאז גרסה 1.0.0

  • ‫fragment-testing: ארטיפקט fragment-testing מספק מחלקה FragmentScenario לבדיקת קטע קוד בבידוד. פרטים נוספים מופיעים במאמרי העזרה בנושא בדיקת רכיבי Fragment באפליקציה.
  • ‫FragmentFactory: עכשיו אפשר להגדיר FragmentFactory ב-FragmentManager כדי לנהל את היצירה של מופעי fragment, וכך לא נדרש יותר קונסטרוקטור ללא ארגומנטים.
  • ‫Kotlin Property Delegates for ViewModels: ארטיפקט fragment-ktx מכיל עכשיו שני Kotlin property delegates: ‏ by viewModels() לגישה ל-ViewModels שמשויכים לפרגמנטים בודדים ו-by activityViewModels() לגישה ל-ViewModels שמוגדרים בהיקף הפעילות.
  • Max Lifecycle: עכשיו אפשר להגדיר מצב מחזור חיים מקסימלי ל-Fragment באמצעות קריאה ל-setMaxLifecycle() ב-FragmentTransaction. הדוח הזה מחליף את הדוח setUserVisibleHint() שהוצא משימוש. ל-FragmentPagerAdapter ול-FragmentStatePagerAdapter יש קונסטרוקטור חדש שמאפשר לעבור להתנהגות החדשה.
  • הבנאי FragmentActivity LayoutId: מחלקות משנה של FragmentActivity יכולות עכשיו לקרוא באופן אופציונלי לבנאי ב-FragmentActivity שמקבל מזהה R.layout, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView() ב-onCreate(). הפעולה הזו לא משנה את הדרישה שלמחלקת המשנה יהיה בנאי ללא ארגומנטים.
  • בונה Fragment LayoutId: מחלקות משנה של Fragment יכולות עכשיו לקרוא באופן אופציונלי לבונה ב-Fragment שמקבל מזהה R.layout, שמציין את הפריסה שצריך להשתמש בה בשבר הזה כחלופה לשינוי ברירת המחדל של onCreateView(). אפשר להגדיר את הפריסה המורחבת ב-onViewCreated().
  • דחייה עם פסק זמן: נוספה פונקציית עומס יתר חדשה postponeEnterTransition() שמקבלת פסק זמן.

גרסה ‎1.1.0-rc04

‫7 באוגוסט 2019

‫androidx.fragment:fragment:1.1.0-rc04, ‏androidx.fragment:fragment-ktx:1.1.0-rc04 וגם androidx.fragment:fragment-testing:1.1.0-rc04. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • עכשיו, אם קטעי קוד הוסרו, הם מבטלים נכון את המעברים שנדחו. (b/138251858)

גרסה ‎1.1.0-rc03

‫19 ביולי 2019

‫androidx.fragment:fragment:1.1.0-rc03, ‏androidx.fragment:fragment-ktx:1.1.0-rc03 וגם androidx.fragment:fragment-testing:1.1.0-rc03. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • תוקנה בעיה שבה קריאה ל-postponeEnterTransition() עם פסק זמן יותר מפעם אחת לא ביטלה את פסק הזמן הקודם. (b/137797118)

גרסה ‎1.1.0-rc02

‫17 ביולי 2019

הגרסאות androidx.fragment:fragment:1.1.0-rc02,‏ androidx.fragment:fragment-ktx:1.1.0-rc02 וגם androidx.fragment-testing:fragment:1.1.0-rc02 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • תוקנה קריסה ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter בזמן הסרת הפריט הנוכחי. (b/137209870)

גרסה ‎1.1.0-rc01

‫2 ביולי 2019

הגרסאות androidx.fragment:fragment:1.1.0-rc01,‏ androidx.fragment:fragment-ktx:1.1.0-rc01 וגם androidx.fragment:fragment-testing:1.1.0-rc01 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • החשיפה של פרגמנטים מתעדכנת עכשיו בצורה תקינה כשמשתמשים בפעולות show() או hide() בזמן שהמעבר פועל. (b/133385058)
  • תוקן באג NullPointerException כשפותחים חלון קופץ של FragmentTransaction שהשתמש ב-setPrimaryNavigationFragment() לפני replace(). (b/134673465)

גרסה ‎1.1.0-beta01

‫5 ביוני 2019

הגרסאות androidx.fragment:fragment:1.1.0-beta01,‏ androidx.fragment:fragment-ktx:1.1.0-beta01 וגם androidx.fragment:fragment-testing:1.1.0-beta01 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • androidx.lifecycle.Lifecycle שיחות חוזרות (שקשורות ספציפית ל-STARTED, ל-RESUMED, ל-PAUSED, ל-STOPPED ול-DESTROYED) עבור רכיבי Fragment מוטמעים מקוננים עכשיו בצורה נכונה. (b/133497591)
  • ‫OnBackPressedCallback instances שרשומים ב-onCreate() של Fragment מקבלים עכשיו עדיפות על פני child FragmentManager. (b/133175997)
  • פרגמנטים של ילדים לא מונפשים יותר כשמחליפים את פרגמנט האב שלהם. (b/121017790)
  • אנימציות ומעברים של Fragments מושבתים עכשיו כשמשתמשים ב-animateLayoutChanges="true", וכך נפתרה בעיה שבה Fragments לא נהרסו כמו שצריך. (b/116257087)

גרסה ‎1.1.0-alpha09

‫16 במאי 2019

הגרסאות androidx.fragment:fragment:1.1.0-alpha09,‏ androidx.fragment:fragment-ktx:1.1.0-alpha09 וגם androidx.fragment:fragment-testing:1.1.0-alpha09 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

שינויים ב-API

  • עכשיו, כשקטע הניווט הראשי משתנה, מתבצעת קריאה חוזרת (callback) לקטע חדש של onPrimaryNavigationFragmentChanged(boolean). aosp/960857

תיקוני באגים

  • פריטי תפריט שהורחבו על ידי Fragment צאצא מוסרים עכשיו בצורה נכונה כשמסירים את Fragment האב. b/131581013

גרסה ‎1.1.0-alpha08

‫7 במאי 2019

הגרסאות androidx.fragment:fragment:1.1.0-alpha08,‏ androidx.fragment:fragment-ktx:1.1.0-alpha08 וגם androidx.fragment:fragment-testing:1.1.0-alpha08 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

הגרסה הזו לא תואמת לגרסאות Preferences 1.1.0-alpha01 עד 1.1.0-alpha04. אם משתמשים בגרסה הזו של Fragments, צריך לשדרג לגרסה Preferences 1.1.0-alpha05.

תכונות חדשות

  • נוסף עומס יתר חדש של postponeEnterTransition() שמקבל ערך זמן קצוב לתפוגה, שאחריו ה-Fragment יקרא אוטומטית ל-startPostponedEnterTransition() b/120803208

שינויים ב-API

  • שינוי שעלול לשבור תאימות: הוסרה השיטה 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), התצוגה של רכיבי ה-Fragment מושמדת כמו שצריך. aosp/954180

גרסה ‎1.1.0-alpha07

25 באפריל 2019

הגרסאות androidx.fragment:fragment:1.1.0-alpha07,‏ androidx.fragment:fragment-ktx:1.1.0-alpha07 וגם androidx.fragment:fragment-testing:1.1.0-alpha07 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • עכשיו אפשר להגדיר מצב מחזור חיים מקסימלי ל-Fragment באמצעות קריאה ל-setMaxLifecycle() ב-FragmentTransaction. הדוח הזה מחליף את הדוח setUserVisibleHint() שהוצא משימוש. ל-FragmentPagerAdapter ול-FragmentStatePagerAdapter יש קונסטרוקטור חדש שמאפשר לעבור להתנהגות החדשה. (b/129780800)

שינויים ב-API

  • הקריאה ל-moveToState(STARTED) ב-FragmentScenario אפשרית עכשיו רק במכשירים עם API בגרסה 24 ומעלה. (b/129880016)

שינויים בהתנהגות

  • כתוצאה מ-(b/129907905), מקטעים במקבץ הפעילויות הקודמות (back stack) לא יקבלו קריאה חוזרת (callback) אל onCreateView() כשהפעילות המארחת נוצרת מחדש. מעכשיו, הפונקציה onCreateView() תופעל רק כשהמקטע (fragment) יהפוך לגלוי (כלומר, כשמתבצעת פעולת הוצאה ממקבץ פעילויות קודמות (back stack)).

תיקוני באגים

  • תוקנה בעיה שמתרחשת כשמשתמשים בתג <fragment> ב-XML ובבונה contentLayoutId של FragmentActivity או AppCompatActivity. (b/129907905)
  • תוקנה בעיה שבה מקטעים במקבץ פעילויות קודמות (back stack) לא הועברו לפחות אל CREATED אחרי שינוי בהגדרה, ולכן לא בוצע סילוק תקין של ViewModels ושל מקטעים צאצאים שנשמרו. (b/129593351)
  • תוקנה קריסה ב-restoreSaveState שנגרמה בגלל חוסר סנכרון של הפרגמנטים שנשמרו אחרי שמצב המופע נשמר. (b/130433793) (aosp/947824)
  • תוקנו בעיות שבהן קריאה ל-OnBackPressedCallback שנוסף עם מחזור חיים של fragment לא התבצעה אם ל-FragmentManager היה back stack. פרטים נוספים מופיעים במאמר בנושא androidx.activity 1.0.0-alpha07. (aosp/948209)
  • ב-Fragments, כבר לא נדרש LAYER_TYPE_HARDWARE לאנימציות. אם אתם צריכים אנימציה של שכבת חומרה, אתם צריכים להגדיר אותה כחלק מהאנימציה. (b/129486478)

גרסה ‎1.1.0-alpha06

‫3 באפריל 2019

הגרסאות androidx.fragment:fragment:1.1.0-alpha06,‏ androidx.fragment:fragment-ktx:1.1.0-alpha06 וגם androidx.fragment:fragment-testing:1.1.0-alpha06 יוצאות. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תכונות חדשות

  • החריגים שמוחזרים על ידי FragmentManager כוללים עכשיו את שם ה-Fragment בהודעה. (b/67759402)

שינויים ב-API

  • ‫Fragment ו-FragmentActivity מכילים עכשיו בנאי שני שמקבל @LayoutRes int, שמחליף את ההתנהגות הקודמת של הוספת הערה לכיתה באמצעות @ContentView. הגישה הזו פועלת גם במודולים של אפליקציות וגם במודולים של ספריות. (b/128352521)
  • הפונקציה onActivityResult() של FragmentActivity מסומנת עכשיו בצורה נכונה כ-@CallSuper. (b/127971684)
  • הוצאנו משימוש את השיטה instantiate של FragmentFactory שמקבלת Bundle של ארגומנטים, ואפליקציות צריכות להשתמש בעומס היתר החדש של instantiate שלא מקבל Bundle. (b/128836103)
  • השיטות FragmentScenario מתויגות עכשיו בצורה נכונה באמצעות @StyleRes. (aosp/924193)
  • האפשרות FragmentTabHost הוצאה משימוש. (b/127971835)
  • הפונקציה getThemedContext() של FragmentActivity הוסרה. (aosp/934078)

תיקוני באגים

  • תוקנה רגרסיה בגרסה 1.1.0-alpha05 שגרמה להבהוב של המקטע הנכנס במסך. (b/129405432)
  • תוקנה בעיה שבה קטע הניווט הראשי אבד אחרי סדרה של פעולות popBackStack+replace+popBackStack. (b/124332597)
  • תוקנה בעיה שהתרחשה כשמשתמשים בבוני @ContentView בפעילות כשמשחזרים את מצב הרכיב Fragment. (b/127313094)
  • תוקנה הלוגיקה של setTargetFragment() כשמחליפים מקטע יעד קיים במקטע שעדיין לא צורף ל-FragmentManager. (aosp/932156)

גרסה ‎1.1.0-alpha05

‫13 במרץ 2019

הגרסאות androidx.fragment:fragment:1.1.0-alpha05,‏ androidx.fragment:fragment-ktx:1.1.0-alpha05 וגם androidx.fragment:fragment-testing:1.1.0-alpha05 יוצאות. כאן אפשר למצוא את הרשימה המלאה של פעולות ה-commit שנכללות בגרסה הזו.

תכונות חדשות

  • @ContentView חיפושים של הערות נשמרים עכשיו במטמון (b/123709449)

שינויים בהתנהגות

  • התקשרות אל remove(), אל hide(), אל show(), אל detach() ואל setPrimaryNavigationFragment() עם Fragment שמצורף אל FragmentManager אחר, גורמת עכשיו להפעלת IllegalStateException במקום לכשל שקט (aosp/904301)

תיקוני באגים

  • הערך onNewIntent עבור FragmentActivity מסומן עכשיו בצורה נכונה באמצעות @CallSuper (b/124120586)
  • תוקנה בעיה שבה אפשר היה לקרוא ל-DialogFragment onDismiss() פעמיים כשמשתמשים ב-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 תלוי עכשיו בגרסה יציבה 1.1.0 של androidx.test:core-ktx (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 כדי לאחזר ViewModels שמשויכים לפעילות המכילה [b/119050253]
  • ההרחבה של by viewModels Kotlin property delegate מאפשרת להשתמש בשיטת lambda אופציונלית כדי לקבל את ViewModelStoreOwner, וכך להעביר את Fragment האב או ViewModelStoreOwner מותאם אישית אחר עם קוד כמו val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

שינויים ב-API

  • מעכשיו אפשר לציין עיצוב ב-FragmentScenario, כמו Theme.AppCompat [b/119054431]. זהו שינוי שעלול לשבור את התאימות לאחור.
  • נוספה שיטת requireView() שמחזירה @NonNull View או יוצרת IllegalStateException [b/120241368]
  • נוספה שיטת requireParentFragment() שמחזירה @NonNull Fragment או יוצרת IllegalStateException [b/112103783]

תיקוני באגים

  • תוקנה IllegalStateException: כשל בשמירת המצב b/120814739
  • כשמשחזרים רכיבי Fragment ממצב שמור של מופע, הם תמיד מקבלים עכשיו ערך שאינו null‏ Bundle [b/119794496]
  • אם מוסיפים מחדש קטעים שהוסרו, הם לא משתמשים יותר באובייקט Lifecycle שלהם [b/118880674]

גרסה ‎1.1.0-alpha02

‫3 בדצמבר 2018

תכונות חדשות

  • התוספים של Kotlin ל-FragmentScenario מאפשרים עכשיו להשתמש בביטוי למדא ליצירת Fragment, כחלופה להעברה של מופע FragmentFactory. (aosp/812913)

תיקוני באגים

  • תוקן IllegalStateException כשמשתמשים ב-Fragments מקוננים במקבץ פעילויות קודמות (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 חדשה לבדיקת רכיבי Fragment בבידוד.
  • עכשיו אפשר להגדיר FragmentFactory בכל FragmentManager כדי לשלוט באופן יצירת המופעים החדשים של Fragment.
  • נוסף נציג מאפיינים חדש של Kotlin‏ by viewModels() לאחזור ViewModel מ-Fragment.
  • אירועי קלט בהמתנה (כמו קליקים) מבוטלים עכשיו ב-onStop() של Fragment.

שינויים ב-API

  • הרחבנו באופן משמעותי את האנוטציות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) בממשק ה-API של Fragment.

תיקוני באגים

  • תוקנה בעיה שגרמה לכשל בפעולות של Fragment מתוך LiveData (b/77944637)

בעיות מוכרות

  • אי אפשר לגשת אל Target Fragments אחרי שמסירים Fragment מ-FragmentManager.
  • ‫fragment-testing תלוי ב-androidx.test:core:1.0.0-beta01 במקום ב-androidx.test:core:1.0.0 הנכון.