מקטע (fragment)

פילוח האפליקציה למספר מסכים עצמאיים שמתארחים בתוך Activity.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫13 באוגוסט 2025 1.8.9 - - -

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

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

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

Groovy

dependencies {
    def fragment_version = "1.8.9"

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

Kotlin

dependencies {
    val fragment_version = "1.8.9"

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

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

משוב

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

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

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

גרסה 1.8

גרסה 1.8.9

‫13 באוגוסט 2025

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

תיקוני באגים

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

גרסה 1.8.8

‫4 ביוני 2025

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

תיקוני באגים

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

גרסה 1.8.7

‫20 במאי 2025

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

תיקוני באגים

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

גרסה 1.8.6

‫12 בפברואר 2025

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

תיקוני באגים

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

גרסה 1.8.5

‫30 באוקטובר 2024

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

תיקוני באגים

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

גרסה 1.8.4

‫2 באוקטובר 2024

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

תיקוני באגים

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

גרסה 1.8.3

‫4 בספטמבר 2024

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

תיקוני באגים

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

גרסה 1.8.2

‫24 ביולי 2024

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

תיקוני באגים

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

גרסה 1.8.1

‫26 ביוני 2024

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

תיקוני באגים

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

גרסה 1.8.0

‫12 ביוני 2024

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

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

  • ארטיפקט fragment-compose מכיל עכשיו AndroidFragment Composable שמאפשר להוסיף מקטעים להיררכיית Compose באמצעות שם המחלקה של המקטע. הוא מטפל אוטומטית בשמירה ובשחזור של מצב ה-Fragment. השיטה הזו אמורה לשמש כתחליף ישיר לגישה המומלצת הקודמת לשימוש ב-AndroidViewBinding כדי להרחיב Fragment.
  • הקריאה החוזרת (callback) של onBackStackChangeCancelled בממשק של FragmentManager (OnBackStackChangedListener) מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager, ולכן היא מתבצעת בזמן שקרוב יותר לזמן של הקריאה החוזרת (callback) של onBackStackChangeCommitted.

גרסה ‎1.8.0-rc01

‫29 במאי 2024

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

תיקוני באגים

  • הקריאה החוזרת onBackStackChangeCancelled בממשק FragmentManagers OnBackStackChangedListener מופעלת עכשיו כחלק מהפעלת פעולות ב-FragmentManager, ולכן היא קרובה יותר לתזמון של הקריאה החוזרת onBackStackChangeCommitted. (I5ebfb, b/332916112)

גרסה ‎1.8.0-beta01

‫14 במאי 2024

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

תיקוני באגים

  • מתוך Fragment 1.7.1: מעכשיו, התכונה 'חזרה עם אנימציה' תפעל רק בעסקאות שבהן לכל הפרגמנטים יש Animator או 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 מכילה את השמירות האלה.

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

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

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

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

Fragment Compose Artifact

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

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

  class ExampleFragment : Fragment() {

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

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

גרסה ‎1.7.0-rc02

‫17 באפריל 2024

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

תיקוני באגים

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

גרסה ‎1.7.0-rc01

‫3 באפריל 2024

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

עדכון תלות

גרסה ‎1.7.0-beta01

‫20 במרץ 2024

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

שינויים ב-API

  • הפונקציה FragmentHostCallback נכתבת עכשיו ב-Kotlin, כך שהמאפיין המציין אם ערך יכול להיות ריק (nullability) של הסוג הגנרי של Host זהה למאפיין המציין אם ערך יכול להיות ריק של סוג ההחזרה של onGetHost(). (I40af5)

תיקוני באגים

  • תוקנה בעיה שבה כשמבצעים תנועת ניווט חזוי אחורה בקטע שלא נמצא במאגר, הקטע הזה לא נמחק לעולם. הקטע יועבר עכשיו באופן מיידי למצב הסופי. (Ida0d9)
  • תוקנה בעיה ב-Fragments שבה הפרעה למעברים נכנסים באמצעות חיזוי תנועת החזרה גרמה להרס התצוגה הנכנסת ולהצגת מסך ריק. (Id3f22, b/319531491)

גרסה ‎1.7.0-alpha10

‫7 בפברואר 2024

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

תיקוני באגים

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

גרסה ‎1.7.0-alpha09

‫24 בינואר 2024

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

Fragment Compose Artifact

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

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

class ExampleFragment : Fragment() {

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

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

תכונות חדשות

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

בעיה ידועה

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

גרסה ‎1.7.0-alpha08

‫10 בינואר 2024

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

פינוי נפח

גרסה ‎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, כל ViewModel של Fragment מוטבע ינוקה עכשיו כשמנקים את 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 מכילה את השמירות האלה.

תכונות חדשות

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

בעיות מוכרות

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

גרסה ‎1.7.0-alpha04

‫6 בספטמבר 2023

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

תיקוני באגים

  • תוקנה בעיה שבה ביטול של חיזוי תנועת החזרה גרם לכך שקטעים לא הגיעו למצב מחזור החיים הנכון. (I7cffe, ‏ b/297379023)
  • תוקנה רגרסיה שבה הופעלו אנימציות עם מעברים. (I59f36)
  • תוקנה בעיה שבה שימוש בתכונה 'חזרה עם חיזוי' עם מקטעים, שבה ניסיון לחזור פעמיים ברצף מהיר בקטע השני מהסוף במקבץ פעילויות קודמות (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 כדי להסיר קבוצה של רכיבי Fragment, הערכים של ViewModel של רכיבי Fragment מוטמעים ינוקו עכשיו כשערכי ViewModels של רכיב ה-Fragment הראשי ינוקו. (I6d83c, ‏ b/296173018)

גרסה 1.6.1

26 ביולי 2023

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

תיקוני באגים

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

עדכון תלות

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

גרסה 1.6.0

‫7 ביוני 2023

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

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

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

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

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

גרסה ‎1.6.0-rc01

‫10 במאי 2023

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

תיקוני באגים

  • תוקנה בעיה שגרמה לשליחת ActivityResult עם קוד בקשה שגוי כשבוצעו כמה בקשות startActivityForResult ברצף. (If0b9d, b/249519359)
  • תוקנה בעיה שבה קריאות חוזרות (callback) של onBackStackChangeListener נשלחו לעסקאות שלא שינו בפועל את מקבץ הפעילויות הקודמות (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 של commitNow(), executePendingTransactions() ו-popBackStackImmediate() עם @MainThread, כלומר עכשיו הם יקפיצו שגיאות build אם לא יתבצעו קריאות ל-API מה-Thread הראשי, במקום להמתין עד לכישלון בזמן הריצה. (Ic9665, ‏ b/236538905)

תיקוני באגים

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

גרסה ‎1.6.0-alpha08

‫22 במרץ 2023

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

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

  • התזמון של OnBackStackChangedListener.onBackStackChangeCommited callback שונה כך שהוא יופעל לפני הפעלת פעולות של מקטעים. כך אפשר לוודא שהקריאה החוזרת אף פעם לא תעביר קטע שנותק. (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 artifact מפריד את רשומות המניפסט משאר רכיבי הבדיקה של הפרגמנט. כלומר, אתם יכולים:
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 שגויים. (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() בקטעים במקבץ הפעילויות הקודמות (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 – ל-Fragment יש עכשיו אפשרות לספק ViewModelProvider.Factory בלי שמירת מצב דרך CreationExtras של Lifecycle 2.5.0.
  • שילוב של רכיבי דיאלוג – מעכשיו, 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 מותאם אישית, במקום להשתמש תמיד ב-factory של ה-fragment. ‫(I56170, b/214106513)
  • תוקנה קריסה שהתרחשה כשניסו לגשת אל ViewModel בפעם הראשונה מתוך קריאה חוזרת (callback) של registerForActivityResult() של Fragment. (Iea2b3)

גרסה 1.4

גרסה 1.4.1

‫26 בינואר 2022

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

תיקוני באגים

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

גרסה 1.4.0

17 בנובמבר 2021

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

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

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

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

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

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

Multiple back stacks

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

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

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

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

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

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

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

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

גרסה ‎1.4.0-rc01

‫3 בנובמבר 2021

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

גרסה ‎1.4.0-beta01

‫27 באוקטובר 2021

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

תיקוני באגים

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

גרסה ‎1.4.0-alpha10

‫29 בספטמבר 2021

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

Lint

  • נוספה DetachAndAttachFragmentInSameFragmentTransactionאזהרת lint לזיהוי קריאה גם ל-detach() וגם ל-attach() באותו Fragment באותו FragmentTransaction – מכיוון שהפעולות המשלימות האלה מבטלות זו את זו כשהן מתבצעות באותה עסקה, צריך לפצל אותן לעסקאות נפרדות כדי שהן יבצעו פעולה כלשהי. (aosp/1832956, b/200867930)
  • נוספה שגיאת ה-lint‏ FragmentAddMenuProvider לתיקון השימוש במחזור החיים של Fragment במחזור החיים של תצוגת Fragment כשמשתמשים ב-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)

תיקוני באגים

  • ‫From Fragment 1.3.5: Fixed a regression in shared element transitions introduced in Fragment 1.3.4 by aosp/1679887. מעכשיו, רכיבי Fragment מטפלים נכון בקבוצות מעבר (שמוגדרות ישירות באמצעות transitionGroup="true" או בעקיפין באמצעות transitionName או background), ורכיבים משותפים לא יגרמו יותר לשגיאות IndexOutOfBoundsException. (I16484, ‏ b/188679569, ‏ b/188969304)
  • האפליקציה FragmentManager לא תקרוס יותר כשמנסים להסתיר קטע שמוסר. (I573dd, b/183634730)
  • בדיקת ה-lint‏ OnCreateDialogIncorrectCallback לא תקרוס יותר כשמעריכים משתנה ברמה העליונה. (0a9efa, b/189967522)

גרסה ‎1.4.0-alpha02

‫2 ביוני 2021

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

תכונות חדשות

  • FragmentStrictMode תמיד יתעד הפרות אם הרישום ביומן מופעל דרך FragmentManager, ללא קשר למדיניות הנוכחית של המצב הקפדני שבה נעשה שימוש. (I02df6, ‏ b/187872638)
  • FragmentStrictMode תומך עכשיו בהחרגה של Fragment סוגים מסוימים של אחסון ממצב קפדני Violation, וכך מאפשר לסוג האחסון הזה לעקוף את העונשים. (Ib4e5d, b/184786736)

  • הרחבנו את המחלקה 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() שמחזיר את הפריט שהתווסף לאחרונה למאגר. הלוגיקה זהה ללוגיקה של findFragmentById() עם המזהה של FragmentContainerView, אבל אפשר לשרשר את הקריאה. ‫(Ife17a, ‏ b/162527857)

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

Multiple back stacks

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

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

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

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

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

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

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

Fragment StrictMode

ממשקי ה-API‏ FragmentStrictMode מספקים בדיקות בזמן ריצה שמאפשרות לכם לוודא שהאפליקציה או הספריות שאתם מסתמכים עליהן לא קוראות לממשקי API של קטעים שהוצאו משימוש. כשמזוהה הפרה, אפשר לבחור להדפיס הודעת יומן, להפעיל מאזין מותאם אישית משלכם או להקריס את האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy ששולט באילו בדיקות מופעלות ובאילו 'עונשים' מופעלים ב-FragmentManager באמצעות השיטה החדשה setStrictModePolicy(). המדיניות הזו חלה על FragmentManager וגם על כל מנהלי קטעי הילדים שלא מגדירים מדיניות ייחודית משלהם. (#123, #131, #150, b/143774122)

  • detectFragmentReuse() בודק אם מופע Fragment שהוסר בעבר מתווסף מחדש ל-FragmentManager. אסור לכם ליצור אינטראקציה עם מופע של Fragment או לשמור הפניה אליו אחרי שהוא נהרס והוסר מ-FragmentManager. (מס' 142, b/153738653)
  • detectFragmentTagUsage() מזהה מתי אתם משתמשים בתג <fragment> בפריסת ה-XML. תמיד צריך להשתמש ב-FragmentContainerView כשמנפחים פרגמנטים כחלק מהפריסה. (#141, b/153738235)
  • detectWrongFragmentContainer() מזהה כשמוסיפים פרגמנט למאגר שהוא לא FragmentContainerView. תמיד צריך להשתמש ב-FragmentContainerView כמאגר לרכיבי Fragment בפריסה. (מס' 146, ‏ b/181137036)
  • detectRetainInstanceUsage() מזהה מתי אתם משתמשים בממשקי ה-API ‏setRetainInstance() או getRetainInstance() שהוצאו משימוש. (מס' 140, b/153737954)
  • detectSetUserVisibleHint() מזהה מתי משתמשים ב-API ‏setUserVisibleHint() שהוצא משימוש. (#136, b/153738974)
  • detectTargetFragmentUsage() יזהה אם אתם משתמשים בממשקי ה-API ‏setTargetFragment(), ‏getTargetFragment() או getTargetRequestCode() שהוצאו משימוש. (#139, b/153737745)

שינויים ב-API

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

  • UseGetLayoutInflater בדיקת Lint מציגה עכשיו אזהרה כשמשתמשים ב-LayoutInflater.from(Context) בתוך DialogFragment – תמיד צריך להשתמש בשיטה getLayoutInflater() של קטע הדיאלוג כדי לקבל את הערך המתאים ל-LayoutInflater. (#156, b/170781346)
  • בדיקת DialogFragmentCallbacksDetector Lint מציגה עכשיו אזהרה כשקוראים ל-setOnCancelListener או ל-setOnDismissListener ב-method‏ onCreateDialog() של DialogFragment – הבעלות על מאזינים כאלה היא של DialogFragment עצמו, ועליכם להחליף את onCancel() ואת onDismiss() כדי לקבל את הקריאות החוזרות האלה. ‫(#171, ‏ b/181780047, ‏ b/187524311)

תיקוני באגים

  • ‫מ-Fragment 1.3.4: תוקנה רגרסיה שהוצגה ב-Fragment 1.3.3 כשמשתמשים ב-API‏ ViewTreeViewModelStoreOwner.get() עם ViewModelProvider או בשיטת Jetpack Compose‏ viewModel() בתוך Fragment. בתרחישי השימוש האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory שסופק על ידי Fragment אם הוא מחליף את getDefaultViewModelProviderFactory() (כמו במקרה של Fragments עם הערה @AndroidEntryPoint כשמשתמשים ב-Hilt). אם לא מבטלים את השיטה הזו, נוצרת SavedStateViewModelFactory ששומרת את המצב שלה ומשחזרת אותו לצד התצוגה של Fragment כברירת מחדל. (I5cbfa, ‏ b/186097368)
  • מ-Fragment 1.3.4: כשמשתמשים ב-FragmentContainerView ב-API 29, המרווחים הפנימיים לא נשלחים יותר ללא הגבלת זמן, וכך נפתרות בעיות שקשורות למופעים של BottomNavigationBar ו-FloatingActionButton. (I1bb78, b/186012452)
  • מגרסה Fragment 1.3.4: עכשיו אפשר לאחזר את ה-Parcelable מצרור התוצאות של ה-Fragment אחרי שהתהליך הסתיים. (I65932, ‏ b/187443158)
  • מ-Fragment 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם הערך של transitionGroup מוגדר כ-false ב-ViewGroup, המעבר יתבצע עכשיו בצורה תקינה. (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 תמיד מבטל את הנעילה של המצב השמור כפעולה הראשונה שלו ב-lifecycle callbacks שהוא מבטל. (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, יותר לא מתבצעת שליחה של insets ללא הגבלה, וכך נפתרות בעיות שקשורות למופעים של BottomNavigationBar ושל FloatingActionButton. (I1bb78, b/186012452)
  • עכשיו אפשר לאחזר את ה-Parcelable מחבילת התוצאות של ה-Fragment אחרי שהתהליך הסתיים. (I65932, ‏ b/187443158)
  • כשמבצעים מעבר של אלמנט משותף ב-ViewGroup, אם הערך של transitionGroup ב-ViewGroup מוגדר כ-false, המעבר יתבצע עכשיו בצורה תקינה. (I99675)

גרסה 1.3.3

21 באפריל 2021

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

תכונות חדשות

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

תיקוני באגים

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

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

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

גרסה 1.3.2

‫24 במרץ 2021

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

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

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

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

  • ה-Fragment תלוי עכשיו ב-Activity 1.2.2, ומתקן בעיה בבדיקת ה-lint של Activity כשמשתמשים ב-Fragment 1.3.1 ומעלה.InvalidFragmentVersionForActivityResult
  • ה-Fragment תלוי עכשיו ב-Lifecycle 2.3.1.

גרסה 1.3.1

10 במרץ 2021

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

תכונות חדשות

  • עכשיו לתיבות דו-שיח ב-DialogFragment יש גישה לבעלים של ViewTree דרך DecorView, וכך אפשר להשתמש ב-DialogFragment עם ComposeView. (Ib9290, ‏ b/180691023)

תיקוני באגים

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

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

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

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

גרסה 1.3.0

10 בפברואר 2021

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

שינויים משמעותיים מאז גרסה 1.2.0

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

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

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

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

    • FragmentScenario משתמשת עכשיו ב-setMaxLifecycle() כדי להטמיע את moveToState(), וכך מבטיחה התנהגות עקבית בכל רמות ה-API ומפרידה בין מצב ה-Fragment לבין הפעילות הבסיסית.
    • FragmentScenario תומך עכשיו בהגדרת Lifecycle.State ראשוני כדי לתמוך בהצהרה על מצב הפרגמנט לפני המעבר לכל Lifecycle.State בפעם הראשונה.
    • עכשיו יש חלופה ל-API‏ FragmentScenario של onFragment בצורה של שיטת ההרחבה המוחשית של Kotlin‏ withFragment שמאפשרת להחזיר ערך. חשוב לציין שהיא מעלה מחדש חריגים שנוצרו בבלוק הנתון.
  • ViewTree Support: 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 רגיל שלא נשמר, ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד. כך הם נמנעים ממקור נפוץ של דליפות, ועדיין יכולים ליהנות מהיתרונות של יצירה והרס יחידים של המצב שנשמר (כלומר, הקונסטרוקטור של ViewModel וקריאת החזרה (callback) של onCleared() שהוא מקבל).

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

גרסה ‎1.3.0-rc02

‫27 בינואר 2021

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

תיקוני באגים

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

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

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

גרסה ‎1.3.0-rc01

‫16 בדצמבר 2020

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

תיקוני באגים

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

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

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

גרסה ‎1.3.0-beta02

2 בדצמבר 2020

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

תכונות חדשות

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

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

  • אפשר להשתמש עכשיו ב-FragmentContainerViews שלא מבצעים ניפוח של fragment באמצעות המאפיין class או android:name מחוץ ל-FragmentActivity. (Id4397, b/172266337)
  • ניסיון להגדיר את משך החיים המקסימלי של פרגמנט ל-DESTROYED יגרום עכשיו להפעלת 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 מטמון של מחלקות fragment נשמר עכשיו בנפרד עבור מופעים שונים של ClassLoader. תודה, Simon Schiller! (#87, b/113886460)

גרסה ‎1.3.0-beta01

‫1 באוקטובר 2020

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

תכונות חדשות

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

שינויים ב-API

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

  • קבצי משאבים של 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

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

בעיה ידועה

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

גרסה ‎1.3.0-alpha08

‫19 באוגוסט 2020

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

New State Manager

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

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

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

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

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

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

תיקוני באגים

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

גרסה ‎1.3.0-alpha06

‫10 ביוני 2020

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

תכונות חדשות

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

תיקוני באגים

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

  • ב-setFragmentResult() API וב-setFragmentResultListener() API יש עכשיו Bundle ו-FragmentResultListener שאי אפשר להגדיר כ-null. כדי לנקות באופן מפורש תוצאה או מאזין שהוגדרו קודם, משתמשים בשיטות החדשות clearFragmentResult() ו-clearFragmentResultListener(). (b/155416778)
  • תוספי Kotlin שמקבלים lambda מסומנים עכשיו בסימן inline.setFragmentResultListener() (b/155323404)

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

  • startActivityForResult(),‏ startIntentSenderForResult() ו-requestPermissions שהוצאו משימוש ב-Fragment משתמשים עכשיו באופן פנימי ב-ActivityResultRegistry, ולכן אין יותר הגבלה על שימוש רק בביטים הנמוכים (מתחת ל-0xFFFF) עבור קודי הבקשות כשמשתמשים בממשקי ה-API האלה. (b/155518741)

עדכונים במסמכי התיעוד

  • הרחבנו את התיעוד בנושא בנאי המחלקות Fragment(@LayoutRes int) ו-DialogFragment(@LayoutRes int) כדי להבהיר שצריך לקרוא להם מבנאי המחלקות המשניות ללא ארגומנטים כשמשתמשים ב-FragmentFactory שמוגדר כברירת מחדל. (b/153042497)

גרסה ‎1.3.0-alpha04

29 באפריל 2020

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

תכונות חדשות

  • הוספנו תמיכה בהעברת תוצאות בין שני רכיבי Fragment באמצעות ממשקי API חדשים ב-FragmentManager. האפשרות הזו פועלת עבור רכיבי היררכיה (הורה/צאצא), DialogFragment ורכיבים ב-Navigation, ומבטיחה שהתוצאות יישלחו רק לרכיב בזמן שהוא לפחות STARTED. (b/149787344)

שינויים ב-API

  • ממשקי ה-API של קטע היעד הוצאו משימוש. כדי להעביר נתונים בין פרגמנטים, צריך להשתמש בממשקי ה-API החדשים של Fragment Result. (b/149787344)
  • ממשקי ה-API ‏startActivityForResult()/onActivityResult() ו-requestPermissions()/onRequestPermissionsResult() ב-Fragment הוצאו משימוש. צריך להשתמש ב-Activity Result APIs. (aosp/1290887)
  • שינוי שעלול לשבור תאימות מ-Activity 1.2.0-alpha04: השם של השיטה prepareCall() שונה ל-registerForActivityResult(). (aosp/1278717)

תיקוני באגים

  • הפעולה getViewLifecycleOwner() של המקטע נעצרת עכשיו לפני הקריאה ל-onSaveInstanceState(), ומשקפת את ההתנהגות של מחזור החיים של המקטע. (b/154645875)
  • הקריאה ל-setMenuVisibility(false) בקטע עכשיו משנה בצורה נכונה את החשיפה של התפריטים שסופקו על ידי קטעי הצאצא שלו. (b/153593580)
  • תוקנה בעיה שקשורה ל-illegalStateException כשמוסיפים 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)
  • ‫From Fragment 1.2.4: עודכנו כללי ProGuard של Fragment כדי לאפשר טשטוש של פרגמנטים שנשמרו. (b/151605338)
  • מתוך Fragment 1.2.4: השבתנו את כלל FragmentLiveDataObserve Lint בשיעורים 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, בנוסף לאספקת hooks לבדיקת הזרימות האלה. אפשר לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות. (b/125158199)

שינויים ב-API

  • DialogFragment מספק עכשיו constructor שמקבל @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 לכל Views שמוחזרים על ידי onCreateView(). (aosp/1182955)

שינויים ב-API

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

תיקוני באגים

  • כללי Fragment ProGuard שומרים עכשיו רק על בנאי ברירת המחדל של מחלקות 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)
  • השבתנו את כלל FragmentLiveDataObserve Lint בכיתות 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___()!!, עכשיו אפשר להשתמש ב-methods המשויכות require___() כדי לקבל הודעות שגיאה תיאוריות יותר בכל ממשקי ה-API של Fragment שכוללים גם get וגם מקבילה של require. (aosp/1202883)

תיקוני באגים

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

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

  • תודה ל-Zac Sweers על תרומתו לבדיקות Lint של require___() בשם Slack. (aosp/1202883)

גרסה 1.2.1

גרסה 1.2.1

5 בפברואר 2020

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

תיקוני באגים

  • ‫ProGuard שומר עכשיו את בנאי ברירת המחדל של רכיבי Fragment שנוספו באמצעות השיטות add ו-replace שמקבלות מופע Class (או את הגרסאות המוחשיות של Kotlin). (b/148181315)
  • הפונקציות FragmentStatePagerAdapter ו-FragmentPagerAdapter כבר לא מאתרות חריגים שמוחזרים על ידי FragmentManager כשמריצים את finishUpdate(). (aosp/1208711)
  • תוקנה הבעיה שבה התג FragmentManager.findFragment() לא פעל עם פרגמנטים שנוספו באמצעות התג <fragment>. (b/147784323)
  • כשמשתמשים בתג <fragment> כדי להרחיב Fragments, תמיד מתבצעת קריאה ל-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() תזמון: עכשיו, רכיבי Fragment מחכים שאנימציות היציאה, מעברי framework של יציאה ומעברי AndroidX של יציאה (כשמשתמשים ב-Transition 1.3.0) יושלמו לפני שהם קוראים ל-onDestroyView().
  • מבוסס מחלקה add() ו-replace(): נוספו עומסים חדשים של add() ו-replace() ב-FragmentTransaction שמקבלים Class<? extends Fragment> ו-Bundle אופציונלי של ארגומנטים. השיטות האלה משתמשות ב-FragmentFactory כדי ליצור מופע של המקטע שרוצים להוסיף. בנוסף, נוספו ל-fragment-ktx תוספי Kotlin שמשתמשים בסוגים מוחשיים (כלומר, fragmentTransaction.replace<YourFragment>(R.id.container)).
  • שילוב של מחזור החיים של ViewModel עם SavedState: SavedStateViewModelFactory הוא עכשיו פקטורי ברירת המחדל שמשמש כשמשתמשים ב-by viewModels(), ב-by activityViewModels(), בבונה ViewModelProvider או ב-ViewModelProviders.of() עם Fragment.
  • בדיקות Lint חדשות: נוספה בדיקת Lint חדשה שמוודאת שאתם משתמשים ב-getViewLifecycleOwner() כשאתם צופים ב-LiveData מ-onCreateView(), מ-onViewCreated() או מ-onActivityCreated().
  • הוצאה משימוש של getFragmentManager(): השיטות getFragmentManager() ו-requireFragmentManager() ב-Fragment הוצאו משימוש והוחלפו בשיטה אחת, getParentFragmentManager(), שמחזירה את FragmentManager שאינו null שאליו נוסף ה-Fragment (אפשר להשתמש ב-isAdded() כדי לקבוע אם אפשר לבצע את הקריאה בבטחה).
  • הוצאה משימוש של FragmentManager.enableDebugLogging(): השיטה הסטטית FragmentManager.enableDebugLogging הוצאה משימוש. החל מעכשיו, FragmentManager מכבד את Log.isLoggable() עבור התג FragmentManager, כך שאפשר להפעיל רישום ביומן של DEBUG או VERBOSE בלי לבצע קומפילציה מחדש של האפליקציה.

בעיות מוכרות

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

גרסה ‎1.2.0-rc05

8 בינואר 2020

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

תיקוני באגים

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

גרסה ‎1.2.0-rc04

18 בדצמבר 2019

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

תיקוני באגים

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

גרסה ‎1.2.0-rc03

4 בדצמבר 2019

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

תיקוני באגים

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

עדכונים במסמכי התיעוד

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

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

  • ‫Fragments תלויים עכשיו ב-Lifecycle 2.2.0-rc03, ב-Lifecycle ViewModel 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's onInflate() לא קיבל מאפיינים מתאימים מ-FragmentContainerView, מה שגרם לבעיות כמו NavHostFragment. (b/142421837)

גרסה ‎1.2.0-beta01

‫9 באוקטובר 2019

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

תכונות חדשות

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

תיקוני באגים

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

בעיות מוכרות

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

גרסה ‎1.2.0-alpha04

18 בספטמבר 2019

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

שינויים ב-API

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

תיקוני באגים

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

גרסה ‎1.2.0-alpha03

‫5 בספטמבר 2019

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

שינויים ב-API

  • השם של FragmentContainerView הוא עכשיו final. (b/140133091)

תיקוני באגים

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

גרסה ‎1.2.0-alpha02

‫7 באוגוסט 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה ‎1.2.0-alpha01

‫2 ביולי 2019

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

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.1.0

גרסה 1.1.0

‫5 בספטמבר 2019

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

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

  • fragment-testing: רכיב ה-fragment-testing מספק מחלקה FragmentScenario לבדיקת fragment בבידוד. פרטים נוספים מופיעים במסמכים בנושא בדיקת רכיבי Fragment באפליקציה.
  • FragmentFactory: עכשיו אפשר להגדיר FragmentFactory ב-FragmentManager כדי לנהל את היצירה של מופעי fragment, וכך לא נדרש יותר קונסטרוקטור ללא ארגומנטים.
  • Kotlin Property Delegates for ViewModels: ארטיפקט fragment-ktx מכיל עכשיו שני Kotlin property delegates: ‏ by viewModels() לגישה ל-ViewModels שמשויכים לפרגמנטים בודדים, ו-by activityViewModels() לגישה ל-ViewModels שמוגדרים בהיקף הפעילות.
  • מחזור חיים מקסימלי: עכשיו אפשר להגדיר מצב מחזור חיים מקסימלי ל-Fragment באמצעות קריאה ל-setMaxLifecycle() ב-FragmentTransaction. הדוח הזה מחליף את הדוח setUserVisibleHint() שהוצא משימוש. ל-FragmentPagerAdapter ול-FragmentStatePagerAdapter יש constructor חדש שמאפשר לעבור להתנהגות החדשה.
  • ה-constructor‏ FragmentActivity LayoutId: מחלקות משנה של FragmentActivity יכולות עכשיו לקרוא באופן אופציונלי ל-constructor ב-FragmentActivity שמקבל מזהה R.layout, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView() ב-onCreate(). זה לא משנה את הדרישה שלמחלקת המשנה יהיה בנאי ללא ארגומנטים.
  • בונה Fragment LayoutId: מחלקות משנה של 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 שנרשמו ב-onCreate() של Fragment מקבלים עכשיו עדיפות על פני FragmentManager של צאצא. (b/133175997)
  • פרגמנטים של ילדים לא מונפשים יותר כשהפרגמנט של ההורה מוחלף. (b/121017790)
  • עכשיו המערכת מתעלמת מהנפשות וממעברים של רכיבי Fragment כשמשתמשים ב-animateLayoutChanges="true", וכך נפתרה בעיה שבה רכיבי Fragment לא נהרסו כמו שצריך. (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 יש constructor חדש שמאפשר לעבור להתנהגות החדשה. (b/129780800)

שינויים ב-API

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

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

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

תיקוני באגים

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

גרסה ‎1.1.0-alpha05

‫13 במרץ 2019

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

תכונות חדשות

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

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

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

תיקוני באגים

  • onNewIntent עבור FragmentActivity מסומן עכשיו בצורה נכונה עם @CallSuper (b/124120586)
  • תוקנה בעיה שבה אפשר היה לקרוא ל-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 now depends on androidx.test:core-ktx 1.1.0 stable (b/121209673)
  • עכשיו אפשר להשתמש ב-openActionBarOverflowOrOptionsMenu עם FragmentScenario כדי לבדוק תפריטי אפשרויות שמתארחים ב-Fragment (b/121126668)

שינויים ב-API

  • נוספה שיטת requireArguments() שמחזירה @NonNull Bundle או יוצרת IllegalStateException (b/121196360)
  • הוספנו הערה שלפיה אין לעקוף את getLifecycle(), את getViewLifecycleOwner() ואת getViewLifecycleOwnerLiveData(), והם יהפכו לסופיים בגרסה עתידית. אם אתם משתמשים כרגע בשיטה הזו, אנא הגישו בקשה להוספת תכונה. (aosp/880714)
  • הוספנו הערה שלפיה אין לעקוף את getViewModelStore(), והוא יהפוך לסופי בגרסה עתידית. אם אתם משתמשים כרגע בשיטה הזו, אנא הגישו בקשה להוספת תכונה. (aosp/880713)
  • תוקנה בעיה בתאימות בינארית לגרסאות קודמות של Fragments. (aosp/887877) (aosp/889834)

תיקוני באגים

  • כשמעבירים את null אל setTargetFragment(), קטעי היעד נמחקים בצורה נכונה. (aosp/849969)
  • תוקנה הבעיה שבה לפעמים לא היו זמינים רכיבי Target Fragment בגרסה onDestroy() או אחרי הגרסה הזו. (b/122312935)
  • השיטה onDismiss()‎ של DialogFragment מופעלת עכשיו לפני onDestroy(). (aosp/874133) (aosp/890734)

גרסה ‎1.1.0-alpha03

‫17 בדצמבר 2018

תכונות חדשות

  • ה-Fragment כולל עכשיו את BundleSavedStateRegistryOwner ותלוי בספריית SavedState החדשה [aosp/824380]
  • נוסף נציג מאפיין של Kotlin כדי לאחזר ViewModels שמשויכים לפעילות המכילה [b/119050253]by activityViewModels
  • ההרשאה by 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: Failure saving state b/120814739
  • קטעי קוד שמשוחזרים ממצב שמור של מופע תמיד יקבלו עכשיו ערך שאינו 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 artifact ושל FragmentScenario שמבוססת על ממשקי ה-API של androidx.test:core. פרטים נוספים זמינים במאמרי העזרה בנושא בדיקת קטעים.

תכונות חדשות

  • מחלקת FragmentScenario חדשה לבדיקת רכיבי Fragment בבידוד.
  • עכשיו אפשר להגדיר FragmentFactory בכל FragmentManager כדי לשלוט באופן יצירת המופעים החדשים של Fragment.
  • נוסף נציג מאפיינים חדש של Kotlin‏ by viewModels() לאחזור ViewModel מ-Fragment.
  • אירועי קלט בהמתנה (כמו קליקים) מבוטלים עכשיו ב-onStop() של Fragment.

שינויים ב-API

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

תיקוני באגים

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

בעיות מוכרות

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