الجزء

قسِّم تطبيقك إلى شاشات متعددة ومستقلة مستضافة ضمن نشاط.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫01 يوليو 2026 1.8.9 - - 1.9.0-alpha02

تحديد الاعتماديات

لإضافة اعتمادية على Fragment، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    def fragment_version = "1.8.9"

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

Kotlin

dependencies {
    val fragment_version = "1.8.9"

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

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.9

الإصدار ‎1.9.0-alpha02

‫01 يوليو 2026

تم طرح androidx.fragment:fragment-*:1.9.0-alpha02. يتضمّن الإصدار 1.9.0-alpha02 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • أضِف المَعلمة maxLifecycle إلى العنصر AndroidFragment القابل للإنشاء. يتيح لك ذلك تحديد الحد الأقصى لحالة دورة حياة Fragment المضمّنة، ما يمنحك تحكّمًا أفضل في سلوكها في إعدادات واجهة المستخدم المعقّدة، مثل أدوات التقسيم إلى صفحات أو علامات التبويب. (Ie99b5، b/526109804)
  • تتيح مكتبة Fragment الآن تتبُّع حدث مراحل النشاط في النظام من خلال Jetpack Tracing. (Ibc63b، b/112161409)

الإصدار ‎1.9.0-alpha01

‫17 يونيو 2026

تم طرح androidx.fragment:fragment-*:1.9.0-alpha01. يتضمّن الإصدار 1.9.0-alpha01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تنفّذ الفئة Fragment الآن الواجهة ContextAware ويمكن استخدامها لتنفيذ الرمز البرمجي عند ربط الجزء. (I38019، b/477255355)

إصلاح الأخطاء

  • تم إصلاح عُطل في Fragment حدث عندما تم إرسال النشاط إلى الخلفية أثناء تنفيذ إيماءة الرجوع التوقّعية. (I55734، b/389589678)
  • لم يعُد UnsafeFragmentLifecycleObserverDetector يعمل ضمن التركيب. (Ic4176، b/501504696)
  • [من Fragment 1.8.9] تم إصلاح مشكلة كانت تتسبب في عدم تحرُّك الإيماءة اللاحقة بشكل صحيح عند استخدام أدوات إنشاء الرسوم المتحركة، وذلك عند إلغاء إيماءة إظهار شاشة الرجوع التي تؤدي إلى إيقاف عملية إخفاء. (I0a400، b/384765586)
  • [من Fragment 1.8.9] تم إصلاح الخطأ الذي كان يحدث عند استخدام مجموعة من setMaxLifecycle وpopBackStack، ما كان يؤدي إلى تعذُّر نقل الجزء العلوي من الشاشة إلى الحالة RESUMED. (I3448b، b/406127576)
  • [من Fragment 1.8.8] تم إصلاح مشكلة كانت تؤدي إلى تعطُّل FragmentManager أثناء محاولة حفظ حالة الأجزاء التي تمت إضافتها باستخدام setMaxLifecycle(Lifecycle.State.INITIALIZED). وبما أنّ هذه الأجزاء لم تمرّ مطلقًا بعملية onCreate()، لم يعُد لديها أي حالة محفوظة أو onSaveInstanceState() تم استدعاؤها. (I6e37a، b/408163315)
  • [من Fragment 1.8.7] تم إصلاح مشكلة عدم توفّر FragmentManager في الحالة المناسبة بعد تنفيذ عمليات pop وreplace في الإطار نفسه، ما قد يؤدي إلى حدوث عُطل بالتزامن مع ميزة "الرجوع التوقّعي". (I50ad1، b/380288461)
  • [من Fragment 1.8.6] يمكن الآن أن يتلقّى الإجراء setOnApplyWindowInsetsListener override في FragmentContainerView قيمة فارغة للمستمع. (I575f0، b/282790626)
  • [من Fragment 1.8.5] تم إصلاح IllegalStateException تم تفعيله بواسطة saveBackStack فقط بعد إلغاء إيماءة "الرجوع التوقّعي" أو مقاطعتها. (I3387d، b/342419080)
  • [من Fragment 1.8.4] تم إصلاح خطأ UninitializedPropertyAccessException في AndroidFragment عند استبدال الفئة التي يستخدمها مثيل AndroidFragment بشكل ديناميكي. (I12dea، b/365578408)
  • [من Fragment 1.8.4] تم إصلاح مشكلة كانت تؤدي إلى تعطُّل التطبيقات التي تستخدم Fragment عند الضغط بسرعة على زر الرجوع في النظام أو تنفيذ إيماءة الرجوع السريع. (Ibc038، b/364804225، b/364914301)
  • [من Fragment 1.8.4] تم إصلاح مشكلة في الأجزاء كانت تؤدي إلى انتقال مدير الأجزاء إلى حالة غير محدّدة عند مقاطعة إيماءة الرجوع التوقّعية، بل كانت تؤدي إلى عرض الجزء غير الصحيح. (If82e2، b/338624457)
  • [من Fragment 1.8.3] لم يعُد AndroidFragment يتعطّل إذا تمت إضافته إلى التركيب أثناء حفظ حالة النشاط أو الجزء الذي يحتوي عليه. (I985e9، b/356643968)
  • [من Fragment 1.8.2] لن يؤدي تفعيل الرجوع إلى الخلف في النظام أثناء تنفيذ FragmentManager لعمليات معلّقة إلى حدوث استثناء خارج النطاق. (I9ba32، b/342316801)
  • [من Fragment 1.8.2] تعالج السمة AndroidFragment الآن بشكل صحيح الحالات التي يتم فيها وضع الجزء الرئيسي في سجلّ الرجوع للأجزاء، ما يمنع حدوث مشاكل "لم يتم العثور على طريقة عرض لمعرّف" عند الرجوع إلى هذا الجزء. (I94608، b/347706985)
  • [من Fragment 1.8.2] تنتظر الأجزاء التي تمت إضافتها باستخدام الطريقة FragmentTransaction.add التي تأخذ ViewGroup onContainerAvailable قبل الانتقال إلى onStart(). يؤثر ذلك في مستخدمي واجهة برمجة التطبيقات هذه، مثل AndroidFragment، الذي ينتظر الآن إعادة إدخال AndroidFragment في التركيب قبل نقله عبر onStart(). (I94608، b/347706985)
  • [من Fragment 1.8.1] تم إصلاح مشكلة كانت تؤدي إلى إيقاف جزء بدون حاوية على الفور عند بدء إيماءة الرجوع التوقّعية. (If6b83، b/345244539)

المساهمة الخارجية

  • دمج fragment-ktx في مكتبة fragment أصبحت جميع إضافات Kotlin الآن جزءًا من العنصر الرئيسي لتقسيم الرمز البرمجي. وأصبح fragment-ktx الآن عنصرًا فارغًا لتحقيق التوافق. شكرًا "جيك وارتون". (Idabaa)

الإصدار 1.8

الإصدار 1.8.9

‫13 أغسطس 2025

تم طرح androidx.fragment:fragment-*:1.8.9. يتضمّن الإصدار 1.8.9 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تتسبب في عدم تحرُّك الإيماءة اللاحقة بشكلٍ صحيح عند استخدام أدوات إنشاء الرسوم المتحركة، وذلك عند إلغاء إيماءة الرجوع التوقّعية التي تؤدي إلى ظهور عملية إخفاء. (I0a400، b/384765586)
  • تم إصلاح الخطأ الذي كان يؤدي إلى تعذُّر نقل الجزء العلوي إلى الحالة RESUMED عند استخدام مزيج من setMaxLifecycle وpopBackStack. (I3448b، b/406127576)

الإصدار 1.8.8

‫4 يونيو 2025

تم طرح androidx.fragment:fragment-*:1.8.8. يتضمّن الإصدار 1.8.8 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى تعطُّل FragmentManager عند محاولة حفظ حالة "القصاصات" التي تمت إضافتها باستخدام setMaxLifecycle(Lifecycle.State.INITIALIZED). وبما أنّ هذه الأجزاء لم تمرّ مطلقًا بالخطوة onCreate()، لم يعُد لديها أي حالة محفوظة أو تم استدعاء onSaveInstanceState(). (I6e37a)

الإصدار 1.8.7

‫20 مايو 2025

تم طرح androidx.fragment:fragment-*:1.8.7. يتضمّن الإصدار 1.8.7 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم توفّر FragmentManager في الحالة المناسبة بعد عمليات العرض والاستبدال في الإطار نفسه، ما كان قد يؤدي إلى حدوث عطل بالتزامن مع إزالة العناصر من الخلفية إما من خلال popBackStack أو الإيماءة الرجوع التوقّعي. (I50ad1)
  • تم إصلاح عُطل ناتج عن استخدام AndroidX Transitions والوصول إلى حالة تحاول فيها عمليات نقل سريعة ومتتالية للأجزاء إلغاء عملية نقل لم تبدأ بعد، ولا تزيل مكتبة AndroidX Transition حالة النقل بشكل صحيح. (راجِع b/414612221). (Ib5235)

الإصدار 1.8.6

‫12 فبراير 2025

تم طرح androidx.fragment:fragment-*:1.8.6. يتضمّن الإصدار 1.8.6 هذه التعديلات.

إصلاح الأخطاء

  • يمكن الآن أن يتلقّى الإجراء setOnApplyWindowInsetsListener override في FragmentContainerView معالجًا فارغًا، ما يتوافق مع ما يسمح به إطار العمل. (I575f0، b/282790626)

الإصدار 1.8.5

‫30 أكتوبر 2024

تم طرح androidx.fragment:fragment-*:1.8.5. يتضمّن الإصدار 1.8.5 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح IllegalStateException تم تفعيله بواسطة saveBackStack فقط بعد إلغاء إيماءة "الرجوع التوقّعي" أو مقاطعتها. (I3387d، b/342419080)

الإصدار 1.8.4

‫2 أكتوبر 2024

تم طرح androidx.fragment:fragment-*:1.8.4. يتضمّن الإصدار 1.8.4 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل "اللقطات" عند استخدام "عمليات الانتقال" في Androidx، وذلك عند الضغط بسرعة على زر الرجوع في النظام أو تنفيذ إيماءة الرجوع بسرعة. (Ibc038، b/364804225)
  • تم إصلاح مشكلة في الأجزاء كانت تتسبّب في إرسال مدير الأجزاء إلى حالة غير محدّدة عند مقاطعة إيماءة الرجوع التوقّعي، بل كانت تؤدي إلى عرض الجزء غير الصحيح. (If82e2، b/338624457)
  • تم إصلاح UninitializedPropertyAccessException في AndroidFragment عند استبدال الفئة التي يستخدمها مثيل AndroidFragment بشكل ديناميكي. (I12dea)

الإصدار 1.8.3

‫4 سبتمبر 2024

تم طرح androidx.fragment:fragment-*:1.8.3. يتضمّن الإصدار 1.8.3 هذه التعديلات.

إصلاح الأخطاء

  • تأخذ السمة FragmentManager الآن في الاعتبار العمليات المعلّقة بشكل صحيح عند التعامل مع إيماءة "الرجوع التوقّعي". من المفترض أن يضمن ذلك عدم تسبُّب الرجوع إلى الخلف في النظام في حدوث IndexOutOfBoundsException. (I9ba32، b/342316801)
  • لم يعُد AndroidFragment يتعطّل إذا تمت إضافته إلى التركيب أثناء حفظ حالة النشاط أو الجزء الذي يحتوي عليه. (I985e9، b/356643968)

الإصدار 1.8.2

‫24 يوليو 2024

تم طرح androidx.fragment:fragment-*:1.8.2. يتضمّن الإصدار 1.8.2 هذه التعديلات.

إصلاح الأخطاء

  • تعالج AndroidFragment الآن بشكلٍ صحيح الحالات التي يتم فيها وضع الجزء الرئيسي في سجلّ التراجع الخاص بالجزء، ما يؤدي إلى تجنُّب مشاكل "لم يتم العثور على طريقة عرض لمعرّف" عند الرجوع إلى هذا الجزء. (I94608)
  • تنتظر الأجزاء المضافة باستخدام الطريقة FragmentTransaction.add التي تستخدم ViewGroup الآن onContainerAvailable قبل الانتقال إلى onStart(). يؤثر ذلك في مستخدمي واجهة برمجة التطبيقات هذه، مثل AndroidFragment، التي تنتظر الآن AndroidFragment لإعادة إدخال التركيب قبل نقله من خلال onStart(). (I94608)

الإصدار 1.8.1

‫26 يونيو 2024

تم طرح androidx.fragment:fragment-*:1.8.1. يتضمّن الإصدار 1.8.1 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة DESTROYED على الفور عند بدء إيماءة الرجوع التوقّعية في الأجزاء التي لا تحتوي على حاوية. يتم الآن الاحتفاظ بها في الحالة CREATED إلى أن يكتمل الإيماء. (If6b83، b/345244539)

الإصدار 1.8.0

‫12 يونيو 2024

تم طرح androidx.fragment:fragment-*:1.8.0. يتضمّن الإصدار 1.8.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.7.0

  • يحتوي العنصر fragment-compose الآن على AndroidFragment Composable يتيح إضافة أجزاء إلى التسلسل الهرمي لـ Compose من خلال اسم فئة الجزء. تتعامل هذه الفئة تلقائيًا مع حفظ حالة Fragment واستعادتها. يجب استخدام هذه الطريقة كبديل مباشر للطريقة التي تمّت التوصية بها سابقًا لاستخدام AndroidViewBinding لتوسيع Fragment.
  • يتم الآن تشغيل وظيفة ردّ الاتصال onBackStackChangeCancelled في واجهة OnBackStackChangedListener الخاصة بـ FragmentManager كجزء من تنفيذ العمليات في FragmentManager، ما يجعلها أقرب إلى توقيت وظيفة ردّ الاتصال onBackStackChangeCommitted.

الإصدار ‎1.8.0-rc01

‫29 مايو 2024

تم طرح androidx.fragment:fragment-*:1.8.0-rc01. يتضمّن الإصدار 1.8.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • يتم الآن تشغيل دالة رد الاتصال onBackStackChangeCancelled في واجهة FragmentManagers OnBackStackChangedListener كجزء من تنفيذ العمليات في FragmentManager، ما يجعلها أقرب إلى توقيت دالة رد الاتصال onBackStackChangeCommitted. (I5ebfb، b/332916112)

الإصدار ‎1.8.0-beta01

‫14 مايو 2024

تم طرح androidx.fragment:fragment-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.

إصلاح الأخطاء

  • من الجزء 1.7.1: لن يتم تشغيل ميزة "الرجوع التوقّعي" الآن إلا للمعاملات التي تحتوي جميع أجزائها على Animator أو Seekable Androidx Transition. يحلّ هذا الإصدار مشكلة ظهور شاشة سوداء عند إلغاء معاملة يمكن البحث فيها جزئيًا. (I43037، b/339169168)

الإصدار ‎1.8.0-alpha02

‫17 أبريل 2024

تم طرح androidx.fragment:fragment-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.

إصلاح الأخطاء

  • من الجزء 1.7.0-rc02: تمت إضافة سجلّات لتوضيح سبب عدم إمكانية تشغيل sharedElement بدون أي انتقالات أخرى. (Iec48e)
  • من Fragment 1.7.0-rc02: تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عطل في حال إضافة عنصر مشترك غير قابل للبحث إلى معاملات تكون فيها جميع عمليات الانتقال الأخرى قابلة للبحث. سيتم الآن اعتبار المعاملة غير قابلة للبحث بشكل صحيح. (I18ccd)

الإصدار ‎1.8.0-alpha01

‫3 أبريل 2024

تم طرح androidx.fragment:fragment-*:1.8.0-alpha01. يتضمّن الإصدار 1.8.0-alpha01 هذه التعديلات.

الميزات الجديدة

  • تتيح السمة الجديدة AndroidFragment Composable إضافة أجزاء إلى التسلسل الهرمي لـ Compose من خلال اسم فئة الجزء. تتعامل هذه الفئة تلقائيًا مع حفظ حالة Fragment واستعادتها. يمكن استخدام هذا الخيار كبديل مباشر لربط عرض Android Composable.(b/312895363، Icf841)

التغييرات في المستندات

  • تم تعديل المستندات الخاصة بواجهات برمجة التطبيقات OnBackStackChangedListener للإشارة إلى وقت طلبها وكيفية استخدامها. (I0bfd9)

تحديث الاعتمادية

الإصدار 1.7

الإصدار 1.7.1

‫14 مايو 2024

تم طرح androidx.fragment:fragment-*:1.7.1. يتضمّن الإصدار 1.7.1 هذه التعديلات.

إصلاح الأخطاء

  • لن يتم تشغيل ميزة "الرجوع التوقّعي" الآن إلا للمعاملات التي تحتوي جميع أجزائها على Animator أو Seekable Androidx Transition. يحلّ هذا التحديث مشكلة ظهور شاشة فارغة عند إلغاء معاملة يمكن البحث فيها جزئيًا. (I43037، b/339169168)

الإصدار 1.7.0

‫1 مايو 2024

تم طرح androidx.fragment:fragment-*:1.7.0. يتضمّن الإصدار 1.7.0 هذه التعديلات.

إتاحة إيماءة "الرجوع التوقّعي"

  • توفّر الآن "اللقطات" إمكانية استخدام ميزة "الرجوع التوقّعي داخل التطبيق" عند استخدام Animator أو عند استخدام AndroidX Transition 1.5.0. يتيح ذلك للمستخدمين استخدام إيماءة الرجوع لرؤية الجزء السابق من خلال البحث في Animator/Transition قبل اتخاذ قرار إما بتنفيذ المعاملة من خلال إكمال الإيماءة أو إلغائها.
نظام الانتقال مورد XML متوافق مع إيماءة إظهار شاشة الرجوع
Animation R.anim لا
Animator R.animator نعم
إطار العمل Transition R.transition لا
‫AndroidX Transition مع Transition 1.4.1 أو إصدار أقدم R.transition لا
‫AndroidX Transition مع الإصدار 1.5.0 من Transition R.transition نعم

إذا واجهت أي مشاكل في توافق ميزة "الرجوع التوقّعي" مع "اللقطات" بعد الموافقة على استخدام إيماءة الرجوع التوقّعي، يُرجى إبلاغ فريق "اللقطات" عن المشكلة مع تقديم نموذج مشروع يعيد إنتاج المشكلة. يمكنك إيقاف ميزة "الرجوع التوقّعي" باستخدام FragmentManager.enabledPredictiveBack(false) في onCreate() من "نشاطك".

توفّر السمة FragmentManager.OnBackStackChangedListener() الآن السمتَين onBackStackChangeProgressed() وonBackStackChangeCancelled() لتلقّي أحداث إلغاء الأحداث وأحداث تقدّم الرجوع التوقّعي على التوالي.

Fragment Compose Artifact

تم إنشاء أداة fragment-compose جديدة تركّز على دعم التطبيقات التي يتم نقلها من بنية مستندة إلى Fragment إلى بنية مستندة إلى 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة كتابة FragmentHostCallback بلغة Kotlin لكي تتطابق إمكانية قبول القيم الفارغة للنوع العام من Host مع إمكانية قبول القيم الفارغة لنوع الإرجاع في onGetHost(). (I40af5)

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم إيقاف جزء نهائيًا عند تنفيذ إيماءة "الرجوع التوقّعي" على جزء غير موجود في حاوية. سيتم الآن نقل Fragment على الفور إلى الحالة النهائية. (Ida0d9)
  • تم إصلاح مشكلة في "اللقطات" كانت تؤدي إلى إتلاف طريقة العرض التي يتم الانتقال إليها عند مقاطعة عمليات الانتقال الواردة باستخدام إيماءة "الرجوع التوقّعي"، ما يؤدي إلى ظهور شاشة فارغة. (Id3f22، b/319531491)

الإصدار ‎1.7.0-alpha10

‫7 فبراير 2024

تم طرح androidx.fragment:fragment-*:1.7.0-alpha10. يتضمّن الإصدار 1.7.0-alpha10 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة المعروفة في إصدار Fragment السابق والتي كانت تتسبّب في عرض Fragment لخطأ NullPointerException من handleOnBackProgressed إذا لم تتم إضافة أي FragmentManager.OnBackStackChangedListener من خلال addOnBackStackChangedListener عند استخدام ميزة "الرجوع التوقّعي" في Fragment مع Animator أو AndroidX Transition. (I7c835)

الإصدار ‎1.7.0-alpha09

‫24 يناير 2024

تم طرح androidx.fragment:fragment-*:1.7.0-alpha09. يتضمّن الإصدار 1.7.0-alpha09 هذه التعديلات.

Fragment Compose Artifact

تم إنشاء أداة fragment-compose جديدة تركّز على دعم التطبيقات التي يتم نقلها من بنية مستندة إلى Fragment إلى بنية مستندة إلى Compose بالكامل.

الميزة الأولى المتاحة في هذا العنصر الجديد هي طريقة content الإضافية في Fragment التي تسعى إلى تسهيل استخدام 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 مع 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)
  • من الجزء 1.6.2: عند تضخيم جزء من FragmentContainerView، يمكن الآن الوصول إلى حالاته، مثل FragmentManager والمضيف والمعرّف، في دالة معاودة الاتصال onInflate. (I1e44c، b/307427423)
  • من Fragment 1.6.2: عند استخدام clearBackStack لإزالة مجموعة من الأجزاء، سيتم الآن محو أي ViewModel متداخل في Fragment عند محو ViewModels الجزء الرئيسي. (I6d83c، b/296173018)

الإصدار ‎1.7.0-alpha06

‫4 أكتوبر 2023

تم طرح androidx.fragment:fragment-*:1.7.0-alpha06. يتضمّن الإصدار 1.7.0-alpha06 هذه التعديلات.

تحديث الاعتمادية

  • تم تعديل الفئة Fragments لتعتمد على واجهة برمجة التطبيقات الجديدة animateToStart التي تمت إضافتها في Transition 1.5.0-alpha04.

الإصدار ‎1.7.0-alpha05

‫20 سبتمبر 2023

تم طرح androidx.fragment:fragment-*:1.7.0-alpha05. يتضمّن الإصدار 1.7.0-alpha05 هذه التعديلات.

الميزات الجديدة

  • توفّر الآن "اللقطات" إمكانية استخدام ميزة "إيماءة إظهار شاشة الرجوع" عند استخدام "عمليات الانتقال" في Androidx. يتيح لك ذلك استخدام إيماءة الرجوع للبحث عن الجزء السابق باستخدام Androidx Transition المخصّص قبل اتّخاذ قرار بتنفيذ المعاملة أو إلغائها من خلال الإيماءة المكتملة. يجب الاعتماد على إصدار 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 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عند إلغاء إيماءة الرجوع التوقّعي، حيث لم تتمكّن الأجزاء من الوصول إلى حالة Lifecycle الصحيحة. (I7cffe، b/297379023)
  • تم إصلاح مشكلة تراجع حيث كان يُسمح بتشغيل الرسوم المتحركة مع عمليات الانتقال. (I59f36)
  • تم إصلاح مشكلة عند استخدام "الرجوع التوقّعي" مع الأجزاء، حيث كانت محاولة الرجوع مرتين على التوالي بسرعة في الجزء قبل الأخير في سجلّ الرجوع تؤدي إلى حدوث عُطل. (Ifa1a4)

الإصدار ‎1.7.0-alpha03

‫23 أغسطس 2023

تم طرح androidx.fragment:fragment-*:1.7.0-alpha03. يتضمّن الإصدار 1.7.0-alpha03 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة في "اللقطات" عند استخدام ميزة "إيماءة إظهار شاشة الرجوع"، ما كان يؤدي إلى تخطّي اللقطة الأولى في سجلّ الرجوع الخاص بأداة إدارة اللقطات وإغلاق النشاط عند استخدام زر الرجوع في النظام من خلال التنقّل باستخدام ثلاثة أزرار أو إيماءة "إيماءة إظهار شاشة الرجوع". (I0664b، b/295231788)

الإصدار ‎1.7.0-alpha02

‫9 أغسطس 2023

تم طرح androidx.fragment:fragment-*:1.7.0-alpha02. يتضمّن الإصدار 1.7.0-alpha02 هذه التعديلات.

إصلاح الأخطاء

  • عند استخدام "اللقطات" مع إيماءات "الرجوع التوقّعي" من الإصدار 34 من واجهة برمجة التطبيقات، إذا كنت تستخدم نظام انتقال لا يتيح البحث (Animations أو Transitions) أو لا تستخدم أي انتقالات على الإطلاق، ستنتظر "اللقطات" الآن إلى أن تكتمل الإيماءة قبل تنفيذ إجراء الرجوع. (I8100c)

الإصدار 1.7.0-alpha01

‫7 يونيو 2023

تم طرح androidx.fragment:fragment-*:1.7.0-alpha01. تم تطوير هذا الإصدار في فرع داخلي.

الميزات الجديدة

  • توفّر الآن "اللقطات" إمكانية استخدام ميزة "الرجوع التوقّعي داخل التطبيق" عند استخدام Animator. يتيح لك ذلك استخدام إيماءة الرجوع لرؤية الجزء السابق مع أداة Animator المخصّصة قبل اتّخاذ قرار إما بتنفيذ المعاملة من خلال الإيماءة المكتملة أو إلغائها. يمكنك أيضًا إيقاف هذا السلوك الجديد باستخدام enablePredictiveBack() التجريبية وإدخال false.

الإصدار 1.6

الإصدار 1.6.2

1 تشرين الثاني (نوفمبر) 2023

تم طرح androidx.fragment:fragment-*:1.6.2. يتضمّن الإصدار 1.6.2 هذه التعديلات.

إصلاح الأخطاء

  • عندما يتم توسيع جزء من FragmentContainerView، يمكن الآن الوصول إلى حالاته، مثل FragmentManager وHost والمعرّف، في دالة onInflate. (I1e44c، b/307427423)
  • عند استخدام clearBackStack لإزالة مجموعة من الأجزاء، سيتم الآن محو أي ViewModel متداخلة في Fragment عند محو ViewModels الجزء الرئيسي. (I6d83c، b/296173018)

الإصدار 1.6.1

‏26 تموز (يوليو) 2023

تم طرح androidx.fragment:fragment-*:1.6.1. يتضمّن الإصدار 1.6.1 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تتسبّب في تخزين الحالة المحفوظة بشكل غير صحيح في ذاكرة التخزين المؤقت عند إيقاف النشاط بدون إيقافه نهائيًا، حتى بعد نقل مثيل الجزء إلى الحالة RESUMED. سيؤدي ذلك إلى إعادة استخدام الحالة المخزّنة مؤقتًا إذا كان مثيل الجزء هذا في سجلّ الرجوع عند استخدام واجهة برمجة التطبيقات الخاصة بسجلات الرجوع المتعددة لحفظ هذا الجزء واستعادته. (I71288، b/246289075)

تحديث الاعتمادية

  • يعتمد Fragment الآن على Activity 1.7.2. يحلّ هذا الإصلاح مشكلة عدم إمكانية مستخدمي Kotlin توسيع ComponentDialog بدون الاعتماد بشكلٍ صريح على Activity. (b/287509323)

الإصدار 1.6.0

‫7 يونيو 2023

تم طرح androidx.fragment:fragment-*:1.6.0. يتضمّن الإصدار 1.6.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.5.0

  • تم تقسيم الحالة المحفوظة لعناصر Fragment بالكامل بين حالة المكتبة الخاصة (فئات Parcelable المخصّصة) والحالة التي يوفّرها المطوّر، والتي يتم تخزينها الآن دائمًا في Bundle يتيح تحديد مصدر حالة جزء معيّن بدقة.
  • تمت إضافة وسيطتَي معاودة الاتصال onBackStackChangeStarted وonBackStackChangeCommitted إلى واجهة FragmentManager.OnBackStackChangedListener، ويتم استدعاؤهما مع كل Fragment قبل إضافتها/إزالتها من سجلّ التراجع عن الأجزاء وبعد إتمام المعاملة مباشرةً، على التوالي.
  • أضافت السمة FragmentStrictMode سمة WrongNestedHierarchyViolation جديدة ترصد متى يتم تضمين جزء فرعي داخل بنية العرض الخاصة بالجزء الرئيسي، ولكن لا تتم إضافته إلى childFragmentManager الخاص بالجزء الرئيسي.
  • تم الآن وضع التعليقات التوضيحية المناسبة على واجهتَي برمجة التطبيقات Fragment وFragmentManager اللتين تقبلان Intent أو IntentSender باستخدام @NonNull لمنع تمرير قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات المعنية في إطار عمل Android التي تستدعيها هذه الطرق على الفور.
  • تتيح DialogFragment الآن الوصول إلى ComponentDialog الأساسية من خلال واجهة برمجة التطبيقات requireComponentDialog().
  • يعتمد Fragment الآن على 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 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى إرسال ActivityResults مع رمز الطلب غير الصحيح عند تقديم طلبات startActivityForResult متعددة على التوالي. (If0b9d، b/249519359)
  • تم إصلاح مشكلة يتم فيها إرسال عمليات معاودة الاتصال 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)
  • لن يتم الآن إرسال جزء من البيانات إلا مرة واحدة باستخدام وظيفتَي معاودة الاتصال الجديدتَين onBackStackChangeStarted وonBackStackChangeCommitted، حتى إذا كانت عدّة معاملات تتضمّن الجزء نفسه. (Ic6b69)

الإصدار 1.6.0-alpha09

‫5 أبريل 2023

تم طرح androidx.fragment:fragment-*:1.6.0-alpha09. يتضمّن الإصدار 1.6.0-alpha09 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تتيح DialogFragment الآن الوصول إلى ComponentDialog الأساسية من خلال واجهة برمجة التطبيقات requireComponentDialog(). (I022e3، b/234274777)
  • تمت إضافة التعليق التوضيحي @MainThread إلى واجهات برمجة التطبيقات الخاصة بالأجزاء commitNow() وexecutePendingTransactions() وpopBackStackImmediate()، ما يعني أنّها ستعرض الآن جميعًا أخطاء في الإصدار عند عدم استدعائها من سلسلة التعليمات الرئيسية بدلاً من انتظار حدوث خطأ أثناء وقت التشغيل. (Ic9665، b/236538905)

إصلاح الأخطاء

  • تم إصلاح خطأ في FragmentManager كان يؤدي إلى حدوث عطل عند الحفظ والاستعادة في الإطار نفسه. (Ib36af، b/246519668)
  • لا يتم الآن تنفيذ دوال رد الاتصال OnBackStackChangedListener وonBackStackChangeStarted وonBackStackChangeCommitted إلا عند تغيير سجلّ التراجع FragmentManager. (I66055، b/274788957)

الإصدار ‎1.6.0-alpha08

‫22 مارس 2023

تم طرح androidx.fragment:fragment-*:1.6.0-alpha08. يتضمّن الإصدار 1.6.0-alpha08 هذه التعديلات.

تغيير السلوك

  • تم تعديل توقيت معاودة الاتصال OnBackStackChangedListener.onBackStackChangeCommited ليتم تنفيذه قبل تنفيذ عمليات الأجزاء. يضمن ذلك عدم تمرير جزء منفصل إلى دالة الرجوع. (I66a76، b/273568280)

إصلاح الأخطاء

  • من Fragment 1.5.6: تم إصلاح مشكلة عدم عمل استدعاء clearFragmentResultListener داخل setFragmentResultListener إذا كان Lifecycle STARTED وكان هناك نتيجة متاحة. (If7458)

تحديثات الاعتماديات

الإصدار ‎1.6.0-alpha07

‫8 مارس 2023

تم طرح androidx.fragment:fragment-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.

إصلاح الأخطاء

  • من Fragment 1.5.6: تم إصلاح المشكلة التي كانت تؤدي إلى إبطال قائمة النشاط عند إزالة أي Fragment، سواء كان قد أضاف عناصر قائمة أم لا. (50f098، b/244336571)

الإصدار ‎1.6.0-alpha06

‫22 فبراير 2023

تم طرح androidx.fragment:fragment-*:1.6.0-alpha06. يتضمّن الإصدار 1.6.0-alpha06 هذه التعديلات.

تغيير السلوك

  • سيتم الآن تنفيذ وظيفة الاستدعاء الجديدة onBackStackChangedStarted في FragmentManageronBackStackChangedListener قبل أن تبدأ الأجزاء في الانتقال إلى حالاتها المستهدَفة. (I34726)

الإصدار ‎1.6.0-alpha05

‫8 فبراير 2023

تم طرح androidx.fragment:fragment-*:1.6.0-alpha05. يتضمّن الإصدار 1.6.0-alpha05 هذه التعديلات.

الميزات الجديدة

  • توفّر واجهة FragmentManager.OnBackStackChagnedListener الآن دالتَي ردّ نداء إضافيتَين، onBackStackChangeStarted وonBackStackChangeCommitted، تتيحان الحصول على معلومات إضافية والتحكّم عند حدوث تغييرات في سجلّ الرجوع في FragmentManager. (Ib7ce5، b/238686802)

تغييرات واجهة برمجة التطبيقات

  • تم الآن وضع التعليقات التوضيحية المناسبة على واجهتَي برمجة التطبيقات Fragment وFragmentManager اللتين تقبلان Intent أو IntentSender باستخدام @NonNull لمنع تمرير قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات المعنية لإطار عمل Android التي تستدعيها هذه الطرق على الفور. (I06fd4)

الإصدار ‎1.6.0-alpha04

‫7 كانون الأول (ديسمبر) 2022

تم طرح androidx.fragment:fragment-*:1.6.0-alpha04. يتضمّن الإصدار 1.6.0-alpha04 هذه التعديلات.

الميزات الجديدة

  • أضافت السمة FragmentStrictMode سمة WrongNestedHierarchyViolation جديدة ترصد متى يتم تضمين جزء فرعي داخل بنية العرض الخاصة بالجزء الرئيسي، ولكن لا تتم إضافته إلى childFragmentManager الخاص بالجزء الرئيسي. (I72521، b/249299268)

التغييرات في السلوك

  • تعيد الآن الأجزاء ضبط حالتها SavedStateRegistry قبل onAttach()، ما يضمن توفّرها من جميع طرق مراحل النشاط التصاعدية. (I1e2b1)

تغييرات واجهة برمجة التطبيقات

  • يفصل العنصر 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • سيُطلب الآن من الفئات التي توسّع DialogFragment استدعاء super في عمليات الإلغاء onDismiss(). (I14798، b/238928865)

إصلاح الأخطاء

  • تم إصلاح المشاكل التي حدثت بسبب دمج واجهات معاودة الاتصال الجديدة الخاصة بموفّر البيانات (OnConfigurationChangedProvider وOnMultiWindowModeChangedProvider وOnTrimMemoryProvider وOnPictureInPictureModeChangedProvider) لضمان تلقّي الأجزاء دائمًا لعمليات معاودة الاتصال المناسبة. (I9b380 وI34581 و(I8dfe6 وb/242570955) وIf9d6b وId0096 وI690b3 وI2cba2)

الإصدار ‎1.6.0-alpha02

‫24 أغسطس 2022

تم طرح ميزات androidx.fragment:fragment:1.6.0-alpha02 وandroidx.fragment:fragment-ktx:1.6.0-alpha02 وandroidx.fragment:fragment-testing:1.6.0-alpha02. يتضمّن الإصدار 1.6.0-alpha02 هذه التعديلات.

إصلاح الأخطاء

  • من Fragment 1.5.2: تم إصلاح مشكلة كانت تؤدي إلى تنفيذ عملية popBackStack() وعملية replace() في الوقت نفسه، ما كان يتسبّب في تشغيل Animation/Animator غير صحيحَين للأجزاء التي يتم إغلاقها. (Ib1c07، b/214835303)

الإصدار ‎1.6.0-alpha01

‫27 يوليو 2022

تم طرح ميزات androidx.fragment:fragment:1.6.0-alpha01 وandroidx.fragment:fragment-ktx:1.6.0-alpha01 وandroidx.fragment:fragment-testing:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.

التغييرات في السلوك

  • تم تقسيم الحالة المحفوظة لعناصر Fragment بالكامل بين حالة المكتبة الخاصة (فئات Parcelable المخصّصة) والحالة التي يوفّرها المطوّر، والتي يتم تخزينها الآن دائمًا في Bundle يتيح تحديد مصدر حالة جزء معيّن بدقة. (b/207158202)

إصلاح الأخطاء

  • من Fragment 1.5.1: تم إصلاح خطأ في الإصدار DialogFragmentCallbacksDetector حيث كان استخدام إصدار lint المضمّن في الإصدار 7.4 من "المكوّن الإضافي لنظام Android في Gradle" يؤدي إلى تعطُّل lint. (b/237567009)

تحديث الاعتمادية

الإصدار 1.5

الإصدار 1.5.7

‫19 أبريل 2023

تم طرح ميزات androidx.fragment:fragment:1.5.7 وandroidx.fragment:fragment-ktx:1.5.7 وandroidx.fragment:fragment-testing:1.5.7. يتضمّن الإصدار 1.5.7 هذه التعديلات.

إصلاح الأخطاء

  • لم يعُد استخدام postponeEnterTransition مع مهلة زمنية ثم استبدال الجزء المؤجّل يؤدي إلى تسريب الجزء المؤجّل. (I2ec7d، b/276375110)

الإصدار 1.5.6

‫22 مارس 2023

تم طرح ميزات androidx.fragment:fragment:1.5.6 وandroidx.fragment:fragment-ktx:1.5.6 وandroidx.fragment:fragment-testing:1.5.6. يتضمّن الإصدار 1.5.6 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تؤدي إلى إبطال قائمة النشاط عند إزالة أي Fragment، سواء كان قد أضاف عناصر قائمة أم لا. (50f098، b/244336571)
  • تم إصلاح مشكلة عدم عمل استدعاء clearFragmentResultListener داخل setFragmentResultListener إذا كان Lifecycle STARTED وكان هناك نتيجة متاحة. (If7458)

الإصدار 1.5.5

‫7 كانون الأول (ديسمبر) 2022

تم طرح ميزات androidx.fragment:fragment:1.5.5 وandroidx.fragment:fragment-ktx:1.5.5 وandroidx.fragment:fragment-testing:1.5.5. يتضمّن الإصدار 1.5.5 هذه التعديلات.

إصلاح الأخطاء

  • لن تحفظ "اللقطات" حالة ViewModel بشكل غير صحيح كجزء من حالة الحفظ في سجلّ العرض. (I10d2b، b/253546214)

الإصدار 1.5.4

‫24 أكتوبر 2022

تم طرح ميزات androidx.fragment:fragment:1.5.4 وandroidx.fragment:fragment-ktx:1.5.4 وandroidx.fragment:fragment-testing:1.5.4. يتضمّن الإصدار 1.5.4 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يحدث عند استخدام FragmentController مخصّص مع مضيف لا ينفّذ واجهة معاودة الاتصال الخاصة بمقدّم الخدمة (OnConfigurationChangedProvider وOnMultiWindowModeChangedProvider وOnTrimMemoryProvider وOnPictureInPictureModeChangedProvider) واستدعاء دالة الإرسال المتوقّفة نهائيًا، ما كان يؤدي إلى تعذُّر الإرسال إلى الأجزاء الفرعية. (I9b380)

الإصدار 1.5.3

‫21 سبتمبر 2022

تم طرح ميزات androidx.fragment:fragment:1.5.3 وandroidx.fragment:fragment-ktx:1.5.3 وandroidx.fragment:fragment-testing:1.5.3. يتضمّن الإصدار 1.5.3 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح خطأ كان يتسبّب في تلقّي الأجزاء في حزمة التكديس الخلفية عمليات معاودة الاتصال onMultiWindowModeChanged() وonPictureInPictureModeChanged() وonLowMemory() وonConfigurationChanged(). (I34581 وI8dfe6 وb/242570955)
  • لن تتلقّى الأجزاء الفرعية المتداخلة بعد الآن عمليات إعادة استدعاء متعددة من onMultiWindowModeChanged() أو onPictureInPictureModeChanged() أو onLowMemory() أو onConfigurationChanged(). (I690b3 وId0096 وIf9d6b وI2cba2)

الإصدار 1.5.2

‫10 أغسطس 2022

تم طرح ميزات androidx.fragment:fragment:1.5.2 وandroidx.fragment:fragment-ktx:1.5.2 وandroidx.fragment:fragment-testing:1.5.2. يتضمّن الإصدار 1.5.2 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تؤدي إلى تنفيذ popBackStack() وreplace() في الوقت نفسه، ما قد يتسبب في تشغيل الأجزاء الخارجة من Animation/Animator بشكل غير صحيح. (Ib1c07، b/214835303)

الإصدار 1.5.1

‫27 يوليو 2022

تم طرح ميزات androidx.fragment:fragment:1.5.1 وandroidx.fragment:fragment-ktx:1.5.1 وandroidx.fragment:fragment-testing:1.5.1. يتضمّن الإصدار 1.5.1 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة في الإصدار DialogFragmentCallbacksDetector حيث كان استخدام إصدار lint المضمّن في الإصدار 7.4 من "المكوّن الإضافي لنظام Android Gradle" يؤدي إلى تعطُّل lint. (b/237567009)

تحديث الاعتمادية

الإصدار 1.5.0

‫29 يونيو 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0 وandroidx.fragment:fragment-ktx:1.5.0 وandroidx.fragment:fragment-testing:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.4.0

  • دمج CreationExtras: يمكن الآن لـ Fragment توفير ViewModelProvider.Factory بدون حالة من خلال CreationExtras في Lifecycle 2.5.0.
  • دمج مربّع حوار المكوّن: يستخدم DialogFragment الآن ComponentDialog من خلال Activity 1.5.0 كمربّع الحوار التلقائي الذي تعرضه onCreateDialog().
  • إعادة تصميم حالة المثيل المحفوظة: بدأت الأجزاء في تغيير طريقة حفظ حالة المثيل. هذا جهد يهدف إلى المساعدة في تحديد الحالة التي تم حفظها في الجزء ومصدر الحالة بوضوح. تشمل التغييرات الحالية ما يلي:
    • يحفظ FragmentManager الآن حالة المثيل المحفوظ في Bundle بدلاً من حفظها مباشرةً في Parcelable مخصّص.
    • يتم الآن حفظ النتائج التي تم ضبطها من خلال Fragment Result APIs ولم يتم تسليمها بعد بشكل منفصل عن الحالة الداخلية لـ FragmentManager.
    • يتم الآن حفظ الحالة المرتبطة بكل جزء على حدة بشكل منفصل عن الحالة الداخلية لـ FragmentManager، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بمعرّفات فريدة مضمّنة في سجلّ تصحيح الأخطاء Fragment.

التغييرات الأخرى

  • تتيح FragmentStrictMode الآن إمكانية تجاوز عقوبات انتهاك معيّنة للقصاصات الخاصة التابعة لجهات خارجية باستخدام allowViolation() مع اسم الفئة.
  • تم إيقاف واجهات برمجة التطبيقات Fragment التي توفّر قائمة ActionBar لنشاطك. توفّر واجهتا برمجة التطبيقات MenuHost وMenuProvider اللتان تمت إضافتهما في Activity 1.4.0 مساحة مكافئة لواجهة برمجة التطبيقات يمكن اختبارها وتتضمّن مراحل النشاط، وهي المساحة التي يجب أن تستخدمها الفِراغات.

الإصدار 1.5.0-rc01

‫11 مايو 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0-rc01 وandroidx.fragment:fragment-ktx:1.5.0-rc01 وandroidx.fragment:fragment-testing:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.

إعادة تصميم حالة المثيل المحفوظة

الإصدار ‎1.5.0-beta01

‫20 أبريل 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0-beta01 وandroidx.fragment:fragment-ktx:1.5.0-beta01 وandroidx.fragment:fragment-testing:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • أضافت DialogFragment طريقة dismissNow جديدة تستخدم commitNow لتحقيق التكافؤ مع الدالة showNow. يُرجى العِلم أنّ هذا الإجراء لن يؤدي إلى إغلاق Dialog على الفور، بل سيؤدي فقط إلى تعديل حالة FragmentManager بشكل متزامن. (I15c36، b/72644830)

إعادة تصميم حالة المثيل المحفوظة

  • يحفظ FragmentManager الآن حالة المثيل المحفوظ في Bundle بدلاً من حفظها مباشرةً في Parcelable مخصّص. هذه هي الخطوة الأولى نحو توفير المزيد من الشفافية بشأن ما يتم حفظه فعليًا من خلال "اللقطات". (I93807، b/207158202)
  • يتم الآن حفظ النتائج التي تم ضبطها من خلال واجهات برمجة التطبيقات الخاصة بنتائج الأجزاء ولم يتم تسليمها بعد بشكل منفصل عن الحالة الداخلية لـ 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

الإصدار 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف واجهات برمجة التطبيقات Fragment التي توفّر قائمة ActionBar لنشاطك نهائيًا لأنّها تربط الجزء بنشاطك بشكل وثيق ولا يمكن اختبارها بشكل مستقل. توفّر واجهتا برمجة التطبيقات MenuHost وMenuProvider اللتان تمت إضافتهما في Activity 1.4.0-alpha01 مساحة مكافئة لواجهة برمجة التطبيقات يمكن اختبارها وتتضمّن مراحل النشاط، وهي المساحة التي يجب أن تستخدمها الفِراغات. (I50a59، I20758)

إصلاح الأخطاء

  • يتيح SavedStateViewFactory الآن استخدام CreationExtras حتى إذا تم إعداده باستخدام SavedStateRegistryOwner. في حال توفير عناصر إضافية، سيتم تجاهل الوسيطات التي تمّت تهيئتها. (I6c43b، b/224844583)

الإصدار ‎1.5.0-alpha03

‫23 فبراير 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0-alpha03 وandroidx.fragment:fragment-ktx:1.5.0-alpha03 وandroidx.fragment:fragment-testing:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • يمكنك الآن تمرير CreationExtras إلى الدالتَين by viewModels() وby activityViewModels(). (Ibefe7، b/217601110)

التغييرات في السلوك

الإصدار ‎1.5.0-alpha02

‫9 فبراير 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0-alpha02 وandroidx.fragment:fragment-ktx:1.5.0-alpha02 وandroidx.fragment:fragment-testing:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.

الميزات الجديدة

  • تتيح FragmentStrictMode الآن إمكانية تجاوز عقوبات انتهاك معيّنة للقصاصات الخاصة التابعة لجهات خارجية باستخدام allowViolation() مع اسم الفئة. (I8f678)

الإصدار ‎1.5.0-alpha01

‫26 يناير 2022

تم طرح ميزات androidx.fragment:fragment:1.5.0-alpha01 وandroidx.fragment:fragment-ktx:1.5.0-alpha01 وandroidx.fragment:fragment-testing:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.

الميزات الجديدة

إصلاح الأخطاء

  • من Fragment 1.4.1: لم يعُد FragmentContainerView يعرض استثناء حالة غير قانونية عندما تكون قيم معرّفات العرض التي تم إنشاؤها من ملف XML سالبة. (Ic185b، b/213086140)
  • من Fragment 1.4.1: عند استخدام دالة lambda مخصّصة ownerProducer مع الدالة الكسولة by viewModels()، سيتم الآن استخدام defaultViewModelProviderFactory من هذا المالك إذا لم يتم توفير ViewModelProvider.Factory مخصّص بدلاً من استخدام مصنع الجزء دائمًا. (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()، سيتم الآن استخدام defaultViewModelProviderFactory من هذا المالك إذا لم يتم توفير ViewModelProvider.Factory مخصّص بدلاً من استخدام مصنع الجزء دائمًا. (I56170، b/214106513)

الإصدار 1.4.0

17 تشرين الثاني (نوفمبر) 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0 وandroidx.fragment:fragment-ktx:1.4.0 وandroidx.fragment:fragment-testing:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.3.0

  • توفّر واجهات برمجة التطبيقات FragmentStrictMode عمليات تحقّق أثناء وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات الأجزاء المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل أداة الاستماع المخصّصة أو إيقاف تطبيقك. يمكن ضبط FragmentStrictMode.Policy الذي يتحكّم في عمليات التحقّق المفعَّلة و"العقوبات" التي يتم تفعيلها على FragmentManager من خلال طريقة setStrictModePolicy() الجديدة. تنطبق هذه السياسة على FragmentManager، كما تنطبق بشكل غير مباشر على أيّ مدراء أجزاء فرعية لا يضبطون سياسة فريدة خاصة بهم. يمكنك الاطّلاع على StrictMode for fragments.
  • توفّر FragmentContainerView الآن طريقة getFragment() تعرض الجزء الذي تمت إضافته مؤخرًا إلى الحاوية. يستخدم هذا الإجراء المنطق نفسه المستخدَم مع findFragmentById() مع معرّف FragmentContainerView، ولكنّه يسمح بتسلسل المكالمة.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • تتضمّن FragmentScenario الآن Closeable، ما يتيح لك استخدامها مع طريقة use في Kotlin أو try-with-resources.

  • تمت إضافة FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} لتحديد ما إذا كان سيتم تفعيل الحركة الانتقالية العادية من النشاط والمأخوذة من المظهر في الانتقال بين الأجزاء.

  • تمت إزالة واجهة برمجة التطبيقات التجريبية الخاصة بـ FragmentManager.enableNewStateManager(boolean)، وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن.

حِزم خلفية متعددة

تحتفظ FragmentManager بسجلّ للرجوع يتألف من معاملات الأجزاء التي استخدمت addToBackStack(). يتيح لك ذلك إلغاء هذه المعاملات والرجوع إلى الحالة السابقة، وذلك باستخدام آليات حفظ الحالة باستخدام الأجزاء للسماح للأجزاء باستعادة حالتها بشكلٍ مناسب.

يوسّع هذا الإصدار نطاق هذه الآليات من خلال توفير ثلاث واجهات برمجة تطبيقات جديدة FragmentManager: saveBackStack(String name) وrestoreBackStack(String name) وclearBackStack(String name). تستخدم واجهات برمجة التطبيقات هذه name نفسها المستخدَمة في addToBackStack() لحفظ حالة FragmentTransaction وحالة كل جزء تمت إضافته في هذه المعاملات، ما يتيح لك استعادة هذه المعاملات وأجزائها لاحقًا مع الحفاظ على حالتها. يتيح لك ذلك "التبديل" بفعالية بين حِزم السجلّ الخلفي المتعددة من خلال حفظ حزمة السجلّ الخلفي الحالية واستعادة حزمة سجلّ خلفي محفوظة.

تعمل saveBackStack() بشكل مشابه لـ popBackStack() من حيث أنّها غير متزامنة وتؤدي إلى عكس جميع معاملات الأجزاء إلى هذا الاسم المحدّد ("إزالتها") وإتلاف أي أجزاء تمت إضافتها وإزالتها، ولكنها تختلف في بعض الجوانب المهمة:

  • saveBackStack() شاملة دائمًا.
  • على عكس popBackStack() التي ستعرض جميع المعاملات في سجلّ الرجوع إذا لم يتم العثور على الاسم المحدّد في سجلّ الرجوع أو إذا تم تقديم اسم فارغ، لا تنفّذ saveBackStack() أي إجراء إذا لم يسبق لك تنفيذ معاملة جزء باستخدام addToBackStack() مع هذا الاسم المحدد غير الفارغ.
  • يتم حفظ حالة جميع الأجزاء المضافة من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء onSaveInstanceState() لكل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلات ViewModel مرتبطة بهذه الأجزاء (لا يتم استدعاء onCleared() عليها).

يجب أن تستوفي معاملات الأجزاء التي يمكن استخدامها مع saveBackStack() معايير معيّنة:

  • يجب أن تستخدم كل معاملة جزء setReorderingAllowed(true) لضمان إمكانية استعادة المعاملات كعملية واحدة غير قابلة للتجزئة.
  • يجب أن تكون مجموعة المعاملات المحفوظة مكتفية ذاتيًا (أي يجب ألا تشير صراحةً إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على سجلّ الرجوع خلال الفترة الفاصلة.
  • لا يمكن أن تكون أيّ جزء محفوظ جزءًا محتفظًا به أو أن يتضمّن مجموعة متعدية من الأجزاء الفرعية المحتفظ بها لضمان عدم عرض FragmentManager أي مراجع إلى الأجزاء المحفوظة بعد حفظ سجلّ الرجوع.

على غرار saveBackStack() وrestoreBackStack() وclearBackStack()، اللتين تستعيدان أو تمحوان على التوالي حزمة احتياطية محفوظة سابقًا، لا تنفّذ الدالتان أي إجراء إذا لم يسبق لك استدعاء saveBackStack() بالاسم نفسه.

لمزيد من المعلومات، يُرجى الاطّلاع على حِزم السجلّ الخلفي المتعددة: نظرة تفصيلية.

الإصدار 1.4.0-rc01

‫3 نوفمبر 2021

تم إصدار androidx.fragment:fragment:1.4.0-rc01 بدون أي تغييرات عن الإصدار Fragment 1.4.0-beta01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.

الإصدار 1.4.0-beta01

‫27 أكتوبر 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-beta01 وandroidx.fragment:fragment-ktx:1.4.0-beta01 وandroidx.fragment:fragment-testing:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.

إصلاح الأخطاء

  • سترسل الآن الأجزاء الرئيسية حدث onHiddenChanged() إلى جميع الأجزاء التابعة لها في التسلسل الهرمي قبل تشغيل معاودة الاتصال الخاصة بها. (Iedc20، b/77504618)
  • سيتم الآن إغلاق لوحة المفاتيح تلقائيًا عند الانتقال من جزء يتضمّن لوحة مفاتيح مفتوحة إلى جزء يتضمّن عرضًا متكرّرًا. (I8b842، b/196852211)
  • تستخدم DialogFragment الآن setReorderingAllowed(true) لجميع المعاملات التي تنشئها عند استدعاء show() أو showNow() أو dismiss(). (Ie2c14)
  • تم تقصير تحذير Lint الطويل جدًا DetachAndAttachFragmentInSameFragmentTransaction إلى DetachAndAttachSameFragment. (e9eca3)

الإصدار ‎1.4.0-alpha10

‫29 سبتمبر 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha10 وandroidx.fragment:fragment-ktx:1.4.0-alpha10 وandroidx.fragment:fragment-testing:1.4.0-alpha10. يتضمّن الإصدار 1.4.0-alpha10 هذه التعديلات.

Lint

  • تمت إضافة DetachAndAttachFragmentInSameFragmentTransaction تحذير lint لرصد استدعاء كل من detach() وattach() على Fragment نفسه في FragmentTransaction نفسه، لأنّ هاتين العمليتين التكميليتين تلغيان بعضهما البعض عند تنفيذهما في المعاملة نفسها، لذا يجب تقسيمهما إلى معاملات منفصلة لتنفيذ أي إجراء فعلي. (aosp/1832956 وb/200867930)
  • تمت إضافة خطأ FragmentAddMenuProvider lint لتصحيح استخدامات "دورة حياة Fragment" إلى "دورة حياة عرض Fragment" عند استخدام واجهة برمجة التطبيقات addMenuProvider في MenuHost. (aosp/1830457 وb/200326272)

تعديلات على المستندات

  • تم توسيع رسالة الإيقاف النهائي لواجهات برمجة التطبيقات التي تتعامل معها الآن واجهات برمجة تطبيقات نتائج الأنشطة، أي 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)

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة كتابة فئة FragmentContainerView بلغة Kotlin، ما يضمن أنّ الدالة getFragment ستراعي إمكانية القيم الفارغة بشكل سليم. (If694a، b/189629145)
  • تمت إعادة كتابة FragmentStrictMode بلغة Kotlin (I11767 وb/199183506)

إصلاح الأخطاء

  • تم إصلاح المشكلة التي كانت تتسبّب في عدم تنظيف حالة Fragment الذي تمت إضافته باستخدام setReorderingAllowed(true) ثم إزالته على الفور قبل تنفيذ المعاملات المعلّقة بشكلٍ صحيح. (I8ccb8)

الإصدار ‎1.4.0-alpha08

‫1 سبتمبر 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha08 وandroidx.fragment:fragment-ktx:1.4.0-alpha08 وandroidx.fragment:fragment-testing:1.4.0-alpha08. يتضمّن الإصدار 1.4.0-alpha08 هذه التعديلات.

إصلاح الأخطاء

  • تم تحسين UseRequireInsteadOfGet عملية التحقّق من Lint للتعامل بشكل أفضل مع الأقواس الزائدة. (I2d865)
  • تم تحسين UseGetLayoutInflater فحص Lint للتعامل مع حالات حدودية إضافية. (Ie5423)

الإصدار 1.4.0-alpha07

‫18 أغسطس 2021

تم إصدار androidx.fragment:fragment:1.4.0-alpha07 وandroidx.fragment:fragment-ktx:1.4.0-alpha07 وandroidx.fragment:fragment-testing:1.4.0-alpha07 بدون أي تغييرات ملحوظة. يتضمّن الإصدار 1.4.0-alpha07 هذه التعديلات.

الإصدار ‎1.4.0-alpha06

‫4 أغسطس 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha06 وandroidx.fragment:fragment-ktx:1.4.0-alpha06 وandroidx.fragment:fragment-testing:1.4.0-alpha06. يتضمّن الإصدار 1.4.0-alpha06 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تتعلّق بمجموعات متعددة من سجلّات الرجوع عند التبديل بسرعة بين سجلّات الرجوع، والتي كانت تظهر على شكل IllegalStateException عند استعادة FragmentTransaction أو على شكل نسخة ثانية من جزء يظهر. (I9039f)
  • تم إصلاح مشكلة كانت تتسبّب في احتفاظ FragmentManager بنسخة من الحالة التي تم حفظها سابقًا باستخدام saveBackStack() حتى بعد استعادة هذه الحالة. (Ied212)
  • لم يعُد يتعطّل التطبيق عند استدعاء الطريقة dismissAllowingStateLoss() الخاصة بالفئة DialogFragment بعد حفظ الحالة عند إضافة DialogFragment تحديدًا باستخدام الطريقة show(FragmentTransaction, String). (I84422)

الإصدار 1.4.0-alpha05

‫21 تموز (يوليو) 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha05 وandroidx.fragment:fragment-ktx:1.4.0-alpha05 وandroidx.fragment:fragment-testing:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.

إصلاح الأخطاء

  • من Fragment 1.3.6: يتم الآن ضبط طريقة عرض Fragment بشكل صحيح على GONE عند استخدام hide() عندما يتم ضبط transitionGroup=”true” على طريقة العرض الجذر. (aosp/1766655 وb/193603427)
  • من Fragment 1.3.6: يتيح FragmentActivity الآن دائمًا فتح الحالة المحفوظة كأول عملية في عمليات معاودة الاتصال بدورة الحياة التي يتم تجاهلها. (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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تستخدم FragmentManager الآن SavedStateRegistry في الخلفية لحفظ حالتها. تم أيضًا إيقاف الطريقتَين saveAllState() وrestoreSavedState() نهائيًا في FragmentController. إذا كنت تستخدم FragmentController لاستضافة أجزاء خارج FragmentActivity، يجب أن يطبّق FragmentHostCallbacks السمة SavedStateRegistryOwner. (Iba68e، b/188734238)

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثّلة في تعذُّر تنفيذ طلب saveBackStack() كجزء من إتاحة عدة حِزم احتياطية عند تنفيذه في الوقت نفسه مع تنفيذ FragmentTransaction يستخدم replace(). (I73137)
  • تم إصلاح NullPointerException كان يحدث بعد استعادة سجلّ رجوع محفوظ يدويًا يحتوي على معاملات متعددة عند استخدام واجهة برمجة التطبيقات 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)
  • لن يتعطّل فحص OnCreateDialogIncorrectCallback عند تقييم متغيّر على أعلى مستوى. (0a9efa، b/189967522)

الإصدار 1.4.0-alpha02

2 حزيران (يونيو) 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha02 وandroidx.fragment:fragment-ktx:1.4.0-alpha02 وandroidx.fragment:fragment-testing:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.

الميزات الجديدة

  • ستسجّل FragmentStrictMode الآن دائمًا الانتهاكات عند تفعيل التسجيل من خلال FragmentManager، بغض النظر عن سياسة الوضع المتشدد الحالية المستخدَمة. (I02df6، b/187872638)
  • تتيح FragmentStrictMode الآن إعفاء فئات Fragment معيّنة من الوضع الصارم Violation، ما يسمح لهذه الفئة بتجنُّب أي عقوبات. (Ib4e5d، b/184786736)

  • تم توسيع فئة FragmentStrictMode Violation لإضافة معلومات البنية استنادًا إلى كل انتهاك. يتيح لك ذلك التحقّق من السبب الدقيق للمخالفة بالإضافة إلى الجزء المخالف (If5118 وb/187871150)، ويحتوي كل Violation على ما يلي:

    • يحتوي WrongFragmentContainerViolation الآن على ViewGroup الذي كان يتم محاولة إضافته إلى Fragment. (I83c75، b/187871150)
    • تم توسيع نطاق TargetFragmentUsageViolation ليشمل SetTargetFragmentUsageViolation وGetTargetFragmentUsageViolation وGetTargetFragmentRequestCodeUsageViolation، مع احتواء SetTargetFragmentUsageViolation على الجزء المستهدَف ورمز الطلب. (I741b4، b/187871150)
    • يحتوي SetUserVisibleHintViolation الآن على القيمة المنطقية التي تم تمريرها إلى setUserVisibleHint(). (I00585، b/187871150)
    • يحتوي FragmentTagUsageViolation الآن على ViewGroup الذي كانت العلامة <fragment> تحاول إنشاء جزء فيه.(I5dbbc، b/187871150)
    • يحتوي FragmentReuseViolation الآن على المعرّف الفريد للمثال السابق من Fragment الذي تسبّب في المخالفة. (I0544d، b/187871150)
    • أصبح RetainInstanceUsageViolation الآن مجردًا وله فئتان فرعيتان، SetRetainInstanceUsageViolation وGetRetainInstanceUsageViolation، تمثّلان حالتين لنوع المخالفة. (Ic81e5، b/187871150)

التغييرات في السلوك

  • تعرض السمة FragmentContainerView الآن استثناءً عند محاولة تغيير السمة fitsSystemWindow برمجيًا أو من خلال XML. يجب أن تتعامل كل طريقة عرض لجزء فردي مع الحواف الداخلية. (Ie6651، b/187304502)

الإصدار 1.4.0-alpha01

‫18 أيار (مايو) 2021

تم طرح ميزات androidx.fragment:fragment:1.4.0-alpha01 وandroidx.fragment:fragment-ktx:1.4.0-alpha01 وandroidx.fragment:fragment-testing:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.

الميزات الجديدة

  • توفّر FragmentContainerView الآن طريقة getFragment() تعرض الجزء الذي تمت إضافته مؤخرًا إلى الحاوية. يستخدم هذا الإجراء المنطق نفسه المستخدَم مع findFragmentById() مع معرّف FragmentContainerView، ولكنّه يسمح بتسلسل المكالمة. (Ife17a، b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • تمت إضافة FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} لتحديد ما إذا كان سيتم تفعيل الحركة الانتقالية العادية من النشاط والمأخوذة من المظهر في الانتقال بين الأجزاء. (I46652)

حِزم خلفية متعددة

تحتفظ FragmentManager بسجلّ للرجوع يتألف من معاملات الأجزاء التي استخدمت addToBackStack(). يتيح لك ذلك إلغاء هذه المعاملات والرجوع إلى الحالة السابقة، وذلك باستخدام آليات حفظ الحالة باستخدام الأجزاء للسماح للأجزاء باستعادة حالتها بشكلٍ مناسب.

يوسّع هذا الإصدار نطاق هذه الآليات من خلال توفير واجهتَي برمجة تطبيقات جديدتَين FragmentManager: saveBackStack(String name) وrestoreBackStack(String name). تستخدم واجهات برمجة التطبيقات هذه name نفسها المستخدَمة في addToBackStack() لحفظ حالة FragmentTransaction وحالة كل جزء تمت إضافته في هذه المعاملات، ما يتيح لك استعادة هذه المعاملات وأجزائها لاحقًا مع الحفاظ على حالتها. يتيح لك ذلك "التبديل" بفعالية بين حِزم السجلّ الخلفي المتعددة من خلال حفظ حزمة السجلّ الخلفي الحالية واستعادة حزمة سجلّ خلفي محفوظة.

تعمل saveBackStack() بشكل مشابه لـ popBackStack() من حيث أنّها غير متزامنة وتؤدي إلى عكس جميع معاملات الأجزاء إلى هذا الاسم المحدّد ("إزالتها") وإتلاف أي أجزاء تمت إضافتها وإزالتها، ولكنها تختلف في بعض الجوانب المهمة:

  • saveBackStack() شاملة دائمًا.
  • على عكس popBackStack() التي ستعرض جميع المعاملات في سجلّ الرجوع إذا لم يتم العثور على الاسم المحدّد في سجلّ الرجوع أو إذا تم تقديم اسم فارغ، لا تنفّذ saveBackStack() أي إجراء إذا لم يسبق لك تنفيذ معاملة جزء باستخدام addToBackStack() مع هذا الاسم المحدد غير الفارغ.
  • يتم حفظ حالة جميع الأجزاء المضافة من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء onSaveInstanceState() لكل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلات ViewModel مرتبطة بهذه الأجزاء (لا يتم استدعاء onCleared() عليها).

يجب أن تستوفي معاملات الأجزاء التي يمكن استخدامها مع saveBackStack() معايير معيّنة:

  • يجب أن تستخدم كل معاملة جزء setReorderingAllowed(true) لضمان إمكانية استعادة المعاملات كعملية واحدة غير قابلة للتجزئة.
  • يجب أن تكون مجموعة المعاملات المحفوظة مكتفية ذاتيًا (أي يجب ألا تشير صراحةً إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على سجلّ الرجوع خلال الفترة الفاصلة.
  • لا يمكن أن تكون أيّ جزء محفوظ جزءًا محتفظًا به أو أن يتضمّن مجموعة متعدية من الأجزاء الفرعية المحتفظ بها لضمان عدم عرض FragmentManager أي مراجع إلى الأجزاء المحفوظة بعد حفظ سجلّ الرجوع.

على غرار saveBackStack()، لا تنفّذ restoreBackStack() أي إجراء إذا لم يسبق لك استدعاء saveBackStack() بالاسم نفسه. (b/80029773)

Fragment StrictMode

توفّر واجهات برمجة التطبيقات FragmentStrictMode عمليات تحقّق أثناء وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات الأجزاء المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل أداة الاستماع المخصّصة أو إيقاف تطبيقك. يمكن ضبط 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() الحالات التي تستخدم فيها واجهتَي برمجة التطبيقات المتوقّفتَين نهائيًا setRetainInstance() أو getRetainInstance(). (#140، b/153737954)
  • ترصد detectSetUserVisibleHint() الحالات التي تستخدم فيها واجهة برمجة التطبيقات setUserVisibleHint() المتوقّفة نهائيًا. (#136، b/153738974)
  • يرصد detectTargetFragmentUsage() الحالات التي تستخدم فيها واجهات برمجة التطبيقات المتوقّفة نهائيًا setTargetFragment() أو getTargetFragment() أو getTargetRequestCode(). (#139، b/153737745)

تغييرات واجهة برمجة التطبيقات

عمليات فحص Lint الجديدة

  • يحذّرك UseGetLayoutInflater Lint check الآن عند استخدام LayoutInflater.from(Context) داخل DialogFragment، وعليك دائمًا استخدام طريقة getLayoutInflater() الخاصة بـ DialogFragment للحصول على LayoutInflater المناسب. (#156، b/170781346)
  • يحذّر فحص DialogFragmentCallbacksDetector Lint الآن عند استدعاء setOnCancelListener أو setOnDismissListener في طريقة onCreateDialog() الخاصة بـ DialogFragment، إذ يملك DialogFragment نفسه أدوات معالجة الأحداث هذه، وعليك إلغاء onCancel() وonDismiss() لتلقّي عمليات معاودة الاتصال هذه. (#171، b/181780047، b/187524311)

إصلاح الأخطاء

  • من الإصدار 1.3.4 من Fragment: تم إصلاح مشكلة تراجع تم تقديمها في الإصدار 1.3.3 من Fragment عند استخدام واجهة برمجة التطبيقات ViewTreeViewModelStoreOwner.get() مع ViewModelProvider أو طريقة Jetpack Compose في viewModel() داخل Fragment. تستخدم حالات الاستخدام هذه الآن ViewModelProvider.Factory المقدَّمة من Fragment بشكل صحيح إذا كانت تتجاوز getDefaultViewModelProviderFactory() (كما تفعل Fragments التي تمّت إضافة التعليقات التوضيحية إليها باستخدام @AndroidEntryPoint عند استخدام Hilt). إذا لم يتم إلغاء هذا الإجراء، سيتم إنشاء SavedStateViewModelFactory يحفظ حالته ويستعيدها إلى جانب طريقة عرض Fragment كإعداد تلقائي للمصنع. (I5cbfa، b/186097368)
  • من Fragment 1.3.4: عند استخدام FragmentContainerView على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال الحواف الداخلية إلى أجل غير مسمى، ما يؤدي إلى حل المشاكل في مثيلات BottomNavigationBar وFloatingActionButton. (I1bb78، b/186012452)
  • من Fragment 1.3.4: يمكنك الآن استرداد Parcelable من حزمة نتائج الجزء بعد إيقاف العملية. (I65932، b/187443158)
  • بدءًا من Fragment 1.3.4: عند إجراء انتقال عنصر مشترك على ViewGroup، إذا تم ضبط transitionGroup على false في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (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 هذه التعديلات.

إصلاح الأخطاء

  • من Fragment 1.4.0-alpha03: لن يتعطّل FragmentManager بعد الآن عند محاولة إخفاء جزء تتم إزالته. (I573dd، b/183634730)
  • تم الآن ضبط طريقة عرض Fragment بشكل صحيح على GONE عند استخدام hide() عندما تم ضبط transitionGroup=”true” على طريقة العرض الجذر. (aosp/1766655 وb/193603427)
  • يفتح FragmentActivity الآن دائمًا الحالة المحفوظة كأول عملية في عمليات معاودة الاتصال بدورة الحياة التي يتم تجاهلها. (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 عند استخدام واجهة برمجة التطبيقات ViewTreeViewModelStoreOwner.get() مع ViewModelProvider أو طريقة Jetpack Compose الخاصة بـ viewModel() داخل Fragment عند استخدام Hilt. تستخدم حالات الاستخدام هذه الآن ViewModelProvider.Factory المقدَّمة من Fragment بشكل صحيح إذا كانت تتجاوز getDefaultViewModelProviderFactory() (كما تفعل Fragments التي تمّت إضافة التعليقات التوضيحية إليها باستخدام @AndroidEntryPoint). إذا لم يتم إلغاء هذا الإجراء، سيتم إنشاء SavedStateViewModelFactory يحفظ حالته ويستعيدها إلى جانب طريقة عرض Fragment كإعداد تلقائي للمصنع. (I5cbfa، b/186097368)
  • عند استخدام FragmentContainerView على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال عمليات الإدخال إلى أجل غير مسمى، ما يؤدي إلى حلّ المشاكل في مثيلات BottomNavigationBar وFloatingActionButton. (I1bb78، b/186012452)
  • يمكنك الآن استرداد Parcelable من حزمة نتائج الجزء بعد إيقاف العملية. (I65932، b/187443158)
  • عند إجراء انتقال عنصر مشترك على ViewGroup، إذا تم ضبط transitionGroup على false في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (I99675)

الإصدار 1.3.3

‫21 أبريل 2021

تم طرح ميزات androidx.fragment:fragment:1.3.3 وandroidx.fragment:fragment-ktx:1.3.3 وandroidx.fragment:fragment-testing:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.

الميزات الجديدة

  • أصبح بإمكانك استخدام SavedStateViewModelFactory عند استخدامه مع SavedStateRegistryOwner الذي يتم عرضه عند استخدام ViewTreeSavedStateRegistryOwner.get() مع طريقة العرض الخاصة بالجزء. (I21acf، b/181577191)

إصلاح الأخطاء

  • تم إصلاح مشكلة تراجع في الأداء تم رصدها في Fragment 1.3.2، ما كان يؤدي إلى عدم تشغيل الصور المتحركة popEnter عند إغلاق FragmentTransaction يتضمّن عملية setPrimaryNavFragment، مثل تلك التي تستخدمها NavHostFragment. (I38c87، b/183877426)
  • يضمن FragmentContainerView الآن إرسال مجموعة جديدة من WindowInsets إلى كل Fragment، ما يضمن إمكانية استهلاك كل جزء من الحواف بشكل مستقل. (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، ما يؤدي إلى إصلاح مشكلة في عملية فحص InvalidFragmentVersionForActivityResult lint في Activity عند استخدام الإصدار 1.3.1 من Fragment أو إصدار أحدث.
  • يعتمد Fragment الآن على Lifecycle 2.3.1.

الإصدار 1.3.1

10 آذار (مارس) 2021

تم طرح ميزات androidx.fragment:fragment:1.3.1 وandroidx.fragment:fragment-ktx:1.3.1 وandroidx.fragment:fragment-testing:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.

الميزات الجديدة

  • يمكن الآن للحوارات ضِمن DialogFragment الوصول إلى مالكي ViewTree من خلال DecorView، ما يضمن إمكانية استخدام DialogFragment مع ComposeView. (Ib9290، b/180691023)

إصلاح الأخطاء

  • يتم الآن عرض الأجزاء التي تم تضخيمها في نشاط RESUMED حالي باستخدام FragmentContainerView بشكل سليم بعد تغيير الإعدادات. (Ie14c8، b/180538371)
  • لم يعُد هناك } إضافية في نهاية الجزء toString() (I54705، b/177761088)
  • أصبحت الطرق التي تم إلغاء تعريفها في FragmentActivity ترث بشكل صحيح مستندات Java الخاصة بالطريقة الأساسية (I736ce، b/139548782).
  • تم تعديل مستندات المَعلمات الخاصة بـ setFragmentResult وsetFragmentResultListener لتوضيح أنّهما لم يعودا يقبلان القيم الفارغة (I990ba، b/178348386).

إصلاحات أخطاء جديدة في State Manager

  • تم إصلاح تسرب الذاكرة في الأجزاء بسبب 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

  • New State Manager: أدّى إعادة كتابة كبيرة للأجزاء الداخلية من FragmentManager إلى إصلاح العديد من المشاكل المتعلّقة بإرسال أحداث مراحل النشاط والرسوم المتحركة وعمليات الانتقال وطريقة التعامل مع الأجزاء المؤجّلة.
  • دمج واجهة Activity Result API: تمت إضافة إمكانية استخدام واجهة برمجة التطبيقات ActivityResultRegistry التي تم طرحها في Activity 1.2.0 للتعامل مع عمليات startActivityForResult()+onActivityResult() وrequestPermissions()+onRequestPermissionsResult() بدون إلغاء الطرق في Fragment، بالإضافة إلى توفير أدوات لاختبار هذه العمليات. اطّلِع على الحصول على نتيجة من نشاط المعدَّل.

    • يُصلح هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع واجهة برمجة التطبيقات Activity Result API من العمل على الإصدارات السابقة من FragmentActivity. يجب الترقية إلى الإصدار 1.3.0 من Fragment لاستخدام واجهات برمجة التطبيقات الخاصة بنتائج الأنشطة في FragmentActivity أو AppCompatActivity.
  • Fragment Result API: تمت إضافة إمكانية تمرير النتائج بين جزأين من خلال واجهات برمجة تطبيقات جديدة في FragmentManager. يعمل ذلك مع أجزاء التسلسل الهرمي (العنصر الرئيسي/العنصر التابع) وDialogFragment والأجزاء في Navigation، ويضمن إرسال النتائج إلى الجزء فقط عندما يكون في الحالة STARTED على الأقل. تم إيقاف واجهات برمجة التطبيقات الخاصة بالجزء المستهدَف نهائيًا لصالح واجهات برمجة التطبيقات الجديدة هذه. اطّلِع على الحصول على النتائج باستخدام Fragment Result API.

  • FragmentOnAttachListener: تم إيقاف معاودة الاتصال onAttachFragment() نهائيًا في FragmentActivity وFragment. تمت إضافة FragmentOnAttachListener جديد لتوفير بديل أكثر مرونة، ما يتيح تفويض onAttachFragment() إلى معالجات منفصلة وقابلة للاختبار، وإتاحة إضافة معالج إلى FragmentManagers غير FragmentManager التابع لك مباشرةً.

  • FragmentScenario تحسينات: تمت إعادة كتابة فئة FragmentScenario من العنصر fragment-testing في Kotlin، وتم إجراء عدد من التحسينات عليها:

    • يستخدم الإصدار FragmentScenario الآن setMaxLifecycle() لتنفيذ moveToState()، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات وفصل حالة Fragment عن النشاط الأساسي.
    • تتيح السمة FragmentScenario الآن ضبط Lifecycle.State أولي لتأكيد حالة الجزء قبل الانتقال إلى كل Lifecycle.State للمرة الأولى.
    • يتوفّر الآن بديل لواجهة برمجة التطبيقات FragmentScenario الخاصة بـ onFragment في شكل طريقة الإضافة withFragment التي تمّت إعادة تصنيفها في Kotlin والتي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة.
  • ViewTree Support: تتوافق السمة Fragment الآن مع واجهات برمجة التطبيقات 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() في "التقسيمات" نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة واللقطات ورسوم بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام Fragment عادي لا يتم الاحتفاظ به والاحتفاظ بالحالة المحددة التي يريدون الاحتفاظ بها بشكل منفصل، ما يؤدي إلى تجنُّب مصدر شائع للتسرّب مع الحفاظ على الخصائص المفيدة لعملية إنشاء وتدمير واحدة للحالة المحفوظة (أي الدالة الإنشائية ViewModel وonCleared() التي تتلقّاها).

  • إيقاف نهائي لمحوّل ViewPager 1: مع إصدار ViewPager2 1.0.0، تم إيقاف الفئتين FragmentPagerAdapter وFragmentStatePagerAdapter نهائيًا للتفاعل مع ViewPager. راجِع نقل البيانات من ViewPager إلى ViewPager2.

الإصدار 1.3.0-rc02

‫27 يناير 2021

تم طرح ميزات androidx.fragment:fragment:1.3.0-rc02 وandroidx.fragment:fragment-ktx:1.3.0-rc02 وandroidx.fragment:fragment-testing:1.3.0-rc02. يتضمّن الإصدار 1.3.0-rc02 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة ظهور عنصر رئيسي DialogFragment فوق عنصر ثانوي DialogFragment بعد تغيير الإعدادات، إذ تظهر الآن دائمًا أجزاء مربّع الحوار الثانوي فوق جزء مربّع الحوار الرئيسي. (I30806، b/177439520)
  • تم إصلاح المشكلة التي كانت تؤدي إلى وميض الجزء المخفي في نهاية الحركة عند تنفيذ عملية hide باستخدام Animation. (I57e22، b/175417675)
  • أصبحت الأجزاء التي تمّت إضافة انتقالات إليها قبل ربط بنية العرض تصل الآن بشكل سليم إلى RESUMED. (I1fc1d، b/177154873)

إصلاحات أخطاء جديدة في State Manager

  • تعالج الآن طريقة العرض Lifecycle الخاصة بالفئة Fragment بشكل صحيح الحالات التي يتم فيها إتلاف طريقة العرض الخاصة بالفئة Fragment قبل أن تصل Lifecycle إلى CREATED، ما يؤدي إلى تجنُّب الاستثناءات التي تشير إلى "عدم توفّر أي حدث من INITIALIZED". (eda2bd، b/176138645)
  • تظهر الآن الأجزاء التي تستخدم Animator بالترتيب الصحيح عند استخدام FragmentContainerView. (Id9aa3، b/176089197)

الإصدار 1.3.0-rc01

16 كانون الأول (ديسمبر) 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-rc01 وandroidx.fragment:fragment-ktx:1.3.0-rc01 وandroidx.fragment:fragment-testing:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تتّبع onPrepareOptionsMenu() الآن المنطق نفسه الذي تتّبعه onCreateOptionsMenu()، ولم يعُد يتم استدعاؤها عندما يستدعي جزء رئيسي setMenuVisibility(false). (Id7de8، b/173203654)

إصلاحات أخطاء جديدة في State Manager

  • تم إصلاح مشكلة تسريب وتشويه مرئي عند إضافة جزء يحتوي على Animation إلى FragmentContainerView ثم إيقاف عملية الإضافة هذه من خلال عملية إغلاق. (I952d8)
  • تم إصلاح مشكلة بقاء عرض الجزء في التسلسل الهرمي للعرض إذا تم استبداله أثناء تنفيذ الطريقتَين onCreate() أو onViewCreated(). (I8a7d5)
  • تم الآن استعادة التركيز بشكل صحيح إلى طرق عرض جذر Fragment عند استئنافها. (Ifc84b)
  • سيؤدي الجمع بين عمليتَي الإزالة والاستبدال في معاملة جزء واحدة إلى عرض الصور المتحركة المناسبة (Ifd4e4، b/170328691)

الإصدار 1.3.0-beta02

‫2 ديسمبر 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-beta02 وandroidx.fragment:fragment-ktx:1.3.0-beta02 وandroidx.fragment:fragment-testing:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.

الميزات الجديدة

  • تم تحويل FragmentScenario بالكامل إلى Kotlin مع الحفاظ على التوافق مع المصدر والثنائي من خلال استخدام الواجهات الوظيفية في Kotlin 1.4 لـ FragmentAction. (I19d31)

التغييرات في السلوك

  • يمكن الآن استخدام عناصر FragmentContainerView التي لا تضخّم جزءًا باستخدام السمة class أو android:name خارج FragmentActivity. (Id4397، b/172266337)
  • سيؤدي محاولة ضبط الحد الأقصى لدورة حياة جزء على DESTROYED الآن إلى عرض الخطأ IllegalArgumentException (Ie7651، b/170765622).
  • سيؤدي الآن إعداد FragmentScenario باستخدام حالة DESTROYED إلى عرض IllegalArgumentException (I73590، b/170765622)

إصلاحات أخطاء جديدة في State Manager

  • تم إصلاح مشكلة عدم وصول طريقة العرض إلى حالتها النهائية في حال مقاطعة انتقال جزء كان يستخدم Animator أو أحد الخيارَين TRANSIT_FRAGMENT_. (I92426، b/169874632)
  • تم إصلاح مشكلة كانت تمنع إيقاف الأجزاء التي تتضمّن Animation بشكلٍ صحيح. (I83d65)
  • عند الخروج من الأجزاء التي تم عكس تأثيراتها، يتم الآن إلغاء التأثيرات وإعادة تشغيلها بشكل صحيح باستخدام تأثير الدخول المناسب. (I62226، b/167092035)
  • تم إصلاح المشكلة المتمثّلة في عدم تنفيذ أمر الخروج Animator من hide(). (Id7ffe)
  • تظهر الآن الأجزاء بشكل صحيح عند تأجيلها ثم بدءها على الفور. (Ie713b، b/170022857)
  • لن تحاول الأجزاء التي تزيل طريقة العرض المركّزة أثناء عرض رسم متحرك استعادة التركيز على طريقة العرض المنفصلة بعد وصولها إلى RESUMED (I38c65، b/172925703).

المساهمة الخارجية

  • تخزّن FragmentFactory الآن فئات الأجزاء بشكل منفصل لمثيلات ClassLoader المختلفة. شكرًا "سيمون شيلر"! (#87، b/113886460)

الإصدار 1.3.0-beta01

1 تشرين الأول (أكتوبر) 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-beta01 وandroidx.fragment:fragment-ktx:1.3.0-beta01 وandroidx.fragment:fragment-testing:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.

الميزات الجديدة

  • يتيح setMaxLifecycle() الآن ضبط حالة Lifecycle على INITIALIZING طالما لم يتم نقل الجزء إلى CREATED. (b/159662173)

تغييرات واجهة برمجة التطبيقات

التغييرات في السلوك

  • تم ضبط ملفات موارد الأجزاء على "خاصة" بشكلٍ صحيح. (aosp/1425237)

إصلاح الأخطاء

  • ستنتظر الآن الأجزاء التي تم تضخيمها باستخدام العلامة <fragment> بشكل صحيح إلى أن تتم إضافة طرق العرض الخاصة بها إلى حاوية قبل الانتقال إلى الحالة STARTED (I02f4c).
  • تعمل الآن بشكل صحيح تأثيرات الخروج الخاصة بالجزء المرئي الذي ينتقل بعد ذلك من setMaxLifecycle() إلى CREATED. (b/165822335)
  • لم تعُد إزالة جزء منفصل لم تتم إضافته إلى سجلّ الرجوع إلى الخلف تؤدي إلى حدوث تسرُّب للذاكرة. بإذن من "نيكلاس أنسمان غيرتز" (b/166489383)
  • ستتضمّن الآن الأجزاء النشطة دائمًا قيمة غير فارغة في FragmentManager، وسيتم دائمًا اعتبار الأجزاء التي تتضمّن قيمة غير فارغة في FragmentManager نشطة. (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 هذه التعديلات.

New State Manager

يتضمّن هذا الإصدار إعادة تصميم رئيسية لإدارة الحالة الداخلية في FragmentManager، ما يؤثّر في إرسال طرق دورة الحياة والرسوم المتحركة والانتقالات وطريقة التعامل مع المعاملات المؤجّلة. يتم تفعيل هذه الإمكانية تلقائيًا. لمزيد من التفاصيل، يمكنك الاطّلاع على مشاركة المدونة: إعادة بناء الأجزاء الداخلية. (b/139536619 وb/147749580)

  • يمكن استخدام واجهة برمجة تطبيقات تجريبية في FragmentManager.enableNewStateManager(boolean) للتحكّم في ما إذا كان FragmentManager يستخدم مدير الحالة الجديد أم لا. (I7b6ee)

لا يتم إصلاح المشاكل التالية إلا عند استخدام أداة إدارة الحالة الجديدة:

  • يتم الآن إيقاف الجزء السابق من عملية replace بشكل صحيح قبل بدء الجزء الجديد. (b/161654580)
  • تمنع الآن الأجزاء تشغيل عدة رسوم متحركة متنافسة على الأجزاء نفسها، ما يتجنّب الحالات التي يتجاوز فيها Animation جميع تأثيرات Transition أو الحالات التي يتم فيها تشغيل Animator وTransition على جزء فردي. (b/149569323)
  • يتم الآن تنفيذ enterTransition وexitTranstion لجميع الأجزاء التي يتم إدخالها وإخراجها، بدلاً من تنفيذها فقط للجزء الأخير الذي يتم إدخاله والجزء الأول الذي يتم إخراجه. (b/149344150)
  • لم تعُد الأجزاء المؤجّلة عالقة في الحالة CREATED، بل انتقلت إلى الحالة STARTED مع الأجزاء الأخرى. (b/129035555)
  • تم إصلاح مشكلة كانت تؤدي إلى تنفيذ عمليات FragmentManager بترتيب غير صحيح عند الجمع بين معاملة مؤجّلة تم إعادة ترتيبها ومعاملة لم تتم إعادة ترتيبها. (b/147297731)
  • لن يؤدي عرض أجزاء متعددة في الوقت نفسه إلى ظهور الأجزاء الوسيطة مؤقتًا عند تأجيل الأجزاء. (b/37140383)
  • تعرض الدالة FragmentManager الآن الأجزاء الصحيحة عند استدعاء findFragmentById() أو findFragmentByTag() من داخل دالة معاودة الاتصال onAttachFragment(). (b/153082833)
  • لم تعُد الأجزاء تستدعي onCreateView() عند إتلاف الأجزاء عندما يتم تأجيل الجزء الذي يحل محلها. (b/143915710)
  • تتضمّن رسالة الخطأ التي تظهر عند محاولة دمج مثيلَي Transition وAndroidX Transition الآن إشارة إلى الجزء الذي يتضمّن الانتقال غير الصالح. (b/155574969)

التغييرات في السلوك

  • يمكنك الآن استدعاء launch() في ActivityResultLauncher ضمن طريقة دورة حياة onCreate() لأحد الأجزاء. (b/161464278)
  • سيؤدي استدعاء registerForActivityResult() بعد onCreate() الآن إلى طرح استثناء يشير إلى أنّه غير مسموح بذلك بدلاً من عدم عرض النتائج بدون إشعار بعد تغيير الإعدادات. (b/162255449)
  • تستخدم FragmentActivity الآن واجهة برمجة التطبيقات OnContextAvailableListener التي تم تقديمها في Activity 1.2.0-alpha08 لاستعادة حالة FragmentManager. سيتم تنفيذ أي مستمعين تمت إضافتهم إلى فئات فرعية من FragmentActivity بعد هذا المستمع. (I513da)

إصلاح الأخطاء

  • أصبحت الآن القيم ActivityOptions التي يتم تمريرها عند استخدام startIntentSenderForResult() متوافقة. (b/162247961)

مشكلة معروفة

  • عند استخدام أداة إدارة الحالة الجديدة، سيؤدي ضبط مستوى رؤية طريقة العرض الجذرية للجزء مباشرةً بعد onViewCreated() وقبل onResume() إلى إلغاء مستوى الرؤية الذي ضبطته من خلال FragmentManager الذي يتحكّم في مستوى رؤية طريقة العرض الجذرية. كحلّ بديل، يجب استخدام العمليتَين hide() وshow() دائمًا لتغيير إذن الوصول إلى الجزء. (b/164481490)

الإصدار 1.3.0-alpha07

‫22 تموز (يوليو) 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-alpha07 وandroidx.fragment:fragment-ktx:1.3.0-alpha07 وandroidx.fragment:fragment-testing:1.3.0-alpha07. يتضمّن الإصدار 1.3.0-alpha07 هذه التعديلات.

الميزات الجديدة

  • يتيح FragmentScenario الآن ضبط حالة أولية لدورة الحياة على CREATED أو STARTED أو RESUMED بدلاً من نقل Fragment دائمًا إلى الحالة RESUMED. (b/159662750)
  • تمت إضافة بديل لواجهة برمجة التطبيقات FragmentScenario الخاصة بـ onFragment في شكل طريقة الإضافة withFragment التي تم إنشاؤها في Kotlin والتي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة. (b/158697631)

التغييرات في السلوك

  • يستخدم الإصدار FragmentScenario الآن setMaxLifecycle() لتنفيذ moveToState()، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات وفصل حالة Fragment عن النشاط الأساسي. (b/156527405)
  • إنّ SavedStateRegistryOwner الذي تعرضه الدالة ViewTreeSavedStateRegistryOwner مرتبط الآن بدورة حياة عرض الجزء. ويضمن ذلك حفظ حالته واستعادتها في الوقت نفسه الذي يتم فيه حفظ طريقة عرض الجزء. (b/158503763)

إصلاح الأخطاء

  • تنتظر الآن الأجزاء إلى أن يتم ربط طريقة عرض الجزء قبل طلب ViewCompat.requestApplyInsets()، ما يمنع الحالات التي كان يتم فيها تجاهل طلب الحافة الداخلية. (b/158095749)
  • عند استدعاء clearFragmentResultListener، تتم الآن إزالة مراقب مراحل النشاط بشكل صحيح. (b/159274993)

الإصدار 1.3.0-alpha06

‫10 يونيو 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-alpha06 وandroidx.fragment:fragment-ktx:1.3.0-alpha06 وandroidx.fragment:fragment-testing:1.3.0-alpha06. يتضمّن الإصدار 1.3.0-alpha06 هذه التعديلات.

الميزات الجديدة

  • تم إيقاف معاودة الاتصال onAttachFragment() نهائيًا على FragmentActivity وFragment. تمت إضافة FragmentOnAttachListener جديد لتوفير بديل أكثر مرونة، ما يتيح تفويض onAttachFragment() إلى أدوات معالجة منفصلة وقابلة للاختبار، بالإضافة إلى إمكانية إضافة أداة معالجة إلى FragmentManagers غير FragmentManager الثانوي المباشر. (I06d3d)

إصلاح الأخطاء

  • يتم الآن استعادة حالة عرض الأجزاء الرئيسية قبل الأجزاء الفرعية، ما يحلّ مشكلة ترتيب مرئي بعد تغيير الإعدادات عندما يعرض DialogFragment آخر DialogFragment كجزء فرعي. (b/157195715)
  • تم إصلاح مشكلة عدم تعامل UseRequireInsteadOfGet Lint check مع الاستخدامات المتسلسلة للعاملَين ?. و!! بشكلٍ صحيح. (b/157677616)

الإصدار 1.3.0-alpha05

20 أيار (مايو) 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-alpha05 وandroidx.fragment:fragment-ktx:1.3.0-alpha05 وandroidx.fragment:fragment-testing:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.

الميزات الجديدة

تغييرات واجهة برمجة التطبيقات

  • تتلقّى واجهتا برمجة التطبيقات setFragmentResult() وsetFragmentResultListener() الآن قيمتَين غير فارغتين Bundle وFragmentResultListener على التوالي. لمحو نتيجة أو أداة معالجة تم ضبطها سابقًا بشكلٍ صريح، استخدِم الطريقتَين الجديدتَين clearFragmentResult() وclearFragmentResultListener(). (b/155416778)
  • تم الآن وضع العلامة inline على إضافات setFragmentResultListener() Kotlin التي تستخدم تعبير lambda. (b/155323404)

التغييرات في السلوك

  • إنّ startActivityForResult() وstartIntentSenderForResult() وrequestPermissions المتوقّفة نهائيًا سابقًا على Fragment تستخدم الآن ActivityResultRegistry داخليًا، ما يؤدي إلى إزالة القيود المفروضة على استخدام الأجزاء الأدنى فقط (أقل من 0xFFFF) لرموز الطلبات عند استخدام واجهات برمجة التطبيقات هذه. (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 هذه التعديلات.

الميزات الجديدة

  • تمت إضافة إمكانية تمرير النتائج بين جزأين من خلال واجهات برمجة تطبيقات جديدة على FragmentManager. يعمل ذلك مع أجزاء التسلسل الهرمي (العنصر الرئيسي/العنصر التابع) وDialogFragment والأجزاء في Navigation، ويضمن إرسال النتائج إلى Fragment فقط عندما يكون في الحالة STARTED على الأقل. (b/149787344)

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف واجهات برمجة التطبيقات الخاصة بالجزء المستهدَف نهائيًا. لنقل البيانات بين الأجزاء، يجب استخدام واجهات برمجة التطبيقات الجديدة لنتائج الأجزاء بدلاً من ذلك. (b/149787344)
  • تم إيقاف واجهتَي برمجة التطبيقات startActivityForResult()/onActivityResult() وrequestPermissions()/onRequestPermissionsResult() في Fragment نهائيًا. يُرجى استخدام واجهات برمجة التطبيقات لنتائج الأنشطة. (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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • أصبحت طرق prepareCall على Fragment الآن final. (b/152439361)

إصلاح الأخطاء

  • تم إصلاح مشكلة تراجع في Fragment 1.3.0-alpha02 عند استخدام BottomSheetDialogFragment. (b/151652127 وaosp/1263328 وaosp/1265163)
  • تم إصلاح عُطل عند استخدام prepareCall من جزء بعد تغيير الإعداد. (b/152137004)
  • تم إصلاح مشكلة تجاهل الانتقالات المشتركة بين العناصر وانتقالات الخروج عند استخدام setTargetFragment(). (b/152023196)
  • من Fragment 1.2.4: تم تعديل قواعد Fragment ProGuard للسماح بتشفير الأجزاء التي تم الاحتفاظ بها. (b/151605338)
  • من Fragment 1.2.4: تم إيقاف قاعدة FragmentLiveDataObserve Lint في فئات DialogFragment لأنّ دورة حياتها ودورة حياة العرض تتزامنان دائمًا، ما يجعل من الآمن استخدام this أو viewLifecycleOwner عند استدعاء observe. (b/151765086)

التغييرات في الاعتمادية

  • تعتمد الأجزاء على Activity 1.2.0-alpha03، الذي تم إجراء تحسينات كبيرة عليه في Activity Result API الذي تم تقديمه في Activity 1.2.0-alpha02.

الإصدار 1.3.0-alpha02

‫18 مارس 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-alpha02 وandroidx.fragment:fragment-ktx:1.3.0-alpha02 وandroidx.fragment:fragment-testing:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.

الميزات الجديدة

  • تمت إضافة إمكانية استخدام واجهة برمجة التطبيقات ActivityResultRegistry التي تم طرحها في الإصدار 1.2.0-alpha02 من "نشاط" للتعامل مع مسارات startActivityForResult()+onActivityResult() بالإضافة إلى مسارات requestPermissions()+onRequestPermissionsResult() بدون إلغاء الطرق في Fragment، بالإضافة إلى توفير نقاط ربط لاختبار هذه المسارات. راجِع الحصول على نتيجة من نشاط المعدَّل. (b/125158199)

تغييرات واجهة برمجة التطبيقات

  • توفّر السمة DialogFragment الآن دالة إنشاء تأخذ @LayoutRes تشير إلى التنسيق الذي يجب أن يتم تضخيمه تلقائيًا بواسطة onCreateView(). (b/150327080)
  • تم إيقاف استخدام الطريقة onActivityCreated() نهائيًا. يجب تنفيذ الرمز الذي يتفاعل مع طريقة عرض الجزء في onViewCreated() (الذي يتم استدعاؤه مباشرةً قبل onActivityCreated())، ويجب أن يكون رمز التهيئة الآخر في onCreate(). لتلقّي ردّ عند اكتمال onCreate() النشاط تحديدًا، يجب تسجيل LifeCycleObserver في Lifecycle النشاط في onAttach()، وإزالته بعد تلقّي ردّ onCreate(). (b/144309266)

إصلاح الأخطاء

  • من Fragment 1.2.3: تم إصلاح خطأ في DialogFragment كان يؤدي إلى حدوث StackOverflowError عند طلب getLayoutInflater() من داخل onCreateDialog(). (b/117894767 وaosp/1258664)
  • من Fragment 1.2.3: تم تقليل نطاق قواعد ProGuard المضمّنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدَمة. (b/149665169)
  • من Fragment 1.2.3: تم إصلاح النتائج الإيجابية الخاطئة في عملية فحص UseRequireInsteadOfGet Lint عند استخدام اسم متغير محلي يحجب اسم السمة في Kotlin. (b/149891163)
  • من Fragment 1.2.3: لم يعُد FragmentContainerView يعرض الخطأ UnsupportedOperationException عند استخدام الدالة الإنشائية غير الصحيحة في معاينة التصميم. (b/149707833)

المشاكل المعروفة

  • لم يعُد BottomSheetDialogFragment يضع مربّع الحوار بشكل صحيح على الشاشة. (b/151652127)

الإصدار 1.3.0-alpha01

‫4 مارس 2020

تم طرح ميزات androidx.fragment:fragment:1.3.0-alpha01 وandroidx.fragment:fragment-ktx:1.3.0-alpha01 وandroidx.fragment:fragment-testing:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

الميزات الجديدة

  • تمت إضافة دعم لواجهة برمجة التطبيقات ViewTreeLifecycleOwner.get(View) التي تمت إضافتها في دورة الحياة 2.3.0-alpha01، وذلك لكي تعرض viewLifecycleOwner للجزء على أنّه LifecycleOwner لأي طرق عرض تعرضها onCreateView(). (aosp/1182955)

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف استخدام الطريقة setRetainInstance() في "التقسيمات" نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة واللقطات ورسوم بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام Fragment عادي لا يتم الاحتفاظ به والاحتفاظ بالحالة المحددة التي يريدون الاحتفاظ بها بشكل منفصل، ما يؤدي إلى تجنُّب مصدر شائع للتسرّب مع الحفاظ على الخصائص المفيدة لعملية إنشاء وتدمير واحدة للحالة المحفوظة (أي الدالة الإنشائية ViewModel وonCleared() التي تتلقّاها). (b/143911815)
  • مع إصدار ViewPager2 1.0.0، تم إيقاف الفئتَين FragmentPagerAdapter وFragmentStatePagerAdapter نهائيًا للتفاعل مع ViewPager. راجِع نقل البيانات من ViewPager إلى ViewPager2. (b/145132715)

إصلاح الأخطاء

  • تتضمّن قواعد Fragment ProGuard الآن الاحتفاظ بشكل صحيح فقط بمنشئات Fragment التلقائية للفئات المستخدَمة بدلاً من جميع مثيلات Fragment، ما يؤدي إلى إصلاح مشكلة تراجُع تم رصدها في Fragment 1.2.1. (b/149665169
  • لم تعُد require___() قواعد Lint المضافة في Fragment 1.2.2 تظهر بشكل إيجابي خاطئ بشأن المتغيّرات المحلية التي تشارك الاسم نفسه مع أسماء سمات Kotlin المخفية (أي view). (b/149891163)
  • لم يعُد يعرض الخطأ UnsupportedOperationException عند استخدام معاينة التصميم في &quot;استوديو Android&quot;.FragmentContainerView (b/149707833)
  • تم إصلاح مشكلة عدم إعادة إنشاء الأجزاء المحتفظ بها التي تمت إضافتها بعد حفظ الحالة بشكل مستمر، ثم إتلافها بعد كل تغيير في الإعدادات. (b/145832397)

الإصدار 1.2.5

الإصدار 1.2.5

‫10 يونيو 2020

تم طرح ميزات androidx.fragment:fragment:1.2.5 وandroidx.fragment:fragment-ktx:1.2.5 وandroidx.fragment:fragment-testing:1.2.5. يتضمّن الإصدار 1.2.5 هذه التعديلات.

إصلاح الأخطاء

  • يتم الآن إيقاف getViewLifecycleOwner() للجزء قبل استدعاء onSaveInstanceState()، ما يعكس سلوك دورة حياة الجزء. تم إصدار هذا الإصدار سابقًا في Fragment 1.3.0-alpha04. (b/154645875)
  • يؤدي استدعاء setMenuVisibility(false) على جزء الآن إلى تغيير مستوى ظهور القوائم التي توفّرها الأجزاء الفرعية بشكل صحيح. تم إصدار هذا الإصدار سابقًا في Fragment 1.3.0-alpha04. (b/153593580)

الإصدار 1.2.4

الإصدار 1.2.4

1 نيسان (أبريل) 2020

تم طرح ميزات androidx.fragment:fragment:1.2.4 وandroidx.fragment:fragment-ktx:1.2.4 وandroidx.fragment:fragment-testing:1.2.4. يتضمّن الإصدار 1.2.4 هذه التعديلات.

إصلاح الأخطاء

  • تم تعديل قواعد Fragment ProGuard للسماح بتشفير الأجزاء التي تم الاحتفاظ بها. (b/151605338)
  • تم إيقاف قاعدة FragmentLiveDataObserve Lint في فئات DialogFragment لأنّ دورة حياتها ودورة حياة العرض تتم مزامنتهما دائمًا، ما يجعل من الآمن استخدام this أو viewLifecycleOwner عند استدعاء observe. (b/151765086)

الإصدار 1.2.3

الإصدار 1.2.3

‫18 مارس 2020

تم طرح ميزات androidx.fragment:fragment:1.2.3 وandroidx.fragment:fragment-ktx:1.2.3 وandroidx.fragment:fragment-testing:1.2.3. يتضمّن الإصدار 1.2.3 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح خطأ في DialogFragment كان يؤدي إلى حدوث StackOverflowError عند الاتصال بـ getLayoutInflater() من داخل onCreateDialog(). (b/117894767 وaosp/1258665)
  • تم تقليل نطاق قواعد ProGuard المضمّنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدَمة. (b/149665169)
  • تم إصلاح النتائج الإيجابية الخاطئة في عملية فحص UseRequireInsteadOfGet Lint عند استخدام اسم متغير محلي يحجب اسم سمة Kotlin. (b/149891163)
  • لم يعُد FragmentContainerView يعرض الخطأ UnsupportedOperationException عند استخدام الدالة الإنشائية غير الصحيحة في معاينة التصميم. (b/149707833)

الإصدار 1.2.2

الإصدار 1.2.2

‫19 شباط (فبراير) 2020

تم طرح ميزات androidx.fragment:fragment:1.2.2 وandroidx.fragment:fragment-ktx:1.2.2 وandroidx.fragment:fragment-testing:1.2.2. يتضمّن الإصدار 1.2.2 هذه التعديلات.

عمليات فحص Lint الجديدة

  • يقترح Lint استخدام viewLifecycleOwner كـ LifecycleOwner للمكالمات في OnBackPressedDispatcher في onCreateView() وonViewCreated() وonActivityCreated(). (b/142117657)
  • تمت إضافة عملية فحص جديدة باستخدام أداة Lint للتأكّد من استخدام debugImplementation الصحيح عند استخدام العنصر fragment-testing. (b/141500106)
  • تقترح الآن الأجزاء استخدام طرق require___() المرتبطة بها للحصول على رسائل خطأ أكثر وصفًا بدلاً من checkNotNull(get___()) أو requireNonNull(get___()) أو get___()!! لجميع واجهات برمجة التطبيقات للأجزاء التي تتضمّن كلاً من get وrequire. (aosp/1202883)

إصلاح الأخطاء

  • تم إصلاح ملفات Fragment ProGuard لتجنُّب تحذيرات R8 (b/148963981)
  • تم تحسين عملية التحقّق الحالية من Lint التي تقترح استخدام viewLifecycleOwner عند استخدام observe للتعامل أيضًا مع إصدار طريقة الإضافة livedata-ktx من observe. (b/148996309)
  • تم إصلاح التنسيق الخاص بالعديد من عمليات التحقّق من أداة Lint (aosp/1157012)

المساهمات الخارجية

  • نشكر Zac Sweers على المساهمة في require___() عمليات التحقّق من Lint نيابةً عن Slack. (aosp/1202883)

الإصدار 1.2.1

الإصدار 1.2.1

5 شباط (فبراير) 2020

تم طرح ميزات androidx.fragment:fragment:1.2.1 وandroidx.fragment:fragment-ktx:1.2.1 وandroidx.fragment:fragment-testing:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.

إصلاح الأخطاء

  • يحتفظ ProGuard الآن بمنشئ تلقائي للأجزاء التي تتم إضافتها من خلال طريقتَي add وreplace اللتين تستخدمان مثيلاً من Class (أو إصدارات Kotlin reified). (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() التوقيت: تنتظر الآن الأجزاء اكتمال صور الخروج المتحركة وعمليات الانتقال في إطار العمل وعمليات الانتقال في AndroidX (عند استخدام Transition 1.3.0) قبل استدعاء onDestroyView().
  • استنادًا إلى الفئة add() وreplace(): تمت إضافة عمليات تحميل زائدة جديدة من add() وreplace() على FragmentTransaction التي تأخذ Class<? extends Fragment> وBundle اختيارية من الوسيطات. تستخدم هذه الطرق FragmentFactory لإنشاء مثيل من Fragment المراد إضافته. تمت أيضًا إضافة إضافات Kotlin التي تستخدم أنواعًا مجسَّدة (أي fragmentTransaction.replace<YourFragment>(R.id.container)) إلى fragment-ktx.
  • عملية دمج SavedState مع Lifecycle ViewModel: أصبح SavedStateViewModelFactory الآن المصنع التلقائي المستخدَم عند استخدام by viewModels() أو by activityViewModels() أو الدالة الإنشائية ViewModelProvider أو ViewModelProviders.of() مع Fragment.
  • عمليات فحص Lint الجديدة: تمت إضافة عملية فحص Lint جديدة تضمن استخدام getViewLifecycleOwner() عند مراقبة LiveData من onCreateView() أو onViewCreated() أو onActivityCreated().
  • إيقاف getFragmentManager() نهائيًا: تم إيقاف الطريقتَين getFragmentManager() وrequireFragmentManager() نهائيًا في Fragment واستبدالهما بالطريقة getParentFragmentManager() الفردية التي تعرض القيمة غير الفارغة FragmentManager التي تمت إضافة Fragment إليها (يمكنك استخدام isAdded() لتحديد ما إذا كان من الآمن طلبها).
  • إيقاف FragmentManager.enableDebugLogging() نهائيًا: تم إيقاف الطريقة الثابتة FragmentManager.enableDebugLogging نهائيًا. تراعي الفئة FragmentManager الآن Log.isLoggable() للعلامة FragmentManager، ما يتيح لك تفعيل تسجيل DEBUG أو VERBOSE بدون إعادة تجميع تطبيقك.

المشاكل المعروفة

  • لا يحتفظ ProGuard تلقائيًا بالرموز التي تتم الإشارة إليها فقط من خلال السمة class أو android:name في FragmentContainerView، ما يتطلّب منك إضافة قاعدة الاحتفاظ يدويًا لكل فئة من الرموز. (b/142601969)
  • عند إضافة NavHostFragment باستخدام class أو android:name في XML مع FragmentContainerView، لا يمكنك استخدام findNavController() في onCreate() من "نشاطك". (b/142847973)

الإصدار 1.2.0-rc05

‫8 كانون الثاني (يناير) 2020

تم طرح ميزات androidx.fragment:fragment:1.2.0-rc05 وandroidx.fragment:fragment-ktx:1.2.0-rc05 وandroidx.fragment:fragment-testing:1.2.0-rc05. يتضمّن الإصدار 1.2.0-rc05 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح خطأ في الإصدار السابق في Fragment 1.2.0-rc04 عند استخدام العلامة <fragment>، ما أدّى إلى استدعاء onViewCreated() بشكل غير صحيح أثناء إيقاف النشاط. (b/146290333)
  • يتم الآن محو الأجزاء المضافة باستخدام العلامة <fragment> بشكلٍ سليم حتى عندما تكون في التصميم في بعض الأحيان فقط (أي في التصميم الأفقي فقط). نتيجةً لذلك، يتم الآن نقل هذه الفئات Fragment بشكلٍ صحيح إلى CREATED حتى في حال عدم توفّرها في التصميم، بدلاً من إنشاء مثيل لها ولكن بدون نقلها مطلقًا من خلال أي طرق لدورة الحياة. (b/145769287)

الإصدار ‎1.2.0-rc04

‫18 كانون الأول (ديسمبر) 2019

تم طرح ميزات androidx.fragment:fragment:1.2.0-rc04 وandroidx.fragment:fragment-ktx:1.2.0-rc04 وandroidx.fragment:fragment-testing:1.2.0-rc04. يتضمّن الإصدار 1.2.0-rc04 هذه التعديلات.

إصلاح الأخطاء

  • تم تعديل الصور المتحركة في TRANSIT_FRAGMENT_OPEN وTRANSIT_FRAGMENT_CLOSE وTRANSIT_FRAGMENT_FADE لتجنُّب حدوث مشاكل مرئية. (b/145468417)

الإصدار 1.2.0-rc03

4 كانون الأول (ديسمبر) 2019

تم طرح ميزات androidx.fragment:fragment:1.2.0-rc03 وandroidx.fragment:fragment-ktx:1.2.0-rc03 وandroidx.fragment:fragment-testing:1.2.0-rc03. يتضمّن الإصدار 1.2.0-rc03 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح تغيير غير مقصود في السلوك، حيث كان يتم عرض "اللقطات" التي تمت إزالتها من خلال findFragmentById() / findFragmentByTag() أثناء تشغيل الرسوم المتحركة/عمليات الانتقال للخروج. (b/143982969 وaosp/1167585)
  • يتم الآن إيقاف الأجزاء الفرعية للطفل بشكل صحيح قبل الأجزاء الرئيسية عندما يستدعي النشاط الذي يحتوي على الأجزاء الفرعية onSaveInstanceState(). (b/144380645)
  • تم إصلاح المشكلة التي كانت تؤدي إلى وضع العلامة INVISIBLE بشكل غير صحيح على "طرق العرض" بعد إظهار جزء مخفي. (b/70793925)
  • تتعامل الآن عمليات الانتقال بين العناصر المشترَكة في الأجزاء مع طرق العرض التي تم تدويرها أو تغيير حجمها أو غير ذلك (b/142835261).

تعديلات على المستندات

  • تم توضيح مستندات الإيقاف النهائي حول setUserVisibleHint(). (b/143897055)
  • تم تحسين المستندات حول setFragmentFactory() وgetFragmentFactory() للإشارة بشكل أفضل إلى أنّ ضبط FragmentFactory سيؤثر أيضًا في FragmentManager الفرعية. (aosp/1170095)

التغييرات في التبعيات

  • تعتمد الآن الفئات Fragment على Lifecycle 2.2.0-rc03 وLifecycle ViewModel SavedState 1.0.0-rc03 وActivity 1.1.0-rc03.

الإصدار 1.2.0-rc02

‫7 نوفمبر 2019

تم طرح ميزات androidx.fragment:fragment:1.2.0-rc02 وandroidx.fragment:fragment-ktx:1.2.0-rc02 وandroidx.fragment:fragment-testing:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.

إصلاح الأخطاء

  • عند استخدام لغة Kotlin، تستخدم أداة LintFix الآن صيغة الوصول إلى السمة في Kotlin viewLifecycleOwner بدلاً من getViewLifecycleOwner() عند مراقبة LiveData من onCreateView() أو onViewCreated() أو onActivityCreated() (تم تقديمها في Fragment 1.2.0-rc01).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)

إصلاح الأخطاء

  • تضمن الآن عمليات معاودة الاتصال onDismiss وonCancel في DialogFragment أنّ DialogInterface التي تم تمريرها إليها ليست فارغة وأنّ getDialog() تعرض قيمة غير فارغة عند تنفيذها. (b/141974033)
  • تضيف FragmentContainerView الآن الجزء الذي يحدّده 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 إمكانية إضافة جزء أولي مع إتاحة استخدام السمتَين android:name وandroid:tag الاختياريتَين في XML. على عكس العلامة <fragment>، تستخدم العلامة FragmentContainerView علامة FragmentTransaction عادية في الخلفية لإضافة الجزء الأوّلي، ما يسمح بإجراء المزيد من عمليات FragmentTransaction على العلامة FragmentContainerView ويتيح استخدام View Binding للتصميم. (b/139830628 وb/141177981)
  • تحتوي الآن الفئات الفرعية على تحذير Lint يقترح إصلاحًا سريعًا لاستبدال <fragment> بـ FragmentContainerView. (b/139830056)

إصلاح الأخطاء

  • تم إصلاح ClassCastException عند استخدام androidx.transition. (b/140680619)
  • عند استخدام Transition 1.3.0-beta01، تنتظر الآن الأجزاء انتهاء عمليات الانتقال androidx.transition (بالإضافة إلى عمليات الانتقال والرسوم المتحركة في إطار العمل، والتي تم إصلاحها في Fragment 1.2.0-alpha03 وFragment 1.2.0-alpha02 على التوالي) قبل إرسال onDestroyView(). (aosp/1119841)
  • عند استخدام Transition 1.3.0-beta01، تلغي الآن الفِقرات عمليات الانتقال androidx.transition بشكل صحيح قبل بدء عمليات انتقال أو رسوم متحركة جديدة على الحاوية نفسها. (aosp/1119841)
  • تم إصلاح مشكلة في الإصدار 17 من واجهة برمجة التطبيقات والإصدارات الأقدم عند استخدام عمليات نقل androidx.transition في العرض الجذر لـ Fragment عند استخدام FragmentContainerView. (b/140361893)
  • يعتمد العنصر fragment-testing الآن على AndroidX Test 1.2.0، ما يؤدي إلى حلّ مشكلة عدم التوافق مع أحدث إصدار من Espresso 3.2.0. (b/139100149)
  • تمت إزالة استخدام Log.w في FragmentManager. (aosp/1126468)

المشاكل المعروفة

  • لا تتلقّى onInflate() في المقتطف سمات مناسبة من 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف الطريقتَين getFragmentManager() وrequireFragmentManager() في Fragment نهائيًا واستبدالهما بالطريقة getParentFragmentManager() الفردية التي تعرض قيمة FragmentManager غير فارغة تتم إضافتها إلى Fragment (يمكنك استخدام isAdded() لتحديد ما إذا كان من الآمن طلبها). (b/140574496)
  • تم إيقاف استخدام الطريقة الثابتة FragmentManager.enableDebugLogging نهائيًا. تراعي الفئة FragmentManager الآن قيمة Log.isLoggable() للعلامة FragmentManager، ما يتيح لك تفعيل تسجيل DEBUG أو VERBOSE بدون إعادة تجميع تطبيقك. (aosp/1116591)

إصلاح الأخطاء

  • يتم الآن إيقاف الأجزاء بشكل صحيح أثناء تشغيل الرسوم المتحركة للخروج على أجزاء أخرى. (b/140574199)
  • تم إصلاح مشكلة كانت تؤدي إلى أن تستدعي الفئات Activity.findViewById() في حين أنّها لم تكن تفعل ذلك من قبل. (aosp/1116431)

الإصدار ‎1.2.0-alpha03

‫5 أيلول (سبتمبر) 2019

تم طرح ميزات androidx.fragment:fragment:1.2.0-alpha03 وandroidx.fragment:fragment-ktx:1.2.0-alpha03 وandroidx.fragment:fragment-testing:1.2.0-alpha03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

تغييرات واجهة برمجة التطبيقات

  • FragmentContainerView أصبح الآن final. (b/140133091)

إصلاح الأخطاء

  • تعكس السمة FragmentContainerView الآن ترتيب الرسم بشكل صحيح عند إزالة الأجزاء من الخلف. (b/139104187)
  • تم إصلاح المشكلة التي كانت تؤدي إلى تشغيل الرسوم المتحركة غير الصحيحة عند إزالة جزء وإضافة جزء جديد في الوقت نفسه. (b/111659726)
  • تنتظر الآن الأجزاء اكتمال عمليات الانتقال (بالإضافة إلى الصور المتحركة التي تم إصلاحها في Fragment 1.2.0-alpha02) قبل إرسال onDestroyView(). (b/138741697)

الإصدار 1.2.0-alpha02

‫7 آب (أغسطس) 2019

تم إصدار androidx.fragment:fragment:1.2.0-alpha02 وandroidx.fragment:fragment-ktx:1.2.0-alpha02 وandroidx.fragment:fragment-testing:11.2.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • أصبحت SavedStateViewModelFactory الآن هي المصنع التلقائي المستخدَم عند استخدام by viewModels() أو by activityViewModels() أو أداة إنشاء ViewModelProvider أو ViewModelProviders.of() مع Fragment. (b/135716331)
  • تم تعديل الرسوم المتحركة التلقائية عند استخدام TRANSIT_FRAGMENT_OPEN وTRANSIT_FRAGMENT_CLOSE وTRANSIT_FRAGMENT_FADE مع setTransition على FragmentTransaction لتتطابق مع الرسوم المتحركة التي تستخدمها الأنشطة على أجهزة Android 10. (aosp/1012812 وaosp/1014730)

تغييرات واجهة برمجة التطبيقات

  • يقدّم FragmentContainerView كحاوية يُنصح بشدة باستخدامها لإضافة "اللقطات" بشكل ديناميكي، ما يحلّ محل استخدام FrameLayout وما إلى ذلك، لأنّه يحلّ مشاكل ترتيب العناصر حسب المحور z في الرسوم المتحركة وإرسال هوامش النافذة إلى "اللقطات". (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 التي تستخدم أنواعًا مجسّمة (أي fragmentTransaction.replace<YourFragment>(R.id.container)) إلى fragment-ktx. (b/126124987)
  • تمت إضافة التعليقات التوضيحية @MainThread إلى عمليات معاودة الاتصال بدورة حياة Fragment. (b/127272564)
  • تم إيقاف واجهات برمجة التطبيقات المتعلقة بعناوين مسارات التنقل في FragmentTransaction وFragmentManager.BackStackEntry. (b/138252944)
  • تم إيقاف استخدام الطريقة setTransitionStyle في FragmentTransaction نهائيًا. (aosp/1011537)
  • لم يعُد العديد من الطرق في FragmentManager abstract. يظل FragmentManager abstract ويجب عدم إنشاء مثيل له أو توسيعه مباشرةً، بل يجب مواصلة الحصول على مثيل حالي من getSupportFragmentManager() أو getChildFragmentManager() أو غير ذلك.

إصلاح الأخطاء

  • من الجزء 1.1.0-rc04: تلغي الأجزاء الآن بشكل صحيح عمليات الانتقال المؤجّلة عند إغلاقها. (b/138251858)
  • من Fragment 1.1.0-rc03: تم إصلاح مشكلة عدم إلغاء المهلات السابقة عند استدعاء postponeEnterTransition() مع مهلة أكثر من مرة. (b/137797118)
  • من الجزء 1.1.0-rc02: تم إصلاح عُطل في FragmentPagerAdapter وFragmentStatePagerAdapter عند إزالة العنصر الحالي. (b/137209870)
  • تنتظر الآن الأجزاء إلى أن تنتهي الصور المتحركة قبل إرسال onDestroyView(). (b/136110528)
  • يتم الآن التعامل بشكل صحيح مع الرسوم المتحركة للأجزاء من الأجزاء الفرعية والعناصر التابعة لها عند تحريك الجزء الرئيسي. (b/116675313)
  • تم إصلاح NullPointerException عند استخدام عمليات الانتقال بين العناصر المشترَكة والجمع بين عملية إضافة وعملية إغلاق. (b/120507394)
  • تمت إضافة حلّ بديل إلى IllegalStateExceptions عند استخدام FragmentPagerAdapter وFragmentStatePagerAdapter في اختبارات Robolectric. (b/137201343)

الإصدار 1.2.0-alpha01

‫2 تموز (يوليو) 2019

تم طرح ميزات androidx.fragment:fragment:1.2.0-alpha01 وandroidx.fragment:fragment-ktx:1.2.0-alpha01 وandroidx.fragment:fragment-testing:1.2.0-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • يستدعي FragmentManager الآن requestApplyInsets() بعد ربط طريقة عرض Fragment وقبل استدعاء onViewCreated() مباشرةً، ما يضمن أن تتضمّن طريقة العرض دائمًا الهوامش الداخلية الصحيحة. (b/135945162)

إصلاح الأخطاء

  • تم إصلاح NullPointerException عند عرض FragmentTransaction كان يستخدم setPrimaryNavigationFragment() قبل replace(). (b/134673465)

الإصدار 1.1.0

الإصدار 1.1.0

‫5 أيلول (سبتمبر) 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0 وandroidx.fragment:fragment-ktx:1.1.0 وandroidx.fragment:fragment-testing:1.1.0. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

التغييرات المهمة منذ الإصدار 1.0.0

  • fragment-testing: يوفّر العنصر fragment-testing الفئة FragmentScenario لاختبار جزء بشكل مستقل. يمكنك الاطّلاع على مستندات اختبار أجزاء تطبيقك للحصول على مزيد من التفاصيل.
  • FragmentFactory: يمكنك الآن ضبط FragmentFactory على FragmentManager لإدارة إنشاء مثيلات الأجزاء، ما يزيل الشرط الصارم بضرورة توفُّر دالة إنشاء بدون وسيطات.
  • مفوّضات سمات Kotlin لـ ViewModels: يحتوي العنصر fragment-ktx الآن على مفوّضتَي سمات Kotlin: by viewModels() للوصول إلى ViewModels المرتبطة بالجزء الفردي وby activityViewModels() للوصول إلى ViewModels النطاقية في النشاط.
  • Max Lifecycle: يمكنك الآن ضبط الحد الأقصى لحالة Lifecycle الخاصة بـ Fragment من خلال استدعاء setMaxLifecycle() على FragmentTransaction. يحلّ هذا الإصدار محلّ setUserVisibleHint() الذي تم إيقافه نهائيًا. يتضمّن FragmentPagerAdapter وFragmentStatePagerAdapter طريقة وضع تصميم جديدة تتيح لك التبديل إلى السلوك الجديد.
  • دالة إنشاء FragmentActivity LayoutId: يمكن الآن لفئات FragmentActivity الفرعية استدعاء دالة إنشاء بشكل اختياري في FragmentActivity تأخذ معرّف R.layout، ما يشير إلى التصميم الذي يجب ضبطه كطريقة عرض المحتوى كبديل لاستدعاء setContentView() في onCreate(). لا يغيّر ذلك شرط أن يكون لفئتك الفرعية دالة إنشاء بدون وسيطات.
  • دالة إنشاء Fragment LayoutId: يمكن الآن لفئات Fragment الفرعية استدعاء دالة إنشاء بشكل اختياري في Fragment تأخذ رقم تعريف R.layout، ما يشير إلى التصميم الذي يجب استخدامه لهذا الجزء كبديل لتجاوز onCreateView(). يمكن ضبط التصميم الموسّع في onViewCreated().
  • التأجيل مع مهلة: تمت إضافة حمل زائد جديد من postponeEnterTransition() يستغرق مهلة.

الإصدار ‎1.1.0-rc04

‫7 آب (أغسطس) 2019

تم إصدار androidx.fragment:fragment:1.1.0-rc04 وandroidx.fragment:fragment-ktx:1.1.0-rc04 وandroidx.fragment:fragment-testing:1.1.0-rc04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • يتم الآن إلغاء عمليات الانتقال المؤجّلة بشكل صحيح عند إغلاق "اللقطات". (b/138251858)

الإصدار ‎1.1.0-rc03

‫19 يوليو 2019

تم إصدار androidx.fragment:fragment:1.1.0-rc03 وandroidx.fragment:fragment-ktx:1.1.0-rc03 وandroidx.fragment:fragment-testing:1.1.0-rc03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم إلغاء المهلات السابقة عند طلب postponeEnterTransition() مع مهلة أكثر من مرة. (b/137797118)

الإصدار ‎1.1.0-rc02

‫17 يوليو 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-rc02 وandroidx.fragment:fragment-ktx:1.1.0-rc02 وandroidx.fragment-testing:fragment:1.1.0-rc02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • تم إصلاح عُطل في FragmentPagerAdapter وFragmentStatePagerAdapter عند إزالة العنصر الحالي. (b/137209870)

الإصدار 1.1.0-rc01

‫2 تموز (يوليو) 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-rc01 وandroidx.fragment:fragment-ktx:1.1.0-rc01 وandroidx.fragment:fragment-testing:1.1.0-rc01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • تعمل الآن الأجزاء على تعديل مستوى ظهورها بشكل صحيح عند استخدام العمليتَين show() أو hide() أثناء تنفيذ عملية الانتقال. (b/133385058)
  • تم إصلاح NullPointerException عند عرض FragmentTransaction كان يستخدم setPrimaryNavigationFragment() قبل replace(). (b/134673465)

الإصدار 1.1.0-beta01

‫5 يونيو 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-beta01 وandroidx.fragment:fragment-ktx:1.1.0-beta01 وandroidx.fragment:fragment-testing:1.1.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

إصلاح الأخطاء

  • أصبحت عمليات إعادة الاستدعاء androidx.lifecycle.Lifecycle (المرتبطة تحديدًا بـ STARTED وRESUMED وPAUSED وSTOPPED وDESTROYED) لـ "التقسيمات" المضمّنة مضمّنة بشكلٍ صحيح. (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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

تغييرات واجهة برمجة التطبيقات

  • تتلقّى الآن الأجزاء ردّ اتصال إلى طريقة onPrimaryNavigationFragmentChanged(boolean) جديدة عند تغيُّر جزء التنقّل الأساسي. aosp/960857

إصلاح الأخطاء

  • تتم الآن إزالة عناصر القائمة التي تم توسيعها بواسطة جزء ثانوي بشكل صحيح عند إزالة الجزء الرئيسي. b/131581013

الإصدار ‎1.1.0-alpha08

7 أيار (مايو) 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-alpha08 وandroidx.fragment:fragment-ktx:1.1.0-alpha08 وandroidx.fragment:fragment-testing:1.1.0-alpha08. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

هذا الإصدار غير متوافق مع الإصدارات من 1.1.0-alpha01 إلى 1.1.0-alpha04 من Preferences. يُرجى الترقية إلى الإصدار 1.1.0-alpha05 من Preferences عند استخدام هذا الإصدار من Fragments.

الميزات الجديدة

  • تمت إضافة تحميل زائد جديد لـ postponeEnterTransition() يستغرق مهلة زمنية، وبعدها سيستدعي Fragment تلقائيًا startPostponedEnterTransition() b/120803208

تغييرات واجهة برمجة التطبيقات

  • تغيير غير متوافق: تمت إزالة الطريقة 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)، سيتم إيقاف عرض "الأجزاء" بشكل صحيح. 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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • يمكنك الآن ضبط الحدّ الأقصى لحالة Lifecycle الخاصة بـ Fragment من خلال استدعاء setMaxLifecycle() على FragmentTransaction. يحلّ هذا الإصدار محلّ setUserVisibleHint() الذي تم إيقافه نهائيًا. يتضمّن FragmentPagerAdapter وFragmentStatePagerAdapter طريقة وضع تصميم جديدة تتيح لك التبديل إلى السلوك الجديد. (b/129780800)

تغييرات واجهة برمجة التطبيقات

  • يمكن الآن طلب moveToState(STARTED) على FragmentScenario فقط على الأجهزة التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات والإصدارات الأحدث. (b/129880016)

التغييرات في السلوك

  • نتيجةً لذلك (b/129907905لن تتلقّى الأجزاء في سجلّ الرجوع ردّ اتصال إلى onCreateView() عند إعادة إنشاء النشاط المضيف. لن يتم استدعاء onCreateView() الآن إلا عندما يصبح الجزء مرئيًا (أي عند إزالة آخر جزء من حزمة الرجوع).

إصلاح الأخطاء

  • تم إصلاح مشكلة عند استخدام علامة <fragment> في XML ومنشئ contentLayoutId الخاص بـ FragmentActivity أو AppCompatActivity. (b/129907905)
  • تم إصلاح مشكلة عدم نقل الأجزاء في سجلّ التراجع إلى CREATED على الأقل بعد تغيير الإعدادات، ما يؤدي إلى عدم التخلص من ViewModels والأجزاء الفرعية المحفوظة بشكلٍ صحيح. (b/129593351)
  • تم إصلاح عُطل في restoreSaveState ناتج عن عدم مزامنة الأجزاء المحفوظة بعد حفظ حالة المثيل. (b/130433793) (aosp/947824)
  • تم إصلاح المشاكل التي لم يتم فيها استدعاء OnBackPressedCallback تمت إضافته باستخدام دورة حياة جزء إذا كان FragmentManager يحتوي على سجلّ الخلف. لمزيد من التفاصيل، يُرجى الاطّلاع على androidx.activity 1.0.0-alpha07. (aosp/948209)
  • لم تعُد الأجزاء تفرض LAYER_TYPE_HARDWARE على الصور المتحركة. إذا كنت بحاجة إلى صورة متحركة على مستوى الأجهزة، يُرجى ضبطها كجزء من الصورة المتحركة. (b/129486478)

الإصدار 1.1.0-alpha06

‫3 أبريل 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-alpha06 وandroidx.fragment:fragment-ktx:1.1.0-alpha06 وandroidx.fragment:fragment-testing:1.1.0-alpha06. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تتضمّن الاستثناءات التي يطرحها FragmentManager الآن اسم Fragment في الرسالة. (b/67759402)

تغييرات واجهة برمجة التطبيقات

  • يحتوي كل من Fragment وFragmentActivity الآن على دالة إنشاء ثانية تأخذ @LayoutRes int، ما يحلّ محل السلوك السابق المتمثل في إضافة تعليقات توضيحية إلى صفك باستخدام @ContentView. يعمل هذا الأسلوب في كلّ من وحدات التطبيق والمكتبة. (b/128352521)
  • تم الآن وضع علامة @CallSuper على onActivityResult() في FragmentActivity بشكل صحيح. (b/127971684)
  • تم إيقاف الطريقة instantiate في FragmentFactory التي تقبل حزمة وسيطة، ويجب أن تستخدم التطبيقات عملية التحميل الزائد الجديدة instantiate التي لا تقبل حزمة. (b/128836103)
  • تمت الآن إضافة التعليقات التوضيحية بشكل صحيح إلى طرق FragmentScenario باستخدام @StyleRes. (aosp/924193)
  • تم إيقاف FragmentTabHost نهائيًا. (b/127971835)
  • تمت إزالة getThemedContext() من FragmentActivity. (aosp/934078)

إصلاح الأخطاء

  • تم إصلاح مشكلة في الإصدار 1.1.0-alpha05 كانت تؤدي إلى ظهور Fragment الوارد على الشاشة بشكل متقطع. (b/129405432)
  • تم إصلاح مشكلة فقدان جزء التنقّل الأساسي بعد سلسلة من العمليات popBackStack+replace+popBackStack. (b/124332597)
  • تم إصلاح مشكلة عند استخدام منشئات @ContentView في "النشاط" عند استعادة حالة Fragment. (b/127313094)
  • تم تصحيح منطق setTargetFragment() عند استبدال Fragment مستهدَف حالي بـ Fragment لم يتم ربطه بعد بـ FragmentManager. (aosp/932156)

الإصدار ‎1.1.0-alpha05

‫13 مارس 2019

تم طرح ميزات androidx.fragment:fragment:1.1.0-alpha05 وandroidx.fragment:fragment-ktx:1.1.0-alpha05 وandroidx.fragment:fragment-testing:1.1.0-alpha05. يمكنك الاطّلاع على القائمة الكاملة للتعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تم الآن تخزين عمليات البحث عن التعليقات التوضيحية في @ContentView مؤقتًا (b/123709449)

تغييرات السلوك

  • عند استدعاء remove() وhide() وshow() وdetach() وsetPrimaryNavigationFragment() مع ربط جزء بـ FragmentManager مختلف، سيتم الآن عرض الخطأ IllegalStateException بدلاً من حدوث خطأ بدون إشعار (aosp/904301)

إصلاح الأخطاء

  • تم الآن وضع علامة @CallSuper على onNewIntent مقابل FragmentActivity بشكل صحيح (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 الآن على الإصدار الثابت 1.1.0 من androidx.test:core-ktx (b/121209673)
  • يمكنك الآن استخدام openActionBarOverflowOrOptionsMenu مع FragmentScenario لاختبار قوائم الخيارات المستضافة في Fragment (b/121126668).

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة طريقة requireArguments() تعرض @NonNull Bundle أو تُظهر الخطأ IllegalStateException (b/121196360)
  • تمت إضافة ملاحظة تفيد بأنّه يجب عدم إلغاء getLifecycle() وgetViewLifecycleOwner() وgetViewLifecycleOwnerLiveData() وسيتم إتاحتها بشكل نهائي في إصدار مستقبلي. يُرجى إرسال طلب ميزة إذا كنت تتجاهل هذه الطريقة حاليًا. (aosp/880714)
  • تمت إضافة ملاحظة تفيد بأنّه يجب عدم إلغاء getViewModelStore() وسيتم إيقافها نهائيًا في إصدار مستقبلي. يُرجى إرسال طلب ميزة إذا كنت تتجاهل هذه الطريقة حاليًا. (aosp/880713)
  • تم إصلاح مشكلة في توافق الرمز الثنائي مع الإصدارات السابقة من Fragments. (aosp/887877) (aosp/889834)

إصلاح الأخطاء

  • تتم إزالة الأجزاء المستهدَفة بشكل صحيح عند تمرير null إلى setTargetFragment(). (aosp/849969)
  • تم إصلاح المشكلة المتمثّلة في عدم توفّر "اللقطات" المستهدَفة أحيانًا في onDestroy() أو بعده. (b/122312935)
  • يتم الآن استدعاء onDismiss()‎ الخاص بـ DialogFragment قبل onDestroy(). (aosp/874133) (aosp/890734)

الإصدار ‎1.1.0-alpha03

‫17 كانون الأول (ديسمبر) 2018

الميزات الجديدة

  • تتضمّن الفئة Fragment الآن واجهة BundleSavedStateRegistryOwner وتعتمد على مكتبة SavedState التي تم إصدارها حديثًا [aosp/824380]
  • تمت إضافة by activityViewModels مفوّض موقع Kotlin لاسترداد ViewModels المرتبطة بـ Activity الحاوية [b/119050253]
  • تم توسيع نطاق by viewModels مفوّض سمة Kotlin لتضمين طريقة lambda اختيارية للحصول على ViewModelStoreOwner، ما يتيح لك تمرير Fragment الأصل أو ViewModelStoreOwner مخصّص آخر باستخدام رمز مثل val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

تغييرات واجهة برمجة التطبيقات

  • تتيح لك السمة FragmentScenario الآن تحديد مظهر، مثل Theme.AppCompat [b/119054431]. هذا تغيير قد يؤدي إلى عطل.
  • تمت إضافة طريقة requireView() تعرض @NonNull View أو تُظهر الخطأ IllegalStateException [b/120241368]
  • تمت إضافة طريقة requireParentFragment() تعرض @NonNull Fragment أو تُظهر الخطأ IllegalStateException [b/112103783]

إصلاح الأخطاء

  • تم إصلاح IllegalStateException: تعذّر حفظ الحالة b/120814739
  • ستتلقّى الآن الأجزاء التي تتم استعادتها من حالة المثيل المحفوظة دائمًا قيمة غير فارغة Bundle [b/119794496]
  • لم تعُد "اللقطات" التي تمت إزالتها تعيد استخدام كائن Lifecycle الخاص بها في حال إعادة إضافتها [b/118880674]

الإصدار ‎1.1.0-alpha02

‫3 كانون الأول (ديسمبر) 2018

الميزات الجديدة

  • تتيح لك إضافات Kotlin الخاصة بفئة FragmentScenario الآن استخدام تعبير lambda لإنشاء Fragment كبديل لتمرير مثيل FragmentFactory. (aosp/812913)

إصلاح الأخطاء

  • تم إصلاح IllegalStateException عند استخدام "أجزاء" متداخلة في سجلّ الرجوع (b/119256498)
  • تم إصلاح عُطل عند استخدام FragmentScenario.recreate() مع FragmentFactory (aosp/820540)
  • تم إصلاح مشكلة عدم إمكانية الوصول إلى أجزاء مستهدَفة بعد إزالة الجزء (aosp/807634)

الإصدار ‎1.1.0-alpha01

‫5 نوفمبر 2018

هذا هو الإصدار الأول من العنصر fragment-testing وFragmentScenario الذي يستند إلى واجهات برمجة التطبيقات androidx.test:core. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات اختبار الأجزاء.

الميزات الجديدة

  • فئة FragmentScenario الجديدة لاختبار "اللقطات" بشكل منفصل
  • يمكنك الآن ضبط FragmentFactory على أي FragmentManager للتحكّم في طريقة إنشاء مثيلات Fragment الجديدة.
  • تمت إضافة تفويض جديد لسمة by viewModels() Kotlin من أجل استرداد ViewModels من Fragment.
  • يتم الآن إلغاء أحداث الإدخال المعلقة (مثل النقرات) في onStop() لأحد عناصر Fragment.

تغييرات واجهة برمجة التطبيقات

  • تمت توسيع نطاق التعليقات التوضيحية الخاصة بقابلية القيم على أن تكون فارغة بشكل كبير في جميع أقسام واجهة برمجة التطبيقات Fragment.

إصلاح الأخطاء

  • إصلاح مشكلة كانت تؤدي إلى تعذُّر تنفيذ عمليات Fragment من داخل LiveData (b/77944637)

المشاكل المعروفة

  • لا يمكن الوصول إلى Target Fragments بعد إزالة Fragment من FragmentManager.
  • يعتمد ‎fragment-testing على ‎androidx.test:core:1.0.0-beta01 بدلاً من ‎androidx.test:core:1.0.0 الصحيح.