جزء
يمكنك تقسيم تطبيقك إلى شاشات متعددة مستقلة يتم استضافتها ضمن النشاط.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
26 يونيو 2024 1.8.1 - - -

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

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

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

رائع

dependencies {
    def fragment_version = "1.8.1"

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

Kotlin

dependencies {
    val fragment_version = "1.8.1"

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

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

ملاحظات

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

إنشاء عدد جديد

راجِع مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات.

الإصدار 1.8

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

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

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

التغييرات التي تطرأ على المستندات

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

تعديل بشأن التبعية

الإصدار 1.7

الإصدار 1.7.1

14 مايو 2024

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

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

  • لن يتم الآن تشغيل خوارزمية الرجوع القائمة على التوقّعات إلا للمعاملات التي تحتوي فيها جميع الأجزاء إما على Animator أو 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 لا
AndroidX Transition مع Transition 1.4.1 أو أقل R.transition لا
AndroidX Transition مع Transition 1.5.0 R.transition نعم

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

توفّر "FragmentManager.OnBackStackChangedListener()" الآن "onBackStackChangeProgressed()" و"onBackStackChangeCancelled()" لمعرفة مستوى التقدّم التنبئي ورصد الأحداث الملغاة على التوالي.

عنصر Compose لأجزاء

تم إنشاء عنصر 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 بحيث تتطابق قابلية القيم الفارغة للنوع العام من المضيف مع قابلية الإلغاء لنوع الإرجاع 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-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 Transition، ستطرح أداة Fragments NullPointerException من handleOnBackProgressed إذا لم تتم إضافة FragmentManager.OnBackStackChangedListener من قبل عبر addOnBackStackChangedListener. ستحلّ إضافة أداة استماع يدويًا حل التعطُّل. سيتوفر حل لذلك في الإصدار التالي من القسم "أجزاء".

الإصدار 1.7.0-alpha08

10 يناير 2024

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

إخلاء مساحة

الإصدار 1.7.0-alpha07

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

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

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

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

الإصدار 1.7.0-alpha06

‫4 أكتوبر 2023

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

تعديل بشأن التبعية

  • تم تعديل الأجزاء لتعتمد على واجهة برمجة تطبيقات animateToStart الجديدة التي تمت إضافتها في النقل 1.5.0-alpha04.

الإصدار 1.7.0-alpha05

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

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

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

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

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

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

تعديل بشأن التبعية

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

الإصدار 1.6.0

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

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

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

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

الإصدار 1.5.0-alpha05

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

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

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

الإصدار 1.5.0-alpha04

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

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

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

  • تم نهائيًا إيقاف واجهات برمجة تطبيقات Fragment التي توفّر قائمة على "ActionBar" لنشاطك، وذلك لأنّها تقرّب الجزء المرتبط بنشاطك، ولا يمكن اختبارها بمعزل عن غيرها. توفّر واجهتا برمجة التطبيقات MenuHost وMenuProvider اللتان تمت إضافتهما في النشاط 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)
  • عند استخدام دالة lambda المخصّصة ownerProducer مع الدالة الكسولة by viewModels()، ستستخدم الآن السمة defaultViewModelProviderFactory من هذا المالك في حال عدم توفير سمة ViewModelProvider.Factory مخصّصة بدلاً من استخدام مُصنّع الجزء دائمًا. (I56170، b/214106513)

الإصدار 1.4.0

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

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

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

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

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

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

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

عدة حزم إضافية

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

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

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

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

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

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

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

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

الإصدار 1.4.0-rc01

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

تم إصدار androidx.fragment:fragment:1.4.0-rc01 بدون أي تغييرات من الإصدار 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 على هذه عمليات التنفيذ.

Lent

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

آخر التعديلات على المستندات

  • تم توسيع رسالة إيقاف واجهات برمجة التطبيقات (API) التي تعالجها واجهات برمجة تطبيقات نتائج الأنشطة، وهي startActivityForResult وstartIntentSenderForResult وonActivityResult وrequestPermissions وonRequestPermissionsResult، بمزيد من التفاصيل. (cce80f)
  • تم توسيع رسالة إيقاف onActivityCreated() نهائيًا لكل من Fragment وDialogFragment وإضافة المزيد من التفاصيل. (224db4)

الإصدار 1.4.0-alpha09

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

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

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

  • يمكنك الآن الاتصال بالرقم clearBackStack(name) لمحو أي حالة تم حفظها سابقًا في saveBackStack(name). (I70cd7)

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

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

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

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

الإصدار 1.4.0-alpha08

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

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

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

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

الإصدار 1.4.0-alpha07

18 آب (أغسطس) 2021

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

الإصدار 1.4.0-alpha06

4 آب (أغسطس) 2021

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

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

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

الإصدار 1.4.0-alpha05

21 يوليو 2021

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

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

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

تعديل بشأن التبعية

الإصدار 1.4.0-alpha04

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

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

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

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

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

  • تم إصلاح مشكلة تعذُّر الاتصال بالطلب "saveBackStack()" كجزء من دعم عدة حِزم خلفية عند إتمامه في الوقت نفسه الذي يؤدي فيه تشغيل FragmentTransaction يستخدم replace(). (I73137)
  • تم إصلاح خطأ NullPointerException الذي كان يحدث بعد الاستعادة اليدوية لحزمة خلفية محفوظة تحتوي على معاملات متعددة عند استخدام واجهة برمجة تطبيقات restoreBackStack() لإتاحة إمكانية استخدام عدة حِزم خلفية. أدى ذلك أيضًا إلى إصلاح مشكلة عدم فحص setReorderingAllowed(true) لجميع المعاملات. (I8c593)
  • تم إصلاح مشكلة يواصل FragmentManager بشكل غير صحيح استعادة حالة الأجزاء المحفوظة سابقًا حتى بعد إزالة هذه الأجزاء من FragmentManager، ما أدى إلى زيادة الحالة المحفوظة بمرور الوقت. (I1fb8e)

الإصدار 1.4.0-alpha03

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

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

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

  • تم تعديل جميع فئات 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)
  • لن يتعطّل فحص أداة Lint OnCreateDialogIncorrectCallback بعد ذلك عند تقييم متغيّر من المستوى الأعلى. (0a9efa، b/189967522)

الإصدار 1.4.0-alpha02

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

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

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

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

  • تم توسيع فئة Violation في FragmentStrictMode لإضافة معلومات البنية استنادًا إلى كل انتهاك. ويتيح لك ذلك التحقّق بالضبط من سبب الانتهاك بالإضافة إلى الجزء المخالف (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

  • تُحذّر عملية فحص 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)

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

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

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

الإصدار 1.3

الإصدار 1.3.6

21 يوليو 2021

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

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

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

تعديل بشأن التبعية

الإصدار 1.3.5

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

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

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

  • تم إصلاح الانحدار في انتقالات العناصر المشتركة التي تم تقديمها في التجزئة 1.3.4 من قِبل aosp/1679887. تتعامل الأجزاء الآن مع مجموعات الانتقال بشكل صحيح (إما تم ضبطها مباشرةً عبر transitionGroup="true" أو بشكل غير مباشر عبر transitionName أو background) ولن تعرض العناصر المشتركة قيم IndexOutOfBoundsException بعد الآن. (I16484، b/188679569، b/188969304)

الإصدار 1.3.4

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

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

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

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

الإصدار 1.3.3

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

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

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

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

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

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

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

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

الإصدار 1.3.2

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

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

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

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

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

  • يعتمد التقسيم الآن على النشاط 1.2.2، ما يؤدي إلى إصلاح مشكلة في فحص أداة InvalidFragmentVersionForActivityResult الخاص بالنشاط عند استخدام الجزء 1.3.1 أو إصدار أحدث.
  • يعتمد الجزء الآن على رحلة المستخدِم 2.3.1.

الإصدار 1.3.1

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

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

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

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

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

  • الأجزاء المضخمة إلى نشاط RESUMED من قبل باستخدام FragmentContainerView تُعرض الآن بشكل صحيح بعد تغيير الإعدادات. (Ie14c8، b/180538371)
  • لم تعد هناك علامة } إضافية في نهاية الجزء toString() (I54705، b/177761088)
  • ترث الطرق التي تم إلغاؤها في FragmentActivity الآن الطريقة الأساسية 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، أدّى ذلك إلى حلّ العديد من المشاكل المتعلّقة بنقل الأحداث والصور المتحركة والانتقالات إلى مراحل مختلفة، وكيفية التعامل مع الأجزاء المؤجّلة.
  • دمج واجهة برمجة تطبيقات نتائج النشاط: تمت إضافة دعم لواجهة برمجة تطبيقات ActivityResultRegistry التي تم تقديمها في النشاط 1.2.0 للتعامل مع مسارات startActivityForResult()+onActivityResult() وكذلك تدفقات requestPermissions()+onRequestPermissionsResult() بدون إلغاء الطرق في الجزء، بالإضافة إلى توفير عناصر الجذب لاختبار هذه التدفقات. يمكنك الاطّلاع على النسخة المعدّلة الحصول على نتيجة من نشاط.

    • يساعد هذا الإصدار في إصلاح عدد من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع Activity Result API من العمل على الإصدارات السابقة من FragmentActivity. يجب الترقية إلى الإصدار 1.3.0 من Fragment لاستخدام واجهات برمجة تطبيقات نتائج الأنشطة في FragmentActivity أو AppCompatActivity.
  • Fragment Result API: تمت إضافة دعم لتمرير النتائج بين جزأين عبر واجهات برمجة تطبيقات جديدة على FragmentManager. وتعمل هذه الطريقة مع أجزاء التدرج الهرمي (الأصلي/التابع) وDialogFragments والأجزاء في التنقل، كما تضمن عدم إرسال النتائج إلى الجزء إلا إذا كانت على الأقل 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 في شكل طريقة الإضافة withFragment المتوافقة مع لغة Kotlin، والتي تتيح لك عرض قيمة. ومن الملاحظ أنه يعيد الاستثناءات التي تم رفعها في الجزء المحدّد.
  • دعم ViewTree: يتوافق "Fragment" الآن مع واجهات برمجة التطبيقات ViewTreeLifecycleOwner.get(View) وViewTreeViewModelStoreOwner.get(View) وViewTreeSavedStateRegistryOwner التي تمت إضافتها في رحلة المستخدِم 2.3.0 وحالة الحفظ 1.1.0 ما يؤدي إلى عرض الجزء ViewModelStoreOwner وSavedStateRegistryOwner وLifecycleOwner المرتبط بـ دورة حياة العرض عند استخدام {18./} ضمن {18./}FragmentView

  • تغييرات في الصور المتحركة لـ TRANSIT_: تستخدم الآن التأثيرات التلقائية للأجزاء TRANSIT_FRAGMENT_OPEN وTRANSIT_FRAGMENT_CLOSE وTRANSIT_FRAGMENT_FADE Animator بدلاً من Animation. أصبحت الموارد المستخدمة لإنشاء برامج الصور المتحركة هذه خاصة الآن.

  • إيقاف setRetainInstance() نهائيًا: تم إيقاف طريقة setRetainInstance() المتعلّقة بأجزاء التجزئة. مع إطلاق ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات خاصة للاحتفاظ بالحالة يمكن ربطها بالأنشطة وأجزاء من العنصر والرسوم البيانية للتنقُّل. ويتيح ذلك للمطوّرين استخدام جزء عادي من البيانات لا يتم الاحتفاظ به والاحتفاظ بالحالة المحدّدة التي يريدون الاحتفاظ بها بشكل منفصل، وتجنُّب مصدر شائع لتسرّب البيانات مع الحفاظ على السمات المفيدة لعملية إنشاء واحدة وتدمير الحالة التي تم الاحتفاظ بها (وتحديداً إنشاء 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،
  • تظهر الآن الأجزاء التي تستخدم Animator بالترتيب الصحيح عند استخدام FragmentContainerView. (Id9aa3، b/176089197)

الإصدار 1.3.0-rc01

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

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

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

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

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

  • تم إصلاح تسرُّب العناصر والعناصر المرئية عند إضافة جزء يتضمن علامة Animation إلى FragmentContainerView ثم إيقاف تلك الإضافة بعملية تشغيل سريعة. (I952d8)
  • تم إصلاح مشكلة بقاء عرض الجزء في العرض الهرمي للعرض الهرمي في حال استبداله أثناء استخدام طريقتَي onCreate() أو onViewCreated(). (I8a7d5)
  • تمت الآن إعادة التركيز بشكل صحيح إلى طرق عرض الجذر "جزء" عند استئنافها. (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 مع الحفاظ على التوافق مع المصدر والبرامج الثنائية من خلال استخدام الواجهات الوظيفية في الإصدار 1.4 من Kotlin لنظام التشغيل FragmentAction. (I19d31)

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

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

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

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

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

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

الإصدار 1.3.0-beta01

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

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

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

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

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

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

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

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

  • ستنتظر الآن الأجزاء التي تم تضخيمها باستخدام العلامة <fragment> بشكلٍ صحيح إلى أن تتم إضافة طرق العرض الخاصة بها إلى حاوية قبل نقلها إلى البدء (I02f4c).
  • يتم الآن تشغيل تأثيرات الخروج بشكل صحيح على الأجزاء المرئية ومن setMaxLifecycle() إلى CREATED. (b/165822335)
  • لم تعد إزالة الجزء المنفصل الذي لم تتم إضافته إلى الحزمة الخلفية تتسبب في تسرب للذاكرة. مقدّم من نيكلاس أنسمان جيرتز (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 والإصدار Transition من AndroidX، يتم الآن الإشارة إلى الجزء الذي يتضمّن عملية النقل غير الصالحة. (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 الآن إلى محو مراقب دورة الحياة بشكل صحيح. (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)
  • تم إصلاح المشكلة المتمثلة في عدم معالجة فحص Lint UseRequireInsteadOfGet لسلاسل الاستخدامات المتسلسلة لعاملَي التشغيل ?. و!! بشكلٍ صحيح. (b/157677616)

الإصدار 1.3.0-alpha05

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

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

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

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

  • أصبحت واجهات برمجة التطبيقات setFragmentResult() وsetFragmentResultListener() تستخدم الآن قيم Bundle غير فارغة وFragmentResultListener، على التوالي. لمحو نتيجة أو أداة استماع سبق أن تم ضبطها، استخدِم الطريقتَين clearFragmentResult() وclearFragmentResultListener() الجديدتَين. (b/155416778)
  • يتم الآن تصنيف إضافات setFragmentResultListener() Kotlin التي تستخدم lambda على أنّها inline. (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 والأجزاء في التنقل، كما تضمن عدم إرسال النتائج إلى الجزء إلا إذا كانت على الأقل STARTED. (b/149787344)

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

  • تم إيقاف واجهات برمجة التطبيقات للجزء المستهدف. لتمرير البيانات بين الأجزاء، يجب استخدام واجهات برمجة تطبيقات Fragment Result API الجديدة بدلاً من ذلك. (b/149787344)
  • تم إيقاف واجهتَي برمجة التطبيقات startActivityForResult()/onActivityResult() وrequestPermissions()/onRequestPermissionsResult() على الجزء. يُرجى استخدام واجهات برمجة تطبيقات نتائج الأنشطة. (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)
  • من Fragment 1.2.4: تم تعديل قواعد Fragment ProGuard للسماح بإخفاء الأجزاء التي تم الاحتفاظ بها. (b/151605338)
  • من التجزئة 1.2.4: تم إيقاف قاعدة أداة Lint FragmentLiveDataObserve في صفوف DialogFragment حيث تتم مزامنة مراحل نشاطها ومراحل نشاطها دائمًا، ما يجعل استخدام this أو viewLifecycleOwner آمنًا عند الاتصال بـ observe. (b/151765086)

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

  • تعتمد الأجزاء على النشاط 1.2.0-alpha03، الذي تم إدخال تحسينات ملحوظة على واجهة برمجة تطبيقات نتائج النشاط التي تم تقديمها في النشاط 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)
  • من Fragment 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) التي تمت إضافتها في رحلة المستخدم 2.3.0-alpha01، ما يؤدي إلى عرض الجزء viewLifecycleOwner الخاص بالجزء LifecycleOwner لأي ملف شخصي يعرضه onCreateView(). (aosp/1182955)

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

  • تم إيقاف طريقة setRetainInstance() بشأن الأجزاء نهائيًا. مع إطلاق ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات خاصة للاحتفاظ بالحالة يمكن ربطها بالأنشطة وأجزاء من العنصر والرسوم البيانية للتنقُّل. ويتيح ذلك للمطوّرين استخدام جزء عادي من البيانات لا يتم الاحتفاظ به والاحتفاظ بالحالة المحدّدة التي يريدون الاحتفاظ بها بشكل منفصل، وتجنُّب مصدر شائع لتسرّب البيانات مع الحفاظ على السمات المفيدة لعملية إنشاء واحدة وتدمير الحالة التي تم الاحتفاظ بها (وتحديداً إنشاء 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___() المُضافة في Fragment 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 على عمليات الالتزام هذه.

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

  • تم تعديل قواعد Fragment 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___()!! لجميع واجهات برمجة تطبيقات Fragment التي تتضمّن واجهة برمجة تطبيقات مكافئة لكلّ من get وrequire. (aosp/1202883)

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

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

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

  • نشكر "زاك سويس" على المساهمة في عمليات التحقّق من أداة Lint في require___() بالنيابة عن Slack. (aosp/1202883)

الإصدار 1.2.1

الإصدار 1.2.1

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

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

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

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

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

الإصدار 1.2.0

الإصدار 1.2.0

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

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

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

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

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

  • تعتمد الأجزاء الآن على دورة الحياة 2.2.0-rc03 وLifecycle View Model Version1.0.0-rc03 والنشاط 1.1.0-rc03.

الإصدار 1.2.0-rc02

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

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

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

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

الإصدار 1.2.0-rc01

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

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

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

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

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

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

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

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

الإصدار 1.2.0-beta02

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

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

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

  • تم إصلاح مشكلة عدم حصول onInflate() للجزء على السمات المناسبة من FragmentContainerView، ما أدى إلى أعطال مثل NavHostFragment. (b/142421837)

الإصدار 1.2.0-beta01

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

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

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

  • يتيح FragmentContainerView إضافة جزء أوّلي مع دعم إضافي لسمتَي android:name وandroid:tag الاختياريتين بتنسيق XML. على عكس علامة <fragment>، يستخدم FragmentContainerView علامة FragmentTransaction عادية ضمن الخيارات المتقدمة لإضافة الجزء الأولي، ما يسمح بإجراء المزيد من عمليات FragmentTransaction على FragmentContainerView وتفعيل ربط العرض للتنسيق. (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 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 الفئة FragmentScenario لاختبار أي جزء بمعزل عن باقي الأجزاء. للحصول على مزيد من التفاصيل، يمكنك الاطّلاع على مستندات اختبار أجزاء تطبيقك.
  • Fragmentfactor: يمكنك الآن ضبط FragmentFactory على FragmentManager لإدارة إنشاء مثيلات الأجزاء، ما يؤدي إلى إزالة الشرط الصارم الذي يقضي باستخدام دالة إنشاء بدون وسيطات.
  • مفوَّضو مواقع Kotlin لنماذج العرض: يحتوي العنصر fragment-ktx الآن على مفوَّضَين لموقع إلكتروني بلغة Kotlin: by viewModels() للوصول إلى نماذج ViewModels المرتبطة بالجزء الفردي وby activityViewModels() للوصول إلى ViewModels المحدد ضمن النشاط.
  • الحد الأقصى لمراحل النشاط: يمكنك الآن ضبط الحد الأقصى لحالة "رحلة النشاط" لجزء من خلال طلب الرقم setMaxLifecycle() في FragmentTransaction. يحل ذلك محل setUserVisibleHint() المتوقّفة الآن. تضم FragmentPagerAdapter وFragmentStatePagerAdapter دالة إنشاء جديدة تسمح لك بالتبديل إلى السلوك الجديد.
  • دالة إنشاء FrgmentActivity LayoutId: يمكن الآن للفئات الفرعية لـ FragmentActivity استدعاء الدالة الإنشائية على FragmentActivity التي تحصل على معرّف R.layout، مع الإشارة إلى التنسيق الذي يجب ضبطه كعرض المحتوى كبديل لاستدعاء setContentView() في onCreate(). ولا يغير هذا من متطلبات أن تحتوي فئتك الفرعية على دالة إنشائية بدون وسيطات.
  • دالة إنشاء LayoutId للكسر: يمكن الآن للفئات الفرعية لـ Fragment استدعاء الدالة الإنشائية على Fragment التي تحصل على معرّف R.layout، للإشارة إلى التنسيق الذي يجب استخدامه لهذا الجزء كبديل لإلغاء onCreateView(). يمكن ضبط التنسيق المضخَّم في onViewCreated().
  • تأجيل مع وضع مهلة: تمت إضافة حمل زائد جديد لـ postponeEnterTransition()، ما يستغرق وقتًا طويلاً.

الإصدار 1.1.0-rc04

7 آب (أغسطس) 2019

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

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

  • تم فرقعة الأجزاء التي تلغي عمليات الانتقال المؤجلة على الأجزاء الآن بشكل صحيح. (b/138251858)

الإصدار 1.1.0-rc03

19 تموز (يوليو) 2019

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

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

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

الإصدار 1.1.0-rc02

17 تموز (يوليو) 2019

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

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

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

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta01

5 حزيران (يونيو) 2019

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

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

  • تم الآن دمج عمليات استدعاء androidx.lifecycle.Lifecycle (المرتبطة تحديدًا بـ STARTED وRESUMED وPAUSED وSTOPPED وDESTROYED) للأجزاء المتداخلة بشكل صحيح. (b/133497591)
  • تحظى الآن OnBackPressedCallback مثيلات مسجَّلة في onCreate() لـ Fragment بالأولوية على حساب FragmentManager الفرعي. (b/133175997)
  • ولم تعد الأجزاء الفرعية متحركة عند استبدال الجزء الأصلي. (b/121017790)
  • يتم الآن تجاهل الصور المتحركة للأجزاء والانتقالات عند استخدام animateLayoutChanges="true"، ما يؤدي إلى إصلاح المشكلة المتمثلة في عدم إتلاف "الأجزاء" بشكل صحيح. (b/116257087)

الإصدار 1.1.0-alpha09

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

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

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

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

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

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

الإصدار 1.1.0-alpha08

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

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

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

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

  • تمت إضافة حمل زائد جديد لـ postponeEnterTransition() يأخذ مهلة، وبعد ذلك ستستدعي الجزء الخاص بالجزء startPostponedEnterTransition() b/120803208 تلقائيًا.

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

  • تغيير قد يعطل: تمت إزالة طريقة instantiate FragmentFactory المتوقّفة نهائيًا والمستخدمة 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 على الأقل بعد تغيير الإعدادات، ما تسبّب في عدم التخلص بشكل صحيح من ViewModels والأجزاء الثانوية التي تم الاحتفاظ بها. (b/129593351)
  • تم إصلاح عطل في restoreSaveState ناتج عن إلغاء مزامنة الأجزاء التي تم الاحتفاظ بها بعد حفظ حالة المثيل. (b/130433793) (aosp/947824)
  • تم إصلاح المشاكل التي كان يتم فيها عدم استدعاء السمة OnBackPressedCallback المُضافة مع دورة حياة أجزاء إذا كانت FragmentManager تحتوي على حزمة خلفية. يمكنك الاطّلاع على androidx.activity 1.0.0-alpha07 لمعرفة مزيد من التفاصيل. (aosp/948209)
  • لم تعُد الأجزاء تفرض LAYER_TYPE_HARDWARE على الصور المتحركة. إذا كنت بحاجة إلى رسم متحرك لطبقة الأجهزة، يُرجى ضبطه كجزء من الصور المتحركة. (b/129486478)

الإصدار 1.1.0-alpha06

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

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

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

  • في الاستثناءات التي طرحتها FragmentManager، أصبحت الآن اسم الجزء في الرسالة. (b/67759402)

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

  • يحتوي Fragment وFragmentActivity الآن على دالة إنشاء ثانية تستخدم @LayoutRes int، وتحل محل السلوك السابق لإضافة تعليقات توضيحية للفئة بـ @ContentView. تعمل هذه الطريقة في وحدات المكتبة والتطبيقات. (b/128352521)
  • تم الآن وضع علامة @CallSuper بشكل صحيح على onActivityResult() لـ FragmentActivity. (b/127971684)
  • تم نهائيًا إيقاف طريقة instantiate الخاصة بـ FragmentFavorite، التي تستخدم حزمة وسيطة، ويجب أن تستخدم التطبيقات حِمل instantiate الزائد الجديد الذي لا يقبل حزمة. (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() باستخدام جزء من جزء مرتبط بـ FragmentManager مختلف، سيتم الآن طرح IllegalStateException بدلاً من الإخفاق بشكل غير ملحوظ (aosp/904301).

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

  • تم الآن وضع علامة onNewIntent على FragmentActivity بشكل صحيح باستخدام @CallSuper (b/124120586)
  • تم إصلاح مشكلة إمكانية استدعاء جهاز "onDismiss()" الخاص بـ "DialogFragment" مرّتَين عند استخدام "getDialog().dismiss()" أو "getDialog().cancel()" (b/126563750).

الإصدار 1.1.0-alpha04

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

تم طرح الإصدارات androidx.fragment:fragment 1.1.0-alpha04 وandroidx.fragment:fragment-ktx 1.1.0-alpha04 وandroidx.fragment:fragment-testing 1.1.0-alpha04.

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

  • تمت إضافة إمكانية استخدام التعليق التوضيحي من فئة @ContentView للإشارة إلى التنسيق الذي يجب تضخيمه بتنسيق XML كبديل لإلغاء onCreateView(). يُنصح بالاطّلاع على الأعمال ذات الصلة في "onViewCreated()". (aosp/837619)
  • تعتمد fragment-testing الآن على الإصدار 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)
  • تم حل مشكلة التوافق الثنائي مع الإصدارات السابقة للأجزاء. (aosp/887877) (aosp/889834)

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

  • يتم محو أجزاء الاستهداف بشكلٍ صحيح عند ضبط null إلى setTargetFragment(). (aosp/849969)
  • تم إصلاح مشكلة كانت غير متاحة أحيانًا للأجزاء المستهدفة في onDestroy() أو بعده. (b/122312935)
  • يتم الآن استدعاء onResume() في DialogFragment قبل onDestroy(). (aosp/874133) (aosp/890734)

الإصدار 1.1.0-alpha03

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

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

  • ينفذ جزء التجزئة الآن BundleSavedStateRegistryOwner ويعتمد على مكتبة SaveState التي تم إصدارها حديثًا [aosp/824380]
  • تمّت إضافة تفويض خاصية Kotlin by activityViewModels لاسترداد ViewModels المرتبط بالنشاط الذي يتضمّن النشاط [b/119050253].
  • تم توسيع تفويض السمة by viewModels Kotlin لاستخدام طريقة lambda الاختيارية للحصول على ViewModelStoreOwner، ما يسمح لك بالانتقال إلى الجزء الرئيسي أو سمة 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].

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

  • تم إصلاح UnknownStateException: فشل حفظ الحالة b/120814739
  • ستتلقى الآن الأجزاء التي تتم استعادتها من حالة المثيل المحفوظة قيمة Bundle غير فارغة [b/119794496]
  • لم تعد الأجزاء التي تمت إزالتها تستخدم عنصر Lifecycle إذا تمت إعادة إضافتها [b/118880674]

الإصدار 1.1.0-alpha02

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

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

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

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

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

الإصدار 1.1.0-alpha01

5 تشرين الثاني (نوفمبر) 2018

هذا هو الإصدار الأول من عنصر fragment-testing وFragmentScenario الذي تم إنشاؤه فوق واجهات برمجة تطبيقات androidx.test:core. راجِع مستندات اختبار التجزئة للحصول على مزيد من التفاصيل.

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

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

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

  • تم توسيع التعليقات التوضيحية للتوافق مع القيم الفارغة بشكل كبير عبر واجهة Fragment API.

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

  • إصلاح المشكلة التي تسبَّبت في تعذُّر إجراء عمليات التجزئة من LiveData (b/77944637)

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

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