جزء

يمكنك تقسيم تطبيقك إلى شاشات متعددة ومستقلة تتم استضافتها ضمن "النشاط".
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
17 نيسان (أبريل) 2024 1.6.2 1.7.0-rc02 - 1.8.0-alpha02

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

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

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

رائع

dependencies {
    def fragment_version = "1.6.2"

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

Kotlin

dependencies {
    val fragment_version = "1.6.2"

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

لمزيد من المعلومات حول التبعيات، انظر إضافة تبعيات الإصدار.

ملاحظات

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

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

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

الإصدار 1.8

الإصدار 1.8.0-alpha02

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

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

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

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

الإصدار 1.8.0-alpha01

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

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

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

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

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

  • مستندات معدَّلة لواجهات برمجة تطبيقات OnBackStackChangedListener لتوضيح وقت استدعائها وطريقة استخدامها (I0bfd9)

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

الإصدار 1.7

الإصدار 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 إلى الانتقال إلى Animator أو AndroidX، تؤدي الأجزاء إلى عرض NullPointerException من handleOnBackProgressed إذا لم تتم إضافة FragmentManager.OnBackStackChangedListener عبر addOnBackStackChangedListener. (I7c835)

الإصدار 1.7.0-alpha09

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

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

عنصر لإنشاء أجزاء

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

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

الإصدار 1.7.0-alpha08

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

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

إخلاء مساحة

الإصدار 1.7.0-alpha07

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

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

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

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

الإصدار 1.7.0-alpha06

4 تشرين الأول (أكتوبر) 2023

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

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

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

الإصدار 1.7.0-alpha05

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

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

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

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

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

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

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

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

الإصدار 1.6.0-alpha04

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

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

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

  • تمت إضافة عنصر WrongNestedHierarchyViolation جديد من قِبل FragmentStrictMode يرصد الحالات التي يتم فيها دمج جزء فرعي في العرض الهرمي للعرض الرئيسي، ولكن لا تتم إضافته إلى 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 أن يستخدموا ميزة Supers في عمليات إلغاء onDismiss(). (I14798، b/238928865)

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

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

الإصدار 1.6.0-alpha02

24 آب (أغسطس) 2022

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

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

  • من الجزء 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 إلى تعطّل Lit. (b/237567009)

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

الإصدار 1.5.0

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

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

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

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

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

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

الإصدار 1.5.0-alpha05

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

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

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

  • تم إيقاف setHasOptionsMenu() الخاص بـ Fragment نهائيًا. لإدارة القوائم وعناصر القوائم الخاصة بها، يجب استخدام واجهات برمجة التطبيقات الجديدة للقوائم بدلاً من ذلك وفقًا لملاحظات إصدار 1.5.0-alpha04 للجزء. (I7b4b4، b/226438239)

الإصدار 1.5.0-alpha04

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

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

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

  • تم إيقاف واجهات برمجة التطبيقات Fragment 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 مخصّصة مع وظيفة by viewModels() الكسول، ستستخدم الآن defaultViewModelProviderFactory من هذا المالك في حال عدم توفير ViewModelProvider.Factory مخصّص بدلاً من استخدام إعدادات المصنع دائمًا. (I56170، b/214106513)

الإصدار 1.4.0

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

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

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

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

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • ينفِّذ FragmentScenario الآن السمة Closeable، ما يتيح لك استخدامها مع طريقة use من 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 بدون أي تغييرات من الإصدار 1.4.0 إلى الإصدار التجريبي 01. يحتوي الإصدار 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)
  • تم اختصار تحذير الوبر الطويل للغاية للسمة 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 من الوبر عند رصد استدعاء كلّ من detach() وattach() في Fragment نفسه في FragmentTransaction نفسها. وبما أنّ هذه العمليات التكميلية تُلغي بعضها بعضًا عند إجراء المعاملة نفسها، يجب تقسيمها إلى معاملات منفصلة لتنفيذ أي إجراء. (aosp/1832956، b/200867930)
  • تمت إضافة خطأ FragmentAddMenuProvider في الوبر لتصحيح استخدامات مراحل نشاط الأجزاء إلى دورة حياة عرض التجزئة عند استخدام واجهة برمجة التطبيقات addMenuProvider في MenuHost. (aosp/1830457، b/200326272)

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

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

الإصدار 1.4.0-alpha09

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

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

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

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

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

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

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

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

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

الإصدار 1.4.0-alpha04

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

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

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

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

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

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

الإصدار 1.4.0-alpha03

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

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

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

  • تم تعديل جميع فئات 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) ولن تؤدي العناصر التي تمت مشاركتها إلى عرض IndexOutOfBoundsExceptions. (I16484 وb/188679569 وb/188969304)
  • لن يتعطّل "FragmentManager" بعد الآن عند محاولة إخفاء جزء جارٍ إزالته. (I573dd، b/183634730)
  • لن تتعطّل أداة فحص الترميز OnCreateDialogIncorrectCallback بعد الآن عند تقييم متغيّر المستوى الأعلى. (0a9efa، b/189967522)

الإصدار 1.4.0-alpha02

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

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

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

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

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

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

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

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

الإصدار 1.4.0-alpha01

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

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

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

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

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

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

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

يتم توسيع نطاق هذا الإصدار ليشمل هذه الآليات من خلال توفير واجهتَي FragmentManager API جديدتَين، وهما 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)

الوضع المتشدد للجزء

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

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

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

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

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

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

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

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

  • شكرًا simonschiller على تنفيذ FragmentScenario Closeable. (#121، b/143774122)
  • نشكرك من قِبل simonschiller على إضافة واجهة برمجة التطبيقات FragmentStrictMode بالكامل لهذا الإصدار. #1231
  • نشكرك tatocaster على إضافة عملية تحقق UseGetLayoutInflater Lint. (#156، b/170781346)
  • نشكرك tatocaster على إضافة عملية تحقق DialogFragmentCallbacksDetector Lint. (#171، b/181780047)

الإصدار 1.3

الإصدار 1.3.6

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

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

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

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

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

الإصدار 1.3.5

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

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

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

  • تم إصلاح الانحدار في انتقالات العناصر المشتركة التي تم تقديمها في الجزء 1.3.4 من خلال aosp/1679887. تتعامل الأجزاء الآن بشكل صحيح مع مجموعات الانتقال (سواء تم ضبطها مباشرةً عبر transitionGroup="true" أو بشكل غير مباشر عبر transitionName أو background) ولن تؤدي العناصر التي تمت مشاركتها إلى عرض IndexOutOfBoundsExceptions. (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 أو طريقة Jetpack Compose لـ viewModel() داخل جزء عند استخدام Hilt. تستخدم حالات الاستخدام هذه الآن بشكل صحيح ViewModelProvider.Factory المقدمة من خلال الجزء الخاص بك إذا كانت تلغي getDefaultViewModelProviderFactory() (مثل ما يحدث في @AndroidEntryPoint من الأجزاء التي بها تعليقات توضيحية). في حال عدم إلغاء هذه الطريقة، يتم إنشاء SavedStateViewModelFactory يحفظ حالته ويستعيدها بجانب عرض "الجزء" على أنه الجهاز التلقائي للإعدادات الأصلية. (I5cbfa، b/186097368)
  • عند استخدام FragmentContainerView على واجهة برمجة التطبيقات 29، لن يتم إرسال العناصر الداخلية إلى أجل غير مسمى، ما يؤدي إلى إصلاح المشاكل في المثيلات BottomNavigationBar وFloatingActionButton. (I1bb78، b/186012452)
  • يمكنك الآن استرداد حزمة Parcelable من حزمة نتائج الجزء بعد انتهاء العملية. (I65932، b/187443158)
  • عند إجراء نقل عنصر مشترك في ViewGroup، في حال تم ضبط قيمة transitionGroup في ViewGroup على "خطأ"، سيتم نقلها الآن بشكلٍ صحيح. (I99675)

الإصدار 1.3.3

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

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

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

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

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

  • تم إصلاح انحدار تم تقديمه في الجزء 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)

التعديلات على المهام التابعة للتبعية

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

الإصدار 1.3.1

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

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

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

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

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

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

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

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

التعديلات على المهام التابعة للتبعية

الإصدار 1.3.0

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

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

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

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

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

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

  • 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 وSavedState 1.1.0 بحيث يؤدي إلى عرض "الجزء" ViewModelStoreOwner وSavedStateRegistryOwner وLifecycleOwner مرتبطين بدورة حياة للجزء عند استخدام View ضمنFragment

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

  • إيقاف setRetainInstance() نهائيًا: تم إيقاف الإجراء setRetainInstance() على "الشرائح" نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدَّدة للاحتفاظ بالحالة التي يمكن أن ترتبط بالأنشطة وأجزاءً ورسومات بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام جزء عادي غير محتفظ به والاحتفاظ بالحالة المحددة التي يريدون الاحتفاظ بها بشكل منفصل، مع تجنُّب مصدر مشترك لعمليات تسريب، مع الحفاظ على الخصائص المفيدة لعملية إنشاء واحدة وتدمير الحالة التي يتم الاحتفاظ بها (أي الدالة الإنشائية لـ ViewModel ومعاودة الاتصال onCleared() التي يتم تلقّيها).

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

الإصدار 1.3.0-rc02

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

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

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

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

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

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

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

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

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

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

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

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

الإصدار 1.3.0-beta01

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

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

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

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

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

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

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

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

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

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

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

مشكلة معروفة

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

الإصدار 1.3.0-alpha08

19 آب (أغسطس) 2020

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

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

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

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

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

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

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

  • يمكنك الآن طلب الرقم launch() على ActivityResultLauncher خلال مراحل نشاط onCreate() للجزء. (b/161464278)
  • يؤدي طلب الرقم registerForActivityResult() بعد onCreate() إلى عرض استثناء يشير إلى أنّ هذا الإجراء غير مسموح به بدلاً من تعذُّر عرض النتائج بدون تنبيه صوتي بعد تغيير الإعدادات. (b/162255449)
  • يستخدم "FragmentActivity" الآن واجهة برمجة التطبيقات OnContextAvailableListener التي تم تقديمها في النشاط 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 في شكل طريقة الإضافة المُعدَّلة من لغة Kotlin withFragment، والتي تتيح لك عرض قيمة. على وجه التحديد، يعيد هذا الزر الاستثناءات المرفوعة في المجموعة المحدّدة. (b/158697631)

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

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

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

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

الإصدار 1.3.0-alpha06

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

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

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

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

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

  • تمت الآن استعادة حالة العرض للأجزاء الرئيسية قبل استخدام الأجزاء الفرعية، ما يؤدي إلى إصلاح مشكلة في الترتيب المرئي بعد تغيير الإعدادات عندما يعرض DialogFragment آخر DialogFragment كجزء فرعي. (b/157195715)
  • تم إصلاح مشكلة عدم معالجة عملية فحص لينت في 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 الآن داخليًا، وبالتالي تمت إزالة القيود المفروضة على استخدام وحدات البت المنخفضة (أقل من 0xFFFF) لرموز الطلبات عند استخدام واجهات برمجة التطبيقات هذه.ActivityResultRegistry (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. يصلح هذا الأمر مع أجزاء التسلسل الهرمي (الأصلي/التابع) ومربّعات الحوار والأجزاء في التنقّل وتضمن إرسال النتائج إلى الجزء فقط عندما تكون قيمتها 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: تم تعديل قواعد Fragment ProGuard للسماح بتشويش الأجزاء التي تم الاحتفاظ بها. (b/151605338)
  • من الجزء 1.2.4: تم إيقاف قاعدة Lint في FragmentLiveDataObserve في فئات DialogFragment لأنّ مراحل نشاطها ومراحل نشاط العرض تتم مزامنتها دائمًا، ما يجعل استخدام إما this أو viewLifecycleOwner بأمان عند طلب observe. (b/151765086)

التغييرات المتعلّقة بالاعتمادية

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

الإصدار 1.3.0-alpha02

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

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

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

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

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

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

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

  • من الجزء 1.2.3: تم إصلاح خطأ في DialogFragment أدى إلى حدوث StackOverflowError عند استدعاء getLayoutInflater() من داخل onCreateDialog(). (b/117894767، aosp/1258664)
  • من الجزء 1.2.3: تم تقليل نطاق قواعد ProGuard المضمَّنة في Fragment لضمان إزالة فئات التجزئة غير المستخدَمة. (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 على هذه الالتزامات.

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

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

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

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

  • تحافظ قواعد Fragment 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 هذه الالتزامات.

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

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

الإصدار 1.2.3

الإصدار 1.2.3

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

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

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

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

الإصدار 1.2.2

الإصدار 1.2.2

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

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

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

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

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

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

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

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

الإصدار 1.2.1

الإصدار 1.2.1

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

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

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

  • بالنسبة إلى الأجزاء التي تمت إضافتها باستخدام طريقة 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.
  • Lifecycle ViewModel SaveState Integration: تم الآن ضبط "SavedStateViewModelFactory" على الإعدادات الأصلية التلقائية المستخدَمة عند استخدام by viewModels() أو by activityViewModels() أو الدالة الإنشائية ViewModelProvider أو ViewModelProviders.of() مع جزء.
  • عمليات تحقّق جديدة من Lint: تمت إضافة عملية تحقّق جديدة من Lint تضمن لك استخدام getViewLifecycleOwner() عند مراقبة LiveData من onCreateView() أو onViewCreated() أو onActivityCreated().
  • إيقاف getFragmentManager() نهائيًا: تم إيقاف الطريقتين getFragmentManager() وrequireFragmentManager() في "التجزئة" نهائيًا واستبدالهما بطريقة getParentFragmentManager() واحدة تعرض القيمة FragmentManager غير الفارغة التي تمت إضافة الجزء إليها (يمكنك استخدام isAdded() لتحديد ما إذا كان الاتصال آمنًا أم لا).
  • إيقاف FragmentManager.enableDebugLogging() نهائيًا: تم إيقاف طريقة FragmentManager.enableDebugLogging الثابتة نهائيًا. يلتزم FragmentManager الآن بسمة Log.isLoggable() للعلامة FragmentManager، ما يتيح لك تفعيل تسجيل الدخول DEBUG أو VERBOSE بدون إعادة تجميع تطبيقك.

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

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

الإصدار 1.2.0-rc05

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

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

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

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

الإصدار 1.2.0-rc04

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

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

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

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

الإصدار 1.2.0-rc03

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

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

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

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

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

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

التغييرات المتعلّقة بالتبعية

  • تعتمد الأجزاء الآن على مراحل النشاط 2.2.0-rc03 ونموذج حفظ تجربة المستخدم لمراحل النشاط 1.0.0-rc03 والنشاط 1.1.0-rc03.

الإصدار 1.2.0-rc02

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

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

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

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

الإصدار 1.2.0-rc01

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

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

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

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

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

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

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

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

الإصدار 1.2.0-beta02

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

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

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

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

الإصدار 1.2.0-beta01

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

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

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

  • تتيح FragmentContainerView إضافة جزء أولي مع إضافة سمات 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 1.2.0، ما يؤدي إلى حلّ مشكلة عدم التوافق مع أحدث إصدار من Espresso 3.2.0. (b/139100149)
  • تمت إزالة استخدام Log.w في FragmentManager. (aosp/1126468)

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

  • لا تتلقّى السمة onInflate() للجزء السمات المناسبة من FragmentContainerView، ما يؤدي إلى تعطُّل، مثل NavHostFragment. (b/142421837)

الإصدار 1.2.0-alpha04

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

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

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

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

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

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

الإصدار 1.2.0-alpha03

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

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

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

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

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

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

الإصدار 1.2.0-alpha02

7 آب (أغسطس) 2019

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha01

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

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

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

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

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

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

الإصدار 1.1.0

الإصدار 1.1.0

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

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

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

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

الإصدار 1.1.0-rc04

7 آب (أغسطس) 2019

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

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

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

الإصدار 1.1.0-rc03

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

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

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

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

الإصدار 1.1.0-rc02

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

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

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

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

الإصدار 1.1.0-rc01

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

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

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

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

الإصدار 1.1.0-beta01

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

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

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

  • تم الآن دمج استدعاءات androidx.lifecycle.Lifecycle (المرتبطة تحديدًا بـ STARTED وRESUMED وPAUSED وSTOPPED وDESTROYED) للأجزاء المتداخلة بشكل صحيح. (b/133497591)
  • أصبح الآن بإمكان OnBackPressedCallback مثيل مُسجَّل في onCreate() للجزء الأساسي منح الأولوية بشكل صحيح على الإصدار الفرعي 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 عند استخدام هذا الإصدار من الأجزاء.

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

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

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

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

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

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

الإصدار 1.1.0-alpha07

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

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

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha06

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha05

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

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha04

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

تم طرح androidx.fragment:fragment 1.1.0-alpha04 وandroidx.fragment:fragment-ktx 1.1.0-alpha04 وandroidx.fragment:fragment-testing 1.1.0-alpha04.

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

  • تمت إضافة إمكانية استخدام التعليق التوضيحي من الفئة @ContentView، ما يتيح لك الإشارة إلى تنسيق ملف XML الذي يجب تضخيمه كبديل لتجاوز onCreateView(). ننصح بعرض الأعمال ذات الصلة في onViewCreated(). (aosp/837619)
  • يعتمد fragment-testing الآن على الإصدار الثابت من androidx.test:core-ktx 1.1.0 (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)
  • تم استدعاء دالة onReject() في DialogFragment الآن قبل onDestroy(). (aosp/874133) (aosp/890734)

الإصدار 1.1.0-alpha03

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

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

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

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

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

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

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

الإصدار 1.1.0-alpha02

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

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

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

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

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

الإصدار 1.1.0-alpha01

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

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

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

  • فئة FragmentScript جديدة لاختبار الأجزاء بمعزل عن بعضها.
  • يمكنك الآن ضبط FragmentFactory على أي FragmentManager للتحكّم في كيفية إنشاء مثيل لمثيلات Fragment الجديدة.
  • تمت إضافة مفوَّض جديد لخاصية 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 الصحيحة.