الجزء

يمكنك تقسيم تطبيقك إلى شاشات متعددة مستقلة يتم استضافتها ضمن النشاط.
آخر تعديل الإصدار المستقر إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
30 تشرين الأول (أكتوبر) 2024 1.8.5 - - -

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

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

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

Groovy

dependencies {
    def fragment_version = "1.8.5"

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

Kotlin

dependencies {
    val fragment_version = "1.8.5"

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

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

ملاحظات

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

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

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

الإصدار 1.8

الإصدار 1.8.5

30 تشرين الأول (أكتوبر) 2024

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

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

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

الإصدار 1.8.4

2 أكتوبر 2024

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

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

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

الإصدار 1.8.3

4 سبتمبر 2024

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

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

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

الإصدار 1.8.2

24 تموز (يوليو) 2024

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

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

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

الإصدار 1.8.1

26 حزيران (يونيو) 2024

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

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

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

الإصدار 1.8.0

12 يونيو 2024

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

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

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

الإصدار 1.8.0-rc01

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

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

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

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

الإصدار 1.8.0-beta01

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

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

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

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

الإصدار 1.8.0-alpha02

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

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

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

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

الإصدار 1.8.0-alpha01

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

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

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

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

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

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

عنصر Compose Fragment

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

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

  class ExampleFragment : Fragment() {

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

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

الإصدار 1.7.0-rc02

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

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

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

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

الإصدار 1.7.0-rc01

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

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

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

الإصدار 1.7.0-beta01

20 مارس 2024

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

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

  • تمت كتابة FragmentHostCallback الآن بلغة Kotlin بحيث تتطابق قابلية القيم الفارغة للنوع العام من المضيف مع قابلية الإلغاء لنوع الإرجاع onGetHost(). (I40af5)

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

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

الإصدار 1.7.0-alpha10

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

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

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

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

الإصدار 1.7.0-alpha09

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

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

عنصر Compose Fragment

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

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

class ExampleFragment : Fragment() {

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

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

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

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

مشكلة معروفة

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

الإصدار 1.7.0-alpha08

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

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

التنظيف

الإصدار 1.7.0-alpha07

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

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

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

  • تم إصلاح NullPointerException ناتج عن ضبط انتقال عنصر مشترَك وتعذُّر ضبط انتقال الدخول/الخروج أيضًا. (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 على هذه المراجعات.

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

الإصدار 1.7.0-alpha05

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

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

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

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

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

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

الإصدار 1.7.0-alpha02

9 آب (أغسطس) 2023

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

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

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

الإصدار 1.7.0-alpha01

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

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

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

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

الإصدار 1.6

الإصدار 1.6.2

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

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

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

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

الإصدار 1.6.1

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

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

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

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

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

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

الإصدار 1.6.0

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

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

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

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

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

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

الإصدار 1.6.0-rc01

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

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

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

  • تم إصلاح مشكلة كانت تؤدي إلى إرسال ActivityResult باستخدام رمز الطلب غير الصحيح عند إجراء طلبات startActivityForResult متعددة بشكل متتالي. (If0b9d، b/249519359)
  • تم إصلاح مشكلة كانت تؤدي إلى إرسال طلبات استدعاء onBackStackChangeListener للعمليات التي لم تغيّر في الواقع الحزمة الخلفية إذا تم دمجها مع العمليات التي تغيّرها. (I0eb5c، b/279306628)

الإصدار 1.6.0-beta01

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

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

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

  • إنّ استخدام postponeEnterTransition مع انتهاء المهلة ثم استبدال الجزء المؤجَّل لم يعُد يؤدي إلى تسريب الجزء المؤجَّل. (I2ec7d، b/276375110)
  • لن تُرسِل الآن طلبات الاستدعاء الجديدة onBackStackChangeStarted وonBackStackChangeCommitted سوى مقتطف واحد في المرة الواحدة، حتى إذا كانت معاملات متعددة تحتوي على المقتطف نفسه. (Ic6b69)

الإصدار 1.6.0-alpha09

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

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

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

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

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

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

الإصدار 1.6.0-alpha08

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

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

تغيير السلوك

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

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

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

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

الإصدار 1.6.0-alpha07

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

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

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

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

الإصدار 1.6.0-alpha06

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

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

تغيير السلوك

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

الإصدار 1.6.0-alpha05

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

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

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

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

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

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

الإصدار 1.6.0-alpha04

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha03

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

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

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

  • وسيكون على الصفوف التي تشمل DialogFragment الآن الاتصال بـ Super ضمن عمليات إلغاء onDismiss(). (I14798، b/238928865)

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

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

الإصدار 1.6.0-alpha02

24 آب (أغسطس) 2022

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

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

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

الإصدار 1.6.0-alpha01

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

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

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

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

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

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

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

الإصدار 1.5

الإصدار 1.5.7

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

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

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

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

الإصدار 1.5.6

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

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

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

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

الإصدار 1.5.5

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

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

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

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

الإصدار 1.5.4

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

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

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

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

الإصدار 1.5.3

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

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

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

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

الإصدار 1.5.2

10 آب (أغسطس) 2022

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

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

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

الإصدار 1.5.1

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

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

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

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

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

الإصدار 1.5.0

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

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

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

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

تغييرات أخرى

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

الإصدار 1.5.0-rc01

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

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

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

  • يتم الآن حفظ الحالة المرتبطة بكلّ جزء فردي بشكل منفصل عن الحالة الداخلية لـ FragmentManager، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بالمعرّفات الفريدة المتوفّرة في سجلّ تصحيح أخطاء الأجزاء. (a153e0، b/207158202)

الإصدار 1.5.0-beta01

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

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

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

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

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

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

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

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

الإصدار 1.5.0-alpha03

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

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

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

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

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

الإصدار 1.5.0-alpha02

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

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

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

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

الإصدار 1.5.0-alpha01

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

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

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

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

  • من الفقرة 1.4.1: لم يعُد FragmentContainerView يُعرِض استثناءً لحالة غير قانونية عندما تكون أرقام تعريف الاطِّلاع التي تم إنشاؤها من ملف xml ذات قيم سلبية. (Ic185b، b/213086140)
  • من العنصر 1.4.1: عند استخدام دالة LAMBDA مخصّصة من النوع ownerProducer مع الدالة البطيئة by viewModels()، سيتم الآن استخدام defaultViewModelProviderFactory من هذا المالك في حال عدم توفير ViewModelProvider.Factory مخصّص بدلاً من استخدام مصنع العنصر دائمًا. (I56170، b/214106513)
  • تم إصلاح مشكلة تعطُّل عند الوصول إلى ViewModel للمرة الأولى من خلال طلب registerForActivityResult() للرجوع إلى Fragment. (Iea2b3)

الإصدار 1.4

الإصدار 1.4.1

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

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

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

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

الإصدار 1.4.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.4.0-rc01

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

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

الإصدار 1.4.0-beta01

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

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

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

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

الإصدار 1.4.0-alpha10

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

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

لينت

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

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

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

الإصدار 1.4.0-alpha09

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

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

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

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

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

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

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

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

الإصدار 1.4.0-alpha08

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

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

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

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

الإصدار 1.4.0-alpha07

18 آب (أغسطس) 2021

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

الإصدار 1.4.0-alpha06

4 آب (أغسطس) 2021

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

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

  • تم إصلاح مشكلة متعلقة بعدة حزم خلفية عند التبديل السريع بين حزم البيانات الخلفية التي كانت تظهر كـ IllegalStateException أثناء استعادة FragmentTransaction أو كنسخة ثانية من جزء. (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.4.0-alpha04

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

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

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

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

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

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

الإصدار 1.4.0-alpha03

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

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

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

  • تم تعديل جميع فئات Fragment StrictMode Violation لتشمل رسائل خطأ أكثر تفصيلاً توضّح تفاصيل الانتهاك. (b/187871638)
    • يحتوي FragmentTagUsageViolation الآن على رسالة خطأ أكثر تفصيلاً تحتوي على الحاوية الرئيسية التي كان من المفترض أن تتم إضافة المقتطف إليها. (Ic33a7)
    • يحتوي WrongFragmentContainerViolation الآن على رسالة خطأ أكثر تفصيلاً تتضمّن الحاوية التي كانت تتم إضافة القطعة إليها. (Ib55f8)
    • تحتوي فئات حالات الاستخدام الخاصة بTargetFragmentUsageViolation الآن على رسائل خطأ أكثر تفصيلاً لتضمين المقتطف الذي يتسبب في المخالفة وأي معلومات أخرى مضمّنة. (Icc6ac)
    • تحتوي الآن الفصول التي تمديدها من RetainInstanceUsageViolation على رسائل خطأ أكثر تفصيلاً تتضمّن المقتطف الذي يتسبب في المخالفة. (I6bd55)
    • تحتوي FragmentReuseViolation الآن على رسالة خطأ أكثر تفصيلًا تتضمن المعرّف السابق للجزء. (I28ce2)
    • تتضمّن SetUserVisibleHintViolation الآن رسالة خطأ أكثر تفصيلاً تتضمّن القيمة التي تم ضبط التلميح المريء للمستخدم عليها. (Ib2d5f)

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

  • تم إلغاء الحظر المفروض على استدعاء fitsSystemWindows على FragmentContainerView، ولم يعُد هذا الإجراء يؤدي إلى تعطُّل تطبيقك. (6b8ddd، b/190622202)

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

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

الإصدار 1.4.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 1.4.0-alpha01

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

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

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

  • توفّر 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)

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

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

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

الإصدار 1.3

الإصدار 1.3.6

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

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

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

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

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

الإصدار 1.3.5

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

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

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

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

الإصدار 1.3.4

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

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

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

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

الإصدار 1.3.3

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

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

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

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

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

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

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

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

الإصدار 1.3.2

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

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

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

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

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

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

الإصدار 1.3.1

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

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

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

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

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

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

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

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

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

الإصدار 1.3.0

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

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

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

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

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

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

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

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

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

الإصدار 1.3.0-rc02

27 كانون الثاني (يناير) 2021

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

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

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

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

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

الإصدار 1.3.0-rc01

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

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

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

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

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

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

الإصدار 1.3.0-beta02

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

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

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

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

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

  • يمكن الآن استخدام عناصر FragmentContainerView التي لا تضخّم جزءًا باستخدام السمة class أو android:name خارج FragmentActivity. (Id4397، b/172266337)
  • عند محاولة ضبط الحد الأقصى لدورة حياة أي جزء على DESTROYED، سيتم الآن عرض القيمة IllegalArgumentException (Ie7651، وb/170765622).
  • سيؤدي إعداد سيناريو جزء من الحالة باستخدام الحالة 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> بشكلٍ سليم، وستبدأ في الانتظار إلى أن تتم إضافة مشاهداتها إلى حاوية قبل الانتقال إلى الحالة STARTED (I02f4c).
  • إنّ الشظايا المرئية ثم setMaxLifecycle() إلى CREATED تعمل الآن بشكل صحيح على تشغيل تأثيرات الخروج. (b/165822335)
  • لم تعُد إزالة جزء منفصل لم تتم إضافته إلى الحزمة الخلفية تؤدي إلى تسرُّب الذاكرة. من إنتاج Nicklas Ansman Giertz (b/166489383)
  • ستتضمّن الأجزاء النشطة دائمًا FragmentManager غير فارغة، وسيتم دائمًا اعتبار الأجزاء التي تحتوي على FragmentManager غير فارغة. (aosp/1422346)
  • تستخدم الآن التأثيرات التلقائية للمقاطع، TRANSIT_FRAGMENT_OPEN وTRANSIT_FRAGMENT_CLOSE وTRANSIT_FRAGMENT_FADE، الرمز Animator بدلاً من Animation. (b/166155034)

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

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

مشكلة معروفة

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

الإصدار 1.3.0-alpha08

19 آب (أغسطس) 2020

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

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

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

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

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

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

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

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

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

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

مشكلة معروفة

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

الإصدار 1.3.0-alpha07

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

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

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

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

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

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

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

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

الإصدار 1.3.0-alpha06

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

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

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

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

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

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

الإصدار 1.3.0-alpha05

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

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

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

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

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

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

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

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

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

الإصدار 1.3.0-alpha04

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

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

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

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

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

  • تم إيقاف واجهات برمجة التطبيقات الخاصة بالمقاطع المستهدَفة نهائيًا. لتمرير البيانات بين الأجزاء، يجب استخدام واجهات برمجة تطبيقات 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)
  • من القسم 1.2.4: تم تعديل قواعد 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) التي تمت إضافتها في Lifecycle 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___() التي تمت إضافتها في الفقرة 1.2.2 إيجابية خاطئة في المتغيّرات المحلية التي تتشارك الاسم نفسه مع أسماء سمات Kotlin التي تم حجبها (أي view). (b/149891163)
  • لم يعُد FragmentContainerView يعرض خطأ UnsupportedOperationException عند استخدام ميزة معاينة التنسيق في "استوديو Android". (b/149707833)
  • تم إصلاح مشكلة عدم إعادة إنشاء الأجزاء المحتفظ بها والتي تمت إضافتها بعد حفظ الحالة باستمرار ثم إتلافها بعد كل تغيير في الإعدادات. (b/145832397)

الإصدار 1.2.5

الإصدار 1.2.5

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

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

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

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

الإصدار 1.2.4

الإصدار 1.2.4

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

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

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

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

الإصدار 1.2.3

الإصدار 1.2.3

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

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

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

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

الإصدار 1.2.2

الإصدار 1.2.2

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

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

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

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

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

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

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

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

الإصدار 1.2.1

الإصدار 1.2.1

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

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

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

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

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

الإصدار 1.2.0

الإصدار 1.2.0

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

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

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

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

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

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

الإصدار 1.2.0-rc05

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

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

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

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

الإصدار 1.2.0-rc04

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

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

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

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

الإصدار 1.2.0-rc03

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

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

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

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

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

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

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

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

الإصدار 1.2.0-rc02

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

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

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

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

الإصدار 1.2.0-rc01

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

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

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

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

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

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

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

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

الإصدار 1.2.0-beta02

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

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

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

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

الإصدار 1.2.0-beta01

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

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha04

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

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

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

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

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

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

الإصدار 1.2.0-alpha03

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

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

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

  • تغيّر اسم FragmentContainerView ليصبح الآن final. (b/140133091)

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

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

الإصدار 1.2.0-alpha02

7 آب (أغسطس) 2019

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha01

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

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

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

  • يُطلِق FragmentManager الآن requestApplyInsets() بعد إرفاق عرض المقتطف وقبل استدعاء onViewCreated() مباشرةً، ما يضمن أنّ عرضك يحتوي دائمًا على الأجزاء المضمّنة الصحيحة. (b/135945162)

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

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

الإصدار 1.1.0

الإصدار 1.1.0

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

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

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

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

الإصدار 1.1.0-rc04

7 آب (أغسطس) 2019

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

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

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

الإصدار 1.1.0-rc03

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

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

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

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

الإصدار 1.1.0-rc02

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

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

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

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

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta01

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

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

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

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

الإصدار 1.1.0-alpha09

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

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

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

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

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

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

الإصدار 1.1.0-alpha08

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

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha07

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

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

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha06

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha05

13 آذار (مارس) 2019

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

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

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

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

  • يؤدي الآن استدعاء remove() وhide() وshow() وdetach() وsetPrimaryNavigationFragment() مع عنصر Fragment مرتبط بـ FragmentManager مختلف إلى ظهور خطأ IllegalStateException بدلاً من تعذُّر التنفيذ بصمت (aosp/904301).

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

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

الإصدار 1.1.0-alpha04

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

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

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

  • تمت إضافة ميزة تتيح لك الإشارة إلى ملف XML للتنسيق الذي يجب توسيعه كبديل لإلغاء @ContentView.onCreateView() ننصحك بعرض العمل ذي الصلة في onViewCreated(). (aosp/837619)
  • يعتمد fragment-testing الآن على الإصدار 1.1.0 المستقر من androidx.test:core-ktx (b/121209673).
  • يمكنك الآن استخدام openActionBarOverflowOrOptionsMenu مع FragmentScenario لاختبار قوائم الخيارات المستضافة في المقتطفات (b/121126668).

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

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

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

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

الإصدار 1.1.0-alpha03

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha02

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

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

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

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

  • تم إصلاح الخطأ 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 الصحيح.