الجزء

يمكنك تقسيم تطبيقك إلى شاشات متعددة مستقلة يتم استضافتها ضمن نشاط.
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي
12 شباط (فبراير) 2025 1.8.6 - - -

الإعلان عن التبعيات

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

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

Groovy

dependencies {
    def fragment_version = "1.8.3"

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

Kotlin

dependencies {
    val fragment_version = "1.8.3"

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

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.

الملاحظات

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

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

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 1.8

الإصدار 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 الآن على AndroidFragment Composable يسمح بإضافة أجزاء إلى التسلسل الهرمي لميزة "الإنشاء" من خلال اسم فئة الجزء. وتتولى هذه الطريقة تلقائيًا حفظ حالة المقتطف واستعادتها. يجب استخدام هذا الإجراء كبديل مباشر للطريقة المُقترَحة سابقًا لاستخدام AndroidViewBinding لتضخيم "العنصر المجزّأ".
  • يتم الآن تشغيل طلب إعادة الاتصال onBackStackChangeCancelled في واجهة OnBackStackChangedListener في FragmentManager كجزء من تنفيذ العمليات في FragmentManager، ما يجعله أقرب إلى توقيت طلب إعادة الاتصال onBackStackChangeCommitted.

الإصدار 1.8.0-rc01

29 أيار (مايو) 2024

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

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

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

الإصدار 1.8.0-beta01

14 أيار (مايو) 2024

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

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

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

الإصدار 1.8.0-alpha02

17 نيسان (أبريل) 2024

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

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

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

الإصدار 1.8.0-alpha01

3 نيسان (أبريل) 2024

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

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

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

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

  • وثائق معدَّلة لواجهات برمجة تطبيقات OnBackStackChangedListener للإشارة إلى حالات استدعائها وكيفية استخدامها (I0bfd9)

تعديل التبعيات

الإصدار 1.7

الإصدار 1.7.1

14 أيار (مايو) 2024

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

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

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

الإصدار 1.7.0

1 أيار (مايو) 2024

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

إتاحة إيماءة إظهار شاشة الرجوع التنبؤية

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

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

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

عنصر Compose Fragment

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

الميزة الأولى المتوفّرة في هذا العنصر الجديد هي طريقة إضافة content في Fragment تهدف إلى تسهيل استخدام أداة "الإنشاء" لواجهة مستخدم عنصر فردي من خلال إنشاء ComposeView نيابةً عنك وضبط ViewCompositionStrategy الصحيح.

  class ExampleFragment : Fragment() {

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

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

الإصدار 1.7.0-rc02

17 نيسان (أبريل) 2024

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

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

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

الإصدار 1.7.0-rc01

3 نيسان (أبريل) 2024

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

تعديل التبعيات

الإصدار 1.7.0-beta01

20 مارس 2024

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

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

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

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

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

الإصدار 1.7.0-alpha10

7 شباط (فبراير) 2024

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha10. يحتوي الإصدار 1.7.0-alpha10 على هذه المراجعات.

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

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

الإصدار 1.7.0-alpha09

24 كانون الثاني (يناير) 2024

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha09. يحتوي الإصدار 1.7.0-alpha09 على هذه المراجعات.

عنصر Compose Fragment

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

الميزة الأولى المتوفّرة في هذا العنصر الجديد هي طريقة إضافة content في Fragment تهدف إلى تسهيل استخدام أداة "الإنشاء" لواجهة مستخدم عنصر فردي من خلال إنشاء ComposeView نيابةً عنك وضبط ViewCompositionStrategy الصحيح. (561cb7، b/258046948)

class ExampleFragment : Fragment() {

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

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

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

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

مشكلة معروفة

  • عند استخدام ميزة "الرجوع التوقّعي" في Fragment لنظام التشغيل Animator أو الانتقال في AndroidX، ستُرسِل Fragments NullPointerException من handleOnBackProgressed إذا لم تتم إضافة FragmentManager.OnBackStackChangedListener من خلال addOnBackStackChangedListener. ستؤدي إضافة مستمع يدويًا إلى معالجة الأعطال. سيتوفّر حلّ لهذه المشكلة في الإصدار التالي من "المقاطع".

الإصدار 1.7.0-alpha08

10 كانون الثاني (يناير) 2024

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha08. يحتوي الإصدار 1.7.0-alpha08 على هذه المراجعات.

التنظيف

  • تمت إزالة الحلّ البديل لـ "مكتبة الانتقالات" الذي تم إصلاحه في الإصدار 1.5.0-alpha06 من "الانتقالات". (I04356)

الإصدار 1.7.0-alpha07

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

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha07. يحتوي الإصدار 1.7.0-alpha07 على هذه المراجعات.

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

  • تم إصلاح NullPointerException ناتج عن ضبط انتقال عنصر مشترَك وتعذُّر ضبط انتقال الدخول/الخروج أيضًا. (I8472b)
  • من الجزء 1.6.2: عند تضخيم الجزء من FragmentContainerView، يمكن الآن الوصول إلى حالاته، مثل FragmentManager وHost والمعرّف، في ردّ الاتصال onInflate. (I1e44c، b/307427423)
  • من القطعة 1.6.2: عند استخدام clearBackStack لإزالة مجموعة من القطع، سيتم الآن محو ViewModel لأي قطعة مضمّنة عند محو ViewModels للقطعة الرئيسية. (I6d83c، b/296173018)

الإصدار 1.7.0-alpha06

‫4 أكتوبر 2023

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha06. يحتوي الإصدار 1.7.0-alpha06 على هذه المراجعات.

تعديل التبعية

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

الإصدار 1.7.0-alpha05

20 أيلول (سبتمبر) 2023

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha05. يحتوي الإصدار 1.7.0-alpha05 على هذه المراجعات.

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

  • تتيح الآن "المقاطع" استخدام ميزة "الرجوع التنبؤي" عند استخدام "عمليات النقل في Androidx". يتيح لك ذلك استخدام إيماءة الرجوع للانتقال إلى المقتطف السابق باستخدام انتقال Androidx المخصّص قبل اتخاذ قرار بإكمال المعاملة أو إلغائها من خلال الإيماءة المكتملة. يجب الاعتماد على إصدار الانتقال 1.5.0-alpha03 لتفعيل هذه الميزة. (Ib49b4، b/285175724)

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

  • هناك مشكلة حاليًا تتمثل في أنّه بعد إلغاء إيماءة الرجوع باستخدام انتقال مرة واحدة، لن يتم تشغيل الانتقال في المرة التالية التي تبدأ فيها إيماءة الرجوع، ما يؤدي إلى ظهور شاشة فارغة. قد يرجع ذلك إلى مشكلة في مكتبة الانتقالات. (b/300157785). إذا واجهت هذه المشكلة، يُرجى إبلاغ فريق Fragment بالمشكلة مع تضمين نموذج مشروع يعيد إنتاج مشكلتك. يمكنك إيقاف ميزة "الرجوع التوقّعي" باستخدام FragmentManager.enabledPredictiveBack(false) في onCreate() "نشاطي".

الإصدار 1.7.0-alpha04

6 أيلول (سبتمبر) 2023

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha04. يحتوي الإصدار 1.7.0-alpha04 على هذه المراجعات.

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

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

الإصدار 1.7.0-alpha03

23 آب (أغسطس) 2023

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha03. يحتوي الإصدار 1.7.0-alpha03 على هذه المراجعات.

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

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

الإصدار 1.7.0-alpha02

9 آب (أغسطس) 2023

تم إصدار androidx.fragment:fragment-*:1.7.0-alpha02. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.

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

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

الإصدار 1.7.0-alpha01

7 حزيران (يونيو) 2023

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

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

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

الإصدار 1.6

الإصدار 1.6.2

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

تم إصدار androidx.fragment:fragment-*:1.6.2. يحتوي الإصدار 1.6.2 على هذه المراجعات.

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

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

الإصدار 1.6.1

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

تم إصدار androidx.fragment:fragment-*:1.6.1. يحتوي الإصدار 1.6.1 على هذه المراجعات.

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

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

تعديل التبعية

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

الإصدار 1.6.0

7 حزيران (يونيو) 2023

تم إصدار androidx.fragment:fragment-*:1.6.0. يحتوي الإصدار 1.6.0 على هذه المراجعات.

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

  • تم تقسيم الحالة المحفوظة للعناصر Fragment بالكامل بين حالة المكتبة الخاصة (فصول Parcelable مخصّصة) والحالة التي يقدّمها المطوّر، والتي يتم تخزينها الآن دائمًا في Bundle يسمح بتحديد مصدر حالة المقتطف بدقة.
  • تم توسيع واجهة FragmentManager.OnBackStackChangedListener من خلال وظيفتَي استدعاء إضافيتَين onBackStackChangeStarted وonBackStackChangeCommitted يتم استدعاؤهما مع كل Fragment مباشرةً قبل إضافتهما أو إزالتهما من حزمة الرجوع للشريحة وبعد إتمام المعاملة مباشرةً، على التوالي.
  • أضافت FragmentStrictMode WrongNestedHierarchyViolation جديدًا يرصد تداخل أحد الأجزاء الفرعية في التسلسل الهرمي لعرض العنصر الرئيسي، ولكن لا تتم إضافته إلى childFragmentManager للعنصر الرئيسي.
  • تم الآن إضافة تعليقات توضيحية بشكل صحيح إلى واجهات برمجة التطبيقات Fragment وFragmentManager اللتين تقبلان Intent أو IntentSender باستخدام @NonNull لمنع إدخال قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات ذات الصلة بإطار عمل Android التي تستدعيها هذه الطرق على الفور.
  • تتيح DialogFragment الآن الوصول إلى ComponentDialog الأساسية من خلال واجهة برمجة التطبيقات requireComponentDialog().
  • يعتمد المقتطف الآن على Lifecycle 2.6.1.
  • يعتمد المقتطف الآن على SavedState 1.2.1.
  • يعتمد القسم الآن على ProfileInstaller 1.3.0.
  • يفصل العنصر fragment-testing-manifest بين إدخالات البيان وبقية مكوّنات اختبار الأجزاء. وهذا يعني أنّه يمكنك إجراء ما يلي:

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

    ويؤدي ذلك إلى تجنُّب حدوث تعارضات بسبب اختلاف الإصدار بين fragment-testing وandroidx.test.

الإصدار 1.6.0-rc01

10 أيار (مايو) 2023

تم إصدار androidx.fragment:fragment-*:1.6.0-rc01. يحتوي الإصدار 1.6.0-rc01 على هذه المراجعات.

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

  • تم إصلاح مشكلة كانت تؤدي إلى إرسال ActivityResult باستخدام رمز الطلب غير الصحيح عند تقديم طلبات startActivityForResult متعددة بشكل متتالي. (If0b9d، b/249519359)
  • تم إصلاح مشكلة كانت تؤدي إلى إرسال طلبات استدعاء 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)
  • تمّت إضافة تعليقات توضيحية إلى واجهات برمجة التطبيقات commitNow() وexecutePendingTransactions() وpopBackStackImmediate() باستخدام الرمز @MainThread، ما يعني أنّها ستُعرِض الآن جميعًا أخطاء في مرحلة الإنشاء عندما لا يتمّ استدعاؤها من سلسلة المهام الرئيسية بدلاً من انتظار حدوث خطأ في وقت التشغيل. (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)

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

  • من الفقرة 1.5.6: تم إصلاح مشكلة تعذُّر استدعاء clearFragmentResultListener داخل setFragmentResultListener إذا كان Lifecycle قد تم STARTED وكانت نتيجة البحث متاحة. (If7458)

تعديلات على التبعيات

الإصدار 1.6.0-alpha07

8 آذار (مارس) 2023

تم إصدار androidx.fragment:fragment-*:1.6.0-alpha07. يحتوي الإصدار 1.6.0-alpha07 على هذه المراجعات.

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

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

الإصدار 1.6.0-alpha06

22 شباط (فبراير) 2023

تم إصدار androidx.fragment:fragment-*:1.6.0-alpha06. يحتوي الإصدار 1.6.0-alpha06 على هذه المراجعات.

تغيير السلوك

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

الإصدار 1.6.0-alpha05

8 شباط (فبراير) 2023

تم إصدار androidx.fragment:fragment-*:1.6.0-alpha05. يحتوي الإصدار 1.6.0-alpha05 على هذه المراجعات.

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

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

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

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

الإصدار 1.6.0-alpha04

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

تم إصدار androidx.fragment:fragment-*:1.6.0-alpha04. يحتوي الإصدار 1.6.0-alpha04 على هذه المراجعات.

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

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

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

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

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

  • يفصل العنصر fragment-testing-manifest بين إدخالات البيان وبقية مكوّنات اختبار الأجزاء. وهذا يعني أنّه يمكنك إجراء ما يلي:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

يتجنّب ذلك حدوث تعارضات بسبب اختلاف الإصدار بين fragment-testing وandroidx.test.(I8e534، b/128612536)

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

  • من القسم 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/242570955If9d6b،Id0096،I690b3،I2cba2)

الإصدار 1.6.0-alpha02

24 آب (أغسطس) 2022

تم إصدار androidx.fragment:fragment:1.6.0-alpha02 وandroidx.fragment:fragment-ktx:1.6.0-alpha02 وandroidx.fragment:fragment-testing:1.6.0-alpha02. يحتوي الإصدار 1.6.0-alpha02 على هذه المراجعات.

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

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

الإصدار 1.6.0-alpha01

27 تموز (يوليو) 2022

تم إصدار androidx.fragment:fragment:1.6.0-alpha01 وandroidx.fragment:fragment-ktx:1.6.0-alpha01 وandroidx.fragment:fragment-testing:1.6.0-alpha01. يحتوي الإصدار 1.6.0-alpha01 على هذه المراجعات.

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

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

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

  • من الفقرة 1.5.1: إصلاح مشكلة تراجع في الأداء في DialogFragmentCallbacksDetector حيث يؤدي استخدام إصدار lint المضمّن في AGP 7.4 إلى تعطُّل lint (b/237567009)

تعديل التبعيات

الإصدار 1.5

الإصدار 1.5.7

19 نيسان (أبريل) 2023

تم إصدار androidx.fragment:fragment:1.5.7 وandroidx.fragment:fragment-ktx:1.5.7 وandroidx.fragment:fragment-testing:1.5.7. يحتوي الإصدار 1.5.7 على هذه المراجعات.

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

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

الإصدار 1.5.6

22 آذار (مارس) 2023

تم إصدار androidx.fragment:fragment:1.5.6 وandroidx.fragment:fragment-ktx:1.5.6 وandroidx.fragment:fragment-testing:1.5.6. يحتوي الإصدار 1.5.6 على هذه المراجعات.

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

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

الإصدار 1.5.5

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

تم إصدار androidx.fragment:fragment:1.5.5 وandroidx.fragment:fragment-ktx:1.5.5 وandroidx.fragment:fragment-testing:1.5.5. يحتوي الإصدار 1.5.5 على هذه المراجعات.

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

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

الإصدار 1.5.4

24 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.fragment:fragment:1.5.4 وandroidx.fragment:fragment-ktx:1.5.4 وandroidx.fragment:fragment-testing:1.5.4. يحتوي الإصدار 1.5.4 على هذه المراجعات.

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

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

الإصدار 1.5.3

21 أيلول (سبتمبر) 2022

تم إصدار androidx.fragment:fragment:1.5.3 وandroidx.fragment:fragment-ktx:1.5.3 وandroidx.fragment:fragment-testing:1.5.3. يحتوي الإصدار 1.5.3 على هذه المراجعات.

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

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

الإصدار 1.5.2

10 آب (أغسطس) 2022

تم إصدار androidx.fragment:fragment:1.5.2 وandroidx.fragment:fragment-ktx:1.5.2 وandroidx.fragment:fragment-testing:1.5.2. يحتوي الإصدار 1.5.2 على هذه المراجعات.

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

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

الإصدار 1.5.1

27 تموز (يوليو) 2022

تم إصدار androidx.fragment:fragment:1.5.1 وandroidx.fragment:fragment-ktx:1.5.1 وandroidx.fragment:fragment-testing:1.5.1. يحتوي الإصدار 1.5.1 على هذه المراجعات.

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

  • إصلاح مشكلة تراجع في الأداء في DialogFragmentCallbacksDetector حيث يؤدي استخدام إصدار أداة lint المضمّن في AGP 7.4 إلى تعطُّل أداة lint (b/237567009)

تعديل التبعيات

الإصدار 1.5.0

29 حزيران (يونيو) 2022

تم إصدار androidx.fragment:fragment:1.5.0 وandroidx.fragment:fragment-ktx:1.5.0 وandroidx.fragment:fragment-testing:1.5.0. يحتوي الإصدار 1.5.0 على هذه المراجعات.

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

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

تغييرات أخرى

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

الإصدار 1.5.0-rc01

11 أيار (مايو) 2022

تم إصدار androidx.fragment:fragment:1.5.0-rc01 وandroidx.fragment:fragment-ktx:1.5.0-rc01 وandroidx.fragment:fragment-testing:1.5.0-rc01. يحتوي الإصدار 1.5.0-rc01 على هذه المراجعات.

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

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

الإصدار 1.5.0-alpha05

6 نيسان (أبريل) 2022

تم إصدار androidx.fragment:fragment:1.5.0-alpha05 وandroidx.fragment:fragment-ktx:1.5.0-alpha05 وandroidx.fragment:fragment-testing:1.5.0-alpha05. يحتوي الإصدار 1.5.0-alpha05 على هذه المراجعات.

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

الإصدار 1.5.0-alpha04

23 آذار (مارس) 2022

تم إصدار androidx.fragment:fragment:1.5.0-alpha04 وandroidx.fragment:fragment-ktx:1.5.0-alpha04 وandroidx.fragment:fragment-testing:1.5.0-alpha04. يحتوي الإصدار 1.5.0-alpha04 على هذه المراجعات.

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

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

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

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

الإصدار 1.5.0-alpha03

23 شباط (فبراير) 2022

تم إصدار androidx.fragment:fragment:1.5.0-alpha03 وandroidx.fragment:fragment-ktx:1.5.0-alpha03 وandroidx.fragment:fragment-testing:1.5.0-alpha03. يحتوي الإصدار 1.5.0-alpha03 على هذه المراجعات.

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

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

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

الإصدار 1.5.0-alpha02

9 شباط (فبراير) 2022

تم إصدار androidx.fragment:fragment:1.5.0-alpha02 وandroidx.fragment:fragment-ktx:1.5.0-alpha02 وandroidx.fragment:fragment-testing:1.5.0-alpha02. يحتوي الإصدار 1.5.0-alpha02 على هذه المراجعات.

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

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

الإصدار 1.5.0-alpha01

26 كانون الثاني (يناير) 2022

تم إصدار androidx.fragment:fragment:1.5.0-alpha01 وandroidx.fragment:fragment-ktx:1.5.0-alpha01 وandroidx.fragment:fragment-testing:1.5.0-alpha01. يحتوي الإصدار 1.5.0-alpha01 على هذه المراجعات.

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

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

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

الإصدار 1.4.0

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

تم إصدار androidx.fragment:fragment:1.4.0 وandroidx.fragment:fragment-ktx:1.4.0 وandroidx.fragment:fragment-testing:1.4.0. يحتوي الإصدار 1.4.0 على هذه المراجعات.

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

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

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

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

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

تجميعات خلفية متعددة

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

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

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

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

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

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

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

لمزيد من المعلومات، يُرجى الاطّلاع على المقالة الأداة "الترجيع" المتعددة: نظرة معمّقة.

الإصدار 1.4.0-rc01

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

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

الإصدار 1.4.0-beta01

27 تشرين الأول (أكتوبر) 2021

تم إصدار androidx.fragment:fragment:1.4.0-beta01 وandroidx.fragment:fragment-ktx:1.4.0-beta01 وandroidx.fragment:fragment-testing:1.4.0-beta01. يحتوي الإصدار 1.4.0-beta01 على هذه المراجعات.

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

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

الإصدار 1.4.0-alpha10

29 أيلول (سبتمبر) 2021

تم إصدار androidx.fragment:fragment:1.4.0-alpha10 وandroidx.fragment:fragment-ktx:1.4.0-alpha10 وandroidx.fragment:fragment-testing:1.4.0-alpha10. يحتوي الإصدار 1.4.0-alpha10 على هذه المراجعات.

Lint

  • تمت إضافة تحذير DetachAndAttachFragmentInSameFragmentTransaction lint لرصد استدعاء كل من detach() وattach() على Fragment نفسه في FragmentTransaction نفسه، لأنّ هذه العمليات التكميلية تلغي بعضها البعض عند إجرائها في المعاملة نفسها، ويجب تقسيمها إلى معاملات منفصلة لإجراء أي إجراء. (aosp/1832956، b/200867930)
  • تمت إضافة خطأ FragmentAddMenuProvider lint لتصحيح استخدامات دورة حياة المقتطف إلى دورة حياة عرض المقتطف عند استخدام واجهة برمجة التطبيقات 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) ل clearing أي حالة تم حفظها سابقًا باستخدام saveBackStack(name). (I70cd7)

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

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

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

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

الإصدار 1.4.0-alpha08

1 أيلول (سبتمبر) 2021

تم إصدار androidx.fragment:fragment:1.4.0-alpha08 وandroidx.fragment:fragment-ktx:1.4.0-alpha08 وandroidx.fragment:fragment-testing:1.4.0-alpha08. يحتوي الإصدار 1.4.0-alpha08 على هذه المراجعات.

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

  • تم تحسين عملية التحقّق من الأخطاء البرمجية UseRequireInsteadOfGet للتعامل بشكل أفضل مع الأقواس المكرّرة. (I2d865)
  • تم تحسين عملية التحقّق من الأخطاء في UseGetLayoutInflater للتعامل مع حالات الاستخدام المتقدّمة الإضافية. (Ie5423)

الإصدار 1.4.0-alpha07

18 آب (أغسطس) 2021

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

الإصدار 1.4.0-alpha06

4 آب (أغسطس) 2021

تم إصدار androidx.fragment:fragment:1.4.0-alpha06 وandroidx.fragment:fragment-ktx:1.4.0-alpha06 وandroidx.fragment:fragment-testing:1.4.0-alpha06. يحتوي الإصدار 1.4.0-alpha06 على هذه المراجعات.

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

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

الإصدار 1.4.0-alpha05

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

تم إصدار androidx.fragment:fragment:1.4.0-alpha05 وandroidx.fragment:fragment-ktx:1.4.0-alpha05 وandroidx.fragment:fragment-testing:1.4.0-alpha05. يحتوي الإصدار 1.4.0-alpha05 على هذه المراجعات.

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

  • من العنصر 1.3.6: تم ضبط عرض العنصر على GONE بشكل صحيح عند استخدام hide() عندما يكون العرض الجذر مضبوطًا على transitionGroup=”true”. (aosp/1766655، b/193603427)
  • من الفقرة 1.3.6: يفتح FragmentActivity الآن دائمًا الحالة المحفوظة كأول عملية في lifecycle callbacks التي تلغيها. (I6db7a)

تعديل التبعيات

الإصدار 1.4.0-alpha04

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

تم إصدار androidx.fragment:fragment:1.4.0-alpha04 وandroidx.fragment:fragment-ktx:1.4.0-alpha04 وandroidx.fragment:fragment-testing:1.4.0-alpha04. يحتوي الإصدار 1.4.0-alpha04 على هذه المراجعات.

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

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

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

  • تم إصلاح مشكلة تعذُّر تنفيذ طلب saveBackStack() كجزء من إتاحة سحوبات متعددة من الذاكرة في الوقت نفسه مع تشغيل FragmentTransaction استخدَم replace(). (I73137)
  • تم إصلاح NullPointerException كان يحدث بعد استعادة ملف restoreBackStack() محفوظ يتضمن معاملات متعددة عند استخدام واجهة برمجة التطبيقات restoreBackStack() لتوفير دعم 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)

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

  • من الإصدار 1.3.5: تم إصلاح مشكلة تراجع في عمليات انتقال العناصر المشتركة التي تم تقديمها في الإصدار 1.3.4 من خلال aosp/1679887. تعالج الأجزاء الآن مجموعات الانتقال بشكلٍ صحيح (إما يتم ضبطها مباشرةً من خلال transitionGroup="true" أو بشكل غير مباشر من خلال transitionName أو background) ولن تُرسِل العناصر المشتركة أخطاء IndexOutOfBoundsException بعد الآن. (I16484، b/188679569، b/188969304)
  • لن يتعطّل FragmentManager بعد الآن عند محاولة إخفاء جزء تتم إزالته. (I573dd، b/183634730)
  • لن يؤدي فحص الأخطاء البرمجية OnCreateDialogIncorrectCallback بعد الآن إلى حدوث عطل عند تقييم متغيّر من المستوى الأعلى. (0a9efa، b/189967522)

الإصدار 1.4.0-alpha02

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

تم إصدار androidx.fragment:fragment:1.4.0-alpha02 وandroidx.fragment:fragment-ktx:1.4.0-alpha02 وandroidx.fragment:fragment-testing:1.4.0-alpha02. يحتوي الإصدار 1.4.0-alpha02 على هذه المراجعات.

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

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

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

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

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

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

الإصدار 1.4.0-alpha01

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

تم إصدار androidx.fragment:fragment:1.4.0-alpha01 وandroidx.fragment:fragment-ktx:1.4.0-alpha01 وandroidx.fragment:fragment-testing:1.4.0-alpha01. يحتوي الإصدار 1.4.0-alpha01 على هذه المراجعات.

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

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

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

تجميعات خلفية متعددة

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

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

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

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

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

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

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

Fragment StrictMode

توفّر واجهات برمجة تطبيقات FragmentStrictMode عمليات تحقّق وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات للشرائح المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل مستمع مخصّص أو تعطيل تطبيقك. يمكن ضبط FragmentStrictMode.Policy الذي يتحكّم في عمليات التحقّق المفعّلة و"العقوبات" التي يتم تفعيلها على FragmentManager من خلال طريقة setStrictModePolicy() الجديدة. تنطبق هذه السياسة على FragmentManager وعلى أي مدراء للمقاطع الفرعية لا يحدّدون سياستهم الفريدة. (‎#123 و‎#131 و‎#150 وb/143774122)

  • يرصد detectFragmentReuse() ما إذا كانت تتم إعادة إضافة مثيل Fragment تمت إزالته سابقًا إلى FragmentManager. يجب عدم التفاعل مع مثيل Fragment أو الاحتفاظ بإشارة إليه بعد إزالته من FragmentManager. (‎#142، b/153738653)
  • يرصد detectFragmentTagUsage() حالات استخدام علامة <fragment> في ملف XML الخاص بالتنسيق. يجب دائمًا استخدام FragmentContainerView عند تضخيم الأجزاء كجزء من تنسيقك. (‎#141، b/153738235)
  • يرصد detectWrongFragmentContainer() الحالات التي تضيف فيها مقتطفًا إلى حاوية ليست FragmentContainerView. يجب دائمًا استخدام FragmentContainerView كسمة حاوية للمقاطع في التنسيق. (‎#146، b/181137036)
  • يرصد detectRetainInstanceUsage() حالات استخدام واجهات برمجة التطبيقات setRetainInstance() أو getRetainInstance() المتوقّفة نهائيًا. (‎#140، b/153737954)
  • يرصد detectSetUserVisibleHint() حالات استخدام واجهة برمجة التطبيقات setUserVisibleHint() المتوقّفة نهائيًا. (‎#136، b/153738974)
  • يرصد detectTargetFragmentUsage() حالات استخدام واجهات برمجة التطبيقات setTargetFragment() أو getTargetFragment() أو getTargetRequestCode() المتوقّفة نهائيًا. (‎#139، b/153737745)

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

عمليات التحقّق الجديدة من Lint

  • يُرسِل الآن فحص UseGetLayoutInflater تحذيرًا عند استخدام LayoutInflater.from(Context) ضمن DialogFragment. يجب دائمًا استخدام طريقة getLayoutInflater() لجزء المحادثة للحصول على القيمة المناسبة لـ LayoutInflater. (‎#156، b/170781346)
  • يُصدر الآن فحص Lint في DialogFragmentCallbacksDetector تحذيرًا عند استدعاء 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 المقدَّم من الجزء إذا كان يتجاهل getDefaultViewModelProviderFactory() (كما تفعل @AndroidEntryPoint الأجزاء التي تحتوي على تعليقات توضيحية عند استخدام Hilt). في حال عدم إلغاء هذه الطريقة، يتم إنشاء SavedStateViewModelFactory يحفظ حالته ويستعيدها إلى جانب عرض "العنصر المجزأ" كحالة المصنع التلقائية. (I5cbfa، b/186097368)
  • اعتبارًا من الإصدار 1.3.4 من القسم: عند استخدام FragmentContainerView على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال المكوّنات المضمّنة مجددًا إلى أجل غير مسمى، ما يؤدي إلى حلّ المشاكل المتعلّقة بمثيلات BottomNavigationBar وFloatingActionButton. (I1bb78، b/186012452)
  • من الإصدار 1.3.4 من Fragment: يمكنك الآن استرداد Parcelable من حِزمة نتيجة القطعة بعد إنهاء العملية. (I65932، b/187443158)
  • من الفقرة 1.3.4: عند إجراء انتقال عنصر مشترَك في ViewGroup، إذا تم ضبط transitionGroup على خطأ في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (I99675)

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

الإصدار 1.3

الإصدار 1.3.6

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

تم إصدار androidx.fragment:fragment:1.3.6 وandroidx.fragment:fragment-ktx:1.3.6 وandroidx.fragment:fragment-testing:1.3.6. يحتوي الإصدار 1.3.6 على هذه المراجعات.

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

  • من الفقرة 1.4.0-alpha03: لن يتعطّل الرمز البرمجي FragmentManager بعد الآن عند محاولة إخفاء جزء تتم إزالته. (I573dd، b/183634730)
  • تم ضبط عرض المقتطف الآن بشكل صحيح على GONE عند استخدام hide() عندما تم ضبط العرض الجذر على transitionGroup=”true”. (aosp/1766655، b/193603427)
  • يفتح FragmentActivity الآن دائمًا الحالة المحفوظة كأول عملية له في lifecycle callbacks التي يتجاوزها. (I6db7a)

تعديل التبعيات

الإصدار 1.3.5

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

تم إصدار androidx.fragment:fragment:1.3.5 وandroidx.fragment:fragment-ktx:1.3.5 وandroidx.fragment:fragment-testing:1.3.5. يحتوي الإصدار 1.3.5 على هذه المراجعات.

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

  • تم إصلاح مشكلة تراجع في عمليات انتقال العناصر المشتركة التي تم تقديمها في القسم 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 على هذه المراجعات.

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

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

الإصدار 1.3.3

21 نيسان (أبريل) 2021

تم إصدار androidx.fragment:fragment:1.3.3 وandroidx.fragment:fragment-ktx:1.3.3 وandroidx.fragment:fragment-testing:1.3.3. يحتوي الإصدار 1.3.3 على هذه المراجعات.

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

  • يعمل استخدام SavedStateViewModelFactory الآن عند استخدامه مع SavedStateRegistryOwner الذي تم إرجاعه باستخدام ViewTreeSavedStateRegistryOwner.get() مع عرض المقتطف. (I21acf، b/181577191)

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

  • تم إصلاح مشكلة تراجع حدثت في القسم 1.3.2 كانت تؤدي إلى عدم تشغيل الرسوم المتحرّكة popEnter عند عرض FragmentTransaction يتضمّن عملية setPrimaryNavFragment، مثل تلك التي يستخدمها NavHostFragment. (I38c87، b/183877426)
  • يضمن FragmentContainerView الآن إرسال مجموعة جديدة من WindowInsets إلى كل Fragment، ما يضمن أنّه يمكن لكلّ جزء الآن استخدام المكوّنات المضمّنة بشكلٍ مستقل. (I63f68، b/172153900)
  • يعالج DialogFragment الآن بشكلٍ سليم الحالات التي تتم فيها إضافة جزء فرعي إلى حاوية لها المعرّف نفسه الذي تستخدمه حاوية في فئة Dialog المخصّصة، ما يؤدي إلى حلّ مشاكل التسلسل الهرمي للعرض عند إعادة استخدام المعرّفات التي تستخدمها مربّعات الحوار داخليًا، مثل BottomSheetDialog. (Ie6279، b/180021387)
  • FragmentManager.dump() يُعدّل الآن المسافة البادئة للقطعة الأولى في قائمة القطع النشطة بشكلٍ صحيح. (If5c33، b/183705451)

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

  • يعالج الآن مدير حالة المقتطف الجديد بشكلٍ صحيح عمليات الخروج الانتقالية باستخدام عمليات إخفاء. (I9e4de، b/184830265)

الإصدار 1.3.2

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

تم إصدار androidx.fragment:fragment:1.3.2 وandroidx.fragment:fragment-ktx:1.3.2 وandroidx.fragment:fragment-testing:1.3.2. يحتوي الإصدار 1.3.2 على عمليات الربط هذه.

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

  • عند تنفيذ كلّ من عمليتَي popBackStack() وcommit() معًا، ستضبط العملية الأخيرة الآن اتجاه كل الصور المتحركة بدلاً من تشغيل بعض الصور المتحركة التي تظهر فجأة وبعض الصور المتحركة التي تظهر عند دخول العنصر. (I7072e، b/181142246)
  • لن يتم بعد الآن إزالة اسم الانتقال من المشاهدات ضمن التدرّج الهرمي للعنصر المشترَك عند إجراء انتقال عنصر مشترَك. (I4d4a6، b/179934757)

تعديلات على التبعيات

  • يعتمد Fragment الآن على Activity 1.2.2، ما يحلّ مشكلة في أداة التحقّق من الأخطاء InvalidFragmentVersionForActivityResult في Activity عند استخدام Fragment 1.3.1 أو إصدار أحدث.
  • يعتمد العنصر الآن على Lifecycle 2.3.1.

الإصدار 1.3.1

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

تم إصدار androidx.fragment:fragment:1.3.1 وandroidx.fragment:fragment-ktx:1.3.1 وandroidx.fragment:fragment-testing:1.3.1. يحتوي الإصدار 1.3.1 على هذه المراجعات.

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

  • يمكن الآن للحوارات ضمن DialogFragment الوصول إلى ViewTree owners من خلال 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)

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

  • تم إصلاح تسرب في الذاكرة في الأجزاء بسبب mFocusedView (Ib4e9e، b/179925887)
  • تُستخدَم الآن المقاطع بشكل صحيح للإشارة إلى onCreateOptionsMenu عند استخدام إظهار/إخفاء المعاملات (I8bce8، b/180255554).
  • ستتمكّن الآن الأجزاء الفرعية التي تتضمّن انتقالات تبدأ قبل عرض الجزء من الوصول بشكل صحيح إلى RESUMED (Ic11e6، b/180825150).
  • إنّ الأجزاء التي تم تضخيمها باستخدام علامة <fragment> ستتم معالجتها دائمًا باستخدام RESUMED (I452ac، (I9fa49)

تعديلات على التبعيات

الإصدار 1.3.0

10 شباط (فبراير) 2021

تم إصدار androidx.fragment:fragment:1.3.0 وandroidx.fragment:fragment-ktx:1.3.0 وandroidx.fragment:fragment-testing:1.3.0. يحتوي الإصدار 1.3.0 على عمليات الربط هذه.

التغييرات الرئيسية منذ الإصدار 1.2.0

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

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

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

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

    • يستخدم FragmentScenario الآن setMaxLifecycle() لتنفيذ moveToState()، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات ويفصل حالة المقتطف عن النشاط الأساسي.
    • تتيح FragmentScenario الآن ضبط Lifecycle.State أولي للسماح بتأكيد حالة المقتطف قبل الانتقال إلى كل Lifecycle.State للمرة الأولى.
    • يتوفّر الآن بديل لواجهة برمجة التطبيقات FragmentScenario في onFragment على شكل طريقة إضافة معدَّلة في Kotlin‏ withFragment تتيح لك عرض قيمة. ويُرجى العِلم أنّه يعيد رمي الاستثناءات التي تمّت إثارتها في القسم المحدّد.
  • ViewTree التوافق: تتيح أداة Fragment الآن واجهات برمجة التطبيقات ViewTreeLifecycleOwner.get(View) وViewTreeViewModelStoreOwner.get(View) وViewTreeSavedStateRegistryOwner التي تمت إضافتها في واجهة برمجة التطبيقات Lifecycle 2.3.0 وواجهة برمجة التطبيقات SavedState 1.1.0، ما يؤدي إلى عرض "العنصر المجزأ" على أنّه 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)

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

  • يعالج عرض المقتطف 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)

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

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

الإصدار 1.3.0-beta02

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

تم إصدار androidx.fragment:fragment:1.3.0-beta02 وandroidx.fragment:fragment-ktx:1.3.0-beta02 وandroidx.fragment:fragment-testing:1.3.0-beta02. يحتوي الإصدار 1.3.0-beta02 على هذه المراجعات.

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

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

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

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

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

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

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

  • تخزِّن أداة FragmentFactory الآن فئات المقتطفات بشكل منفصل لمثيلَي ClassLoader مختلفَين. شكرًا، رامي (‎#87، b/113886460)

الإصدار 1.3.0-beta01

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

تم إصدار androidx.fragment:fragment:1.3.0-beta01 وandroidx.fragment:fragment-ktx:1.3.0-beta01 وandroidx.fragment:fragment-testing:1.3.0-beta01. يحتوي الإصدار 1.3.0-beta01 على هذه المراجعات.

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

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

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

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

  • تمّت بنجاح إزالة إذن الوصول إلى ملفات مرجع المقاطع. (aosp/1425237)

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

  • ستتم الآن معالجة الأجزاء التي تم تضخيمها باستخدام علامة <fragment> بشكلٍ سليم، وستبدأ في الانتظار إلى أن تتم إضافة مشاهداتها إلى حاوية قبل الانتقال إلى الحالة STARTED (I02f4c).
  • إنّ الشظايا المرئية ثمّ setMaxLifecycle() إلى CREATED تعرِض الآن تأثيرات الخروج بشكل صحيح. (b/165822335)
  • لم تعُد إزالة جزء منفصل لم تتم إضافته إلى الحزمة الخلفية تؤدي إلى تسرُّب الذاكرة. من إنتاج Nicklas Ansman Giertz (b/166489383)
  • ستحتوي الأجزاء النشطة الآن دائمًا على FragmentManager غير فارغ، وسيتم اعتبار الأجزاء التي تحتوي على FragmentManager غير فارغ نشطة دائمًا. (aosp/1422346)
  • تستخدم الآن التأثيرات التلقائية للمقاطع، TRANSIT_FRAGMENT_OPEN وTRANSIT_FRAGMENT_CLOSE وTRANSIT_FRAGMENT_FADE، الرمز Animator بدلاً من Animation. (b/166155034)

إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة

  • تُعيد الآن الأجزاء بشكل صحيح حالة التركيز على العرض من قبل بدء الحركة مباشرةً. (Icc256)
  • إنّ المقاطع التي تتضمّن انتقالًا لعنصر مشترَك فقط تتمكّن الآن من إكمال تأثيراتها الخاصة بشكلٍ سليم، ما يعني أنّها تنتقل إلى حالتها النهائية (Iaebc7، b/166658128).
  • تتم الآن إزالة مشاهدات الأجزاء دائمًا من الحاوية قبل إزالتها. (Id5876)
  • يزيل الآن "مدير الحالة" الجديد بشكلٍ منتظم عرض القطعة التي تغادر الشاشة قبل إضافة عرض القطعة التي تظهر. (I41a6e)
  • يراعي الآن "مدير الحالة" الجديد التغييرات الصريحة في مستوى رؤية عرض المقتطف. وهذا يعني أنّه في حال ضبط عرض المقتطف الذي يدخل على INVISIBLE قبل بدء الحركة، سيظل غير مرئي. (b/164481490)
  • تمنح الأجزاء الآن الأولوية لـ Animators على Animations، ما يعني أنّ أي جزء يتضمّن كلاهما سينفّذ Animator فقط ويتجاهل Animation. (b/167579557)
  • لم يعُد "مدير الحالة" الجديد يتسبب في وميض الأجزاء عند استخدام الرسوم المتحرّكة للدخول. (b/163084315)

مشكلة معروفة

عند استخدام أداة إدارة الحالات الجديدة، إذا ضغطت على "رجوع" أثناء تطبيق تأثير خاص بدلاً من العودة إلى المقطع السابق، لن تتم إعادة إضافة المقطع القديم مطلقًا، ما يؤدي إلى ظهور شاشة فارغة. (b/167259187 وb/167092035 وb/168442830)

الإصدار 1.3.0-alpha08

19 آب (أغسطس) 2020

تم إصدار androidx.fragment:fragment:1.3.0-alpha08 وandroidx.fragment:fragment-ktx:1.3.0-alpha08 وandroidx.fragment:fragment-testing:1.3.0-alpha08. يحتوي الإصدار 1.3.0-alpha08 على هذه المراجعات.

مدير الحالة الجديد

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

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

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

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

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

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

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

  • يتم الآن احترام ActivityOptions التي تم تمريرها عند استخدام startIntentSenderForResult(). (b/162247961)

مشكلة معروفة

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

الإصدار 1.3.0-alpha07

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

تم إصدار androidx.fragment:fragment:1.3.0-alpha07 وandroidx.fragment:fragment-ktx:1.3.0-alpha07 وandroidx.fragment:fragment-testing:1.3.0-alpha07. يحتوي الإصدار 1.3.0-alpha07 على هذه المراجعات.

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

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

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

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

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

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

الإصدار 1.3.0-alpha06

10 حزيران (يونيو) 2020

تم إصدار androidx.fragment:fragment:1.3.0-alpha06 وandroidx.fragment:fragment-ktx:1.3.0-alpha06 وandroidx.fragment:fragment-testing:1.3.0-alpha06. يحتوي الإصدار 1.3.0-alpha06 على هذه المراجعات.

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

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

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

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

الإصدار 1.3.0-alpha05

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

تم إصدار androidx.fragment:fragment:1.3.0-alpha05 وandroidx.fragment:fragment-ktx:1.3.0-alpha05 وandroidx.fragment:fragment-testing:1.3.0-alpha05. يحتوي الإصدار 1.3.0-alpha05 على هذه المراجعات.

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

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

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

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

  • إنّ واجهات برمجة التطبيقات startActivityForResult() وstartIntentSenderForResult() وrequestPermissions التي تم إيقافها نهائيًا في السابق على Fragment تستخدم الآن ActivityResultRegistry داخليًا، وبالتالي تمّت إزالة القيود المفروضة على استخدام الأجزاء الأقل أهمية (أقل من 0xFFFF) لأرقام طلباتك عند استخدام واجهات برمجة التطبيقات هذه. (b/155518741)

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

  • تم توسيع نطاق المستندات حول عنصرَي الإنشاء Fragment(@LayoutRes int) وDialogFragment(@LayoutRes int) لتوضيح أنّه يجب استدعاؤهما من عنصر الإنشاء بدون وسيطة في الأنواع الفرعية عند استخدام FragmentFactory التلقائي. (b/153042497)

الإصدار 1.3.0-alpha04

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

تم إصدار androidx.fragment:fragment:1.3.0-alpha04 وandroidx.fragment:fragment-ktx:1.3.0-alpha04 وandroidx.fragment:fragment-testing:1.3.0-alpha04. يحتوي الإصدار 1.3.0-alpha04 على هذه المراجعات.

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

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

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

  • تم إيقاف واجهات برمجة التطبيقات الخاصة بالمقاطع المستهدَفة نهائيًا. لنقل البيانات بين الأجزاء، يجب استخدام واجهات برمجة التطبيقات الجديدة لنتائج الأجزاء بدلاً من ذلك. (b/149787344)
  • تمّ إيقاف واجهات برمجة التطبيقات startActivityForResult()/onActivityResult() وrequestPermissions()/onRequestPermissionsResult() في Fragment نهائيًا. يُرجى استخدام واجهات برمجة تطبيقات نتائج النشاط. (aosp/1290887)
  • تغيير جذري من النشاط 1.2.0-alpha04: تمت إعادة تسمية الطريقة prepareCall() إلى registerForActivityResult(). (aosp/1278717)

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

  • يتم الآن إيقاف getViewLifecycleOwner() للجزء قبل استدعاء onSaveInstanceState()، ما يعكس سلوك دورة حياة الجزء. (b/154645875)
  • يؤدي الآن استدعاء setMenuVisibility(false) في أحد الأجزاء إلى تغيير مستوى رؤية القوائم التي يوفّرها أجزاءه الفرعية بشكل صحيح. (b/153593580)
  • تم إصلاح illegalStateException عند إضافة جزء إلى التسلسل الهرمي لعرض DialogFragment باستخدام FragmentContainerView. (b/154366601)
  • لم يعُد يتم تعطُّل طريقة getDefaultViewModelProviderFactory() في الأجزاء عند استضافة الأجزاء خارج نشاط. (b/153762914)

الإصدار 1.3.0-alpha03

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

تم إصدار androidx.fragment:fragment:1.3.0-alpha03 وandroidx.fragment:fragment-ktx:1.3.0-alpha03 وandroidx.fragment:fragment-testing:1.3.0-alpha03. يحتوي الإصدار 1.3.0-alpha03 على هذه المراجعات.

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

  • أصبحت طرق prepareCall في Fragment هي final. (b/152439361)

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

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

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

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

الإصدار 1.3.0-alpha02

18 آذار (مارس) 2020

تم إصدار androidx.fragment:fragment:1.3.0-alpha02 وandroidx.fragment:fragment-ktx:1.3.0-alpha02 وandroidx.fragment:fragment-testing:1.3.0-alpha02. يحتوي الإصدار 1.3.0-alpha02 على هذه المراجعات.

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

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

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

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

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

  • من الفقرة 1.2.3: تم إصلاح خطأ في DialogFragment كان يتسبب في حدوث StackOverflowError عند استدعاء getLayoutInflater() من داخل onCreateDialog(). (b/117894767، aosp/1258664)
  • من القسم 1.2.3: تم تقليل نطاق قواعد ProGuard المضمّنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدَمة. (b/149665169)
  • من الفقرة 1.2.3: تم إصلاح النتائج الإيجابية الزائفة في عملية التحقّق من Lint في UseRequireInsteadOfGet عند استخدام اسم متغيّر محلي يحجب اسم سمة Kotlin. (b/149891163)
  • من الفقرة 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) التي تمت إضافتها في Lifecycle 2.3.0-alpha01 بحيث تعرض viewLifecycleOwner للّقطة كLifecycleOwner لأيّ مشاهدات تعرضها onCreateView(). (aosp/1182955)

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

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

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

  • تحافظ قواعد أداة ProGuard لمعالجة أجزاء التطبيق الآن بشكل صحيح على فئات Fragment المنشئ التلقائي التي يتم استخدامها فقط بدلاً من جميع نُسخ Fragment، ما يؤدي إلى إصلاح مشكلة تراجع الأداء التي تمّت في الجزء 1.2.1. (b/149665169
  • لم تعُد قواعد Lint في require___() التي تمت إضافتها في الفقرة 1.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()، ما يعكس سلوك دورة حياة الجزء. تم إصدار هذا القسم سابقًا في القسم 1.3.0-alpha04. (b/154645875)
  • يؤدي الآن استدعاء setMenuVisibility(false) في أحد الأجزاء إلى تغيير مستوى رؤية القوائم التي يوفّرها أجزاءه الفرعية بشكل صحيح. تم إصدار هذا القسم سابقًا في القسم 1.3.0-alpha04. (b/153593580)

الإصدار 1.2.4

الإصدار 1.2.4

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

تم إصدار androidx.fragment:fragment:1.2.4 وandroidx.fragment:fragment-ktx:1.2.4 وandroidx.fragment:fragment-testing:1.2.4. يحتوي الإصدار 1.2.4 على هذه المراجعات.

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

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

الإصدار 1.2.3

الإصدار 1.2.3

18 آذار (مارس) 2020

تم إصدار androidx.fragment:fragment:1.2.3 وandroidx.fragment:fragment-ktx:1.2.3 وandroidx.fragment:fragment-testing:1.2.3. يحتوي الإصدار 1.2.3 على عمليات الربط هذه.

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

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

الإصدار 1.2.2

الإصدار 1.2.2

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

تم إصدار androidx.fragment:fragment:1.2.2 وandroidx.fragment:fragment-ktx:1.2.2 وandroidx.fragment:fragment-testing:1.2.2. يحتوي الإصدار 1.2.2 على عمليات الربط هذه.

عمليات التحقّق الجديدة من Lint

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

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

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

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

  • نشكر "زاك سفيرز" على المساهمة في فحص 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 على عمليات الربط هذه.

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

  • إنّ الشظايا التي تتم إضافتها من خلال الطريقتَين add وreplace اللتين تأخذان مثيل Class (أو الإصدارات المعدَّلة من Kotlin) تحتفظ الآن بوظيفتها التلقائية لإنشاء العناصر من خلال أداة ProGuard. (b/148181315)
  • لم تعُد FragmentStatePagerAdapter وFragmentPagerAdapter تلتقطان الاستثناءات التي يُلقيها FragmentManager عند تشغيل finishUpdate(). (aosp/1208711)
  • تم إصلاح مشكلة عدم عمل FragmentManager.findFragment() مع الأجزاء التي تمت إضافتها من خلال علامة <fragment>. (b/147784323)
  • إنّ الأجزاء التي تم تضخيمها باستخدام علامة <fragment> تتلقّى الآن دائمًا طلبًا للانتقال إلى onInflate() قبل onCreate() عند عرضها في التنسيق. (aosp/1215856)
  • لم يعُد استدعاء toString() على مثيل FragmentManager يؤدي إلى طرح NullPointerException عندما يكون النشاط قد تم إغلاقه. (b/148189412)

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

الإصدار 1.2.0

الإصدار 1.2.0

22 كانون الثاني (يناير) 2020

تم إصدار androidx.fragment:fragment:1.2.0 وandroidx.fragment:fragment-ktx:1.2.0 وandroidx.fragment:fragment-testing:1.2.0. يحتوي الإصدار 1.2.0 على هذه المراجعات.

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

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

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

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

الإصدار 1.2.0-rc05

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

تم إصدار androidx.fragment:fragment:1.2.0-rc05 وandroidx.fragment:fragment-ktx:1.2.0-rc05 وandroidx.fragment:fragment-testing:1.2.0-rc05. يحتوي الإصدار 1.2.0-rc05 على هذه المراجعات.

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

  • تم إصلاح مشكلة تراجع في "القطعة" 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 سيؤثر أيضًا في FragmentManagers الفرعية. (aosp/1170095)

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

  • تعتمد الأجزاء الآن على Lifecycle 2.2.0-rc03 وLifecycle ViewModel SavedState 1.0.0-rc03 وActivity 1.1.0-rc03.

الإصدار 1.2.0-rc02

7 تشرين الثاني (نوفمبر) 2019

تم إصدار androidx.fragment:fragment:1.2.0-rc02 وandroidx.fragment:fragment-ktx:1.2.0-rc02 وandroidx.fragment:fragment-testing:1.2.0-rc02. يحتوي الإصدار 1.2.0-rc02 على هذه المراجعات.

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

  • عند استخدام لغة Kotlin، يستخدم LintFix الآن بنية الوصول إلى السمة viewLifecycleOwner في Kotlin بدلاً من getViewLifecycleOwner() عند استخدام getViewLifecycleOwner() لمراقبة LiveData من onCreateView() أو onViewCreated() أو onActivityCreated() (تم تقديمه في القسم 1.2.0-rc01). (aosp/1143821)

الإصدار 1.2.0-rc01

23 تشرين الأول (أكتوبر) 2019

تم إصدار androidx.fragment:fragment:1.2.0-rc01 وandroidx.fragment:fragment-ktx:1.2.0-rc01 وandroidx.fragment:fragment-testing:1.2.0-rc01. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.

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

  • تتيح علامة FragmentContainerView الآن استخدام السمة class بالإضافة إلى android:name، ما يعكس وظيفة علامة <fragment>. (b/142722242)
  • تمت إضافة عملية تحقّق جديدة من Lint تضمن استخدام getViewLifecycleOwner() عند رصد LiveData من onCreateView() أو onViewCreated() أو onActivityCreated(). (b/137122478)

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

  • تضمن الآن وظيفتا الاستدعاء onDismiss وonCancel في DialogFragment أنّ القيمة DialogInterface التي تم تمريرها إليهما ليست فارغة وأنّ getDialog() تُرجع قيمة غير فارغة عند تنفيذها. (b/141974033)
  • تضيف FragmentContainerView الآن المقتطف المحدّد بواسطة class أو android:name كجزء من التضخيم، ما يضمن عمل findFragmentById() وfindFragmentByTag() بعد ذلك مباشرةً. (b/142520327)
  • تم إصلاح IllegalStateException في FragmentContainerView بسبب حفظ الحالة. (b/142580713)
  • تم إصلاح UnsupportedOperationException في FragmentContainerView عند تشويش فئة FragmentContainerView. (b/142657034)

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

  • لا يحتفظ ProGuard تلقائيًا بالمقاطع التي تتم الإشارة إليها فقط من خلال سمة class أو android:name في FragmentContainerView، ما يتطلّب منك إضافة قاعدة الاحتفاظ يدويًا لكل فئة من فئات المقاطع. لقد أوقفنا قاعدة Lint التي تقترح الانتقال إلى FragmentContainerView إلى أن يتم حلّ هذه المشكلة من خلال aapt2. (b/142601969)

الإصدار 1.2.0-beta02

11 تشرين الأول (أكتوبر) 2019

تم إصدار androidx.fragment:fragment:1.2.0-beta02 وandroidx.fragment:fragment-ktx:1.2.0-beta02 وandroidx.fragment:fragment-testing:1.2.0-beta02. يحتوي الإصدار 1.2.0-beta02 على هذه المراجعات.

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

  • تم إصلاح مشكلة عدم تلقّي onInflate() في "القطعة" لسمات صحيحة من FragmentContainerView، ما أدّى إلى حدوث أخطاء في حالات مثل NavHostFragment. (b/142421837)

الإصدار 1.2.0-beta01

9 تشرين الأول (أكتوبر) 2019

تم إصدار androidx.fragment:fragment:1.2.0-beta01 وandroidx.fragment:fragment-ktx:1.2.0-beta01 وandroidx.fragment:fragment-testing:1.2.0-beta01. يحتوي الإصدار 1.2.0-beta01 على هذه المراجعات.

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

  • توفّر FragmentContainerView إمكانية إضافة مقتطف أولي مع إمكانية إضافية لسمات XML android:name وandroid:tag الاختيارية. على عكس علامة <fragment>، تستخدم علامة FragmentContainerView علامة FragmentTransaction عادية في الخلفية لإضافة المقتطف الأولي، ما يسمح بإجراء المزيد من عمليات FragmentTransaction على FragmentContainerView ويتيح استخدام ربط العناصر لتنسيق الصفحة. (b/139830628، b/141177981)
  • تحتوي المقتطفات الآن على تحذير Lint يقدّم حلًا سريعًا لاستبدال <fragment> بـ FragmentContainerView. (b/139830056)

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

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

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

  • لا تتلقّى سمات onInflate() في المقتطف سمات صحيحة من FragmentContainerView، ما يؤدي إلى حدوث أخطاء مثل NavHostFragment. (b/142421837)

الإصدار 1.2.0-alpha04

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

تم إصدار androidx.fragment:fragment:1.2.0-alpha04 وandroidx.fragment-ktx:example:1.2.0-alpha04 وandroidx.fragment:fragment-testing:1.2.0-alpha04. يحتوي الإصدار 1.2.0-alpha04 على هذه المراجعات.

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

  • تم إيقاف الطريقتَين getFragmentManager() وrequireFragmentManager() في Fragment نهائيًا واستبدالهما بطريقة getParentFragmentManager() واحدة، والتي تعرض FragmentManager غير الصفري الذي تمت إضافة المقتطف إليه (يمكنك استخدام 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)
  • تنتظر الأجزاء الآن اكتمال عمليات النقل (بالإضافة إلى الصور المتحركة التي تم إصلاحها في القسم 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) ثابتة لاسترداد المقتطف المُضمّن من عرض تم تضخيمه بواسطة مقتطف. تتوفّر أيضًا إضافة Kotlin في fragment-ktx. (aosp/1090757)
  • تمت إضافة وظائف تحميل زائدة جديدة لـ add() وreplace() في FragmentTransaction التي تأخذ Class<? extends Fragment> وBundle اختياريًا من الوسيطات. تستخدِم هذه الطرق FragmentFactory لإنشاء مثيل من المقتطف لإضافته. تمت أيضًا إضافة إضافة Kotlin التي تستخدم أنواعًا محدّدة (أي fragmentTransaction.replace<YourFragment>(R.id.container)) إلى fragment-ktx. (b/126124987)
  • تمت إضافة @MainThread تعليقات توضيحية إلى Fragment طلبات الاستدعاء المتعلّقة بمراحل النشاط. (b/127272564)
  • تم إيقاف واجهات برمجة التطبيقات ذات الصلة بعناوين التنقل في FragmentTransaction وFragmentManager.BackStackEntry نهائيًا. (b/138252944)
  • تم إيقاف طريقة setTransitionStyle نهائيًا في FragmentTransaction. (aosp/1011537)
  • لم تعُد العديد من الطرق في FragmentManager abstract. يظلّ FragmentManager نفسه abstract ويجب عدم إنشاؤه أو تمديده مباشرةً، ويجب الاستمرار في الحصول على نسخة حالية فقط من getSupportFragmentManager() أو getChildFragmentManager() أو غير ذلك.

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

  • من الجزء 1.1.0-rc04: تلغي الأجزاء الآن بشكل صحيح الانتقالات المؤجلة في الأجزاء التي تم عرضها. (b/138251858)
  • من الفقرة 1.1.0-rc03: تم إصلاح مشكلة تؤدي إلى عدم إلغاء المهل السابقة عند استدعاء postponeEnterTransition() مع مهلة أكثر من مرة. (b/137797118)
  • من الفقرة 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() بعد إرفاق عرض المقتطف وقبل استدعاء 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 التي تقع في نطاق النشاط.
  • الحد الأقصى لمراحل النشاط: يمكنك الآن ضبط الحد الأقصى لحالة مراحل النشاط لجزء عن طريق استدعاء setMaxLifecycle() في FragmentTransaction. يحلّ هذا الإجراء محلّ setUserVisibleHint() المتوقّفة نهائيًا. تتضمّن FragmentPagerAdapter وFragmentStatePagerAdapter طريقة وضع تصميم جديدة تتيح لك التبديل إلى السلوك الجديد.
  • طريقة وضع تصميم FragmentActivity: يمكن الآن للطبقات الفرعية من 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() للوحدة تتفوّق الآن بشكلٍ سليم على 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 من "الإعدادات المفضّلة". يُرجى الترقية إلى الإصدار 1.1.0-alpha05 من Preferences عند استخدام هذا الإصدار من Fragments.

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

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

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

  • تغيير جذري: تمت إزالة طريقة FragmentFactory instantiate التي تم إيقافها نهائيًا سابقًا والتي كانت تأخذ Bundle. aosp/953856
  • تغيير جذري: تمت إعادة تسمية الثابتَين RESUME_ONLY_CURRENT_FRAGMENT وUSE_SET_USER_VISIBLE_HINT في FragmentPagerAdapter وFragmentStatePagerAdapter ليصبحا BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT وBEHAVIOR_SET_USER_VISIBLE_HINT على التوالي. aosp/954782

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

  • لن يتم استئناف المقاطع التي تم تحديد مدة دورة حياتها من خلال setMaxLifecycle() قبل الوصول إلى حالتها النهائية. b/131557151
  • عند استخدام setMaxLifecycle(Lifecycle.State.CREATED)، سيتم بشكل صحيح إغلاق عرض "الأجزاء". aosp/954180

الإصدار 1.1.0-alpha07

25 نيسان (أبريل) 2019

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

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

  • يمكنك الآن ضبط الحد الأقصى لحالة رحلة المستخدِم لجزء معيّن من الصفحة عن طريق استدعاء 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 على الأقل بعد تغيير الإعدادات، ما يؤدي إلى عدم التخلص من نماذج ViewModel والأجزاء المحفوظة للطفل بشكل صحيح. (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 اسم المقتطف في الرسالة. (b/67759402)

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

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

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

  • تم إصلاح مشكلة تراجع في الإصدار 1.1.0-alpha05 كانت تؤدي إلى وميض المقتطف الوافد على الشاشة. (b/129405432)
  • تم إصلاح مشكلة فقدان جزء التنقّل الأساسي بعد سلسلة من عمليات popBackStack+replace+popBackStack. (b/124332597)
  • تم إصلاح مشكلة عند استخدام @ContentView أدوات الإنشاء في نشاطك عند استعادة حالة المقتطف. (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() مع ربط عنصر Fragment بـ FragmentManager مختلف إلى ظهور خطأ IllegalStateException بدلاً من تعذُّر التنفيذ بصمت (aosp/904301).

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

  • تم الآن وضع علامة @CallSuper (b/124120586) بشكل صحيح على onNewIntent في FragmentActivity
  • تم إصلاح مشكلة تؤدي إلى استدعاء 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 لاختبار قوائم الخيارات المستضافة في المقتطفات (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 لاسترداد نماذج ViewModel المرتبطة بالنشاط المُحتوي [b/119050253]
  • تم توسيع نطاق by viewModels Kotlin 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 استخدام دالة لامتناهية لإنشاء 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 للتحكّم في كيفية إنشاء نُسخ جديدة من العناصر.
  • تمت إضافة by viewModels() مثيل جديد لسمة Kotlin لاسترداد ViewModels من Fragment.
  • يتم الآن إلغاء أحداث الإدخال في انتظار المراجعة (مثل النقرات) في onStop()العنصر.

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

  • توسيع نطاق التعليقات التوضيحية المتعلّقة بإمكانية العدم على مستوى سطح Fragment API

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

  • حلّ مشكلة أدّت إلى تعذُّر عمليات المقاطع من داخل LiveData (b/77944637)

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

  • لا يمكن الوصول إلى أجزاء الاستهداف بعد إزالة جزء من FragmentManager.
  • يعتمد fragment-testing على androidx.test:core:1.0.0-beta01 بدلاً من androidx.test:core:1.0.0 الصحيح.