جزء
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
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 من خلال اسم فئة التقسيم. كما أنه يعالج تلقائيًا حفظ حالة الجزء واستعادتها. يمكن استخدام هذا كبديل مباشر لـ AndroidViewboundingComposable
.(b/312895363، Icf841)
التغييرات في المستندات
- مستندات معدَّلة لواجهات برمجة تطبيقات
OnBackStackChangedListener
لتوضيح وقت استدعائها وطريقة استخدامها (I0bfd9)
تعديل التبعية
- يعتمد الجزء الآن على أداة تثبيت الملف الشخصي 1.3.1.
الإصدار 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.3.1.
الإصدار 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.5.0-alpha06
. (I04356)
الإصدار 1.7.0-alpha07
29 تشرين الثاني (نوفمبر) 2023
تم طرح "androidx.fragment:fragment-*:1.7.0-alpha07
". يتضمّن الإصدار 1.7.0-alpha07 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح
NullPointerException
الناتج عن ضبط انتقال عنصر مشترك وتعذُّر ضبط الانتقال/الخروج أيضًا. (I8472b) - من الجزء
1.6.2
: عند تضخيم جزءFragmentContainerView
، يمكن الآن الوصول إلى حالاته مثلFragmentManager
وHost و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)
التعديلات على المهام التابعة للتبعية
- يعتمد الجزء الآن على دورة الحياة
2.6.1
. (586fe7) - يعتمد الجزء الآن على SavedState
1.2.1
. (078e4e) - يعتمد الجزء الآن على ProfileInstaller
1.3.0
. (3fc05b)
الإصدار 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
: تعتمد مكتبة الأجزاء الآن على دورة الحياة2.5.1
. (Id204c) - من الجزء
1.5.1
: تعتمد مكتبة الأجزاء الآن على النشاط1.5.1
. (I10f07)
الإصدار 1.5
الإصدار 1.5.7
19 نيسان (أبريل) 2023
تم طرح androidx.fragment:fragment:1.5.7
وandroidx.fragment:fragment-ktx:1.5.7
وandroidx.fragment:fragment-testing:1.5.7
. يتضمّن الإصدار 1.5.7 هذه الالتزامات.
إصلاح الأخطاء
- إنّ استخدام
postponeEnterTransition
مع إضافة مهلة ثم استبدال الجزء المؤجَّل لا يؤدي إلى تسريب الجزء المؤجَّل. (I2ec7d، b/276375110)
الإصدار 1.5.6
22 آذار (مارس) 2023
تم طرح androidx.fragment:fragment:1.5.6
وandroidx.fragment:fragment-ktx:1.5.6
وandroidx.fragment:fragment-testing:1.5.6
. يتضمّن الإصدار 1.5.6 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في إزالة أي جزء، سواء كان أضاف عناصر القائمة أم لا، ستؤدي إلى إلغاء صلاحية قائمة النشاط. (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)
تعديل التبعية
- تعتمد مكتبة الأجزاء الآن على دورة الحياة
2.5.1
. (Id204c) - تعتمد مكتبة الأجزاء الآن على النشاط
1.5.1
. (I10f07)
الإصدار 1.5.0
29 حزيران (يونيو) 2022
تم طرح androidx.fragment:fragment:1.5.0
وandroidx.fragment:fragment-ktx:1.5.0
وandroidx.fragment:fragment-testing:1.5.0
. يتضمّن الإصدار 1.5.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.4.0
- CreationExtras 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)
التغييرات في السلوك
- يستخدم
DialogFragment
الآنComponentDialog
كمربع الحوار التلقائي الذي يعرضهonCreateDialog()
. (If3784، b/217618170)
الإصدار 1.5.0-alpha02
9 شباط (فبراير) 2022
تم طرح androidx.fragment:fragment:1.5.0-alpha02
وandroidx.fragment:fragment-ktx:1.5.0-alpha02
وandroidx.fragment:fragment-testing:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- تتيح ميزة
FragmentStrictMode
الآن للأجزاء الخاصة التابعة لجهات خارجية تجاوز عقوبات المخالفات المحدّدة باستخدامallowViolation()
مع اسم الفئة. (I8f678)
الإصدار 1.5.0-alpha01
26 يناير 2022
تم طرح androidx.fragment:fragment:1.5.0-alpha01
وandroidx.fragment:fragment-ktx:1.5.0-alpha01
وandroidx.fragment:fragment-testing:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على هذه الالتزامات.
الميزات الجديدة
- يتكامل "
Fragment
" الآن مع ViewModel CreationExtras، التي تم تقديمها كجزء من دورة الحياة2.5.0-alpha01
. (I3060b، b/207012585)
إصلاح الأخطاء
- من الجزء
1.4.1
: لم يعدFragmentContainerView
يعرض حالة غير قانونية عندما تحتوي معرّفات الملفات الشخصية التي تم إنشاؤها من ملف xml على قيم سلبية. (Ic185b، b/213086140) - من الجزء
1.4.1
: عند استخدام دالة lambdaownerProducer
مخصّصة مع وظيفة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.3.6
: تعتمد الأجزاء الآن على النشاط1.2.4
(I3a66c)
الإصدار 1.4.0-alpha04
30 حزيران (يونيو) 2021
تم طرح androidx.fragment:fragment:1.4.0-alpha04
وandroidx.fragment:fragment-ktx:1.4.0-alpha04
وandroidx.fragment:fragment-testing:1.4.0-alpha04
. يحتوي الإصدار 1.4.0-alpha04 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- يستخدم
FragmentManager
الآنSavedStateRegistry
تلقائيًا لحفظ حالته. تم إيقاف الإجراءَينsaveAllState()
وrestoreSavedState()
نهائيًا أيضًا فيFragmentController
. إذا كنت تستخدمFragmentController
لاستضافة أجزاء خارجFragmentActivity
، يجب أن تستخدم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
) ولن تؤدي العناصر التي تمت مشاركتها إلى عرضIndexOutOfBoundsException
s. (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)
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات التجريبية لـ
FragmentManager.enableNewStateManager(boolean)
وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن. (I90036، b/162776418) - ينفِّذ
FragmentScenario
الآن السمةCloseable
، ما يتيح لك استخدامها مع طريقةuse
من Kotlin أو تجربة الموارد. (#121، b/143774122)
عمليات تحقّق جديدة من 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 ComposeviewModel()
داخل جزء. تستخدم حالات الاستخدام هذه الآن بشكل صحيح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، في حال تم تعيين
transitionGroup
ViewGroup على القيمة 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.6
: تعتمد الأجزاء الآن على النشاط1.2.4
(I3a66c)
الإصدار 1.3.5
16 حزيران (يونيو) 2021
تم طرح androidx.fragment:fragment:1.3.5
وandroidx.fragment:fragment-ktx:1.3.5
وandroidx.fragment:fragment-testing:1.3.5
. يتضمّن الإصدار 1.3.5 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الانحدار في انتقالات العناصر المشتركة التي تم تقديمها في الجزء
1.3.4
من خلال aosp/1679887. تتعامل الأجزاء الآن بشكل صحيح مع مجموعات الانتقال (سواء تم ضبطها مباشرةً عبرtransitionGroup="true"
أو بشكل غير مباشر عبرtransitionName
أوbackground
) ولن تؤدي العناصر التي تمت مشاركتها إلى عرضIndexOutOfBoundsException
s. (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.1 على النشاط
1.2.1
. (I557b9)
الإصدار 1.3.0
10 شباط (فبراير) 2021
تم طرح androidx.fragment:fragment:1.3.0
وandroidx.fragment:fragment-ktx:1.3.0
وandroidx.fragment:fragment-testing:1.3.0
. يتضمّن الإصدار 1.3.0 هذه الالتزامات.
التغييرات الرئيسية منذ الإصدار 1.2.0
- مدير حالة جديد: أدى إجراء إعادة صياغة مهمّة للأجزاء الداخلية
FragmentManager
إلى حلّ العديد من المشاكل المتعلّقة بإرسال أحداث مراحل النشاط والصور المتحركة وعمليات الانتقال وطريقة معالجة الأجزاء المؤجَّلة. دمج واجهة برمجة تطبيقات نتيجة النشاط: تمت إضافة دعم لواجهة برمجة تطبيقات
ActivityResultRegistry
التي تم تقديمها في النشاط1.2.0
للتعامل مع مساراتstartActivityForResult()
+onActivityResult()
بالإضافة إلى تدفقاتrequestPermissions()
+onRequestPermissionsResult()
بدون إلغاء الطرق في الجزء، بالإضافة إلى توفير عناصر الجذب لاختبار هذه المسارات. يمكنك الاطّلاع على النسخة المعدّلة من الحصول على نتيجة من نشاط.- يصحّح هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع Activity Result API من العمل على الإصدارات السابقة من
FragmentActivity
. يجب الترقية إلى الإصدار 1.3.0 لاستخدام واجهات برمجة التطبيقات لنتائج الأنشطة فيFragmentActivity
أوAppCompatActivity
.
- يصحّح هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع Activity Result API من العمل على الإصدارات السابقة من
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
على شكل طريقة الإضافة المعدّلة في KotlinwithFragment
والتي تتيح لك عرض قيمة. على وجه التحديد، يعيد هذا الزر الاستثناءات المرفوعة في المجموعة المحدّدة.
- يستخدم
دعم
ViewTree
: يتيحFragment
الآن واجهات برمجة التطبيقاتViewTreeLifecycleOwner.get(View)
وViewTreeViewModelStoreOwner.get(View)
وViewTreeSavedStateRegistryOwner
التي تمت إضافتها في رحلة المستخدِم2.3.0
وSavedState1.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)
تغييرات واجهة برمجة التطبيقات
- يجب ترقية androidx لاستخدام Kotlin 1.4 (Id6471 وb/165307851 وb/165300826).
التغييرات في السلوك
- تم جعل ملفات الموارد المجزأة خاصة بشكل صحيح. (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
في شكل طريقة الإضافة المُعدَّلة من لغة KotlinwithFragment
، والتي تتيح لك عرض قيمة. على وجه التحديد، يعيد هذا الزر الاستثناءات المرفوعة في المجموعة المحدّدة. (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 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة الدعم بشأن
ViewTreeViewModelStoreOwner
من دورة الحياة2.3.0-alpha03
وViewTreeSavedStateRegistryOwner
من SavedState1.1.0-alpha01
عند استخدامView
خلالFragment
. (aosp/1297993، aosp/1300264)
تغييرات واجهة برمجة التطبيقات
- تستخدم واجهتا برمجة التطبيقات
setFragmentResult()
وsetFragmentResultListener()
الآن الحقلَينBundle
وFragmentResultListener
غير الفارغة، على التوالي. لمحو نتيجة أو أداة معالجة تم ضبطها سابقًا بشكل واضح، استخدِم الطريقتَين الجديدتَينclearFragmentResult()
وclearFragmentResultListener()
. (b/155416778) - تم الآن وضع علامة
inline
على إضافاتsetFragmentResultListener()
Kotlin التي تأخذ lambda. (b/155323404)
التغييرات في السلوك
- تستخدم واجهات برمجة التطبيقات
startActivityForResult()
وstartIntentSenderForResult()
وrequestPermissions
التي تم إيقافها نهائيًا في السابق علىFragment
الآن داخليًا، وبالتالي تمت إزالة القيود المفروضة على استخدام وحدات البت المنخفضة (أقل من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 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة دعم لواجهة برمجة تطبيقات
ViewTreeLifecycleOwner.get(View)
التي تمت إضافتها في دورة الحياة2.3.0-alpha01
بحيث تعرضviewLifecycleOwner
للجزء على أنهLifecycleOwner
لأي مشاهدات يعرضهاonCreateView()
. (aosp/1182955)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الإجراء
setRetainInstance()
على الأجزاء نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدَّدة للاحتفاظ بالحالة التي يمكن أن ترتبط بالأنشطة وأجزاءً ورسومات بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام جزء عادي غير محتفظ به والاحتفاظ بالحالة المحددة التي يريدون الاحتفاظ بها بشكل منفصل، مع تجنُّب مصدر مشترك لعمليات تسريب، مع الحفاظ على الخصائص المفيدة لعملية إنشاء واحدة وتدمير الحالة التي يتم الاحتفاظ بها (أي الدالة الإنشائية لـViewModel
ومعاودة الاتصالonCleared()
التي يتم تلقّيها). (b/143911815) - مع إصدار ViewPager2
1.0.0
، تم إيقاف الفئتينFragmentPagerAdapter
وFragmentStatePagerAdapter
للتفاعل معViewPager
نهائيًا. يُرجى الاطّلاع على نقل البيانات من ViewPager إلى ViewPager2. (b/145132715)
إصلاح الأخطاء
- تحافظ قواعد 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.1
الآن على Lifecycle ViewModel SaveState2.2.0
.
الإصدار 1.2.0
الإصدار 1.2.0
22 كانون الثاني (يناير) 2020
تم طرح androidx.fragment:fragment:1.2.0
وandroidx.fragment:fragment-ktx:1.2.0
وandroidx.fragment:fragment-testing:1.2.0
. يتضمّن الإصدار 1.2.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 1.1.0
- FragmentContainerView: تعد
FragmentContainerView
الحاوية المقترَحة بشدة للأجزاء التي تتم إضافتها ديناميكيًا، وتحلّ محل استخدامFrameLayout
أو تنسيقات أخرى. وتتيح أيضًا استخدام علاماتclass
وandroid:name
وandroid:tag
نفسها الاختيارية، مثل العلامة<fragment>
، ولكنّها تستخدم علامةFragmentTransaction
عادية لإضافة هذا الجزء الأولي بدلاً من مسار الرمز المخصّص الذي يستخدمه<fragment>
. - توقيت
onDestroyView()
: تنتظر الأجزاء الآن اكتمال الرسوم المتحركة للخروج وعمليات النقل بين إطار العمل والخروج من عمليات انتقال AndroidX (عند استخدام النقل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
) يستخدم الآن بنية الوصول إلى موقع KotlinviewLifecycleOwner
بدلاً من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
إضافة جزء أولي مع إضافة سمات XMLandroid: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
الآن على اختبار AndroidX1.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
الصحيحة.