מקטע (fragment)

פלח את האפליקציה שלך למספר מסכים עצמאיים המתארחים בפעילות.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
4 בספטמבר 2024 1.8.3 - - -

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

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

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

Groovy

dependencies {
    def fragment_version = "1.8.3"

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

Kotlin

dependencies {
    val fragment_version = "1.8.3"

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

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

משוב

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

דיווח על בעיה חדשה

מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.

גרסה 1.8

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

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

גרסה 1.8.0-rc01

29 במאי 2024

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

תיקוני באגים

  • הקריאה החוזרת (callback) של onBackStackChangeCancelled בממשק FragmentManagers OnBackStackChangedListener מופעלת עכשיו כחלק מביצוע פעולות ב-FragmentManager, ומקרבת אותו לתזמון של הקריאה החוזרת של 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: המערכת החזויה תפעל מעכשיו רק עבור טרנזקציות שבהן בכל המקטעים יש אנימטור או מעבר Androidx שניתן לבצע בו חיפוש. כך ניתן לפתור בעיה שבה ביטול עסקה שבוצע באופן חלקי יגרום להצגת מסך שחור. (I43037, b/339169168)

גרסה 1.8.0-alpha02

17 באפריל 2024

androidx.fragment:fragment-*:1.8.0-alpha02 משוחרר. גרסה 1.8.0-alpha02 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.8.0-alpha01

3 באפריל 2024

androidx.fragment:fragment-*:1.8.0-alpha01 משוחרר. גרסה 1.8.0-alpha01 מכילה את התחייבויות אלה.

תכונות חדשות

  • הגרסה החדשה, AndroidFragment, Composable, מאפשרת להוסיף מקטעים להיררכיה של הכתיבה דרך שם המחלקה של המקטעים. הוא מטפל באופן אוטומטי בשמירה ובשחזור של מצב המקטע. אפשר להשתמש בו כתחליף ישיר ל-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 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 1.7.0

1 במאי 2024

androidx.fragment:fragment-*:1.7.0 משוחרר. גרסה 1.7.0 כוללת את ההתחייבויות האלה.

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

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

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

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

Artifact Compose Compose

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

התכונה הראשונה שזמינה בארטיפקט החדש הזה היא שיטת תוסף מסוג 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 כך שיכולת ה-null של הסוג הגנרי של ה-host (מארח) תואמת ליכולת ה-null של סוג המוחזר מ-onGetHost(). (I40af5)

תיקוני באגים

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

גרסה 1.7.0-alpha10

7 בפברואר 2024

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

תיקוני באגים

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

גרסה 1.7.0-alpha09

24 בינואר 2024

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

Artifact Compose Compose

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

התכונה הראשונה שזמינה בארטיפקט החדש הזה היא שיטת תוסף מסוג 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', המערכת תשלוף 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/exitמעבר. (I8472b)
  • ממקטע 1.6.2: כאשר המקטע של FragmentContainerView מנופח, המצבים שלו כגון FragmentManager, מארח ומזהה נגישים עכשיו בקריאה החוזרת של onInflate. (I1e44c, b/307427423)
  • ממקטע 1.6.2: בעת שימוש ב-clearBackStack כדי להסיר קבוצת מקטעים, ViewModel של מקטע מקונן יימחק עכשיו כאשר ה-ViewModels של שבר ההורה יוסר. (I6d83c, b/296173018)

גרסה 1.7.0-alpha06

4 באוקטובר 2023

androidx.fragment:fragment-*:1.7.0-alpha06 משוחרר. גרסה 1.7.0-alpha06 מכילה את התחייבויות אלה.

עדכון לגבי תלות

  • מקטעים עודכנו בהתאם ל-API החדש של animateToStart שנוסף במעבר 1.5.0-alpha04.

גרסה 1.7.0-alpha05

20 בספטמבר 2023

androidx.fragment:fragment-*:1.7.0-alpha05 משוחרר. גרסה 1.7.0-alpha05 מכילה את התחייבויות אלה.

תכונות חדשות

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

בעיות מוכרות

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

גרסה 1.7.0-alpha04

6 בספטמבר 2023

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

תיקוני באגים

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

גרסה 1.7.0-alpha03

23 באוגוסט 2023

androidx.fragment:fragment-*:1.7.0-alpha03 משוחרר. גרסה 1.7.0-alpha03 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.7.0-alpha02

9 באוגוסט 2023

androidx.fragment:fragment-*:1.7.0-alpha02 משוחרר. גרסה 1.7.0-alpha02 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.7.0-alpha01

7 ביוני 2023

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

תכונות חדשות

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

גרסה 1.6

גרסה 1.6.2

1 בנובמבר 2023

androidx.fragment:fragment-*:1.6.2 משוחרר. גרסה 1.6.2 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 1.6.1

26 ביולי 2023

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

תיקוני באגים

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

עדכון לגבי תלות

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

גרסה 1.6.0

7 ביוני 2023

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

שינויים חשובים מאז 1.5.0

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

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

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

גרסה 1.6.0-rc01

10 במאי 2023

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

תיקוני באגים

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

תיקוני באגים

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

גרסה 1.6.0-alpha08

22 במרץ 2023

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

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

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

תיקוני באגים

  • ממקטע 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 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.6.0-alpha06

22 בפברואר 2023

androidx.fragment:fragment-*:1.6.0-alpha06 משוחרר. גרסה 1.6.0-alpha06 מכילה את התחייבויות אלה.

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

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

גרסה 1.6.0-alpha05

8 בפברואר 2023

androidx.fragment:fragment-*:1.6.0-alpha05 משוחרר. גרסה 1.6.0-alpha05 מכילה את התחייבויות אלה.

תכונות חדשות

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

שינויים ב-API

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

גרסה 1.6.0-alpha04

7 בדצמבר 2022

androidx.fragment:fragment-*:1.6.0-alpha04 משוחרר. גרסה 1.6.0-alpha04 מכילה את התחייבויות אלה.

תכונות חדשות

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

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

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

שינויים ב-API

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

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

תיקוני באגים

  • ממקטע 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 יידרשו עכשיו להפעיל Supers בביטולים של onDismiss(). (I14798, b/238928865)

תיקוני באגים

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

גרסה 1.6.0-alpha02

24 באוגוסט 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 ו-androidx.fragment:fragment-testing:1.6.0-alpha02 שוחררו. גרסה 1.6.0-alpha02 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.6.0-alpha01

27 ביולי 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 ו-androidx.fragment:fragment-testing:1.6.0-alpha01 שוחררו. גרסה 1.6.0-alpha01 מכילה את התחייבויות אלה.

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

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

תיקוני באגים

  • ממקטע 1.5.1: תיקון רגרסיה ב-DialogFragmentCallbacksDetector שבה שימוש בגרסת איתור השגיאות בקוד בחבילה עם AGP 7.4 יגרום לקריסה של איתור שגיאות בקוד. (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 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תוקנה בעיה שבה הסרה של מקטע כלשהו, בין אם נוספו לו פריטים בתפריט ובין אם לא, תבטל את תוקף התפריט של הפעילות. (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 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 1.5.2

10 באוגוסט 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 ו-androidx.fragment:fragment-testing:1.5.2 שוחררו. גרסה 1.5.2 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

גירסה 1.5.1

27 ביולי 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 ו-androidx.fragment:fragment-testing:1.5.1 שוחררו. גרסה 1.5.1 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תיקון רגרסיה ב-DialogFragmentCallbacksDetector שבה שימוש בגרסת איתור השגיאות בקוד שכלול בחבילה עם AGP 7.4 יגרום לקריסת איתור שגיאות בקוד. (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

  • שילוב של CreationExtrasFragment יכול עכשיו לספק ViewModelProvider.Factory ללא שמירת מצב דרך CreationExtras של מחזור חיים 2.5.0.
  • שילוב של תיבת דו-שיח של רכיב – ב-DialogFragment נעשה עכשיו שימוש ב-ComponentDialog דרך פעילות 1.5.0 כתיבת הדו-שיח שמוגדרת כברירת מחדל שמוחזרת על ידי onCreateDialog().
  • Saved Instance State Refactoring – מקטעים התחילו לשנות את האופן שבו הם שומרים את מצב המכונה שלהם. המטרה היא לזהות בבירור איזה מצב נשמר בקטע ומה המקור של המדינה. השינויים הנוכחיים כוללים:
    • עכשיו מצב המכונה FragmentManager נשמר ב-Bundle במקום ישירות ב-Parcelable בהתאמה אישית.
    • תוצאות שהוגדרו דרך Fragment Result APIs שעדיין לא נשלחו נשמרות עכשיו בנפרד מהמצב הפנימי של FragmentManager.
    • המצב שמשויך לכל מקטע נשמר עכשיו בנפרד מהמצב הפנימי של FragmentManager. כך אפשר להתאים בין כמות המצבים השמורים שמשויכים למקטע יחיד לבין המזהים הייחודיים שמופיעים ביומן ניפוי הבאגים של Fragment.

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

  • ב-FragmentStrictMode יש עכשיו אפשרות למקטעים פרטיים של צד שלישי לעקוף עונשים ספציפיים על הפרות באמצעות שימוש ב-allowViolation() עם שם המחלקה.
  • הוצאנו משימוש את ממשקי ה-API של Fragment שמספקים תפריט ל-ActionBar של הפעילות. ממשקי ה-API MenuHost ו-MenuProvider שנוספו בפעילות 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 מכילה את ההתחייבויות האלה.

ארגון מחדש של מצב המכונות השמורות

גרסה 1.5.0-beta01

20 באפריל 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 ו-androidx.fragment:fragment-testing:1.5.0-beta01 שוחררו. גרסה 1.5.0-beta01 מכילה את התחייבויות אלה.

שינויים ב-API

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

ארגון מחדש של מצב המכונות השמורות

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

גרסה 1.5.0-alpha05

6 באפריל 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 ו-androidx.fragment:fragment-testing:1.5.0-alpha05 שוחררו. גרסה 1.5.0-alpha05 מכילה את התחייבויות אלה.

שינויים ב-API

גרסה 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 של הפעילות הוצאו משימוש, כי הם מקרבים בצורה הדוקה את המקטע לפעילות שלכם, ואי אפשר לבדוק אותם בנפרד. ממשקי ה-API MenuHost ו-MenuProvider שנוספו בפעילות 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)

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

  • DialogFragment משתמש עכשיו ב-ComponentDialog כברירת המחדל תיבת הדו-שיח הוחזרה על ידי onCreateDialog(). (If3784, b/217618170)

גרסה 1.5.0-alpha02

9 בפברואר 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 ו-androidx.fragment:fragment-testing:1.5.0-alpha02 שוחררו. גרסה 1.5.0-alpha02 מכילה את התחייבויות אלה.

תכונות חדשות

  • ב-FragmentStrictMode יש עכשיו אפשרות למקטעים פרטיים של צד שלישי לעקוף עונשים ספציפיים על הפרות באמצעות שימוש ב-allowViolation() עם שם המחלקה. (I8f678)

גרסה 1.5.0-alpha01

26 בינואר, 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 ו-androidx.fragment:fragment-testing:1.5.0-alpha01 שוחררו. גרסה 1.5.0-alpha01 מכילה את התחייבויות אלה.

תכונות חדשות

תיקוני באגים

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

גרסה 1.4

גרסה 1.4.1

26 בינואר, 2022

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

תיקוני באגים

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

גרסה 1.4.0

17 בנובמבר 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 ו-androidx.fragment:fragment-testing:1.4.0 שוחררו. גרסה 1.4.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.3.0

  • ממשקי ה-API של FragmentStrictMode מספקים בדיקות זמן ריצה שמאפשרות לוודא שהאפליקציה או הספריות שתלויות בהן לא קריאות לממשקי API עם מקטעים שהוצאו משימוש. כשמזוהה הפרה, אתם יכולים להדפיס הודעה ביומן, להפעיל האזנה מותאמת אישית או לקרוס את האפליקציה. אפשר להגדיר את FragmentStrictMode.Policy שקובעת אילו בדיקות מופעלות ואילו 'עונשים' יופעלו בFragmentManager באמצעות השיטה setStrictModePolicy() החדשה. המדיניות הזו חלה על FragmentManager ובאופן מעבר על מנהלי מקטעים צאצא שלא הגדירו מדיניות ייחודית משלהם. פרטים נוספים זמינים במאמר StrictMode למקטעים.
  • FragmentContainerView מספקת עכשיו שיטה 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} כדי לציין אם להפעיל את האנימציה הרגילה של העברת הפעילות, שנלקחה מהעיצוב במעבר מקטעים.

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

ריבוי מקבצים

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

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

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

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

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

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

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

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

גרסה 1.4.0-rc01

3 בנובמבר 2021

androidx.fragment:fragment:1.4.0-rc01 הופץ ללא שינויים ממקטע 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)
  • המקלדת תיסגר עכשיו באופן אוטומטי כשיוצאים מ: מקטע עם מקלדת פתוחה למקטע עם תצוגת recycler. (I8b842, b/196852211)
  • עכשיו משתמש DialogFragment setReorderingAllowed(true) לכל העסקאות הוא נוצר כשמתקשרים אל show(), showNow(), או dismiss(). (Ie2c14)
  • האזהרה הארוכה מאוד של איתור שגיאות בקוד של 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 מכילה את התחייבויות אלה.

איתור שגיאות בקוד

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

תיקוני באגים

  • תוקנה בעיה שבה מצב מקטע שנוסף באמצעות 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 כדי לטפל טוב יותר בסוגריים מיותרים. (I2d865)
  • שיפרנו את בדיקת איתור השגיאות בקוד של UseGetLayoutInflater כדי לטפל במקרי קצה נוספים. (Ie5423)

גרסה 1.4.0-alpha07

18 באוגוסט 2021

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

גרסה 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 מכילה את התחייבויות אלה.

תיקוני באגים

  • ממקטע 1.3.6: תצוגת המקטע מוגדרת עכשיו כראוי ל-GONE בעת השימוש ב-hide() כאשר תצוגת הבסיס היא transitionGroup=”true”. (aosp/1766655, b/193603427)
  • ממקטע 1.3.6: עכשיו FragmentActivity תמיד מבטל את הנעילה את המצב השמור כפעולה הראשונה במחזור החיים שהוא מבטל את הקריאה החוזרת (callback) שלו. (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 כדי לשמור את המצב שלה. גם השיטות saveAllState() ו-restoreSavedState() הוצאו משימוש ב-FragmentController. אם משתמשים ב-FragmentController כדי לארח מקטעים מחוץ ל-FragmentActivity, צריך להטמיע את ה-FragmentHostCallbacks SavedStateRegistryOwner (Iba68e, b/188734238)

תיקוני באגים

  • תוקנה בעיה שבה השיחה אל saveBackStack() כחלק מתמיכה בריבוי גיבויים מקבצים ייכשלו כשהם ייכשלו באותו זמן הרצת FragmentTransaction עם replace(). (I73137)
  • תוקן NullPointerException יתרחשו לאחר שחזור ידני של קובץ שמור מקבץ חוזר שהכיל כמה עסקאות כשמשתמשים ב-API של restoreBackStack() כדי תמיכה בכמה אשכולות מסוג backStack. הבעיה נפתרה גם בעיה שבה setReorderingAllowed(true) לא נבדקה עבור כל העסקאות. I8c593
  • תוקנה בעיה שבה FragmentManager המשך שגוי בשחזור המצב שנשמר בעבר של מקטעים גם אחרי שהמקטעים האלה הוסרו מה-FragmentManager, וכתוצאה מכך נוצר המצב שנשמר והם גדלים כל הזמן עם הזמן. (I1fb8e)

גרסה 1.4.0-alpha03

16 ביוני 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 ו-androidx.fragment:fragment-testing:1.4.0-alpha03 שוחררו. גרסה 1.4.0-alpha03 מכילה את התחייבויות אלה.

תכונות חדשות

  • כל המחלקות Fragment StrictMode Violation עודכנו עם הודעות שגיאה מפורטות יותר שמסבירות את פרטי ההפרה. (b/187871638)
    • FragmentTagUsageViolation מכיל עכשיו יותר הודעת שגיאה מפורטת שמכילה את מאגר ההורה שהקטע יתווסף אליו. (Ic33a7)
    • ב-WrongFragmentContainerViolation יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את המאגר נוסף אל הקטע. (Ib55f8)
    • מחלקות התרחישים לדוגמה של TargetFragmentUsageViolation עכשיו יש הודעות שגיאה מפורטות יותר, כדי לכלול את המקטע שגורמת להפרה, ולכל מידע אחר שנכלל בה. (Icc6ac)
    • הכיתות בהיקף RetainInstanceUsageViolation עכשיו יש הודעות שגיאה מפורטות יותר שכוללות את המקטע שגורמת להפרה. (I6bd55)
    • ב-FragmentReuseViolation יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את המזהה של המקטע. (I28ce2)
    • ב-SetUserVisibleHintViolation יש עכשיו יותר הודעת שגיאה מפורטת שכוללת את מה שהמשתמש הוגדר הרמז הגלוי. (Ib2d5f)

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

  • ההגבלה על התקשרות אל fitsSystemWindows במכשיר FragmentContainerView בוטלה – הפעולה הזו לא גורמת יותר לקריסת האפליקציה. (6b8ddd, b/190622202)

תיקוני באגים

  • מ-Fragment 1.3.5: תוקנה רגרסיה במעברים של רכיבים משותפים שנוספו ל-Fragment 1.3.4 על ידי aosp/1679887. מקטעים מטפלים עכשיו בצורה נכונה בקבוצות מעבר (מוגדרות ישירות דרך transitionGroup="true" או בעקיפין דרך transitionName או background) וגם רכיבים משותפים לא יגרמו יותר ל-IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
  • FragmentManager לא יקרוס יותר כשתנסו הסתר מקטע הסרה. (I573dd, b/183634730)
  • לא ניתן לבדוק את השגיאות בקוד של 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. צריך לטפל ברכיבי inset באמצעות התצוגה של כל מקטע. (Ie6651, b/187304502)

גרסה 1.4.0-alpha01

18 במאי 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 ו-androidx.fragment:fragment-testing:1.4.0-alpha01 שוחררו. גרסה 1.4.0-alpha01 מכילה את התחייבויות אלה.

תכונות חדשות

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

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

ריבוי מקבצים

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

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

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

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

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

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

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

Fragment StrictMode

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

  • detectFragmentReuse() מזהה אם מופע של Fragment שהוסר בעבר מתווסף מחדש אל FragmentManager. אסור בשום אופן לבצע אינטראקציה עם מופע של Fragment או לשמור הפניה שלו אחרי שהוא השמד והוסר מ-FragmentManager. (#142, b/153738653)
  • detectFragmentTagUsage() מזהה מתי משתמשים בתג <fragment> ב-XML של הפריסה. צריך להשתמש תמיד ב-FragmentContainerView כדי לניפוח מקטעים כחלק מהפריסה. (#141, b/153738235)
  • detectWrongFragmentContainer() מזהה שמוסיפים מקטע לקונטיינר שאינו FragmentContainerView. צריך תמיד להשתמש ב-FragmentContainerView כמאגר למקטעים בפריסה. (#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 לאיתור שגיאות בקוד, נשלחת אזהרה כשמשתמשים ב-LayoutInflater.from(Context) בתוך DialogFragment. צריך להשתמש תמיד ב-method getLayoutInflater() של מקטע תיבת הדו-שיח כדי לקבל את התג המתאים ל-LayoutInflater. (#156, b/170781346)
  • בבדיקת השגיאות בקוד של DialogFragmentCallbacksDetector, נשלחת אזהרה כשמבצעים קריאה ל-setOnCancelListener או ל-setOnDismissListener בשיטה onCreateDialog() של DialogFragment. המאזינים האלה הם בבעלות DialogFragment עצמו, וצריך לשנות את ההגדרות של onCancel() ו-onDismiss() כדי לקבל את הקריאות החוזרות האלה. (#171, b/181780047, b/187524311)

תיקוני באגים

  • מ-Fragment 1.3.4: תוקנה רגרסיה ב-Fragment 1.3.3 בזמן השימוש ב-API של ViewTreeViewModelStoreOwner.get() באמצעות ViewModelProvider או בשיטת Jetpack Compose של viewModel() בתוך Fragment. בתרחישים לדוגמה האלה נעשה עכשיו שימוש נכון ב-ViewModelProvider.Factory שסופק על ידי ה-Fragment אם הוא מבטל את getDefaultViewModelProviderFactory() (כפי שעושים מקטעים עם הערות @AndroidEntryPoint כשמשתמשים ב-Hilt). אם לא משנים את השיטה הזו, SavedStateViewModelFactory ששומר ומשחזר את המצב שלו לצד תצוגת ה-Fragment נוצר כמפעל ברירת המחדל. (I5cbfa, b/186097368)
  • מ-Fragment 1.3.4: כשמשתמשים ב-FragmentContainerView ב-API 29, ערכות ה-inset לא שליחה ללא הגבלת זמן, תיקון בעיות במכונות BottomNavigationBar ו-FloatingActionButton. (I1bb78, b/186012452)
  • מ-Fragment 1.3.4: עכשיו אפשר לאחזר את הקטע 'Parcelable' מתוצאת המקטעים. חבילה אחרי המוות של התהליך. (I65932, b/187443158)
  • מ-Fragment 1.3.4: כשמבצעים מעבר של רכיב משותף ב-ViewGroup, אם הערך של transitionGroup הוגדר ב-ViewGroup כ-FALSE, עכשיו הוא יפעל כראוי של המעבר לממשק החדש. (I99675)

תרומה חיצונית

גרסה 1.3

גרסה 1.3.6

21 ביולי 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 ו-androidx.fragment:fragment-testing:1.3.6 שוחררו. גרסה 1.3.6 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

עדכון בנושא תלות

גרסה 1.3.5

16 ביוני 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 ו-androidx.fragment:fragment-testing:1.3.5 שוחררו. גרסה 1.3.5 כוללת את ההתחייבויות האלה.

תיקוני באגים

  • תוקנה רגרסיה במעברים של רכיבים משותפים שנוספו ל-Fragment 1.3.4 על ידי aosp/1679887. מקטעים מטפלים עכשיו בצורה נכונה בקבוצות מעבר (מוגדרות ישירות דרך 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() (כמו שעושים ב-@AndroidEntryPoint Fragments). אם לא משנים את השיטה הזו, SavedStateViewModelFactory ששומר ומשחזר את המצב שלו לצד תצוגת ה-Fragment נוצר כמפעל ברירת המחדל. (I5cbfa, b/186097368)
  • כשמשתמשים ב-FragmentContainerView ב-API 29, ערכות ה-inset לא שליחה ארוכה יותר ללא הגבלת זמן, תיקון בעיות במכונות BottomNavigationBar ו-FloatingActionButton. (I1bb78, b/186012452)
  • עכשיו אפשר לאחזר את החבילה 'Parcelable' מתוצאת המקטעים חבילה אחרי המוות של התהליך. (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() עם תצוגת מקטע (I21acf, b/181577191)

תיקוני באגים

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

תיקוני באגים במנהל המצב החדש

  • מנהל מצב המקטעים החדש מטפל עכשיו ביציאה עובר באמצעות פעולות הסתרה. (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 כוללת את ההתחייבויות האלה.

תיקוני באגים במנהל המצב החדש

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

עדכונים בנושא תלות

  • המקטע תלוי עכשיו בפעילות 1.2.2, תיקון בעיה בבדיקת השגיאות בקוד InvalidFragmentVersionForActivityResult של הפעילות במהלך שימוש ב-Fragment 1.3.1 ואילך.
  • המקטע תלוי עכשיו ב-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 בעלים דרך העיצוב שלהם, ולהבטיח שניתן יהיה להשתמש ב-DialogFragment עם ComposeView. (Ib9290, b/180691023)

תיקוני באגים

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

תיקוני באגים במנהל המצב החדש

  • תוקנה דליפת זיכרון במקטעים שנגרמה על ידי mFocusedView (Ib4e9e, b/179925887)
  • עכשיו, מקטעים קוראים ל-onCreateOptionsMenu בצורה תקינה במהלך השימוש הצגה/הסתרה של עסקאות (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

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

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

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

  • FragmentScenario שיפורים: הכיתה FragmentScenario מתוך פריט המידע שנוצר בתהליך הפיתוח (Artifact) של fragment-testing נכתבה מחדש ב-Kotlin ובוצעה בה מספר שיפורים:

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

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

  • הוצאה משימוש של setRetainInstance(): השיטה setRetainInstance() ב-Fragments הוצאה משימוש. עם ההשקה של ViewModels, למפתחים יש ממשק API ספציפי לשמירת מצב שניתן לשייך לפעילויות, למקטעים ולתרשימי ניווט. כך מפתחים יכולים להשתמש ב-Fragment רגיל שלא נשמר ולשמור את המצב הספציפי שהם רוצים לשמור בנפרד, וכך להימנע ממקור משותף של דליפות תוך שמירה על המאפיינים השימושיים של יצירה והשמדה של המצב שנשמר (כלומר, ה-constructor של ה-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)

תיקוני באגים במנהל המצב החדש

  • התצוגה של Fragment Lifecycle מטפלת עכשיו בצורה תקינה במקרים שבהם התצוגה של ה-Fragment מושמדת לפני שהLifecycle מגיעה אל CREATED, תוך הימנעות מחריגים שבהם כתוב "אין אירוע החל מ-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)

תיקוני באגים במנהל המצב החדש

  • תוקנו דליפות וארטיפקט חזותי בזמן ההוספה מקטע עם Animation ל- FragmentContainerView ואז מפסיקים באמצעות פעולת פופ. (I952d8)
  • תוקנה בעיה שבה תצוגת המקטע תישאר בהיררכיית התצוגות, אם היא הוחלפה במהלך onCreate() או onViewCreated() שלו. (I8a7d5)
  • המיקוד ישוחזר עכשיו כראוי לתצוגות בסיס של מקטע (Fragment) כאשר הן מופעלות מחדש. (Ifc84b)
  • שילוב פעולות הבלטה והחלפה באותו מקטע העסקה תציג עכשיו את האנימציות המתאימות (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 שלא מנפחות מקטע באמצעות המאפיין class או android:name מחוץ ל-FragmentActivity. (Id4397, b/172266337)
  • ניסיון להגדיר את מחזור החיים המקסימלי של מקטע ל-DESTROYED יגרור IllegalArgumentException (Ie7651, b/170765622)
  • אתחול FragmentScenario עם מצב DESTROYED יקפיץ עכשיו IllegalArgumentException (I73590, b/170765622)

תיקוני באגים במנהל המצב החדש

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

תרומה חיצונית

  • עכשיו FragmentFactory שומר מחלקות מקטעים בנפרד למופעים שונים של ClassLoader. תודה סיימון שילר! (#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

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

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

תיקוני באגים

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

תיקוני באגים במנהל המצב החדש

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

בעיה ידועה

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

גרסה 1.3.0-alpha08

19 באוגוסט 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 ו-androidx.fragment:fragment-testing:1.3.0-alpha08 שוחררו. גרסה 1.3.0-alpha08 מכילה את התחייבויות אלה.

מנהל המצב החדש

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

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

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

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

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

  • עכשיו אפשר להפעיל את launch() ב-ActivityResultLauncher בשיטת מחזור החיים של מקטע onCreate(). (b/161464278)
  • קריאה ל-registerForActivityResult() אחרי onCreate() תגרום כעת לחריגה שמציינת שהפעולה הזו לא מותרת, במקום שהתוצאות לא יתקבלו לאחר שינוי בתצורה באופן עצמאי. (b/162255449)
  • FragmentActivity משתמש עכשיו ב-API של OnContextAvailableListener שנוסף בפעילות 1.2.0-alpha08 כדי לשחזר את המצב של FragmentManager. מאזינים שיתווספו למחלקות המשנה של FragmentActivity יפעלו אחרי המאזינים האלה. (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 במקום להעביר תמיד את הפרגמנט לRESUMED . (b/159662750)
  • נוספה חלופה ל-API של FragmentScenario של onFragment בצורה של שיטת התוסף withFragment המתוקנת של Kotlin, שמאפשרת להחזיר ערך. בפרט, הוא מבטל את החריגות שהועלו בסעיף הנתון. (b/158697631)

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

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

תיקוני באגים

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

גרסה 1.3.0-alpha06

10 ביוני 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 ו-androidx.fragment:fragment-testing:1.3.0-alpha06 שוחררו. גרסה 1.3.0-alpha06 מכילה את התחייבויות אלה.

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.3.0-alpha05

20 במאי 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 ו-androidx.fragment:fragment-testing:1.3.0-alpha05 שוחררו. גרסה 1.3.0-alpha05 מכילה את התחייבויות אלה.

תכונות חדשות

שינויים ב-API

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

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

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

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

  • הרחבנו את מסמכי התיעוד על הבנאים Fragment(@LayoutRes int) ו-DialogFragment(@LayoutRes int) כדי להבהיר שצריך לקרוא להם מה-constructor של מחלקות המשנה באמצעות 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 מכילה את התחייבויות אלה.

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.3.0-alpha03

1 באפריל, 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 ו-androidx.fragment:fragment-testing:1.3.0-alpha03 שוחררו. גרסה 1.3.0-alpha03 מכילה את התחייבויות אלה.

שינויים ב-API

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

תיקוני באגים

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

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

  • המקטעים תלויים במדד פעילות 1.2.0-alpha03, שכולל שיפורים משמעותיים ב-Activity result API שנוסף לפעילות 1.2.0-alpha02.

גרסה 1.3.0-alpha02

18 במרץ 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 ו-androidx.fragment:fragment-testing:1.3.0-alpha02 שוחררו. גרסה 1.3.0-alpha02 מכילה את התחייבויות אלה.

תכונות חדשות

  • נוספה תמיכה ב-API של ActivityResultRegistry שנוסף בפעילות 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)

תיקוני באגים

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

בעיות מוכרות

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

גרסה 1.3.0-alpha01

4 במרץ, 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 ו-androidx.fragment:fragment-testing:1.3.0-alpha01 שוחררו. גרסה 1.3.0-alpha01 מכילה את התחייבויות אלה.

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

תיקוני באגים

  • כללי Fragment ProGuard עודכנו כדי לאפשר ערפול קוד (obfuscation) של קטעים שמורים. (b/151605338)
  • הושבתה FragmentLiveDataObserve כלל Linux במחלקות 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 איתור השגיאות בקוד, כשמשתמשים בשם משתנה מקומי שמסתיר את שם המאפיין של 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)

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

תיקוני באגים

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

תרומות חיצוניות

  • תודה לזאק סווארס שתרמת את הבדיקות לאיתור שגיאות בקוד (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 כוללת את ההתחייבויות האלה.

תיקוני באגים

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

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

גרסה 1.2.0

גרסה 1.2.0

22 בינואר, 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 ו-androidx.fragment:fragment-testing:1.2.0 שוחררו. גרסה 1.2.0 כוללת את ההתחייבויות האלה.

שינויים חשובים מאז 1.1.0

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

בעיות מוכרות

  • מקטעים שיש אליהם הפניה רק דרך המאפיין class או android:name ב-FragmentContainerView לא נשמרים באופן אוטומטי על ידי ProGuard, ולכן צריך להוסיף באופן ידני כלל Keep לכל מחלקה של מקטעים. (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 מכילה את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 1.2.0-rc04

18 בדצמבר 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 ו-androidx.fragment:fragment-testing:1.2.0-rc04 שוחררו. גרסה 1.2.0-rc04 מכילה את ההתחייבויות האלה.

תיקוני באגים

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

גרסה 1.2.0-rc03

4 בדצמבר 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 ו-androidx.fragment:fragment-testing:1.2.0-rc03 שוחררו. גרסה 1.2.0-rc03 מכילה את ההתחייבויות האלה.

תיקוני באגים

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

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

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

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

  • עכשיו המקטעים תלויים במחזור החיים 2.2.0-rc03, ב-SavedState של תצוגת מחזור החיים 1.0.0-rc03 ובפעילות 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, ה-LintFix משתמש עכשיו ב-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 מוסיף את המקטע שהוגדר על ידי class או android:name כחלק מהאינפלציה, ומבטיח ש-findFragmentById() ו-findFragmentByTag() יפעלו מיד לאחר מכן. (b/142520327)
  • תוקן IllegalStateException בFragmentContainerView עקב המצב שנשמר. (b/142580713)
  • תוקן UnsupportedOperationException ב-FragmentContainerView כשבוצע ערפול קוד (obfuscation) של המחלקה FragmentContainerView. (b/142657034)

בעיות מוכרות

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

גרסה 1.2.0-beta02

11 באוקטובר 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 ו-androidx.fragment:fragment-testing:1.2.0-beta02 שוחררו. גרסה 1.2.0-beta02 מכילה את התחייבויות אלה.

תיקוני באגים

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

גרסה 1.2.0-beta01

9 באוקטובר 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 ו-androidx.fragment:fragment-testing:1.2.0-beta01 שוחררו. גרסה 1.2.0-beta01 מכילה את התחייבויות אלה.

תכונות חדשות

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

תיקוני באגים

  • תוקן ClassCastException במהלך השימוש ב-androidx.transition. (b/140680619)
  • כשמשתמשים במעבר 1.3.0-beta01, Fragments ממתינים עכשיו למעבר של androidx.transition (בנוסף למעברי framework ואנימציות, שתוקנו ב-Fragment 1.2.0-alpha03 וב-Fragment 1.2.0-alpha02, בהתאמה) כדי לסיים לפני השליחה של onDestroyView(). (aosp/1119841)
  • כשמשתמשים במעבר 1.3.0-beta01, מקטעים מבטלים עכשיו באופן תקין מעברי androidx.transition לפני שמתחילים מעברים חדשים או אנימציות חדשות באותו קונטיינר. (aosp/1119841)
  • תוקנה בעיה ב-API 17 ומטה בזמן השימוש במעברים של androidx.transition בתצוגת הרמה הבסיסית (root) של המקטע בזמן השימוש ב-FragmentContainerView. (b/140361893)
  • פריט המידע שנוצר בתהליך הפיתוח (Artifact) של fragment-testing תלוי עכשיו בבדיקת AndroidX 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() יחידה, שמחזירה את FragmentManager שה-Fragment התווסף אליו שאינו אפס (אפשר להשתמש ב-isAdded() כדי לקבוע אם בטוח לקרוא לו). (b/140574496)
  • השיטה הסטטית FragmentManager.enableDebugLogging הוצאה משימוש. FragmentManager מכבד עכשיו את Log.isLoggable() עבור התג FragmentManager, וכך מאפשר לך להפעיל רישום ביומן DEBUG או VERBOSE בלי ליצור מחדש את האפליקציה. (aosp/1116591)

תיקוני באגים

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

גרסה 1.2.0-alpha03

5 בספטמבר 2019

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

שינויים ב-API

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

תיקוני באגים

  • עכשיו FragmentContainerView הופך כראוי את סדר השרטוט כשמקפצים מקטעים מהמקבץ האחורי. (b/139104187)
  • תוקנה בעיה שבה אנימציה שגויה פעלה כשגם הקפצת מקטע וגם הוספת מקטע חדש בו-זמנית. (b/111659726)
  • מקטעים ממתינים עכשיו למעברים (בנוסף לאנימציות, שתוקנו במקטע 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 ב-constructor או ב-ViewModelProviders.of() עם Fragment. (b/135716331)
  • אנימציות ברירת המחדל כשמשתמשים ב-TRANSIT_FRAGMENT_OPEN, ב-TRANSIT_FRAGMENT_CLOSE, ב-TRANSIT_FRAGMENT_FADE עם setTransition ב-FragmentTransaction עודכנו כדי להתאים לאנימציות שבהן נעשה שימוש בפעילויות במכשירי Android 10. (aosp/1012812, aosp/1014730)

שינויים ב-API

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

תיקוני באגים

  • מ-Fragment 1.1.0-rc04: מקטעים מבטלים כעת בצורה נכונה העברות שנדחו ב-Fragments. (b/138251858)
  • ממקטע 1.1.0-rc03: תוקנה בעיה שבה הפעלה של postponeEnterTransition() עם זמן קצוב לתפוגה יותר מפעם אחת לא תבטל את הזמן הקצוב לתפוגה הקודם. (b/137797118)
  • ממקטע 1.1.0-rc02: תוקנה קריסה ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter במהלך הסרת הפריט הנוכחי. (b/137209870)
  • מקטעים ממתינים עכשיו לסיום האנימציות לפני שליחת onDestroyView(). (b/136110528)
  • אנימציות של מקטעים ממקטעים ברמת צאצא והצאצאים שלהם מטופלים כראוי כאשר מוסיפים אנימציה ל-Fragment ההורה. (b/116675313)
  • תוקן NullPointerException בעת שימוש במעברים משותפים של רכיב ופעולת שילוב של חלון קופץ והוספה. (b/120507394)
  • נוספה דרך לעקוף את הבעיה IllegalStateException כשמשתמשים ב-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 מספק מחלקה FragmentScenario לבדיקת מקטע לבידוד. לפרטים נוספים, אפשר לעיין במסמכי התיעוד בנושא בדיקת מקטעים של האפליקציה.
  • FragmentStore: עכשיו אפשר להגדיר את FragmentFactory ב-FragmentManager כדי לנהל את היצירה של מכונות מקטעים, תוך ביטול הדרישה המחמירה להשתמש ב-constructor ללא ארגומנטים.
  • מקבלי גישה לנכס של Kotlin ל-ViewModels: פריט המידע שנוצר בתהליך הפיתוח (Artifact) של fragment-ktx מכיל עכשיו שני משתמשים עם הרשאה לנכס של Kotlin: by viewModels() לגישה ל-ViewModels שמשויכים למקטע הבודד, ו-by activityViewModels() לגישה ל-ViewModels בהיקף הפעילות.
  • מחזור חיים מקסימלי: עכשיו אפשר להגדיר מצב של מחזור חיים מקסימלי למקטע על ידי קריאה ל-setMaxLifecycle() ב-FragmentTransaction. הגרסה הזו מחליפה את setUserVisibleHint() שהוצא משימוש. ל-FragmentPagerAdapter ול-FragmentStatePagerAdapter יש constructor חדש שמאפשר לעבור להתנהגות החדשה.
  • בונה FragmentActivity LayoutId: מחלקות המשנה של FragmentActivity יכולות עכשיו לקרוא ל-constructor ב-FragmentActivity שמקבל מזהה R.layout, שמציין את הפריסה שצריך להגדיר כתצוגת התוכן כחלופה לקריאה ל-setContentView() ב-onCreate(). הפעולה הזו לא משנה את הדרישה שלמחלקה המשנית יהיה בנאי ללא ארגומנטים.
  • בנאי Fragment LayoutId: מחלקות המשנה של Fragment יכולות עכשיו לקרוא ל-constructor ב-Fragment, שמקבל מזהה R.layout, שמציין את הפריסה שצריך להשתמש בה למקטע הזה כחלופה להחלפה של onCreateView(). אפשר להגדיר פריסה מורחבת בonViewCreated().
  • דחייה עם זמן קצוב לתפוגה: נוסף עומס יתר חדש של postponeEnterTransition() שיגיע הזמן הקצוב לתפוגה.

גרסה 1.1.0-rc04

7 באוגוסט 2019

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

תיקוני באגים

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

גרסה 1.1.0-rc03

19 ביולי 2019

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

תיקוני באגים

  • תוקנה בעיה שבה קריאה ל-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 שוחררו. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

תיקוני באגים

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

גרסה 1.1.0-alpha09

16 במאי 2019

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.1.0-alpha08

7 במאי 2019

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

גרסה זו לא תואמת להעדפות מגרסה 1.1.0-alpha01 עד 1.1.0-alpha04. שדרג ל'העדפות' 1.1.0-alpha05 בעת השימוש בגרסה זו של Fragments.

תכונות חדשות

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

שינויים ב-API

  • שינוי תוכנה שעלול לגרום לכשלים: הוסרה השיטה FragmentFactory instantiate שהוצאה משימוש, ונמשכה Bundle. aosp/953856
  • שינוי תוכנה שעלול לגרום לכשלים: השמות הקבועים RESUME_ONLY_CURRENT_FRAGMENT ו-USE_SET_USER_VISIBLE_HINT ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter השתנו ל-BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ו-BEHAVIOR_SET_USER_VISIBLE_HINT, בהתאמה. aosp/954782

תיקוני באגים

  • מקטעים שמחזור החיים שלהם יוגבל דרך setMaxLifecycle() לא יתחדשו יותר לפני שהם מגיעים למצב הסופי. b/131557151
  • בעת שימוש ב-setMaxLifecycle(Lifecycle.State.CREATED), התצוגה של Fragments תושמד באופן תקין. aosp/954180

גרסה 1.1.0-alpha07

25 באפריל 2019

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

תכונות חדשות

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

שינויים ב-API

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

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

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

תיקוני באגים

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

גרסה 1.1.0-alpha06

3 באפריל 2019

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

תכונות חדשות

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

שינויים ב-API

  • Fragment ו-FragmentActivity מכילים עכשיו בנאי נוסף שלוקח @LayoutRes int, שמחליף את ההתנהגות הקודמת של הוספת הערות לכיתה ב-@ContentView. הגישה הזו עובדת גם במודולים של אפליקציות וגם במודולים של ספריות. (b/128352521)
  • onActivityResult() של FragmentActivity מסומן כמו שצריך כ-@CallSuper. (b/127971684)
  • שיטת ה-instantiate של Fragmentworks שמקבלת חבילת ארגומנטים הוצאה משימוש, והאפליקציות צריכות להשתמש בעומס היתר החדש של instantiate שלא לוקח חבילה. (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)
  • תוקנה בעיה בשימוש ב-constructor של @ContentView בפעילות שלך במהלך שחזור מצב המקטע. (b/127313094)
  • תוקנה הלוגיקה של setTargetFragment() בעת החלפת Fragment יעד קיים ב-Fragment שעדיין לא צורף אל FragmentManager. (aosp/932156)

גרסה 1.1.0-alpha05

13 במרץ 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 ו-androidx.fragment:fragment-testing:1.1.0-alpha05 שוחררו. הרשימה המלאה של ההתחייבויות שכלולות בגרסה הזו זמינה כאן.

תכונות חדשות

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

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

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

תיקוני באגים

  • onNewIntent עבור FragmentActivity מסומן עכשיו בצורה נכונה ב-@CallSuper (b/124120586)
  • תוקנה בעיה שבה ניתן היה להתקשר פעמיים אל onDismiss() של DialogFragment כשמשתמשים ב-getDialog().dismiss() או ב-getDialog().cancel() (b/126563750)

גרסה 1.1.0-alpha04

7 בפברואר 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 ו-androidx.fragment:fragment-testing 1.1.0-alpha04 שוחררו.

תכונות חדשות

  • נוספה תמיכה בהערת המחלקה @ContentView שמאפשרת לציין איזה קובץ XML של פריסה צריך לנפח כחלופה להחלפה של onCreateView(). מומלץ להציג עבודות קשורות ב-onViewCreated(). (aosp/837619)
  • fragment-testing תלוי עכשיו בגרסה יציבה של androidx.test:core-ktx 1.1.0 (b/121209673)
  • עכשיו אפשר להשתמש ב-openActionBarOverflowOrOptionsMenu עם FragmentScenario כדי לבדוק תפריטי אפשרויות שמתארחים ב-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)
  • תוקנה בעיה שבה מקטעי יעד לא היו זמינים לפעמים בתוך onDestroy() או אחריו. (b/122312935)
  • הפונקציה onDismiss() ב-DialogFragment מופעלת עכשיו לפני onDestroy(). (aosp/874133) (aosp/890734)

גרסה 1.1.0-alpha03

17 בדצמבר 2018

תכונות חדשות

  • ב-Fragment מוטמע עכשיו BundleSavedStateRegistryOwner ותלוי בספריית savedState שפורסמה [aosp/824380]
  • נוסף בעל הרשאה לנכס by activityViewModels ב-Kotlin כדי לאחזר מודלים של ViewModel שמשויכים לפעילות שמכילה את [b/119050253]
  • מקבל הגישה לנכס Kotlin עם by viewModels הורחב לשימוש בשיטת 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]

תיקוני באגים

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

גרסה 1.1.0-alpha02

3 בדצמבר 2018

תכונות חדשות

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

תיקוני באגים

  • תוקן מצב DisallowStateError בשימוש במקטעים בתוך מקטעים במקבץ האחורי (b/119256498)
  • תוקנה קריסה במהלך השימוש ב-FragmentScenario.recreate() עם FragmentFactory (aosp/820540)
  • תוקנה בעיה שבה לא הייתה גישה למקטעי יעד אחרי הסרת ה-Fragment (aosp/807634)

גרסה 1.1.0-alpha01

5 בנובמבר 2018

זו המהדורה הראשונה של פריט מידע אחד (fragment-testing) ו-FragmentScenario, שבנוי על ממשקי API של androidx.test:core. פרטים נוספים זמינים במסמכי התיעוד בנושא בדיקת מקטעים.

תכונות חדשות

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

שינויים ב-API

  • הרחבה משמעותית של הערות יכולת ה-null ב-Fragment API פלטפורמה.

תיקוני באגים

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

בעיות מוכרות

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