الجزء
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 23 سبتمبر 2026 | 1.9.1 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على Fragment، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { def fragment_version = "1.9.1" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.9.1" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.9
الإصدار 1.9.1
23 سبتمبر 2026
تم طرح androidx.fragment:fragment-*:1.9.1. يتضمّن الإصدار 1.9.1 هذه التعديلات.
الإصدار 1.9.0
12 أغسطس 2026
تم طرح androidx.fragment:fragment-*:1.9.0. يتضمّن الإصدار 1.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.8.0:
- تنفِّذ
Fragmentالآن واجهةContextAwareويمكن استخدامها لتنفيذ الرمز البرمجي عند ربط الجزء. - تقبل الدالة المركّبة
AndroidFragmentالآن المَعلمةmaxLifecycleالتي تتيح لك تحديد الحد الأقصى لحالة مراحل النشاط للدالة المركّبةFragmentالمضمّنة. - تتيح مكتبة
Fragmentالآن تتبُّع النظام لأحداث يتم في مراحل النشاط من خلالJetpack Tracing.
الإصدار 1.9.0-rc01
29 يوليو 2026
تم طرح androidx.fragment:fragment-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- عند استخدام
FragmentScenario.launchInContainer، سيصبح الجزء قيد الاختبار داخلFragmentContainerView. (Ia6273، b/531550353)
الإصدار 1.9.0-alpha02
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)
- [من الإصدار 1.8.9 من Fragment] تم إصلاح الخطأ الذي كان يحدث عند استخدام مجموعة من setMaxLifecycle وpopBackStack، ما كان يؤدي إلى تعذُّر نقل الجزء العلوي من الشاشة إلى الحالة RESUMED. (I3448b، b/406127576)
- [من Fragment 1.8.8] تم إصلاح مشكلة كانت تؤدي إلى تعذُّر عمل FragmentManager أثناء محاولة حفظ حالة الأجزاء التي تمت إضافتها باستخدام
setMaxLifecycle(Lifecycle.State.INITIALIZED). وبما أنّ هذه الأجزاء لم يتم عرضها مطلقًاonCreate()، لم يعُد لديها أي حالة محفوظة أو أي وظيفةonSaveInstanceState()تم استدعاؤها. (I6e37a، b/408163315) - [من الإصدار 1.8.7 من Fragment] تم إصلاح مشكلة عدم توفّر FragmentManager في الحالة المناسبة بعد عمليات pop وreplace في الإطار نفسه، ما قد يؤدي إلى حدوث عُطل بالتزامن مع ميزة "إيماءة إظهار شاشة الرجوع". (I50ad1، b/380288461)
- [من Fragment 1.8.6] يمكن الآن أن يتلقّى الإجراء
setOnApplyWindowInsetsListeneroverride في 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] تم إصلاح مشكلة تؤدي إلى تعطُّل "التقسيمات" عند الضغط بسرعة على زر الرجوع في النظام أو تنفيذ إيماءة الرجوع السريع. (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في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الآن علىAndroidFragmentComposableيتيح إضافة أجزاء إلى التسلسل الهرمي لـ 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 هذه التعديلات.
إصلاح الأخطاء
- من Fragment
1.7.1: لن يتم تشغيل ميزة "إيماءة إظهار شاشة الرجوع" الآن إلا للمعاملات التي تحتوي جميع أجزائها على Animator أو Seekable Androidx Transition. يحلّ هذا التحديث مشكلة ظهور شاشة سوداء عند إلغاء معاملة يمكن البحث فيها جزئيًا. (I43037، b/339169168)
الإصدار 1.8.0-alpha02
17 أبريل 2024
تم طرح androidx.fragment:fragment-*:1.8.0-alpha02. يتضمّن الإصدار 1.8.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- من الجزء
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 هذه التعديلات.
الميزات الجديدة
- تتيح السمة الجديدة
AndroidFragmentComposableإضافة أجزاء إلى التسلسل الهرمي لـ Compose من خلال اسم فئة الجزء. تتولّى هذه الفئة تلقائيًا عملية حفظ حالة Fragment واستعادتها. يمكن استخدام هذا الخيار كبديل مباشر لربط عرض AndroidComposable.(b/312895363، Icf841)
التغييرات في المستندات
- عدّلنا المستندات الخاصة بواجهات برمجة التطبيقات
OnBackStackChangedListenerلتوضيح الحالات التي يتم فيها طلب البيانات وكيفية استخدامها. (I0bfd9)
تحديث الاعتمادية
- يعتمد Fragment الآن على Profile Installer 1.3.1.
الإصدار 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 مع Transition 1.5.0 |
R.transition |
نعم |
إذا واجهت أي مشاكل في توافق ميزة "الرجوع التوقّعي" مع "اللقطات" بعد تفعيل إيماءة الرجوع التوقّعي، يُرجى إبلاغ فريق Fragment عن المشكلة مع تقديم نموذج مشروع يعيد إنتاج المشكلة. يمكنك إيقاف إيماءة إظهار شاشة الرجوع باستخدام FragmentManager.enabledPredictiveBack(false) في onCreate() من النشاط.
توفّر السمة FragmentManager.OnBackStackChangedListener() الآن السمتَين onBackStackChangeProgressed() وonBackStackChangeCancelled() لتلقّي أحداث إلغاء وإحراز تقدّم في ميزة "إيماءة إظهار شاشة الرجوع" على التوالي.
حزمة Fragment Compose
تم إنشاء أداة 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 هذه التعديلات.
تحديث الاعتمادية
- يعتمد Fragment الآن على Profile Installer 1.3.1.
الإصدار 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عند استخدام ميزة "الرجوع التوقّعي" في Fragment معAnimatorأو AndroidX Transition، وذلك في حال عدم إضافة أيFragmentManager.OnBackStackChangedListenerمن خلالaddOnBackStackChangedListener. (I7c835)
الإصدار 1.7.0-alpha09
24 يناير 2024
تم طرح androidx.fragment:fragment-*:1.7.0-alpha09. يتضمّن الإصدار 1.7.0-alpha09 هذه التعديلات.
Fragment Compose Artifact
تم إنشاء أداة fragment-compose جديدة تركّز على دعم التطبيقات التي بصدد الانتقال من بنية مستندة إلى Fragment إلى بنية مستندة إلى Compose بالكامل.
الميزة الأولى المتاحة في هذا العنصر الجديد هي طريقة content الإضافية في Fragment التي تسعى إلى تسهيل استخدام 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 هذه التعديلات.
إخلاء مساحة
- تمت إزالة الحلّ البديل لمكتبة Transition الذي تم إصلاحه في Transition
1.5.0-alpha06. (I04356)
الإصدار 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 هذه التعديلات.
تحديث الاعتمادية
- تم تعديل "اللقطات" لتعتمد على واجهة برمجة التطبيقات الجديدة
animateToStartالتي تمت إضافتها في Transition1.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يتيح تحديد مصدر حالة جزء معيّن بدقة. - تمت إضافة دالتَي ردّ نداء إضافيتَين إلى واجهة
FragmentManager.OnBackStackChangedListener، وهماonBackStackChangeStartedوonBackStackChangeCommitted، يتم استدعاؤهما مع كلFragmentقبل إضافتها/إزالتها من حزمة الخلفية للجزء وبعد إتمام المعاملة مباشرةً، على التوالي. - أضافت السمة
FragmentStrictModeWrongNestedHierarchyViolationجديدة ترصد متى يتم تضمين جزء ثانوي في هيكلية طرق العرض للجزء الرئيسي، ولكن لا تتم إضافته إلىchildFragmentManagerللجزء الرئيسي. - تم الآن وضع التعليقات التوضيحية المناسبة على واجهتَي برمجة التطبيقات
FragmentوFragmentManagerاللتين تقبلانIntentأوIntentSenderباستخدام@NonNullلمنع تمرير قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات المعنية في إطار عمل Android التي تستدعيها هذه الطرق على الفور. - تتيح خدمة
DialogFragmentالآن الوصول إلىComponentDialogالأساسية من خلال واجهة برمجة التطبيقاتrequireComponentDialog(). - يعتمد Fragment الآن على Lifecycle
2.6.1. - تعتمد Fragment الآن على SavedState
1.2.1. - تعتمد Fragment الآن على ProfileInstaller
1.3.0. يفصل العنصر
fragment-testing-manifestإدخالات البيان عن بقية مكوّنات اختبار الأجزاء. هذا يعني أنّه يمكنك إجراء ما يلي:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")يؤدي ذلك إلى تجنُّب حدوث تعارضات بسبب اختلاف الإصدار بين
fragment-testingوandroidx.test
الإصدار 1.6.0-rc01
10 مايو 2023
تم طرح androidx.fragment:fragment-*:1.6.0-rc01. يتضمّن الإصدار 1.6.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إرسال
ActivityResults مع رمز الطلب غير الصحيح عند تقديم طلباتstartActivityForResultمتعددة على التوالي. (If0b9d، b/249519359) - تم إصلاح المشكلة التي كانت تؤدي إلى إرسال عمليات معاودة الاتصال
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إذا كانLifecycleSTARTEDوكان هناك نتيجة متاحة. (If7458)
تحديثات الاعتماديات
- يعتمد Fragment الآن على Lifecycle
2.6.1. (586fe7) - تعتمد Fragment الآن على SavedState
1.2.1. (078e4e) - تعتمد Fragment الآن على ProfileInstaller
1.3.0. (3fc05b)
الإصدار 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الجديدة عند استدعاءFragmentManagerفيonBackStackChangedListenerقبل أن تبدأ الأجزاء في الانتقال إلى حالاتها المستهدَفة. (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 هذه التعديلات.
الميزات الجديدة
- أضافت السمة
FragmentStrictModeWrongNestedHierarchyViolationجديدة ترصد متى يتم تضمين جزء ثانوي في هيكلية طرق العرض للجزء الرئيسي، ولكن لا تتم إضافته إلى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)
إصلاح الأخطاء
- من الجزرة
1.5.1: تم إصلاح مشكلة تراجع فيDialogFragmentCallbacksDetectorحيث كان استخدام إصدار lint المُضمَّن مع الإصدار 7.4 من "المكوّن الإضافي لنظام Android Gradle" يؤدي إلى تعطُّل lint. (b/237567009)
تحديث الاعتمادية
- من Fragment
1.5.1: تعتمد مكتبة Fragment الآن على Lifecycle2.5.1. (Id204c) - من Fragment
1.5.1: تعتمد مكتبة Fragment الآن على Activity1.5.1. (I10f07)
الإصدار 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إذا كانLifecycleSTARTEDوكان هناك نتيجة متاحة. (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)
تحديث الاعتمادية
- تعتمد مكتبة Fragment الآن على Lifecycle
2.5.1. (Id204c) - تعتمد مكتبة Fragment الآن على Activity
1.5.1. (I10f07)
الإصدار 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في Lifecycle2.5.0. - دمج مربّع حوار المكوّن: يستخدم
DialogFragmentالآنComponentDialogمن خلال النشاط1.5.0كمربّع الحوار التلقائي الذي يعرضهonCreateDialog(). - إعادة تصميم حالة المثيل المحفوظة: بدأت الأجزاء في تغيير طريقة حفظ حالة المثيل. هذا جهد يهدف إلى المساعدة في تحديد الحالة التي تم حفظها في الجزء ومصدر الحالة بوضوح. تشمل التغييرات الحالية ما يلي:
- يحفظ
FragmentManagerالآن حالة مثيله المحفوظة فيBundleبدلاً من حفظها مباشرةً فيParcelableمخصّص. - يتم الآن حفظ مجموعة النتائج التي تم ضبطها من خلال
Fragment Result APIsولم يتم تسليمها بعد بشكل منفصل عن الحالة الداخلية لـFragmentManager. - يتم الآن حفظ الحالة المرتبطة بكل جزء على حدة بشكل منفصل عن الحالة الداخلية لـ
FragmentManager، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بمعرّفات فريدة متوفّرة في سجلّ تصحيح الأخطاءFragment.
- يحفظ
تغييرات أخرى
- تتيح السمة
FragmentStrictModeالآن إمكانية تجاوز عقوبات انتهاك معيّنة في الأجزاء الخاصة التابعة لجهات خارجية من خلال استخدامallowViolation()مع اسم الفئة. - تم إيقاف واجهات برمجة التطبيقات Fragment التي توفّر قائمة
ActionBarلنشاطك. توفّر واجهتا برمجة التطبيقاتMenuHostوMenuProviderاللتان تمت إضافتهما في Activity1.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 هذه التعديلات.
إعادة تصميم حالة المثيل المحفوظة
- يتم الآن حفظ الحالة المرتبطة بكل جزء على حدة بشكل منفصل عن الحالة الداخلية لـ
FragmentManager، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بمعرّفات فريدة متوفّرة في تسجيل بيانات تصحيح الأخطاء في الجزء. (a153e0، b/207158202)
الإصدار 1.5.0-beta01
20 أبريل 2022
تم طرح ميزات androidx.fragment:fragment:1.5.0-beta01 وandroidx.fragment:fragment-ktx:1.5.0-beta01 وandroidx.fragment:fragment-testing:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضافت
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 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف
setHasOptionsMenu()الخاص بـ "Fragment" نهائيًا. لإدارة القوائم وعناصرها، يجب استخدام واجهات برمجة التطبيقات الجديدة للقوائم بدلاً من ذلك وفقًا لملاحظات إصدار Fragment1.5.0-alpha04. (I7b4b4، b/226438239)
الإصدار 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اللتان تمت إضافتهما في Activity1.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)
التغييرات في السلوك
- يستخدم
DialogFragmentالآنComponentDialogكحوار تلقائي يتم عرضه من خلالonCreateDialog(). (If3784، b/217618170)
الإصدار 1.5.0-alpha02
9 فبراير 2022
تم طرح ميزات androidx.fragment:fragment:1.5.0-alpha02 وandroidx.fragment:fragment-ktx:1.5.0-alpha02 وandroidx.fragment:fragment-testing:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تتيح
FragmentStrictModeالآن إمكانية تجاوز عقوبات انتهاك معيّنة في المقاطع الخاصة التابعة لجهات خارجية باستخدامallowViolation()مع اسم الفئة. (I8f678)
الإصدار 1.5.0-alpha01
26 يناير 2022
تم طرح ميزات androidx.fragment:fragment:1.5.0-alpha01 وandroidx.fragment:fragment-ktx:1.5.0-alpha01 وandroidx.fragment:fragment-testing:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يتكامل
Fragmentالآن مع ViewModel CreationExtras، الذي تم تقديمه كجزء من Lifecycle2.5.0-alpha01. (I3060b، b/207012585)
إصلاح الأخطاء
- من 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
- تمت إضافة تحذير
DetachAndAttachFragmentInSameFragmentTransactionlint لرصد استدعاء كلّ منdetach()وattach()علىFragmentنفسه فيFragmentTransactionنفسه، لأنّ هاتين العمليتين التكميليتين تلغيان بعضهما البعض عند تنفيذهما في المعاملة نفسها، لذا يجب تقسيمهما إلى معاملات منفصلة لتنفيذ أي إجراء. (aosp/1832956 وb/200867930) - تمت إضافة خطأ
FragmentAddMenuProviderlint لتصحيح استخدامات "دورة حياة 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 هذه التعديلات.
إصلاح الأخطاء
- تم تحسين
UseRequireInsteadOfGetLint check للتعامل بشكل أفضل مع الأقواس الزائدة. (I2d865) - تم تحسين
UseGetLayoutInflaterLint check للتعامل مع حالات حدودية إضافية. (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.3.6: أصبحت الأجزاء تعتمد الآن على النشاط1.2.4(I3a66c)
الإصدار 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، يجب أن تنفّذFragmentHostCallbacksSavedStateRegistryOwner. (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: تم إصلاح مشكلة تراجع في عمليات نقل العناصر المشتركة تم تقديمها في Fragment1.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)تم توسيع فئة
FragmentStrictModeViolationلإضافة معلومات البنية استنادًا إلى كل مخالفة. يتيح لك ذلك التحقّق من السبب الدقيق للانتهاك بالإضافة إلى الجزء المخالف (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)
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات التجريبية الخاصة بـ
FragmentManager.enableNewStateManager(boolean)، وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح. (I90036، b/162776418) - تتيح
FragmentScenarioالآن استخدامCloseable، ما يسمح لك باستخدامه مع طريقةuseفي Kotlin أو try-with-resources. (#121، b/143774122)
عمليات فحص Lint الجديدة
- يحذّر
UseGetLayoutInflaterLint check الآن عند استخدامLayoutInflater.from(Context)داخلDialogFragment، ويجب استخدام طريقةgetLayoutInflater()الخاصة بـ للحصول علىLayoutInflaterالمناسب دائمًا. (#156، b/170781346) - يُصدر
DialogFragmentCallbacksDetectorLint check الآن تحذيرًا عند استدعاء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) - من الإصدار 1.3.4 من Fragment: يمكنك الآن استرداد Parcelable من حزمة نتائج الجزء بعد إيقاف العملية. (I65932، b/187443158)
- من Fragment 1.3.4: عند إجراء انتقال عنصر مشترك على ViewGroup، إذا تم ضبط
transitionGroupعلى القيمة false في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (I99675)
المساهمة الخارجية
- شكرًا simonschiller على تنفيذ
FragmentScenarioCloseable. (#121، b/143774122) - نشكر simonschiller على إضافة واجهة برمجة التطبيقات
FragmentStrictModeبالكامل في هذا الإصدار. (#123 و#131 و#150 وb/143774122 و#142 وb/153738653 و#141 وb/153738235 و#146 وb/181137036 و#140 وb/153737954 و#136 وb/153738974 و#139 وb/153737745) - نشكر tatocaster على إضافة
UseGetLayoutInflaterLint check. (#156، b/170781346) - نشكر tatocaster على إضافة
DialogFragmentCallbacksDetectorLint check. (#171، b/181780047)
الإصدار 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)
تحديث الاعتمادية
- من Fragment
1.3.6: أصبحت الأجزاء تعتمد الآن على Activity1.2.4(I3a66c)
الإصدار 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)
إصلاحات أخطاء في New 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 هذه التعديلات.
إصلاحات أخطاء في New State Manager
- عند تنفيذ عمليتَي
popBackStack()وcommit()معًا، ستحدّد العملية الأخيرة الآن اتجاه جميع الحركات بدلاً من تنفيذ بعض الحركات المنبثقة وبعض حركات الدخول. (I7072e، b/181142246) - لن يتم بعد ذلك محو اسم الانتقال الخاص بالعناصر المشتركة عند إجراء انتقال بين عناصر مشتركة في التسلسل الهرمي للعناصر المشتركة. (I4d4a6، b/179934757)
تحديثات الاعتماديات
- يعتمد Fragment الآن على Activity 1.2.2، ما يؤدي إلى إصلاح مشكلة في عملية فحص
InvalidFragmentVersionForActivityResultlint في 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 الآن بشكل صحيح javaDoc للطريقة الأساسية (I736ce، b/139548782)
- تم تعديل مستندات المَعلمات الخاصة بـ
setFragmentResultوsetFragmentResultListenerلتوضيح أنّهما لم يعودا يقبلان القيم الفارغة (I990ba، b/178348386).
إصلاحات أخطاء في New State Manager
- تم إصلاح تسرب الذاكرة في الأجزاء بسبب
mFocusedView(Ib4e9e، b/179925887) - تستدعي الآن الأجزاء الدالة
onCreateOptionsMenuبشكل صحيح عند استخدام معاملات العرض/الإخفاء (I8bce8، b/180255554). - ستصل الآن أجزاء العناصر التابعة التي تتضمّن انتقالات تبدأ قبل تخطيط الجزء إلى الحالة
RESUMEDبشكل صحيح (Ic11e6، b/180825150). - ستصل الآن الأجزاء التي تم تضخيمها باستخدام العلامة
<fragment>دائمًا إلىRESUMED(I452ac، (I9fa49)
تحديثات الاعتماديات
- يعتمد الإصدار 1.3.1 من Fragment على Activity
1.2.1. (I557b9)
الإصدار 1.3.0
10 شباط (فبراير) 2021
تم طرح ميزات androidx.fragment:fragment:1.3.0 وandroidx.fragment:fragment-ktx:1.3.0 وandroidx.fragment:fragment-testing:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات الرئيسية منذ الإصدار 1.2.0
- إدارة الحالة الجديدة: أدّى إعادة كتابة كبيرة للأجزاء الداخلية من
FragmentManagerإلى حلّ العديد من المشاكل المتعلّقة بإرسال أحداث مراحل النشاط والرسوم المتحركة وعمليات الانتقال وطريقة التعامل مع الأجزاء المؤجّلة. دمج Activity Result API: تمت إضافة إمكانية استخدام واجهة برمجة التطبيقات
ActivityResultRegistryالتي تم طرحها في Activity1.2.0للتعامل مع عملياتstartActivityForResult()+onActivityResult()بالإضافة إلى عملياتrequestPermissions()+onRequestPermissionsResult()بدون إلغاء الطرق في Fragment، فضلاً عن توفير نقاط ربط لاختبار هذه العمليات. اطّلِع على الحصول على نتيجة من نشاط المعدَّل.- يحلّ هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع عمل Activity Result API على الإصدارات السابقة من
FragmentActivity. يجب الترقية إلى الإصدار 1.3.0 من Fragment لاستخدام واجهات برمجة التطبيقات الخاصة بنتائج الأنشطة فيFragmentActivityأوAppCompatActivity.
- يحلّ هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع عمل Activity Result API على الإصدارات السابقة من
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، والتي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة.
- تستخدم السمة
ViewTreeSupport: تتوافق السمةFragmentالآن مع واجهات برمجة التطبيقاتViewTreeLifecycleOwner.get(View)وViewTreeViewModelStoreOwner.get(View)وViewTreeSavedStateRegistryOwnerالتي تمت إضافتها في Lifecycle2.3.0وSavedState1.1.0، ما يتيح عرض Fragment كـViewModelStoreOwner، بالإضافة إلىSavedStateRegistryOwnerوLifecycleOwnerالمرتبطَين بدورة حياة العرض في الجزء عند استخدام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)
إصلاحات أخطاء في New State Manager
- تعالج الآن طريقة العرض الخاصة بالجزء
Lifecycleبشكل صحيح الحالات التي يتم فيها إتلاف طريقة العرض الخاصة بالجزء قبل أن تصل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)
إصلاحات أخطاء في New State Manager
- تم إصلاح مشكلة تسريب الذاكرة والتشوّه المرئي عند إضافة جزء يحتوي على
AnimationإلىFragmentContainerViewثم إيقاف عملية الإضافة هذه من خلال عملية إزالة. (I952d8) - تم إصلاح مشكلة بقاء عرض الجزء في التسلسل الهرمي للعرض إذا تم استبداله أثناء تنفيذ الطريقتَين
onCreate()أوonViewCreated(). (I8a7d5) - يتم الآن استعادة التركيز بشكل صحيح إلى طرق عرض جذر Fragment عند استئنافها. (Ifc84b)
- سيؤدي الجمع بين عمليات pop وreplace في معاملة جزء واحدة إلى عرض الصور المتحركة المناسبة (Ifd4e4، b/170328691)
الإصدار 1.3.0-beta02
2 ديسمبر 2020
تم طرح ميزات androidx.fragment:fragment:1.3.0-beta02 وandroidx.fragment:fragment-ktx:1.3.0-beta02 وandroidx.fragment:fragment-testing:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
الميزات الجديدة
- تم تحويل
FragmentScenarioبالكامل إلى Kotlin مع الحفاظ على التوافق مع المصدر والثنائي من خلال استخدام الواجهات الوظيفية في Kotlin 1.4 لـFragmentAction. (I19d31)
التغييرات في السلوك
- يمكن الآن استخدام FragmentContainerViews التي لا تضخّم جزءًا باستخدام السمة
classأوandroid:nameخارجFragmentActivity. (Id4397، b/172266337) - سيؤدي الآن محاولة ضبط الحد الأقصى لمراحل نشاط جزء على
DESTROYEDإلى طرح الخطأIllegalArgumentException(Ie7651، b/170765622). - سيؤدي الآن تهيئة FragmentScenario باستخدام حالة
DESTROYEDإلى طرحIllegalArgumentException(I73590، b/170765622)
إصلاحات أخطاء في New 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)
التغييرات في واجهة برمجة التطبيقات
- ترقية androidx لاستخدام الإصدار 1.4 من Kotlin (Id6471، b/165307851، b/165300826)
التغييرات في السلوك
- تم ضبط ملفات موارد الأجزاء على "خاصة" بشكلٍ صحيح. (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)
إصلاحات أخطاء في New 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وAndroidXTransitionالآن الإشارة إلى الجزء الذي يتضمّن الانتقال غير الصالح. (b/155574969)
التغييرات في السلوك
- يمكنك الآن استدعاء
launch()فيActivityResultLauncherضمن طريقة دورة الحياةonCreate()لأحد الأجزاء. (b/161464278) - سيؤدي استدعاء
registerForActivityResult()بعدonCreate()الآن إلى عرض استثناء يشير إلى أنّه غير مسموح بذلك بدلاً من عدم عرض النتائج بدون إشعار بعد تغيير الإعدادات. (b/162255449) - يستخدم
FragmentActivityالآن واجهة برمجة التطبيقاتOnContextAvailableListenerالتي تم تقديمها في Activity1.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في شكل طريقة إضافة Kotlin reifiedwithFragmentالتي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة. (b/158697631)
التغييرات في السلوك
- تستخدم
FragmentScenarioالآنsetMaxLifecycle()لتنفيذmoveToState()، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات وفصل حالة Fragment عن النشاط الأساسي. (b/156527405) - إنّ
SavedStateRegistryOwnerالذي تعرضه الدالةViewTreeSavedStateRegistryOwnerمرتبط الآن بدورة حياة عرض الجزء. ويضمن ذلك حفظ حالته واستعادتها في الوقت نفسه الذي يتم فيه استعادة طريقة عرض الجزء. (b/158503763)
إصلاح الأخطاء
- تنتظر الأجزاء الآن إلى أن يتم ربط طريقة عرض الجزء قبل طلب
ViewCompat.requestApplyInsets()، ما يمنع حدوث حالات يتم فيها إسقاط طلب المساحة الداخلية. (b/158095749) - تعمل الدالة Calling
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) - تم إصلاح مشكلة عدم تعامل
UseRequireInsteadOfGetLint 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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة دعم لـ
ViewTreeViewModelStoreOwnerمن Lifecycle2.3.0-alpha03وViewTreeSavedStateRegistryOwnerمن SavedState1.1.0-alpha01عند استخدامViewضِمنFragment. (aosp/1297993 وaosp/1300264)
التغييرات في واجهة برمجة التطبيقات
- تتطلّب واجهتا برمجة التطبيقات
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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية تمرير النتائج بين Fragmentَين من خلال واجهات برمجة تطبيقات جديدة في
FragmentManager. يعمل ذلك مع أجزاء التسلسل الهرمي (العنصر الرئيسي/العنصر التابع) وDialogFragment والأجزاء في Navigation، ويضمن إرسال النتائج إلى الجزء فقط عندما يكون في الحالةSTARTEDعلى الأقل. (b/149787344)
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف واجهات برمجة التطبيقات الخاصة بالتقسيم المستهدَف نهائيًا. لنقل البيانات بين الأجزاء، يجب استخدام واجهات برمجة التطبيقات الجديدة Fragment Result APIs بدلاً من ذلك. (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: تم إيقاف قاعدةFragmentLiveDataObserveLint في فئاتDialogFragmentلأنّ دورة حياتها ودورة حياة العرض متزامنتان دائمًا، ما يجعل من الآمن استخدامthisأوviewLifecycleOwnerعند استدعاءobserve. (b/151765086)
التغييرات في الاعتماديات
- تعتمد الأجزاء على Activity
1.2.0-alpha03، الذي تم إجراء تحسينات كبيرة عليه في Activity1.2.0-alpha02من خلال واجهة برمجة التطبيقات Activity Result API.
الإصدار 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التي تم تقديمها في Activity1.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: تم إصلاح النتائج الإيجابية الخاطئة في عملية فحصUseRequireInsteadOfGetLint عند استخدام اسم متغير محلي يحجب اسم السمة في 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)التي تمت إضافتها في Lifecycle2.3.0-alpha01، وذلك لكي تعرضviewLifecycleOwnerالخاص بـ Fragment كـLifecycleOwnerلأي عروض يتم عرضها من خلالonCreateView(). (aosp/1182955)
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف الطريقة
setRetainInstance()في الفئات Fragments نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة واللقطات ورسوم بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام Fragment عادي لا يتم الاحتفاظ به، والاحتفاظ بالحالة المحدّدة التي يريدون الاحتفاظ بها بشكل منفصل، ما يؤدي إلى تجنُّب مصدر شائع للتسرُّب مع الحفاظ على الخصائص المفيدة لعملية إنشاء واحدة وتدمير واحدة للحالة المحفوظة (أي الدالة الإنشائيةViewModelوonCleared()التي تتلقّاها). (b/143911815) - مع إصدار ViewPager2
1.0.0، تم إيقاف الفئتَينFragmentPagerAdapterوFragmentStatePagerAdapterنهائيًا للتفاعل معViewPager. راجِع نقل البيانات من ViewPager إلى ViewPager2. (b/145132715)
إصلاح الأخطاء
- تحتفظ قواعد Fragment ProGuard الآن بشكل صحيح فقط ببرامج الإنشاء التلقائية لفئات
Fragmentالمستخدَمة بدلاً من جميع مثيلاتFragment، ما يؤدي إلى إصلاح مشكلة تراجع تم تقديمها في Fragment1.2.1. (b/149665169 - لم تعُد
require___()قواعد Lint التي تمت إضافتها في Fragment1.2.2تظهر بشكل إيجابي خاطئ بشأن المتغيّرات المحلية التي تحمل الاسم نفسه كأسماء سمات Kotlin المخفية (أيview). (b/149891163) FragmentContainerViewلم يعُد يعرض الخطأUnsupportedOperationExceptionعند استخدام معاينة التصميم في "استوديو Android". (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()، ما يعكس سلوك دورة حياة الجزء. تم إصدار هذا المحتوى سابقًا في Fragment1.3.0-alpha04. (b/154645875) - يؤدي استدعاء
setMenuVisibility(false)على جزء الآن إلى تغيير مستوى ظهور القوائم التي توفّرها الأجزاء الفرعية بشكل صحيح. تم إصدار هذا المحتوى سابقًا في Fragment1.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)
- تم إيقاف قاعدة
FragmentLiveDataObserveLint في فئات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)
- تم إصلاح النتائج الإيجابية الخاطئة في عملية التحقّق من
UseRequireInsteadOfGetLint عند استخدام اسم متغير محلي يحجب اسم السمة في 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___()!!لجميع واجهات Fragment API التي تتضمّن كلاً من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.1الآن على Lifecycle ViewModel SavedState2.2.0.
الإصدار 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 (عند استخدام Transition1.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، ما يتطلّب منك إضافة قاعدة keep يدويًا لكل فئة قصاصة. (b/142601969) - عند إضافة
NavHostFragmentباستخدامclassأوandroid:nameفي XML معFragmentContainerView، لا يمكنك استخدامfindNavController()فيonCreate()من نشاطك. (b/142847973)
الإصدار 1.2.0-rc05
8 كانون الثاني (يناير) 2020
تم طرح ميزات androidx.fragment:fragment:1.2.0-rc05 وandroidx.fragment:fragment-ktx:1.2.0-rc05 وandroidx.fragment:fragment-testing:1.2.0-rc05. يتضمّن الإصدار 1.2.0-rc05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في الإصدار السابق في Fragment
1.2.0-rc04عند استخدام العلامة<fragment>، ما أدّى إلى استدعاءonViewCreated()بشكل غير صحيح أثناء إيقاف النشاط. (b/146290333) - يتم الآن محو الأجزاء المضافة باستخدام العلامة
<fragment>بشكلٍ سليم حتى عندما تكون في التصميم أحيانًا فقط (أي في التصميم الأفقي فقط). نتيجةً لذلك، يتم الآن نقل هذه "اللقطات" بشكلٍ صحيح إلى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 على
2.2.0-rc03Lifecycle و1.0.0-rc03Lifecycle ViewModel SavedState و1.1.0-rc03Activity.
الإصدار 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()(تم تقديمها في Fragment1.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الآن Fragment الذي تحدّده السمةclassأوandroid:nameكجزء من عملية الإنشاء، ما يضمن عمل السمتَينfindFragmentById()وfindFragmentByTag()مباشرةً بعد ذلك. (b/142520327) - تم إصلاح
IllegalStateExceptionفيFragmentContainerViewبسبب حفظ الحالة. (b/142580713) - تم إصلاح
UnsupportedOperationExceptionفيFragmentContainerViewعندما يكون صفFragmentContainerViewمشوّشًا. (b/142657034)
المشاكل المعروفة
- لا يحتفظ ProGuard تلقائيًا بالقصاصات التي تتم الإشارة إليها فقط من خلال السمة
classأوandroid:nameفيFragmentContainerView، ما يتطلّب منك إضافة قاعدة keep يدويًا لكل فئة قصاصة. لقد أوقفنا قاعدة Lint التي تقترح الانتقال إلىFragmentContainerViewإلى أن يتم حلّ هذه المشكلة من خلالaapt2. (b/142601969)
الإصدار 1.2.0-beta02
11 أكتوبر 2019
تم طرح ميزات androidx.fragment:fragment:1.2.0-beta02 وandroidx.fragment:fragment-ktx:1.2.0-beta02 وandroidx.fragment:fragment-testing:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تلقّي
onInflate()في Fragment للسمات المناسبة منFragmentContainerView، ما يؤدي إلى حدوث مشاكل مثلNavHostFragment. (b/142421837)
الإصدار 1.2.0-beta01
9 أكتوبر 2019
تم طرح ميزات androidx.fragment:fragment:1.2.0-beta01 وandroidx.fragment:fragment-ktx:1.2.0-beta01 وandroidx.fragment:fragment-testing:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- تضيف
FragmentContainerViewإمكانية إضافة جزء أولي مع إمكانية استخدام سمات XMLandroid:nameوandroid:tagالاختيارية. على عكس العلامة<fragment>، تستخدم العلامةFragmentContainerViewعلامةFragmentTransactionعادية في الخلفية لإضافة الجزء الأولي، ما يسمح بإجراء المزيد من عملياتFragmentTransactionعلى العلامةFragmentContainerViewويتيح استخدام View Binding للتصميم. (b/139830628 وb/141177981) - تحتوي الآن الفِقرات على تحذير Lint يقدّم حلاً سريعًا لاستبدال
<fragment>بـFragmentContainerView. (b/139830056)
إصلاح الأخطاء
- تم إصلاح
ClassCastExceptionعند استخدامandroidx.transition. (b/140680619) - عند استخدام Transition
1.3.0-beta01، تنتظر الآن الفئاتandroidx.transitionإلى أن تنتهي عمليات الانتقال (بالإضافة إلى عمليات الانتقال والرسوم المتحركة في إطار العمل، والتي تم إصلاحها في Fragment1.2.0-alpha03وFragment1.2.0-alpha02على التوالي) قبل إرسالonDestroyView(). (aosp/1119841) - عند استخدام الانتقال
1.3.0-beta01، تلغي الآن "اللقطات" عمليات الانتقالandroidx.transitionبشكل صحيح قبل بدء عمليات انتقال أو رسوم متحركة جديدة على الحاوية نفسها. (aosp/1119841) - تم إصلاح مشكلة في الإصدار 17 من واجهة برمجة التطبيقات والإصدارات الأقدم عند استخدام انتقالات
androidx.transitionفي العرض الجذر لـ Fragment عند استخدامFragmentContainerView. (b/140361893) - تعتمد حزمة
fragment-testingالآن على1.2.0AndroidX Test، ما يحلّ مشكلة عدم التوافق مع أحدث إصدار من 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) - لم يعُد العديد من الطرق في
FragmentManagerabstract. يظلFragmentManagerabstractويجب عدم إنشاء مثيل له أو توسيعه مباشرةً، بل يجب مواصلة الحصول على مثيل حالي منgetSupportFragmentManager()أوgetChildFragmentManager()أو غير ذلك.
إصلاح الأخطاء
- من Fragment
1.1.0-rc04: تلغي الآن Fragments عمليات الانتقال المؤجّلة بشكل صحيح عند إغلاقها. (b/138251858) - من Fragment
1.1.0-rc03: تم إصلاح مشكلة عدم إلغاء المهلات السابقة عند استدعاءpostponeEnterTransition()مع مهلة أكثر من مرة. (b/137797118) - من Fragment
1.1.0-rc02: تم إصلاح عُطل فيFragmentPagerAdapterوFragmentStatePagerAdapterعند إزالة العنصر الحالي. (b/137209870) - تنتظر الآن الأجزاء اكتمال الصور المتحركة قبل إرسال
onDestroyView(). (b/136110528) - يتم الآن التعامل بشكل صحيح مع الرسوم المتحركة للأجزاء من الأجزاء الفرعية والعناصر التابعة لها عند تحريك الجزء الرئيسي. (b/116675313)
- تم إصلاح
NullPointerExceptionعند استخدام عمليات الانتقال بين العناصر المشترَكة والجمع بين عملية إضافة وعملية إغلاق. (b/120507394) - تمت إضافة حلّ بديل لـ
IllegalStateExceptionعند استخدامFragmentPagerAdapterوFragmentStatePagerAdapterفي اختبارات Robolectric. (b/137201343)
الإصدار 1.2.0-alpha01
2 يوليو 2019
تم طرح ميزات androidx.fragment:fragment:1.2.0-alpha01 وandroidx.fragment:fragment-ktx:1.2.0-alpha01 وandroidx.fragment:fragment-testing:1.2.0-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- تستدعي FragmentManager الآن
requestApplyInsets()بعد ربط طريقة العرض الخاصة بـ Fragment وقبل استدعاءonViewCreated()مباشرةً، ما يضمن أن تتضمّن طريقة العرض دائمًا الهوامش الداخلية الصحيحة. (b/135945162)
إصلاح الأخطاء
- تم إصلاح
NullPointerExceptionعند عرضFragmentTransactionكان يستخدمsetPrimaryNavigationFragment()قبلreplace(). (b/134673465)
الإصدار 1.1.0
الإصدار 1.1.0
5 سبتمبر 2019
تم طرح ميزات androidx.fragment:fragment:1.1.0 وandroidx.fragment:fragment-ktx:1.1.0 وandroidx.fragment:fragment-testing:1.1.0. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
التغييرات المهمة منذ الإصدار 1.0.0
- fragment-testing: يوفّر العنصر
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
تغييرات واجهة برمجة التطبيقات
- تغيير غير متوافق: تمت إزالة الطريقة
FragmentFactoryinstantiateالتي تم إيقافها نهائيًا سابقًا والتي كانت تتطلّب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()عند استبدال جزء مستهدَف حالي بجزء لم يتم إرفاقه بعد بـ 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 viewModelsKotlin property delegate ليشمل طريقة 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 API.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تعذُّر تنفيذ عمليات Fragment من داخل LiveData (b/77944637)
المشاكل المعروفة
- لا يمكن الوصول إلى Target Fragments بعد إزالة Fragment من FragmentManager.
- يعتمد
fragment-testingعلىandroidx.test:core:1.0.0-beta01بدلاً منandroidx.test:core:1.0.0الصحيح.