מקטע (fragment)
פלח את האפליקציה שלך למספר מסכים עצמאיים המתארחים בפעילות.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
30 באוקטובר 2024 1.8.5 - - -

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

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

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

Groovy

dependencies {
    def fragment_version = "1.8.3"

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

Kotlin

dependencies {
    val fragment_version = "1.8.3"

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

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

משוב

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

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

מידע נוסף זמין במסמכי התיעוד של Issue Tracker.

גרסה 1.8

גרסה 1.8.5

30 באוקטובר 2024

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

תיקוני באגים

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

גרסה 1.8.4

2 באוקטובר 2024

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

תיקוני באגים

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

גרסה 1.8.3

4 בספטמבר 2024

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

תיקוני באגים

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

גרסה 1.8.2

24 ביולי 2024

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

תיקוני באגים

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

גרסה 1.8.1

26 ביוני 2024

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

תיקוני באגים

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

גרסה 1.8.0

12 ביוני 2024

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

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

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

גרסה 1.8.0-alpha02

17 באפריל 2024

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

תיקוני באגים

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

גרסה 1.8.0-alpha01

3 באפריל 2024

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

תכונות חדשות

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

שינויים במסמכים

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

עדכון יחסי תלות

גרסה 1.7

גרסה 1.7.1

14 במאי 2024

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

תיקוני באגים

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

גרסה 1.7.0

1 במאי 2024

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

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

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

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

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

Fragment Compose Artifact

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

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

  class ExampleFragment : Fragment() {

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

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

גרסה 1.7.0-rc02

17 באפריל 2024

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

תיקוני באגים

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

גרסה 1.7.0-rc01

3 באפריל 2024

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

עדכון יחסי תלות

גרסה 1.7.0-beta01

‫20 במרץ 2024

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.7.0-alpha10

7 בפברואר 2024

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

תיקוני באגים

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

גרסה 1.7.0-alpha09

24 בינואר 2024

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

Artifact Compose Compose

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

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

class ExampleFragment : Fragment() {

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

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

תכונות חדשות

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

בעיה ידועה

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

גרסה 1.7.0-alpha08

10 בינואר 2024

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

ניקוי

גרסה 1.7.0-alpha07

29 בנובמבר 2023

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

תיקוני באגים

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

גרסה 1.7.0-alpha06

4 באוקטובר 2023

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

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

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

גרסה 1.7.0-alpha05

20 בספטמבר 2023

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

תכונות חדשות

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

בעיות מוכרות

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

גרסה 1.7.0-alpha04

6 בספטמבר 2023

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

תיקוני באגים

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

גרסה 1.7.0-alpha03

23 באוגוסט 2023

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

תיקוני באגים

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

גרסה 1.7.0-alpha02

9 באוגוסט 2023

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

תיקוני באגים

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

גרסה 1.7.0-alpha01

7 ביוני 2023

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

תכונות חדשות

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

גרסה 1.6

גרסה 1.6.2

1 בנובמבר 2023

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

תיקוני באגים

  • כשהמקטע 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. המצב הזה במטמון ישמש לשימוש חוזר אם מופע הפלח הזה היה ב-back stack כשהשתמשתם ב-API של כמה back stacks כדי לשמור ולשחזר את הפלח. (I71288, b/246289075)

עדכון יחסי תלות

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

גרסה 1.6.0

7 ביוני 2023

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

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

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

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

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

גרסה 1.6.0-rc01

10 במאי 2023

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

תיקוני באגים

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

גרסה 1.6.0-beta01

19 באפריל 2023

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

תיקוני באגים

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

גרסה 1.6.0-alpha09

5 באפריל 2023

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.6.0-alpha08

22 במרץ 2023

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

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

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

תיקוני באגים

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

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

גרסה 1.6.0-alpha07

8 במרץ 2023

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

תיקוני באגים

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

גרסה 1.6.0-alpha06

22 בפברואר 2023

androidx.fragment:fragment-*:1.6.0-alpha06 משוחרר. גרסה 1.6.0-alpha06 מכילה את ההצהרות האלה על ביצוע שינויים (commits).

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

  • קריאת ה-back-call החדשה של onBackStackChangedStarted ב-onBackStackChangedListener של FragmentManager תופעל עכשיו לפני שהקטעים יתחילו לעבור לסטטוסי היעד שלהם. (I34726)

גרסה 1.6.0-alpha05

8 בפברואר 2023

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

תכונות חדשות

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

שינויים ב-API

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

גרסה 1.6.0-alpha04

7 בדצמבר 2022

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

תכונות חדשות

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

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

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

שינויים ב-API

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

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

תיקוני באגים

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

גרסה 1.6.0-alpha03

5 באוקטובר 2022

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

שינויים ב-API

  • מעכשיו, בכיתות שמתבססות על DialogFragment יהיה צורך לבצע קריאה ל-super בהגדרות ה-override של onDismiss(). (I14798, b/238928865)

תיקוני באגים

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

גרסה 1.6.0-alpha02

24 באוגוסט 2022

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

תיקוני באגים

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

גרסה 1.6.0-alpha01

27 ביולי 2022

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

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

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

תיקוני באגים

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

גרסה 1.5.5

7 בדצמבר 2022

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

תיקוני באגים

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

גרסה 1.5.4

24 באוקטובר 2022

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

תיקוני באגים

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

גרסה 1.5.3

21 בספטמבר 2022

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

תיקוני באגים

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

גרסה 1.5.2

10 באוגוסט 2022

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

תיקוני באגים

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

גירסה 1.5.1

27 ביולי 2022

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

תיקוני באגים

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

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

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

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

שינוי מבנה של מצב של מכונה שמורה

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

גרסה 1.5.0-beta01

20 באפריל 2022

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

שינויים ב-API

  • נוספה על ידי DialogFragment שיטה חדשה של 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. אם מציינים פרמטרים נוספים, המערכת תתעלם מהארגומנטים שהועברו ל-init. (I6c43b, b/224844583)

גרסה 1.5.0-alpha03

23 בפברואר 2022

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

שינויים ב-API

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

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

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

גרסה 1.5.0-alpha02

9 בפברואר 2022

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

תכונות חדשות

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

גרסה 1.5.0-alpha01

26 בינואר 2022

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

תכונות חדשות

תיקוני באגים

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

גרסה 1.4

גרסה 1.4.1

26 בינואר 2022

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

תיקוני באגים

  • FragmentContainerView כבר לא מקפיצה מצב לא חוקי, כאשר למזהי תצוגה שנוצרו מ-XML יש ערכים שליליים. (Ic185b, b/213086140)
  • כשמשתמשים ב-lambda בהתאמה אישית עם ownerProducer עם הפונקציה העצלנית by viewModels(), אם לא מגדירים ViewModelProvider.Factory בהתאמה אישית במקום להשתמש תמיד במפעל של המקטע, הוא ישתמש ב-defaultViewModelProviderFactory של הבעלים האלה. (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, כך שאפשר להשתמש בו עם השיטה use או עם try-with-resources של Kotlin.

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

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

מספר סטאקים של חזרה אחורה

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

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

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

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

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

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

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

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

גרסה 1.4.0-rc01

3 בנובמבר 2021

androidx.fragment:fragment:1.4.0-rc01 הופץ ללא שינויים ממקטע 1.4.0-beta01. גרסה 1.4.0-rc01 כוללת את השמירות האלה.

גרסה 1.4.0-beta01

27 באוקטובר 2021

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

תיקוני באגים

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

גרסה 1.4.0-alpha10

29 בספטמבר 2021

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

Lint

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

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

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

גרסה 1.4.0-alpha09

15 בספטמבר 2021

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.4.0-alpha08

1 בספטמבר 2021

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

תיקוני באגים

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

גרסה 1.4.0-alpha07

18 באוגוסט 2021

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

גרסה 1.4.0-alpha06

4 באוגוסט 2021

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

תיקוני באגים

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

גרסה 1.4.0-alpha05

21 ביולי 2021

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

תיקוני באגים

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

עדכון יחסי תלות

גרסה 1.4.0-alpha04

30 ביוני 2021

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.4.0-alpha03

16 ביוני 2021

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

תכונות חדשות

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

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

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

תיקוני באגים

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

גרסה 1.4.0-alpha02

2 ביוני 2021

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

תכונות חדשות

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

  • הכיתה FragmentStrictMode Violation הורחבה כדי להוסיף מידע על המבנה על סמך כל הפרה. כך תוכלו לוודא בדיוק מה גרם להפרה, יחד עם קטע הקוד שמפר את המדיניות (If5118,‏ b/187871150). כל Violation מכיל את הפרטים הבאים:

    • עכשיו WrongFragmentContainerViolation מכיל את ViewGroup שאליו ניסית להוסיף את Fragment. (I83c75, ‏ b/187871150)
    • TargetFragmentUsageViolation הורחב ל-SetTargetFragmentUsageViolation,‏ GetTargetFragmentUsageViolation ו-GetTargetFragmentRequestCodeUsageViolation, כאשר SetTargetFragmentUsageViolation מכיל את קטע היעד ואת קוד הבקשה. (I741b4, ‏ b/187871150)
    • עכשיו הערך של SetUserVisibleHintViolation הוא הערך הבוליאני שהוענק ל-setUserVisibleHint(). (I00585, b/187871150)
    • עכשיו FragmentTagUsageViolation מכיל את ה-ViewGroup שאליו תג <fragment> ניסה לנפח קטע.(I5dbbc, ‏ b/187871150)
    • השדה FragmentReuseViolation מכיל עכשיו את המזהה הייחודי של המופע הקודם של Fragment שגרם להפרה. (I0544d, b/187871150)
    • RetainInstanceUsageViolation היא עכשיו אבסורטית ויש לה שתי קבוצות משנה, SetRetainInstanceUsageViolation ו-GetRetainInstanceUsageViolation, שמייצגות את שני המקרים של סוג ההפרה. (Ic81e5, ‏ b/187871150)

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

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

תכונות חדשות

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

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

ריבוי מקבצים

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

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

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

  • הערך של 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

  • בדיקת ה-Lint של UseGetLayoutInflater מזהירה עכשיו כשמשתמשים ב-LayoutInflater.from(Context) בתוך DialogFragment – תמיד צריך להשתמש בשיטה getLayoutInflater() של קטע התי dialog כדי לקבל את ה-for המתאים ל-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, המערכת לא תפרסם יותר תצוגות מוטמעות ללא הגבלת זמן, וכך יפתרו בעיות שקשורות למופעים של BottomNavigationBar ו-FloatingActionButton. (I1bb78, b/186012452)
  • מ-Fragment 1.3.4: עכשיו אפשר לאחזר את ה-Parcelable מחבילת התוצאות של ה-fragment אחרי סיום התהליך. (I65932, ‏ b/187443158)
  • מ-Fragment 1.3.4: כשמבצעים העברה של רכיב משותף ב-ViewGroup, אם ב-ViewGroup מוגדר הערך False transitionGroup, מעכשיו המעבר יתבצע כמו שצריך. (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)
  • התצוגה של ה-Fragment מוגדרת עכשיו כראוי ל-GONE כשמשתמשים ב-hide(), כשבתצוגת הבסיס מוגדרת transitionGroup=”true”. (aosp/1766655, ‏ b/193603427)
  • FragmentActivity תמיד פותח את המצב השמור כפעולה הראשונה בקריאות החזרה (callbacks) של מחזור החיים שהוא מבטל. (I6db7a)

עדכון יחסי תלות

גרסה 1.3.5

16 ביוני 2021

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

תיקוני באגים

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

גרסה 1.3.4

18 במאי 2021

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

תיקוני באגים

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

גרסה 1.3.3

21 באפריל 2021

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

תכונות חדשות

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

תיקוני באגים

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

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

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

גרסה 1.3.2

24 במרץ 2021

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

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

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

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

  • Fragment תלוי עכשיו ב-Activity 1.2.2, וכך תוקנה בעיה בבדיקת ה-lint של InvalidFragmentVersionForActivityResult ב-Activity כשמשתמשים ב-Fragment 1.3.1 ואילך.
  • הספרייה Fragment תלויה עכשיו ב-Lifecycle 2.3.1.

גרסה 1.3.1

10 במרץ 2021

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

תכונות חדשות

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

תיקוני באגים

  • עכשיו, אחרי שינוי בתצורה, קטעי קוד (fragments) שמתנפחים לפעילות RESUMED שכבר קיימת באמצעות FragmentContainerView מוצגים בצורה תקינה. (Ie14c8, ‏ b/180538371)
  • אין יותר } נוסף בסוף הקטע toString() (I54705, ‏ b/177761088)
  • שיטות ששונו ב-FragmentActivity עוברות עכשיו בירושה בצורה תקינה את שיטת הבסיס javaDoc (I736ce, ‏ b/139548782)
  • המסמכים של setFragmentResult ו-setFragmentResultListener עדכנו את מסמכי הפרמטרים שלהם כך שהם כבר לא מקבלים ערכי null (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 תיקנה מספר בעיות שקשורות לשליחה של אירועי מחזור חיים, אנימציות ומעברים, ולאופן הטיפול בקטעים שהושהו.
  • שילוב של Activity Result API: הוספנו תמיכה ב-API ActivityResultRegistry שהוצג ב-Activity 1.2.0 כדי לטפל בתהליכים של startActivityForResult()+onActivityResult() וגם בתהליכים של requestPermissions()+onRequestPermissionsResult() בלי לשנות את שיטות ה-Fragment, וגם כדי לספק הוקס לבדיקת התהליכים האלה. כדאי לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות.

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

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

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

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

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

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

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

גרסה 1.3.0-rc02

27 בינואר 2021

התכונות androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 וגם androidx.fragment:fragment-testing:1.3.0-rc02 משוחררות. גרסה 1.3.0-rc02 כוללת את ההוספות האלה.

תיקוני באגים

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

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

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

גרסה 1.3.0-rc01

16 בדצמבר 2020

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

תיקוני באגים

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

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

  • תוקנו דליפות ואפקטים חזותיים כשמוסיפים קטע עם Animation ל-FragmentContainerView ואז משבשים את ההוספה הזו באמצעות פעולת pop. (I952d8)
  • תוקנה בעיה שבה התצוגה של החלק הקטן הייתה נשארת בהיררכיית התצוגות אם הוא הוחלף במהלך השיטות onCreate() או onViewCreated(). (I8a7d5)
  • עכשיו המיקוד שוחזר לתצוגות בסיס של Fragment כשהם מפעילים אותן מחדש. (Ifc84b)
  • שילוב של פעולות pop ו-replace באותה עסקה של קטע קוד יוביל עכשיו להצגת האנימציות המתאימות (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)
  • תוקנה בעיה שבה הפונקציה exit‏ Animator של hide() לא הייתה פועלת. (Id7ffe)
  • עכשיו, כשמאחרים את ההפעלה של רצף מודעות ומפעילים אותו מיד לאחר מכן, הוא מופיע כראוי. (Ie713b, ‏ b/170022857)
  • מקטעים שמסירים את התצוגה המודגשת במהלך אנימציה לא ינסו יותר לשחזר את המיקוד בתצוגה מנותקת ברגע שהם יגיעו ל-RESUMED (I38c65, b/172925703)

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

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

גרסה 1.3.0-beta01

1 באוקטובר 2020

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

תכונות חדשות

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

שינויים ב-API

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

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

תיקוני באגים

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

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

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

בעיה ידועה

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

גרסה 1.3.0-alpha08

19 באוגוסט 2020

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

מנהל מצב חדש

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

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

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

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

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

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

תיקוני באגים

  • עכשיו מתבצעת תכונה של ActivityOptions שהועברה כשמשתמשים ב-startIntentSenderForResult(). (b/162247961)

בעיה ידועה

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

גרסה 1.3.0-alpha07

22 ביולי 2020

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

תכונות חדשות

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

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

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

תיקוני באגים

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

גרסה 1.3.0-alpha06

10 ביוני 2020

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

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.3.0-alpha05

20 במאי 2020

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

תכונות חדשות

שינויים ב-API

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

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

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

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

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

גרסה 1.3.0-alpha04

29 באפריל 2020

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.3.0-alpha03

1 באפריל 2020

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

שינויים ב-API

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

תיקוני באגים

  • תוקנה נסיגה שהופיעה בקטע 1.3.0-alpha02 כשמשתמשים ב-BottomSheetDialogFragment. (b/151652127, ‏ aosp/1263328, ‏ aosp/1265163)
  • תוקן קריסה שעלולה להתרחש כשמשתמשים ב-prepareCall מתוך קטע אחרי שינוי בתצורה. (b/152137004)
  • תוקנה בעיה שבה המערכת התעלמה מרכיבים משותפים וממעברים של יציאה כשמשתמשים ב-setTargetFragment(). (b/152023196)
  • מ-Fragment 1.2.4: עודכנו כללי ProGuard של Fragment כדי לאפשר ערפול של קטעי קוד שנשמרו. (b/151605338)
  • ממקטע 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 שנוסף ב-Activity 1.2.0-alpha02 כדי לטפל בתהליכים startActivityForResult()+onActivityResult() וגם requestPermissions()+onRequestPermissionsResult() בלי לשנות את שיטות ה-Fragment, וגם כדי לספק הוקס לבדיקה של התהליכים האלה. כדאי לעיין במאמר המעודכן בנושא קבלת תוצאה מפעילות. (b/125158199)

שינויים ב-API

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

תיקוני באגים

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

בעיות מוכרות

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

גרסה 1.3.0-alpha01

4 במרץ, 2020

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

תכונות חדשות

שינויים ב-API

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

תיקוני באגים

  • כללי ProGuard של Fragment שומרים עכשיו בצורה נכונה רק על מחלקות ה-Fragment של קונסטרוקטור ברירת המחדל שבהן נעשה שימוש, ולא על כל המופעים של Fragment. כך תוקנה נסיגה לאחור שהופיעה ב-Fragment 1.2.1. (b/149665169
  • כללי ה-Lint מסוג require___() שנוספו בקטע 1.2.2 כבר לא מזהים שגיאות שווא במשתנים מקומיים שיש להם שם זהה לשמות המאפיינים ב-Kotlin שמוצלים (כלומר, view). (b/149891163)
  • FragmentContainerView כבר לא מחזיר UnsupportedOperationException כשמשתמשים בתצוגה המקדימה של הפריסה ב-Android Studio. (b/149707833)
  • תוקנה בעיה שבה קטעי קוד שנשמרו נוספו אחרי שמצב המערכת נשמר, ולא נוצרו מחדש באופן קבוע ולאחר מכן הושמדו אחרי כל שינוי בהגדרות. (b/145832397)

גרסה 1.2.5

גרסה 1.2.5

10 ביוני 2020

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

תיקוני באגים

  • getViewLifecycleOwner() של החלקיק מושבת עכשיו לפני הקריאה ל-onSaveInstanceState(), כפי שמשקף את ההתנהגות של מחזור החיים של החלקיק. התכונה הזו הושקה בעבר ב-Fragment 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 כוללת את ההצהרות האלה.

תיקוני באגים

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

גרסה 1.2.3

גרסה 1.2.3

18 במרץ 2020

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

תיקוני באגים

  • תוקן באג ב-DialogFragment שגרם ל-StackOverflowError כשקוראים ל-getLayoutInflater() מתוך onCreateDialog(). (b/117894767, ‏ aosp/1258665)
  • צמצמנו את היקף הכללים של ProGuard שכלולים ב-Fragment כדי להבטיח שאפשר יהיה להסיר כיתות Fragment שלא בשימוש. (b/149665169)
  • תוקנו התוצאות החיוביות השגויות בבדיקת UseRequireInsteadOfGet איתור השגיאות בקוד, כשמשתמשים בשם משתנה מקומי שמסתיר את שם המאפיין של 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 כוללת את ההצהרות האלה על ביצוע שינויים (commits).

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

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

תיקוני באגים

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

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

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

גרסה 1.2.1

גרסה 1.2.1

5 בפברואר 2020

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

תיקוני באגים

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

שינויים ביחסי התלות

גרסה 1.2.0

גרסה 1.2.0

22 בינואר 2020

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

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

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

תיקוני באגים

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

גרסה 1.2.0-rc04

18 בדצמבר 2019

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

תיקוני באגים

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

גרסה 1.2.0-rc03

4 בדצמבר 2019

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

תיקוני באגים

  • תוקן שינוי לא מכוון בהתנהגות שבו מקטעים שהוסרו עדיין מוחזרים על ידי findFragmentById() / findFragmentByTag() בזמן הפעלת אנימציות היציאה/מעברים. (b/143982969, ‏ aosp/1167585)
  • מקטעים של צאצאים נעצרים עכשיו בצורה נכונה לפני ההורים שלהם כשהפעילות המכילה את הפעילות onSaveInstanceState(). (b/144380645)
  • תוקנה בעיה שבה צפיות סומנו באופן שגוי ב-INVISIBLE אחרי ש-Fragment מוסתר הופיע. (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 מוסיף עכשיו את ה-Fragment שמוגדר על ידי class או android:name כחלק מהנפח, וכך מוודא ש-findFragmentById() ו-findFragmentByTag() יפעלו מיד לאחר מכן. (b/142520327)
  • תוקנה שגיאה ב-IllegalStateException ב-FragmentContainerView עקב שמירת המצב. (b/142580713)
  • תוקנה בעיה ב-UnsupportedOperationException ב-FragmentContainerView כשהקלאס FragmentContainerView עבר ערפול. (b/142657034)

בעיות מוכרות

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

גרסה 1.2.0-beta02

11 באוקטובר 2019

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

תיקוני באגים

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

גרסה 1.2.0-beta01

9 באוקטובר 2019

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

תכונות חדשות

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

תיקוני באגים

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

תיקוני באגים

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

גרסה 1.2.0-alpha03

5 בספטמבר 2019

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

שינויים ב-API

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

תיקוני באגים

  • FragmentContainerView הופך עכשיו את סדר הציור כראוי כשמשחררים קטעים מהמקבץ האחורי. (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 משוחררים. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

  • מ-Fragment 1.1.0-rc04: עכשיו אפשר לבטל באופן תקין מעברים שהועברו למועד מאוחר יותר ב-Fragments that have been popped. (b/138251858)
  • מתוך קטע קוד 1.1.0-rc03: תוקנה בעיה שבה קריאה ל-postponeEnterTransition() עם זמן קצוב יותר מפעם אחת לא ביטלה את זמני הקצוב הקודמים. (b/137797118)
  • מ-Fragment 1.1.0-rc02: תוקן קריסה ב-FragmentPagerAdapter וב-FragmentStatePagerAdapter במהלך הסרת הפריט הנוכחי. (b/137209870)
  • מקטעים ממתינים עכשיו לסיום האנימציות לפני שליחת onDestroyView(). (b/136110528)
  • עכשיו המערכת מטפלת כראוי באנימציות של קטעי קוד (fragments) מקטעי קוד צאצאים ומצאצאים שלהם כשמפעילים אנימציה של קטע הקוד ההורה. (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 משוחררות. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.1.0

גרסה 1.1.0

5 בספטמבר 2019

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

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

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

גרסה 1.1.0-rc04

7 באוגוסט 2019

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

תיקוני באגים

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

גרסה 1.1.0-rc03

19 ביולי 2019

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

תיקוני באגים

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

גרסה 1.1.0-rc02

17 ביולי 2019

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

תיקוני באגים

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

גרסה 1.1.0-rc01

2 ביולי 2019

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

תיקוני באגים

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

גרסה 1.1.0-beta01

5 ביוני 2019

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

תיקוני באגים

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

גרסה 1.1.0-alpha09

16 במאי 2019

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

שינויים ב-API

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

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.1.0-alpha07

25 באפריל 2019

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

תכונות חדשות

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

שינויים ב-API

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

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

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

תיקוני באגים

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

גרסה 1.1.0-alpha06

3 באפריל 2019

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.1.0-alpha05

13 במרץ 2019

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

תכונות חדשות

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

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

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

תיקוני באגים

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

גרסה 1.1.0-alpha04

7 בפברואר 2019

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

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.1.0-alpha02

3 בדצמבר 2018

תכונות חדשות

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

תיקוני באגים

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

גרסה 1.1.0-alpha01

5 בנובמבר 2018

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

תכונות חדשות

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

שינויים ב-API

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

תיקוני באגים

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

בעיות מוכרות

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