الجزء
آخر تعديل | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
30 تشرين الأول (أكتوبر) 2024 | 1.8.5 | - | - | - |
الإعلان عن التبعيات
لإضافة تبعية على Fragment، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle
ل
تطبيقك أو وحدتك:
Groovy
dependencies { def fragment_version = "1.8.3" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.3" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. أخبرنا إذا اكتشفت مشكلات جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 1.8
الإصدار 1.8.5
30 تشرين الأول (أكتوبر) 2024
تم إصدار androidx.fragment:fragment-*:1.8.5
. يتضمّن الإصدار 1.8.5 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة ظهور
IllegalStateException
بعدsaveBackStack
فقط بعد إلغاء إيماءة "الرجوع التوقّعي" أو مقاطعتها. (I3387d، b/342419080)
الإصدار 1.8.4
2 أكتوبر 2024
تم إصدار androidx.fragment:fragment-*:1.8.4
. يحتوي الإصدار 1.8.4 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تؤدي إلى تعطُّل "المقاطع" عند الضغط بسرعة على زر الرجوع في النظام أو إجراء إيماءة الرجوع بسرعة عند استخدام "عمليات النقل" في Androidx. (Ibc038، b/364804225)
- تم إصلاح مشكلة في الأجزاء التي كانت تؤدي إلى إرسال مدير الأجزاء إلى حالة غير محدّدة عند مقاطعة إيماءة التراجع التوقّعي، بل وقد تؤدي إلى عرض الجزء غير الصحيح. (If82e2، وb/338624457)
- تم إصلاح
UninitializedPropertyAccessException
فيAndroidFragment
عند التبديل الديناميكي لفئة مثيلAndroidFragment
. (I12dea)
الإصدار 1.8.3
4 سبتمبر 2024
تم طرح androidx.fragment:fragment-*:1.8.3
. يتضمّن الإصدار 1.8.3 عمليات الربط هذه.
إصلاح الأخطاء
- يراعي تطبيق "
FragmentManager
" الآن بشكل صحيح العمليات المعلَّقة عند التعامل مع إيماءة "الظهر القائم على التوقعات". يضمن هذا الإجراء أنّ إعادة تشغيل النظام لم تعُد تتسبب في حدوثIndexOutOfBoundsException
. (I9ba32، b/342316801) - لم يعُد
AndroidFragment
يتعطّل إذا تمت إضافته إلى التركيب أثناء حفظ حالة النشاط أو المقتطف الذي يحتوي عليه. (I985e9، b/356643968)
الإصدار 1.8.2
24 تموز (يوليو) 2024
تم إصدار androidx.fragment:fragment-*:1.8.2
. يحتوي الإصدار 1.8.2 على عمليات الربط هذه.
إصلاح الأخطاء
- يعالج
AndroidFragment
الآن بشكل صحيح الحالات التي يتم فيها وضع الجزء الرئيسي على حزمة الجزء الخلفي من الصفحة، ما يتجنّب مشاكل "لم يتم العثور على أي ملف شخصي للرقم التعريفي" عند الرجوع إلى ذلك الجزء. (I94608) - إنّ الأجزاء التي تمت إضافتها من خلال طريقة
FragmentTransaction.add
التي تستغرقViewGroup
تنتظر الآنonContainerAvailable
قبل الانتقال إلىonStart()
. ويؤثر ذلك في مستخدمي واجهة برمجة التطبيقات هذه، مثلAndroidFragment
، الذي ينتظر الآنAndroidFragment
لإعادة إدخال التكوين قبل نقله من خلالonStart()
. (I94608)
الإصدار 1.8.1
26 حزيران (يونيو) 2024
تم إصدار androidx.fragment:fragment-*:1.8.1
. يتضمّن الإصدار 1.8.1 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى
DESTROYED
الشرائح التي لا تحتوي على حاوية على الفور عند بدء إيماءة التراجع التوقّعي. يتم الآن الاحتفاظ بها في الحالةCREATED
إلى أن تكتمل الإيماءة. (If6b83، b/345244539)
الإصدار 1.8.0
12 يونيو 2024
تم طرح androidx.fragment:fragment-*:1.8.0
. يحتوي الإصدار 1.8.0 على عمليات الربط هذه.
التغييرات المهمة منذ الإصدار 1.7.0
- يحتوي العنصر
fragment-compose
الآن علىAndroidFragment
Composable
يسمح بإضافة أجزاء إلى التسلسل الهرمي لميزة "الإنشاء" من خلال اسم فئة الجزء. وتتولى هذه الميزة تلقائيًا حفظ حالة "العنصر" واستعادتها. يجب استخدام هذا الإجراء كبديل مباشر للطريقة المقترَحة سابقًا باستخدامAndroidViewBinding
لتضخيم "العنصر المجزّأ". - يتم الآن تنشيط استدعاء
onBackStackChangeCancelled
على واجهةOnBackStackChangedListener
فيFragmentManager
كجزء من تنفيذ العمليات فيFragmentManager
، ما يؤدي إلى تقريبه بما يتماشى مع توقيت معاودة الاتصالonBackStackChangeCommitted
.
الإصدار 1.8.0-rc01
29 أيار (مايو) 2024
تم طرح androidx.fragment:fragment-*:1.8.0-rc01
. يحتوي الإصدار 1.8.0-rc01 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- يتم الآن تشغيل دالة ردّ الاتصال
onBackStackChangeCancelled
في واجهةFragmentManagers OnBackStackChangedListener
كجزء من تنفيذ العمليات فيFragmentManager
، ما يجعلها أقرب إلى توقيت دالة ردّ الاتصالonBackStackChangeCommitted
. (I5ebfb، b/332916112)
الإصدار 1.8.0-beta01
14 أيار (مايو) 2024
تم إصدار androidx.fragment:fragment-*:1.8.0-beta01
. يحتوي الإصدار 1.8.0-beta01 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- من الكسر
1.7.1
: لن يتم الآن تنفيذ العمليات السابقة القائمة على التوقّعات إلا للمعاملات التي تحتوي فيها جميع أجزائها على رسم متحرك أو الانتقال Androidx قابل للبحث. يعالج هذا الإصلاح مشكلة ظهور شاشة سوداء عند إلغاء معاملة يمكن تقديمها أو تأخيرها جزئيًا. (I43037، b/339169168)
الإصدار 1.8.0-alpha02
17 نيسان (أبريل) 2024
تم إصدار androidx.fragment:fragment-*:1.8.0-alpha02
. يتضمّن الإصدار 1.8.0-alpha02 عمليات الربط هذه.
إصلاح الأخطاء
- من الكسر
1.7.0-rc02
: تمت إضافة السجلّات للإشارة إلى سبب تعذّر تشغيل ضبطsharedElement
بدون أي عمليات نقل أخرى. (Iec48e) - من الكسر
1.7.0-rc02
: تم إصلاح الخطأ الذي كان يحدث إذا تمت إضافة عنصر مشترك غير قابل للبحث إلى معاملات يمكن البحث فيها عن جميع الانتقالات الأخرى. سيتم الآن اعتبار المعاملة بشكل صحيح غير قابلة للبحث. (I18ccd)
الإصدار 1.8.0-alpha01
3 نيسان (أبريل) 2024
تم طرح androidx.fragment:fragment-*:1.8.0-alpha01
. يحتوي الإصدار 1.8.0-alpha01 على عمليات التنفيذ هذه.
الميزات الجديدة
- يسمح العنصر الجديد
AndroidFragment
Composable
بإضافة أجزاء إلى التسلسل الهرمي لميزة "الإنشاء" من خلال اسم فئة الجزء. وتتولى هذه العناصر تلقائيًا حفظ حالة "العنصر المجزأ" واستعادتها. ويمكن استخدامه كبديل مباشر لـ AndroidViewBindingComposable
.(b/312895363، Icf841)
التغييرات التي تطرأ على المستندات
- وثائق معدَّلة لواجهات برمجة تطبيقات
OnBackStackChangedListener
للإشارة إلى حالات استدعائها وكيفية استخدامها (I0bfd9)
تعديل التبعيات
- يعتمد المقتطف الآن على Profile Installer 1.3.1.
الإصدار 1.7
الإصدار 1.7.1
14 مايو 2024
تم إصدار androidx.fragment:fragment-*:1.7.1
. يحتوي الإصدار 1.7.1 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- لن يتم الآن تشغيل خوارزمية الرجوع القائمة على التوقّعات إلا للمعاملات التي تحتوي فيها جميع الأجزاء إما على Animator أو Androidx يمكن البحث فيه. يعالج هذا الإصلاح مشكلة ظهور شاشة فارغة عند إلغاء معاملة يمكن تقديمها أو تأخيرها جزئيًا. (I43037، b/339169168)
الإصدار 1.7.0
1 مايو 2024
تم إصدار androidx.fragment:fragment-*:1.7.0
. يحتوي الإصدار 1.7.0 على عمليات الربط هذه.
دعم إيماءة الظهر القائمة على التوقّعات
- توفّر الآن الأجزاء ميزة "الرجوع التوقّعي" داخل التطبيق عند استخدام
Animator
أو عند استخدام AndroidX Transition 1.5.0. يتيح ذلك للمستخدمين استخدام إيماءة الرجوع للاطّلاع على الجزء السابق من خلال البحث عن الصور المتحركة أو الانتقال قبل اتخاذ قرار بتنفيذ المعاملة من خلال إكمال الإيماءة أو الإلغاء.
نظام النقل | مرجع XML | توفُّر ميزة "إيماءة إظهار شاشة الرجوع" |
---|---|---|
Animation |
R.anim |
لا |
Animator |
R.animator |
نعم |
إطار العمل Transition |
R.transition |
لا |
الإصدار Transition من AndroidX مع الإصدار 1.4.1 من Transition أو إصدار أقدم |
R.transition |
لا |
AndroidX Transition مع الإصدار 1.5.0 من Transition |
R.transition |
نعم |
إذا واجهت أي مشاكل في إتاحة ميزة "الرجوع التوقّعي" في "المقاطع" بعد تفعيل ميزة "إيماءة الرجوع التوقّعي"، يُرجى إبلاغنا بمشكلة في "المقاطع" مع تضمين نموذج مشروع يُظهر مشكلتك. يمكنك إيقاف ميزة "توقُّع الرجوع" باستخدام FragmentManager.enabledPredictiveBack(false)
في قسم "onCreate()
" من نشاطك.
يوفّر FragmentManager.OnBackStackChangedListener()
الآن onBackStackChangeProgressed()
وonBackStackChangeCancelled()
لتلقّي معلومات عن مستوى التقدّم التوقّعي للرجوع إلى الخلف والأحداث المُلغاة على التوالي.
عنصر Compose Fragment
تم إنشاء عنصر fragment-compose
جديد يركز على دعم التطبيقات التي يتم نقلها من بنية مستندة إلى "المقاطع" إلى بنية مستندة بالكامل إلى Compose.
الميزة الأولى المتوفرة في هذا العنصر الجديد هي طريقة الإضافة content
على Fragment
التي تهدف إلى تسهيل استخدام ميزة "إنشاء" في واجهة المستخدم لجزء فردي من خلال إنشاء ComposeView
لك وضبط ViewCompositionStrategy
الصحيح.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
الإصدار 1.7.0-rc02
17 نيسان (أبريل) 2024
تم إصدار androidx.fragment:fragment-*:1.7.0-rc02
. يتضمّن الإصدار 1.7.0-rc02 عمليات الربط هذه.
إصلاح الأخطاء
- تمت إضافة سجلّات للإشارة إلى سبب تعذُّر تنفيذ عملية ضبط
sharedElement
بدون أي انتقالات أخرى. (Iec48e) - تم إصلاح الخطأ الذي يؤدي إلى حدوث تعطُّل عند إضافة عنصر مشترك لا يمكن البحث عنه إلى المعاملات التي كان من الممكن البحث فيها عن جميع الانتقالات الأخرى. سيتم الآن اعتبار المعاملة بشكل صحيح غير قابلة للتقديم أو الإيقاف. (I18ccd)
الإصدار 1.7.0-rc01
3 نيسان (أبريل) 2024
تم إصدار androidx.fragment:fragment-*:1.7.0-rc01
. يتضمّن الإصدار 1.7.0-rc01 عمليات الربط هذه.
تعديل التبعيات
- يعتمد المقتطف الآن على Profile Installer 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، حيث كان استخدام ميزة "الرجوع التوقّعي" في Fragment لنظام التشغيل
Animator
أو AndroidX Transition يؤدي إلى ظهورNullPointerException
منhandleOnBackProgressed
إذا لم تتم إضافةFragmentManager.OnBackStackChangedListener
من خلالaddOnBackStackChangedListener
. (I7c835)
الإصدار 1.7.0-alpha09
24 كانون الثاني (يناير) 2024
تم إصدار androidx.fragment:fragment-*:1.7.0-alpha09
. يحتوي الإصدار 1.7.0-alpha09 على هذه المراجعات.
عنصر Compose Fragment
تم إنشاء عنصر fragment-compose
جديد يركز على دعم التطبيقات التي يتم نقلها من بنية مستندة إلى "المقاطع" إلى بنية مستندة بالكامل إلى Compose.
الميزة الأولى المتوفّرة في هذا العنصر الجديد هي طريقة إضافة content
في Fragment
تهدف إلى تسهيل استخدام أداة "الإنشاء" لواجهة مستخدم عنصر فردي من خلال إنشاء ComposeView
نيابةً عنك وضبط ViewCompositionStrategy
الصحيح. (561cb7 وb/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
الميزات الجديدة
- يوفّر
FragmentManager.OnBackStackChangedListener()
الآنonBackStackChangeProgressed()
وonBackStackChangeCancelled()
لتلقّي معلومات عن مستوى التقدّم التوقّعي للرجوع إلى الخلف والأحداث المُلغاة على التوالي. (214b87)
مشكلة معروفة
- عند استخدام ميزة "الرجوع التوقّعي" في Fragment لنظام التشغيل
Animator
أو الانتقال في AndroidX، ستُرسِل FragmentsNullPointerException
منhandleOnBackProgressed
إذا لم تتم إضافةFragmentManager.OnBackStackChangedListener
من خلالaddOnBackStackChangedListener
. ستؤدي إضافة مستمع يدويًا إلى معالجة الأعطال. سيتوفّر حلّ لهذه المشكلة في الإصدار التالي من "المقاطع".
الإصدار 1.7.0-alpha08
10 كانون الثاني (يناير) 2024
تم إصدار androidx.fragment:fragment-*:1.7.0-alpha08
. يحتوي الإصدار 1.7.0-alpha08 على هذه المراجعات.
التنظيف
- تمت إزالة الحلّ البديل لمكتبة الانتقالات الذي تم إصلاحه في الانتقال
1.5.0-alpha06
. (I04356)
الإصدار 1.7.0-alpha07
29 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha07
. يحتوي الإصدار 1.7.0-alpha07 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح
NullPointerException
ناتج عن ضبط انتقال عنصر مشترَك وتعذُّر ضبط انتقال الدخول/الخروج أيضًا. (I8472b) - من الكسر
1.6.2
: عند تضخيم جزء منFragmentContainerView
، يمكن الآن الوصول إلى حالاته، مثلFragmentManager
والمضيف والمعرِّف في معاودة الاتصال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 Transition المخصّص قبل اتخاذ قرار بتنفيذ المعاملة أو إلغائها من خلال الإيماءة المكتملة. لتفعيل هذه الميزة، يجب أن تعتمد على إصدار الانتقال
1.5.0-alpha03
. (Ib49b4، b/285175724)
المشاكل المعروفة
- هناك مشكلة حاليًا تتمثل في أنّه بعد إلغاء إيماءة الرجوع باستخدام انتقال مرة واحدة، لن يتم تشغيل الانتقال في المرة التالية التي تبدأ فيها إيماءة الرجوع، ما يؤدي إلى ظهور شاشة فارغة. قد يرجع ذلك إلى مشكلة في مكتبة الانتقالات. (b/300157785). إذا واجهت هذه المشكلة، يُرجى إبلاغ فريق Fragment بالمشكلة مع تضمين نموذج مشروع يعيد إنتاج مشكلتك. يمكنك إيقاف ميزة "الرجوع التوقّعي" باستخدام
FragmentManager.enabledPredictiveBack(false)
فيonCreate()
"نشاطي".
الإصدار 1.7.0-alpha04
6 أيلول (سبتمبر) 2023
تم إصدار androidx.fragment:fragment-*:1.7.0-alpha04
. يحتوي الإصدار 1.7.0-alpha04 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة عند إلغاء إيماءة التراجع التوقّعي التي تعذّر فيها وصول الأجزاء إلى حالة دورة الحياة الصحيحة. (I7cffe، b/297379023)
- تم إصلاح مشكلة تراجع حيث كان يُسمح بتشغيل الرسوم المتحركة مع الانتقالات. (I59f36)
- تم إصلاح مشكلة عند استخدام ميزة "الرجوع التوقّعي" مع الأجزاء، حيث كانت محاولة الرجوع مرتين بشكل متتابع سريع في الجزء قبل الأخير من حزمة الرجوع تؤدي إلى حدوث تعذّر. (Ifa1a4)
الإصدار 1.7.0-alpha03
23 آب (أغسطس) 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة في "المقاطع" عند استخدام ميزة "الرجوع التوقّعي" التي أدّت إلى تخطّي المقطع الأول في حزمة الرجوع الخاصة بمدير المقاطع وإنهاء النشاط عند استخدام ميزة "رجوع النظام" من خلال التنقّل باستخدام 3 أزرار أو إيماءة الرجوع التوقّعي. (I0664b، b/295231788)
الإصدار 1.7.0-alpha02
9 آب (أغسطس) 2023
تم إصدار androidx.fragment:fragment-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه المراجعات.
إصلاح الأخطاء
- عند استخدام "الأجزاء" مع إيماءات الرجوع التوقّعية من واجهة برمجة التطبيقات 34، إذا كنت تستخدم نظام انتقال لا يتيح التقديم أو الإيقاف (
Animations
أوTransitions
) أو لا يتيح أي انتقالات على الإطلاق، ستنتظر "الأجزاء" الآن حتى تكتمل الإيماءة قبل تنفيذ إجراء الرجوع. (I8100c)
الإصدار 1.7.0-alpha01
7 حزيران (يونيو) 2023
تم إصدار androidx.fragment:fragment-*:1.7.0-alpha01
. تم تطوير هذا الإصدار في فرع داخلي.
الميزات الجديدة
- تتيح الآن الأجزاء ميزة "الرجوع التنبؤي" داخل التطبيق عند استخدام
Animator
. يتيح لك ذلك استخدام إيماءة الرجوع للاطّلاع على الجزء السابق من خلال أداة الصور المتحركة المخصّصة قبل اتخاذ قرار بتنفيذ المعاملة عبر الإيماءة المكتملة أو الإلغاء. يمكنك أيضًا إيقاف هذا السلوك الجديد باستخدام الإصدار التجريبي منenablePredictiveBack()
وإدخالfalse
.
الإصدار 1.6
الإصدار 1.6.2
1 تشرين الثاني (نوفمبر) 2023
تم إصدار androidx.fragment:fragment-*:1.6.2
. يحتوي الإصدار 1.6.2 على هذه المراجعات.
إصلاح الأخطاء
- عند تضخيم "القطعة" من
FragmentContainerView
، يمكن الآن الوصول إلى حالاتها، مثلFragmentManager
و"المضيف" والمعرّف، في دالة الاستدعاءonInflate
. (I1e44c، b/307427423) - عند استخدام
clearBackStack
لإزالة مجموعة من الأجزاء، سيتم الآن محوViewModel
أي جزء مدمج من الجزء الرئيسي عند محو الجزء الرئيسيViewModels
. (I6d83c، b/296173018)
الإصدار 1.6.1
26 تموز (يوليو) 2023
تم طرح androidx.fragment:fragment-*:1.6.1
. يحتوي الإصدار 1.6.1 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تخزين الحالة المحفوظة التي تم تخزينها عند إيقاف النشاط ولكن لم يتم إزالتها في ذاكرة التخزين المؤقت بشكلٍ غير صحيح حتى بعد نقل مثيل المقتطف مرة أخرى إلى الحالة
RESUMED
. سيؤدي ذلك إلى إعادة استخدام هذه الحالة المخزّنة مؤقتًا إذا كانت مثيل المقتطف هذا في الحزمة الخلفية عند استخدام واجهة برمجة التطبيقات لعمليات حفظ الحِزم الخلفية المتعددة واستعادتها لحفظ هذا المقتطف واستعادته. (I71288، b/246289075)
تعديل التبعية
- يعتمد التجزئة الآن على النشاط 1.7.2. يعالج ذلك مشكلة عدم تمكّن مستخدمي Kotlin من توسيع
ComponentDialog
بدون الاعتماد الصريح على Activity. (b/287509323)
الإصدار 1.6.0
7 حزيران (يونيو) 2023
تم طرح androidx.fragment:fragment-*:1.6.0
. يحتوي الإصدار 1.6.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.5.0
- تم تقسيم الحالة المحفوظة للعناصر
Fragment
بالكامل بين حالة المكتبة الخاصة (فصولParcelable
المخصّصة) والحالة التي يقدّمها المطوّر، والتي يتم تخزينها الآن دائمًا فيBundle
يسمح بتحديد مصدر حالة المقتطف بدقة. - تم توسيع واجهة
FragmentManager.OnBackStackChangedListener
من خلال استدعاءَين إضافيَين،onBackStackChangeStarted
وonBackStackChangeCommitted
، يتم طلبهما مع كلFragment
مباشرةً قبل إضافته أو إزالته من الحزمة الخلفية للجزء، وبعد إتمام المعاملة مباشرةً، على التوالي. - أضاف
FragmentStrictMode
WrongNestedHierarchyViolation
جديدًا يرصد تداخل أحد الأجزاء الفرعية في التسلسل الهرمي لعرض العنصر الرئيسي، ولكن لا تتم إضافته إلىchildFragmentManager
للعنصر الرئيسي. - تم الآن إضافة تعليق توضيحي مناسب باستخدام
@NonNull
إلى واجهات برمجة التطبيقاتFragment
وFragmentManager
اللتين تقبلانIntent
أوIntentSender
لمنع إدخال قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات ذات الصلة بإطار عمل Android التي تستدعيها هذه الطرق على الفور. - تتيح
DialogFragment
الآن الوصول إلىComponentDialog
الأساسية من خلال واجهة برمجة التطبيقاتrequireComponentDialog()
. - يعتمد الجزء الآن على دورة الحياة
2.6.1
. - يعتمد المقتطف الآن على SavedState
1.2.1
. - يعتمد القسم الآن على ProfileInstaller
1.3.0
. يفصل عنصر
fragment-testing-manifest
إدخالات البيان عن باقي مكوّنات اختبار الأجزاء. وهذا يعني أنّه يمكنك إجراء ما يلي:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
ويؤدي ذلك إلى تجنُّب حدوث تعارضات بسبب اختلاف الإصدار بين
fragment-testing
وandroidx.test
.
الإصدار 1.6.0-rc01
10 أيار (مايو) 2023
تم طرح androidx.fragment:fragment-*:1.6.0-rc01
. يحتوي الإصدار 1.6.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى إرسال
ActivityResult
باستخدام رمز الطلب غير الصحيح عند إجراء طلباتstartActivityForResult
متعددة بشكل متتالي. (If0b9d، b/249519359) - تم إصلاح مشكلة كانت تؤدي إلى إرسال طلبات استدعاء
onBackStackChangeListener
للعمليات التي لم تغيّر في الواقع الحزمة الخلفية إذا تم دمجها مع العمليات التي تغيّرها. (I0eb5c، b/279306628)
الإصدار 1.6.0-beta01
19 نيسان (أبريل) 2023
تم إصدار androidx.fragment:fragment-*:1.6.0-beta01
. يحتوي الإصدار 1.6.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- إنّ استخدام
postponeEnterTransition
مع انتهاء المهلة ثم استبدال الجزء المؤجَّل لم يعُد يؤدي إلى تسريب الجزء المؤجَّل. (I2ec7d، b/276375110) - لن تُرسِل الآن طلبات الاستدعاء الجديدة
onBackStackChangeStarted
وonBackStackChangeCommitted
سوى مقتطف واحد في المرة الواحدة، حتى إذا كانت معاملات متعددة تحتوي على المقتطف نفسه. (Ic6b69)
الإصدار 1.6.0-alpha09
5 نيسان (أبريل) 2023
تم طرح androidx.fragment:fragment-*:1.6.0-alpha09
. يحتوي الإصدار 1.6.0-alpha09 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تتيح
DialogFragment
الآن الوصول إلىComponentDialog
الأساسية من خلال واجهة برمجة التطبيقاتrequireComponentDialog()
. (I022e3، b/234274777) - تمّت إضافة تعليقات توضيحية إلى واجهات برمجة التطبيقات
commitNow()
وexecutePendingTransactions()
وpopBackStackImmediate()
باستخدام الرمز@MainThread
، ما يعني أنّها ستُعرِض الآن جميعًا أخطاء في مرحلة الإنشاء عندما لا يتمّ استدعاؤها من سلسلة المهام الرئيسية بدلاً من انتظار حدوث خطأ في وقت التشغيل. (Ic9665، b/236538905)
إصلاح الأخطاء
- تم إصلاح خطأ في
FragmentManager
حيث يمكن أن يؤدي الحفظ والاستعادة في الإطار نفسه إلى حدوث تعطُّل. (Ib36af، b/246519668) - لا يتم الآن تنفيذ عمليات استدعاء
OnBackStackChangedListener
onBackStackChangeStarted
وonBackStackChangeCommitted
إلا عند تغيير حزمة الخلفيةFragmentManager
. (I66055، b/274788957)
الإصدار 1.6.0-alpha08
22 آذار (مارس) 2023
تم إصدار androidx.fragment:fragment-*:1.6.0-alpha08
. يحتوي الإصدار 1.6.0-alpha08 على هذه المراجعات.
تغيير السلوك
- تم تعديل توقيت طلب إعادة الاتصال
OnBackStackChangedListener.onBackStackChangeCommited
لتنفيذه قبل تنفيذ عمليات المقاطع. ويضمن ذلك عدم تمرير معاودة الاتصال مطلقًا جزءًا منفصلاً. (I66a76، b/273568280)
إصلاح الأخطاء
- من الكسر
1.5.6
: تم إصلاح المشكلة التي كانت تمنع استدعاءclearFragmentResultListener
داخلsetFragmentResultListener
إذا كانتLifecycle
قد تمتSTARTED
وكانت النتيجة متاحة. (If7458)
تعديلات على التبعيات
- يعتمد الجزء الآن على دورة الحياة
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)
التغييرات في واجهة برمجة التطبيقات
- تم الآن إضافة تعليقات توضيحية بشكل صحيح إلى واجهات برمجة التطبيقات
Fragment
وFragmentManager
اللتين تقبلانIntent
أوIntentSender
باستخدام@NonNull
لمنع إدخال قيمة فارغة، لأنّ القيمة الفارغة ستؤدي دائمًا إلى تعطُّل واجهات برمجة التطبيقات ذات الصلة بإطار عمل Android التي تستدعيها هذه الطرق على الفور. (I06fd4)
الإصدار 1.6.0-alpha04
7 كانون الأول (ديسمبر) 2022
تم إصدار androidx.fragment:fragment-*:1.6.0-alpha04
. يحتوي الإصدار 1.6.0-alpha04 على هذه المراجعات.
الميزات الجديدة
- أضاف
FragmentStrictMode
عنصرWrongNestedHierarchyViolation
جديدًا يرصد دمج جزء فرعي في التدرج الهرمي للعرض الرئيسي، ولكن لا تتم إضافته إلىchildFragmentManager
للعنصر الرئيسي. (I72521، b/249299268)
التغييرات في السلوك
- تستعيد الأجزاء الآن حالة
SavedStateRegistry
قبلonAttach()
، ما يضمن توفّرها من خلال جميع أساليب مراحل النشاط اللاحقة. (I1e2b1)
تغييرات واجهة برمجة التطبيقات
- يفصل العنصر
fragment-testing-manifest
بين إدخالات البيان وبقية مكوّنات اختبار الأجزاء. وهذا يعني أنّه يمكنك تنفيذ ما يلي:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
ويؤدي ذلك إلى تجنُّب حدوث تعارضات بسبب اختلاف الإصدار بين fragment-testing
وandroidx.test
.(I8e534، b/128612536)
إصلاح الأخطاء
- من الكسر
1.5.5
: لن تحفظ الأجزاء حالةViewModel
بشكل غير صحيح كجزء من حالة عرض قاعدة بيانات المسجّلين. (I10d2b، b/253546214)
الإصدار 1.6.0-alpha03
5 تشرين الأول (أكتوبر) 2022
تم طرح الإصدارات androidx.fragment:fragment:1.6.0-alpha03
وandroidx.fragment:fragment-ktx:1.6.0-alpha03
وandroidx.fragment:fragment-testing:1.6.0-alpha03
. يحتوي الإصدار 1.6.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- وسيكون على الصفوف التي تشمل
DialogFragment
الآن الاتصال بـ Super ضمن عمليات إلغاءonDismiss()
. (I14798، b/238928865)
إصلاح الأخطاء
- تمّ إصلاح المشاكل الناتجة عن دمج واجهات طلب معاودة الاتصال الجديدة لموفّري المحتوى (
OnConfigurationChangedProvider
وOnMultiWindowModeChangedProvider
وOnTrimMemoryProvider
وOnPictureInPictureModeChangedProvider
) لضمان حصول الأجزاء دائمًا على طلبات معاودة الاتصال المناسبة. (I9b380،I34581، (I8dfe6، b/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 إلى تعطُّل أداة Lint. (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: يمكن الآن لـ
Fragment
توفيرViewModelProvider.Factory
بدون حالة من خلالCreationExtras
في2.5.0
دورة الإصدار. - دمج مربّع حوار المكوّنات - يستخدم
DialogFragment
الآنComponentDialog
من خلال النشاط1.5.0
كمربّع حوار تلقائي يعرضهonCreateDialog()
. - إعادة هيكلة حالة المثيلات المحفوظة: بدأت الأجزاء في تغيير طريقة حفظ حالة المثيل. يهدف ذلك إلى المساعدة في تحديد الحالة التي تم حفظها في المقتطف ومصدرها بوضوح. تشمل التغييرات الحالية ما يلي:
- تحفظ ميزة "
FragmentManager
" الآن حالة المثيل المحفوظة فيBundle
بدلاً من حفظها مباشرةً فيParcelable
مخصّص. - إنّ النتائج التي تم ضبطها من خلال
Fragment Result APIs
والتي لم يتم تسليمها بعد يتم حفظها الآن بشكل منفصل عن الحالة الداخلية لـFragmentManager
. - يتم الآن حفظ الحالة المرتبطة بكل جزء فردي بشكل منفصل عن الحالة الداخلية لـ
FragmentManager
، ما يسمح لك بربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بالمعرّفات الفريدة المتوفّرة في تسجيل تصحيح أخطاءFragment
.
- تحفظ ميزة "
تغييرات أخرى
- يوفّر
FragmentStrictMode
الآن إمكانية استخدام الأجزاء الخاصة التابعة لجهات خارجية لتجاوز عقوبات انتهاك محددة من خلال استخدامallowViolation()
مع اسم الفئة. - تم إيقاف واجهات برمجة التطبيقات Fragment API لتوفير قائمة
ActionBar
لنشاطك. توفّر واجهات برمجة التطبيقاتMenuHost
وMenuProvider
اللتان تمت إضافتهما في النشاط1.4.0
واجهة برمجة تطبيقات مكافئة قابلة للاختبار وتراعي مراحل النشاط، ويجب أن تستخدمها الأجزاء.
الإصدار 1.5.0-rc01
11 أيار (مايو) 2022
تم إصدار androidx.fragment:fragment:1.5.0-rc01
وandroidx.fragment:fragment-ktx:1.5.0-rc01
وandroidx.fragment:fragment-testing:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على هذه المراجعات.
إعادة صياغة حالة المثيل المحفوظة
- يتم الآن حفظ الحالة المرتبطة بكلّ جزء فردي بشكل منفصل عن الحالة الداخلية لـ
FragmentManager
، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بالمعرّفات الفريدة المتوفّرة في سجلّ تصحيح أخطاء الأجزاء. (a153e0، b/207158202)
الإصدار 1.5.0-beta01
20 نيسان (أبريل) 2022
تم طرح الإصدارات androidx.fragment:fragment:1.5.0-beta01
وandroidx.fragment:fragment-ktx:1.5.0-beta01
وandroidx.fragment:fragment-testing:1.5.0-beta01
. يحتوي الإصدار 1.5.0-beta01 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أضافت
DialogFragment
طريقةdismissNow
جديدة تستخدِمcommitNow
لمطابقة الدالةshowNow
. يُرجى العلم أنّ هذا الإجراء لن يؤدي إلى إغلاقDialog
على الفور، بل سيؤدي فقط إلى تعديل حالةFragmentManager
بشكل متزامن. (I15c36، b/72644830)
إعادة صياغة حالة المثيل المحفوظة
- يحفظ
FragmentManager
الآن حالة مثيلته المحفوظة فيBundle
بدلاً منParcelable
مخصّص مباشرةً. وهذه هي الخطوة الأولى في توفير شفافية إضافية بشأن ما يتم حفظه بالفعل من خلال التجزئة. (I93807، b/207158202) - يتم الآن حفظ النتائج التي تم ضبطها باستخدام واجهات برمجة تطبيقات نتائج Frragment والتي لم يتم تسليمها بعد، بشكل منفصل عن حالة
FragmentManager
الداخلية. سيتيح ذلك المزيد من الشفافية بشأن النتائج التي يتم حفظها كجزء من حالة النسخة المحفوظة. (I6ea12، b/207158202)
الإصدار 1.5.0-alpha05
6 نيسان (أبريل) 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha05
وandroidx.fragment:fragment-ktx:1.5.0-alpha05
وandroidx.fragment:fragment-testing:1.5.0-alpha05
. يحتوي الإصدار 1.5.0-alpha05 على هذه عمليات التنفيذ.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
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
: عند استخدام دالة LAMBDA مخصّصة من النوعownerProducer
مع الدالة البطيئةby viewModels()
، سيتم الآن استخدامdefaultViewModelProviderFactory
من هذا المالك في حال عدم توفيرViewModelProvider.Factory
مخصّص بدلاً من استخدام مصنع العنصر دائمًا. (I56170، b/214106513) - تم إصلاح مشكلة تعطُّل عند الوصول إلى
ViewModel
للمرة الأولى من خلال طلبregisterForActivityResult()
للرجوع إلىFragment
. (Iea2b3)
الإصدار 1.4
الإصدار 1.4.1
26 كانون الثاني (يناير) 2022
تم إصدار androidx.fragment:fragment:1.4.1
وandroidx.fragment:fragment-ktx:1.4.1
وandroidx.fragment:fragment-testing:1.4.1
. يحتوي الإصدار 1.4.1 على هذه المراجعات.
إصلاح الأخطاء
- لم تعُد
FragmentContainerView
تُعرِض استثناءً لحالة غير قانونية عندما تكون أرقام تعريف العرض التي تم إنشاؤها من xml ذات قيم سلبية. (Ic185b، b/213086140) - عند استخدام دالة
ownerProducer
lambda مخصّصة مع الدالة البطيئةby viewModels()
، سيتم الآن استخدامdefaultViewModelProviderFactory
من هذا المالك في حال عدم توفير دالةViewModelProvider.Factory
مخصّصة بدلاً من استخدامdefaultViewModelProviderFactory
دالة الإنشاء الخاصة بالقطعة دائمًا. (I56170، b/214106513)
الإصدار 1.4.0
17 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.fragment:fragment:1.4.0
وandroidx.fragment:fragment-ktx:1.4.0
وandroidx.fragment:fragment-testing:1.4.0
. يحتوي الإصدار 1.4.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.3.0
- توفّر واجهات برمجة التطبيقات
FragmentStrictMode
عمليات تحقّق في وقت التشغيل تسمح لك بالتحقّق من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تطلبان واجهات برمجة تطبيقات مجزّأة متوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل مستمع مخصّص أو تعطيل تطبيقك. يمكن ضبطFragmentStrictMode.Policy
الذي يتحكّم في عمليات التحقّق المفعّلة و"العقوبات" التي يتم تفعيلها علىFragmentManager
من خلال طريقةsetStrictModePolicy()
الجديدة. تنطبق هذه السياسة علىFragmentManager
وعلى أي مدراء لشرائح فرعية لا يضبطون سياستهم الفريدة. راجع الوضع الصارم للأجزاء. يوفّر
FragmentContainerView
الآن طريقةgetFragment()
التي تعرض المقتطف الذي تمت إضافته مؤخرًا إلى الحاوية. يستخدم هذا الإجراء المنطق نفسه المستخدَم في "findFragmentById()
" مع رقم تعريفFragmentContainerView
، ولكنه يسمح بتسلسل المكالمة.val navController = binding.container.getFragment<NavHostFragment>().navController
ينفذ
FragmentScenario
الآنCloseable
، ما يتيح لك استخدامه مع طريقةuse
أو try-with-resources في Kotlin.تمت إضافة
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
لتحديد ما إذا كان سيتم تفعيل الحركة العادية لعملية انتقال النشاط المستمَدة من موضوعك في عملية انتقال الأجزاء.لقد تمت إزالة واجهة برمجة التطبيقات التجريبية
FragmentManager.enableNewStateManager(boolean)
وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن.
تجميعات خلفية متعددة
يحتفظ FragmentManager
بمجموعة خلفية تتألف من معاملات أجزاء استخدمت addToBackStack()
. يتيح لك ذلك تقسيم تلك المعاملات والعودة إلى الحالة السابقة، باستخدام آليات حفظ الحالة باستخدام أجزاء للسماح للأجزاء باستعادة حالتها بشكل مناسب.
يتّسع هذا الإصدار ليشمل هذه الآليات من خلال توفير ثلاث واجهات برمجة تطبيقات FragmentManager
جديدة: saveBackStack(String name)
وrestoreBackStack(String name)
وclearBackStack(String name)
. تستخدم واجهات برمجة التطبيقات هذه واجهة name
نفسها مثل addToBackStack()
لحفظ حالة FragmentTransaction
وحالة كل جزء تمت إضافته إلى تلك المعاملات والسماح لك لاحقًا باستعادة هذه المعاملات وأجزائها بدون تغيير. يتيح لك ذلك "التبديل" بفعالية بين عدة حِزم خلفية من خلال حفظ الحزمة الخلفية الحالية واستعادة حزمة خلفية محفوظة.
تعمل saveBackStack()
بالطريقة نفسها التي تعمل بها popBackStack()
، وهي غير متزامنة وتؤدي إلى عكس جميع معاملات المقاطع إلى هذا الاسم المحدّد (أي "إزالتها") وإلى إتلاف أيّ مقاطع تمت إضافتها وإزالتها، ولكنّها تختلف ببعض الطرق المهمة:
- تُعد
saveBackStack()
شاملة دائمًا. - على عكس
popBackStack()
التي ستُخرج كل المعاملات في الحزمة الخلفية إذا لم يتم العثور على الاسم المحدّد في الحزمة الخلفية أو إذا تم تقديم اسم غير صالح، لا تُجريsaveBackStack()
أيّ إجراء إذا لم تكن قد أشرت سابقًا إلى معاملة عنصر باستخدامaddToBackStack()
مع هذا الاسم الدقيق غير الصفري. - يتم حفظ حالة جميع الأجزاء المضافة من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء
onSaveInstanceState()
من كل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلاتViewModel
مرتبطة بهذه الأجزاء (ولا يتم استدعاءonCleared()
فيها).
يجب أن تستوفي المعاملات المجزّأة التي يمكن استخدامها مع saveBackStack()
معايير معيّنة:
- يجب أن تستخدم كل معاملة لجزء
setReorderingAllowed(true)
لضمان إمكانية استعادة المعاملات كعملية واحدة موحّدة. - يجب أن تكون مجموعة المعاملات المحفوظة مستقلة بذاتها (أي يجب ألا تشير بشكل صريح إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على الحزمة الخلفية خلال الفترة الفاصلة.
- لا يمكن أن يكون أي جزء يتم حفظه جزءًا تم الاحتفاظ به أو أن يحتوي على جزء تم الاحتفاظ به في مجموعة الأجزاء الفرعية الخاصة به لضمان عدم عرض
FragmentManager
أي مراجع إلى الأجزاء المحفوظة بعد حفظ الحزمة الخلفية.
على غرار saveBackStack()
وrestoreBackStack()
وclearBackStack()
، اللذان يستعيدان حزمة الرجوع المحفوظة سابقًا أو يُلغيان حزمة الرجوع المحفوظة سابقًا على التوالي، لا يؤدي كلاهما إلى أي إجراء إذا لم يسبق لك استدعاء saveBackStack()
بالاسم نفسه.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة الأداة "الترجيع" المتعددة: نظرة تفصيلية.
الإصدار 1.4.0-rc01
3 تشرين الثاني (نوفمبر) 2021
androidx.fragment:fragment:1.4.0-rc01
تم إصداره بدون أي تغييرات من الإصدار Fragment 1.4.0-beta01. يحتوي الإصدار 1.4.0-rc01 على هذه عمليات التنفيذ.
الإصدار 1.4.0-beta01
27 تشرين الأول (أكتوبر) 2021
تم إصدار androidx.fragment:fragment:1.4.0-beta01
وandroidx.fragment:fragment-ktx:1.4.0-beta01
وandroidx.fragment:fragment-testing:1.4.0-beta01
. يحتوي الإصدار 1.4.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- ستنقل الأجزاء الرئيسية الآن
onHiddenChanged()
إلى أسفل التسلسل الهرمي بالكامل قبل بدء عملية معاودة الاتصال الخاصة بها. (Iedc20، b/77504618) - سيتم الآن إغلاق لوحة المفاتيح تلقائيًا عند الانتقال من مقتطف يتضمّن لوحة مفاتيح مفتوحة إلى مقتطف يتضمّن عرضًا لوحدة إعادة تدوير. (I8b842، b/196852211)
- يستخدم
DialogFragment
الآنsetReorderingAllowed(true)
لجميع المعاملات التي ينشئها عند الاتصال بـshow()
أوshowNow()
أوdismiss()
. (Ie2c14) - تم تقصير تحذير Lint الطويل جدًا الذي يبلغ
DetachAndAttachFragmentInSameFragmentTransaction
إلىDetachAndAttachSameFragment
. (e9eca3)
الإصدار 1.4.0-alpha10
29 أيلول (سبتمبر) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha10
وandroidx.fragment:fragment-ktx:1.4.0-alpha10
وandroidx.fragment:fragment-testing:1.4.0-alpha10
. يحتوي الإصدار 1.4.0-alpha10 على هذه المراجعات.
لينت
- تمت إضافة تحذير
DetachAndAttachFragmentInSameFragmentTransaction
lint لرصد استدعاء كل منdetach()
وattach()
فيFragment
نفسه فيFragmentTransaction
نفسه، لأنّ هذه العمليات التكميلية تلغي بعضها البعض عند إجرائها في المعاملة نفسها، ويجب تقسيمها إلى معاملات منفصلة لإجراء أي إجراء. (aosp/1832956، b/200867930) - تمت إضافة خطأ
FragmentAddMenuProvider
lint لتصحيح استخدامات دورة حياة المقتطف إلى دورة حياة عرض المقتطف عند استخدام واجهة برمجة التطبيقاتaddMenuProvider
منMenuHost
. (aosp/1830457، b/200326272)
تعديلات على المستندات
- تمّت إضافة المزيد من التفاصيل إلى رسالة الإيقاف النهائي لواجهات برمجة التطبيقات التي تتعامل معها الآن واجهات برمجة تطبيقات نتائج الأنشطة، وهي
startActivityForResult
وstartIntentSenderForResult
وonActivityResult
وrequestPermissions
وonRequestPermissionsResult
. (cce80f) - تم توسيع رسالة الإيقاف النهائي لـ
onActivityCreated()
لكل منFragment
وDialogFragment
مع إضافة المزيد من التفاصيل. (224db4)
الإصدار 1.4.0-alpha09
15 أيلول (سبتمبر) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha09
وandroidx.fragment:fragment-ktx:1.4.0-alpha09
وandroidx.fragment:fragment-testing:1.4.0-alpha09
. يحتوي الإصدار 1.4.0-alpha09 على هذه المراجعات.
الميزات الجديدة
- يمكنك الآن الاتصال برقم
clearBackStack(name)
ل clearing أي حالة تم حفظها سابقًا باستخدامsaveBackStack(name)
. (I70cd7)
تغييرات واجهة برمجة التطبيقات
- تمت إعادة كتابة الفئة
FragmentContainerView
في لغة Kotlin لضمان احترام الدالةgetFragment
لقابلية القيم الفارغة. (If694a، b/189629145) - تم الآن كتابة FragmentStrictMode بلغة Kotlin (I11767، b/199183506)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إزالة حالة "القطعة"
التي تمت إضافتها باستخدام
setReorderingAllowed(true)
ثم إزالتها على الفور قبل تنفيذ المعاملات المعلّقة بشكل صحيح. (I8ccb8)
الإصدار 1.4.0-alpha08
1 أيلول (سبتمبر) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha08
وandroidx.fragment:fragment-ktx:1.4.0-alpha08
وandroidx.fragment:fragment-testing:1.4.0-alpha08
. يحتوي الإصدار 1.4.0-alpha08 على هذه المراجعات.
إصلاح الأخطاء
- تم تحسين عملية التحقّق من الأخطاء البرمجية
UseRequireInsteadOfGet
للتعامل بشكل أفضل مع الأقواس المكرّرة. (I2d865) - تم تحسين عملية التحقّق من الأخطاء في
UseGetLayoutInflater
للتعامل مع حالات الاستخدام المتقدّمة الإضافية. (Ie5423)
الإصدار 1.4.0-alpha07
18 آب (أغسطس) 2021
تم طرح الإصدارات androidx.fragment:fragment:1.4.0-alpha07
وandroidx.fragment:fragment-ktx:1.4.0-alpha07
وandroidx.fragment:fragment-testing:1.4.0-alpha07
بدون أي تغييرات ملحوظة. يحتوي الإصدار 1.4.0-alpha07 على هذه عمليات التنفيذ.
الإصدار 1.4.0-alpha06
4 آب (أغسطس) 2021
تم طرح الإصدارات androidx.fragment:fragment:1.4.0-alpha06
وandroidx.fragment:fragment-ktx:1.4.0-alpha06
وandroidx.fragment:fragment-testing:1.4.0-alpha06
. يحتوي الإصدار 1.4.0-alpha06 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة متعلقة بعدة حزم خلفية عند التبديل السريع بين حزم البيانات الخلفية
التي كانت تظهر كـ
IllegalStateException
أثناء استعادةFragmentTransaction
أو كنسخة ثانية من جزء. (I9039f) - تم إصلاح مشكلة كانت تؤدي إلى احتفاظ
FragmentManager
بنسخة من الحالة المحفوظة سابقًا من خلالsaveBackStack()
حتى بعد استعادة تلك الحالة. (Ied212) - لم يعُد الإجراء
dismissAllowingStateLoss()
فيDialogFragment
يتعطّل عند استدعائه بعد حفظ الحالة عند إضافة DialogFragment على وجه التحديد من خلال الإجراءshow(FragmentTransaction, String)
. (I84422)
الإصدار 1.4.0-alpha05
21 تموز (يوليو) 2021
تم طرح الإصدارات androidx.fragment:fragment:1.4.0-alpha05
وandroidx.fragment:fragment-ktx:1.4.0-alpha05
وandroidx.fragment:fragment-testing:1.4.0-alpha05
. يحتوي الإصدار 1.4.0-alpha05 على هذه المراجعات.
إصلاح الأخطاء
- من العنصر
1.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()
محفوظ يتضمن معاملات متعددة عند استخدام واجهة برمجة التطبيقاتrestoreBackStack()
لتوفير دعم ملفrestoreBackStack()
المتعدّد. وقد أدّى ذلك أيضًا إلى حلّ مشكلة عدم التحقّق منsetReorderingAllowed(true)
في جميع المعاملات. (I8c593) - تم إصلاح مشكلة كانت تؤدي إلى مواصلة
FragmentManager
استعادة الحالة المحفوظة سابقًا للمقاطع بشكل غير صحيح حتى بعد إزالة هذه المقاطع منFragmentManager
، ما يؤدي إلى زيادة الحالة المحفوظة باستمرار بمرور الوقت. (I1fb8e)
الإصدار 1.4.0-alpha03
16 حزيران (يونيو) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha03
وandroidx.fragment:fragment-ktx:1.4.0-alpha03
وandroidx.fragment:fragment-testing:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- تم تعديل جميع فئات Fragment StrictMode
Violation
لتشمل رسائل خطأ أكثر تفصيلاً توضّح تفاصيل الانتهاك. (b/187871638)- يحتوي
FragmentTagUsageViolation
الآن على رسالة خطأ أكثر تفصيلاً تحتوي على الحاوية الرئيسية التي كان من المفترض أن تتم إضافة المقتطف إليها. (Ic33a7) - يحتوي
WrongFragmentContainerViolation
الآن على رسالة خطأ أكثر تفصيلاً تتضمّن الحاوية التي كانت تتم إضافة القطعة إليها. (Ib55f8) - تحتوي فئات حالات الاستخدام الخاصة ب
TargetFragmentUsageViolation
الآن على رسائل خطأ أكثر تفصيلاً لتضمين المقتطف الذي يتسبب في المخالفة وأي معلومات أخرى مضمّنة. (Icc6ac) - تحتوي الآن الفصول التي تمديدها من
RetainInstanceUsageViolation
على رسائل خطأ أكثر تفصيلاً تتضمّن المقتطف الذي يتسبب في المخالفة. (I6bd55) - تحتوي
FragmentReuseViolation
الآن على رسالة خطأ أكثر تفصيلًا تتضمن المعرّف السابق للجزء. (I28ce2) - تتضمّن
SetUserVisibleHintViolation
الآن رسالة خطأ أكثر تفصيلاً تتضمّن القيمة التي تم ضبط التلميح المريء للمستخدم عليها. (Ib2d5f)
- يحتوي
التغييرات في السلوك
- تم إلغاء الحظر المفروض على استدعاء
fitsSystemWindows
علىFragmentContainerView
، ولم يعُد هذا الإجراء يؤدي إلى تعطُّل تطبيقك. (6b8ddd، b/190622202)
إصلاح الأخطاء
- من الإصدار
1.3.5
: تم إصلاح مشكلة تراجع في عمليات انتقال العناصر المشتركة التي تم تقديمها في الإصدار1.3.4
من خلال aosp/1679887. تعالج الأجزاء الآن مجموعات الانتقال بشكلٍ صحيح (إما يتم ضبطها مباشرةً من خلالtransitionGroup="true"
أو بشكل غير مباشر من خلالtransitionName
أوbackground
) ولن تُرسِل العناصر المشتركة أخطاءIndexOutOfBoundsException
بعد الآن. (I16484، b/188679569، b/188969304) - لن يتعطّل
FragmentManager
بعد الآن عند محاولة إخفاء جزء تتم إزالته. (I573dd، b/183634730) - لن يتعطّل فحص أداة Lint
OnCreateDialogIncorrectCallback
بعد ذلك عند تقييم متغيّر من المستوى الأعلى. (0a9efa، b/189967522)
الإصدار 1.4.0-alpha02
2 حزيران (يونيو) 2021
تم طرح الإصدارات androidx.fragment:fragment:1.4.0-alpha02
وandroidx.fragment:fragment-ktx:1.4.0-alpha02
وandroidx.fragment:fragment-testing:1.4.0-alpha02
. يحتوي الإصدار 1.4.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- سيصبح بإمكان
FragmentStrictMode
الآن تسجيل المخالفات دائمًا عند تفعيل التسجيل من خلالFragmentManager
، بغض النظر عن سياسة الوضع الصارم الحالية المستخدَمة. (I02df6، b/187872638) يتيح
FragmentStrictMode
الآن إعفاء فئاتFragment
معيّنة من الوضع الصارمViolation
، ما يسمح لهذه الفئة بتجاوز أي عقوبات. (Ib4e5d، b/184786736)تم توسيع فئة
FragmentStrictMode
Violation
لإضافة معلومات عن البنية استنادًا إلى كل انتهاك. ويتيح لك ذلك التحقّق بالضبط من سبب الانتهاك بالإضافة إلى الجزء المخالف (If5118، وb/187871150)، ويحتوي كلViolation
على ما يلي:- يحتوي
WrongFragmentContainerViolation
الآن علىViewGroup
الذي كانFragment
يحاول إضافته. (I83c75، b/187871150) - تم توسيع
TargetFragmentUsageViolation
إلىSetTargetFragmentUsageViolation
وGetTargetFragmentUsageViolation
وGetTargetFragmentRequestCodeUsageViolation
، مع احتواءSetTargetFragmentUsageViolation
على المقتطف المستهدَف ورمز الطلب. (I741b4، b/187871150) - يحتوي
SetUserVisibleHintViolation
الآن على القيمة المنطقية التي تم تمريرها إلىsetUserVisibleHint()
. (I00585، b/187871150) - يحتوي
FragmentTagUsageViolation
الآن على مجموعة ViewGroup التي كانت علامة<fragment>
تحاول تضخيم جزء فيها.(I5dbbc، b/187871150) - يحتوي
FragmentReuseViolation
الآن على رقم التعريف الفريد للنسخة السابقة منFragment
التي تسبّبت في المخالفة. (I0544d، b/187871150) - أصبحت السمة
RetainInstanceUsageViolation
ملخّصة الآن وبها فئتان فرعيتان، هماSetRetainInstanceUsageViolation
وGetRetainInstanceUsageViolation
، تمثلان حالتين لنوع الانتهاك. (Ic81e5، b/187871150)
- يحتوي
التغييرات في السلوك
- يطرح
FragmentContainerView
الآن استثناءً عند محاولة تغيير السمةfitsSystemWindow
آليًا أو عبر XML. يجب أن تعالج طريقة عرض كلّ جزء فردي عمليات الإدراج. (Ie6651، b/187304502)
الإصدار 1.4.0-alpha01
18 أيار (مايو) 2021
تم طرح الإصدارات androidx.fragment:fragment:1.4.0-alpha01
وandroidx.fragment:fragment-ktx:1.4.0-alpha01
وandroidx.fragment:fragment-testing:1.4.0-alpha01
. يحتوي الإصدار 1.4.0-alpha01 على هذه المراجعات.
الميزات الجديدة
توفّر
FragmentContainerView
الآن الطريقةgetFragment()
التي تعرض الجزء الذي تمت إضافته مؤخرًا إلى الحاوية. يستخدم هذا الإجراء المنطق نفسه المستخدَم في "findFragmentById()
" مع رقم تعريفFragmentContainerView
، ولكنه يسمح بتسلسل المكالمة. (Ife17a، b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
تمت الإضافة
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
لتحديد ما إذا كان سيتم تفعيل الصورة المتحركة العادية لـ "الانتقال بين الأنشطة" والمأخوذة من المظهر في خيار انتقال "الأجزاء". (I46652)
عدة حزم إضافية
تحتفظ FragmentManager
بحزمة خلفية تتألف من معاملات مجزّأة استخدمت addToBackStack()
. يتيح لك ذلك تقسيم تلك المعاملات والعودة إلى الحالة السابقة، باستخدام آليات حفظ الحالة باستخدام أجزاء للسماح للأجزاء باستعادة حالتها بشكل مناسب.
يتوسّع هذا الإصدار في هذه الآليات من خلال توفير واجهتَي برمجة تطبيقات FragmentManager
جديدتَين: saveBackStack(String name)
وrestoreBackStack(String name)
. تستخدِم واجهات برمجة التطبيقات هذه name
نفسها المستخدَمة في addToBackStack()
لحفظ حالة FragmentTransaction
وحالة كلّ جزء تمت إضافته في هذه المعاملات، كما تسمح لك باستعادة هذه المعاملات وأجزائها لاحقًا مع الحفاظ على حالتها. يتيح لك ذلك "التبديل" بفعالية بين عدة حِزم خلفية من خلال حفظ الحزمة الخلفية الحالية واستعادة حزمة خلفية محفوظة.
يعمل الإجراء saveBackStack()
بالطريقة نفسها التي يعمل بها الإجراء popBackStack()
، فهو غير متزامن ويؤدي إلى عكس جميع معاملات المقاطع إلى هذا الاسم المحدّد (أي "إزالتها") وإلى إتلاف أيّ مقاطع تمت إضافتها وإزالتها، ولكنّه يختلف عنه في بعض الطرق المهمة:
saveBackStack()
شاملة دائمًا.- على عكس
popBackStack()
التي ستُخرج كل المعاملات في الحزمة الخلفية إذا لم يتم العثور على الاسم المحدّد في الحزمة الخلفية أو إذا تم تقديم اسم غير صالح، لا تُجريsaveBackStack()
أيّ إجراء إذا لم تكن قد أشرت سابقًا إلى معاملة عنصر باستخدامaddToBackStack()
مع هذا الاسم الدقيق غير الصفري. - يتم حفظ حالة جميع الأجزاء المضافة من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء
onSaveInstanceState()
من كل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلاتViewModel
مرتبطة بهذه الأجزاء (ولا يتم استدعاءonCleared()
فيها).
يجب أن تستوفي معاملات الأجزاء التي يمكن استخدامها مع saveBackStack()
معايير معيّنة:
- يجب أن تستخدم كل معاملة لجزء
setReorderingAllowed(true)
لضمان إمكانية استعادة المعاملات كعملية واحدة موحّدة. - يجب أن تكون مجموعة المعاملات المحفوظة مكتفية ذاتيًا (أي يجب ألا تشير صراحةً إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على الحزمة الخلفية في الوقت الفاتر.
- لا يمكن أن يكون أي جزء يتم حفظه جزءًا تم الاحتفاظ به أو أن يحتوي على جزء تم الاحتفاظ به في مجموعة الأجزاء الفرعية الخاصة به لضمان عدم عرض
FragmentManager
أي مراجع إلى الأجزاء المحفوظة بعد حفظ الحزمة الخلفية.
على غرار saveBackStack()
، لا يؤدي restoreBackStack()
إلى أي إجراء إذا لم يسبق لك الاتصال بـ saveBackStack()
بالاسم نفسه. (b/80029773)
Fragment StrictMode
توفّر واجهات برمجة تطبيقات FragmentStrictMode
عمليات تحقّق وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات للشرائح المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تشغيل أداة استماع مخصّصة أو إيقاف تطبيقك. يمكن ضبط FragmentStrictMode.Policy
الذي يتحكّم في عمليات التحقّق المفعَّلة و"العقوبات" على FragmentManager
باستخدام طريقة setStrictModePolicy()
الجديدة. تنطبق هذه السياسة على FragmentManager
وعلى أي مدراء لشرائح فرعية لا يضبطون سياستهم الفريدة. (#123 و#131 و#150 وb/143774122)
- يرصد
detectFragmentReuse()
ما إذا كانت تتم إعادة إضافة مثيلFragment
تمت إزالته سابقًا إلىFragmentManager
. يجب عدم التفاعل مع مثيلFragment
أو الاحتفاظ بإشارة إليه بعد إزالته منFragmentManager
. (#142، b/153738653) - يرصد
detectFragmentTagUsage()
حالات استخدام علامة<fragment>
في ملف XML الخاص بالتنسيق. يجب دائمًا استخدامFragmentContainerView
عند تضخيم الأجزاء كجزء من تنسيقك. (#141، b/153738235) - ترصد
detectWrongFragmentContainer()
إضافة جزء إلى حاوية ليستFragmentContainerView
. يجب دائمًا استخدامFragmentContainerView
كسمة حاوية للمقاطع في التنسيق. (#146، b/181137036) - يرصد
detectRetainInstanceUsage()
حالات استخدام واجهات برمجة التطبيقاتsetRetainInstance()
أوgetRetainInstance()
المتوقّفة نهائيًا. (#140، b/153737954) - يرصد
detectSetUserVisibleHint()
أنّك تستخدم واجهة برمجة تطبيقاتsetUserVisibleHint()
المتوقّفة. (#136، b/153738974) - يرصد
detectTargetFragmentUsage()
حالات استخدام واجهات برمجة التطبيقاتsetTargetFragment()
أوgetTargetFragment()
أوgetTargetRequestCode()
المتوقّفة نهائيًا. (#139، b/153737745)
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة واجهة برمجة التطبيقات التجريبية
FragmentManager.enableNewStateManager(boolean)
وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن. (I90036، b/162776418) - ينفذ
FragmentScenario
الآنCloseable
، ما يتيح لك استخدامه مع طريقةuse
أو try-with-resources في Kotlin. (#121، b/143774122)
عمليات التحقّق الجديدة من Lint
- تُحذّر عملية فحص Lint في
UseGetLayoutInflater
الآن عند استخدامLayoutInflater.from(Context)
فيDialogFragment
. عليك دائمًا استخدام طريقةgetLayoutInflater()
لجزء مربّع الحوار للحصول على ما يناسبLayoutInflater
. (#156، b/170781346) - يُرسِل الآن فحص Lint في
DialogFragmentCallbacksDetector
تحذيرًا عند استدعاءsetOnCancelListener
أوsetOnDismissListener
في طريقةonCreateDialog()
الخاصة بعنصرDialogFragment
، لأنّ مستمعي الأحداث هؤلاء يملكونDialogFragment
نفسه وعليك إلغاءonCancel()
وonDismiss()
لتلقّي هذه الاستدعاءات. (#171، b/181780047، b/187524311)
إصلاح الأخطاء
- من الإصدار 1.3.4 من Fragment: تم إصلاح مشكلة تراجع حدثت في الإصدار
1.3.3
من Fragment عند استخدام واجهة برمجة التطبيقاتViewTreeViewModelStoreOwner.get()
معViewModelProvider
أو طريقة Jetpack Compose لـviewModel()
داخل Fragment. تستخدم حالات الاستخدام هذه الآن بشكل صحيحViewModelProvider.Factory
المقدَّم من الجزء إذا كان يتجاهلgetDefaultViewModelProviderFactory()
(كما تفعل الأجزاء التي تحتوي على تعليقات توضيحية@AndroidEntryPoint
عند استخدام Hilt). في حال عدم إلغاء هذه الطريقة، سيتم إنشاءSavedStateViewModelFactory
كمصنّع تلقائي لحفظ حالته واستعادتها إلى جانب عرض الجزء. (I5cbfa، b/186097368) - اعتبارًا من الإصدار 1.3.4 من القسم: عند استخدام
FragmentContainerView
على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال المكوّنات المضمّنة بعد الآن إلى أجل غير مسمى، ما يؤدي إلى حلّ المشاكل المتعلّقة بمثيلاتBottomNavigationBar
وFloatingActionButton
. (I1bb78، b/186012452) - من الإصدار 1.3.4 من Fragment: يمكنك الآن استرداد Parcelable من حِزمة نتيجة القطعة بعد إنهاء العملية. (I65932، b/187443158)
- من الفقرة 1.3.4: عند إجراء انتقال عنصر مشترَك في ViewGroup، إذا تم ضبط
transitionGroup
على خطأ في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (I99675)
المساهمة الخارجية
- نشكرك simonschiller على مساعدة
FragmentScenario
في تنفيذCloseable
. (#121، b/143774122) - نشكرك simonschiller على إضافة واجهة برمجة التطبيقات
FragmentStrictMode
بالكامل لهذا الإصدار. (#123 و#131 و#150 وb/143774122 و#142 وb/153738653 و#141 وb/153738235 و#146 وb/181137036 و#140 وb/153737954 و#136 وb/153738974 و#139 وb/153737745) - نشكرك tatocaster على إضافة فحص Lint
UseGetLayoutInflater
. (#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
الآن دائمًا الحالة المحفوظة كأول عملية له في lifecycle callbacks التي يتجاوزها. (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
بعد الآن. (I16484، b/188679569، b/188969304)
الإصدار 1.3.4
18 أيار (مايو) 2021
تم إصدار androidx.fragment:fragment:1.3.4
وandroidx.fragment:fragment-ktx:1.3.4
وandroidx.fragment:fragment-testing:1.3.4
. يحتوي الإصدار 1.3.4 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع في الأداء حدثت في العنصر
1.3.3
عند استخدام واجهة برمجة التطبيقاتViewTreeViewModelStoreOwner.get()
معViewModelProvider
أو طريقةviewModel()
في Jetpack Compose داخل عنصر عند استخدام Hilt. تستخدم حالات الاستخدام هذه الآن بشكل صحيحViewModelProvider.Factory
المقدَّمة من الجزء إذا كانت تلغيgetDefaultViewModelProviderFactory()
(كما تفعل الأجزاء التي تحتوي على تعليقات توضيحية@AndroidEntryPoint
). في حال عدم إلغاء هذه الطريقة، سيتم إنشاءSavedStateViewModelFactory
كمصنّع تلقائي لحفظ حالته واستعادتها إلى جانب عرض الجزء. (I5cbfa، b/186097368) - عند استخدام
FragmentContainerView
على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال المكوّنات المضمّنة بعد الآن إلى أجل غير مسمى، ما يؤدي إلى حلّ المشاكل المتعلّقة بمثيلاتBottomNavigationBar
وFloatingActionButton
. (I1bb78، b/186012452) - يمكنك الآن استرداد Parcelable من حِزمة نتيجة القطعة بعد انتهاء عملية التنفيذ. (I65932، b/187443158)
- عند إجراء عملية انتقال لعنصر مشترَك في ViewGroup، إذا تم ضبط
transitionGroup
في ViewGroup على false، سيتم الآن الانتقال بشكل صحيح. (I99675)
الإصدار 1.3.3
21 نيسان (أبريل) 2021
تم إصدار androidx.fragment:fragment:1.3.3
وandroidx.fragment:fragment-ktx:1.3.3
وandroidx.fragment:fragment-testing:1.3.3
. يحتوي الإصدار 1.3.3 على هذه المراجعات.
الميزات الجديدة
- يعمل استخدام
SavedStateViewModelFactory
الآن عند استخدامه معSavedStateRegistryOwner
الذي تم إرجاعه عن طريق استخدامViewTreeSavedStateRegistryOwner.get()
مع عرض الجزء. (I21acf، b/181577191)
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع حدثت في القسم
1.3.2
كانت تؤدي إلى عدم تشغيل الرسوم المتحرّكةpopEnter
عند عرضFragmentTransaction
يتضمّن عمليةsetPrimaryNavFragment
، مثل تلك التي يستخدمهاNavHostFragment
. (I38c87، b/183877426) - يضمن
FragmentContainerView
الآن إرسال مجموعة جديدة منWindowInsets
إلى كلFragment
، ما يضمن أنّه يمكن لكلّ جزء الآن استخدام المكوّنات المضمّنة بشكلٍ مستقل. (I63f68، b/172153900) - يعالج
DialogFragment
الآن بشكلٍ سليم الحالات التي تتم فيها إضافة جزء فرعي إلى حاوية لها المعرّف نفسه الذي تستخدمه حاوية في فئةDialog
المخصّصة، ما يؤدي إلى حلّ مشاكل التسلسل الهرمي للعرض عند إعادة استخدام المعرّفات التي تستخدمها مربّعات الحوار داخليًا، مثلBottomSheetDialog
. (Ie6279، b/180021387) FragmentManager.dump()
يُعدّل الآن المسافة البادئة للقطعة الأولى في قائمة القطع النشطة بشكلٍ صحيح. (If5c33 وb/183705451)
إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة
- يعالج الآن مدير حالة المقتطف الجديد بشكلٍ صحيح عمليات الخروج الانتقالية باستخدام عمليات إخفاء. (I9e4de، b/184830265)
الإصدار 1.3.2
24 آذار (مارس) 2021
تم إصدار androidx.fragment:fragment:1.3.2
وandroidx.fragment:fragment-ktx:1.3.2
وandroidx.fragment:fragment-testing:1.3.2
. يحتوي الإصدار 1.3.2 على عمليات الالتزام هذه.
إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة
- عند تشغيل عمليتين
popBackStack()
وcommit()
معًا، ستحدد العملية الأخيرة الآن الاتجاه لكل الرسوم المتحركة بدلاً من تشغيل بعض الرسوم المتحركة المنبثقة والبعض الآخر لإدخال صور متحركة. (I7072e، b/181142246) - لن يتم بعد الآن محو اسم الانتقال في طرق العرض ضمن التدرّج الهرمي للعنصر المشترَك عند إجراء انتقال عنصر مشترَك. (I4d4a6، b/179934757)
التعديلات المتعلقة بالاعتمادية
- يعتمد Fragment الآن على Activity 1.2.2، ما يؤدي إلى حلّ مشكلة في فحص
InvalidFragmentVersionForActivityResult
lint لنشاط Activity عند استخدام Fragment 1.3.1 أو إصدار أحدث. - يعتمد العنصر الآن على Lifecycle 2.3.1.
الإصدار 1.3.1
10 آذار (مارس) 2021
تم إصدار androidx.fragment:fragment:1.3.1
وandroidx.fragment:fragment-ktx:1.3.1
وandroidx.fragment:fragment-testing:1.3.1
. يحتوي الإصدار 1.3.1 على هذه المراجعات.
الميزات الجديدة
- يمكن الآن لمربّعات الحوار داخل
DialogFragment
الوصول إلى مالكي ViewTree من خلال مختلف وحدات التصميم الخاصة بهم، ما يضمن إمكانية استخدامDialogFragment
معComposeView
. (Ib9290، b/180691023)
إصلاح الأخطاء
- يتم الآن عرض الأجزاء التي تم تضخيمها في نشاط
RESUMED
تم إنشاؤه باستخدام FragmentContainerView بشكل صحيح بعد تغيير الإعدادات. (Ie14c8، b/180538371) - لم يعُد هناك
}
إضافي في نهاية المقتطفtoString()
(I54705، b/177761088) - اكتسبت الآن الطرق التي تم استبدالها في FragmentActivity بشكل صحيح مستند javaDoc الخاص بالطريقة الأساسية (I736ce، b/139548782).
- تم تعديل مستندات المَعلمات الخاصة ب
setFragmentResult
وsetFragmentResultListener
لتوضيح أنّها لم تعُد تقبل المَعلمات التي يمكن أن تكون فارغة (I990ba وb/178348386).
إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة
- تم إصلاح تسرب في الذاكرة في الأجزاء بسبب
mFocusedView
(Ib4e9e، b/179925887) - تُستخدَم الآن المقاطع بشكل صحيح للاتّصال بـ
onCreateOptionsMenu
عند استخدام إظهار/إخفاء المعاملات (I8bce8، b/180255554). - إنّ الأجزاء الفرعية التي تتضمّن انتقالات تبدأ قبل عرض الجزء ستتمكّن الآن من الوصول بشكل صحيح إلى
RESUMED
(Ic11e6، b/180825150). - إنّ الأجزاء التي تم تضخيمها باستخدام علامة
<fragment>
ستتم معالجتها دائمًا باستخدامRESUMED
(I452ac، (I9fa49)
تعديلات على التبعيات
- يعتمد المقتطف 1.3.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
إلى حلّ العديد من المشاكل المتعلقة بإرسال أحداث دورة الحياة والرسوم المتحرّكة والانتقالات وكيفية التعامل مع الأجزاء المؤجّلة. دمج Activity Result API: تمت إضافة دعم لواجهة برمجة التطبيقات
ActivityResultRegistry
التي تم تقديمها في Activity1.2.0
لمعالجةstartActivityForResult()
+onActivityResult()
بالإضافة إلى عملياتrequestPermissions()
+onRequestPermissionsResult()
بدون إلغاء طُرق في المقتطف، بالإضافة إلى توفير عناصر ربط لاختبار هذه العمليات. اطّلِع على الحصول على نتيجة من نشاط المعدَّل.- يُصلح هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع واجهة برمجة التطبيقات Activity Result API من العمل على الإصدارات السابقة من
FragmentActivity
. يجب الترقية إلى الإصدار 1.3.0 من Fragment لاستخدام واجهات برمجة تطبيقات نتائج الأنشطة فيFragmentActivity
أوAppCompatActivity
.
- يُصلح هذا الإصدار عددًا من المشاكل المتعلّقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع واجهة برمجة التطبيقات Activity Result API من العمل على الإصدارات السابقة من
Fragment Result API: تمت إضافة دعم لتمرير النتائج بين جزأين عبر واجهات برمجة تطبيقات جديدة على
FragmentManager
. يعمل هذا الإجراء مع الأجزاء الهرمية (الأصل/التابع) وDialogFragments والمقاطع في Navigation، ويضمن عدم إرسال النتائج إلى الجزء إلا عندما يكونSTARTED
على الأقل. تم إيقاف واجهات برمجة التطبيقات الخاصة بالشرائح المستهدَفة نهائيًا لصالح واجهات برمجة التطبيقات الجديدة هذه. اطّلِع على الحصول على النتائج باستخدام واجهة برمجة التطبيقات Fragment Result API.FragmentOnAttachListener
: تم إيقاف ميزة معاودة الاتصالonAttachFragment()
نهائيًا فيFragmentActivity
وFragment
. تمت إضافةFragmentOnAttachListener
جديد لتوفير بديل أكثر مرونة، ما يسمح بتفويضonAttachFragment()
إلى مستمعين منفصلين وقابلين للاختبار، وتوفير إمكانية إضافة مستمع إلى FragmentManagers غير FragmentManager الفرعي المباشر.تحسينات
FragmentScenario
: تمت إعادة كتابة الفئةFragmentScenario
من العناصرfragment-testing
في Kotlin وتم إدخال عدد من التحسينات عليها:- يستخدم
FragmentScenario
الآنsetMaxLifecycle()
لتنفيذmoveToState()
، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات ويفصل حالة المقتطف عن النشاط الأساسي. - تتيح
FragmentScenario
الآن ضبطLifecycle.State
أولي للسماح بتأكيد حالة المقتطف قبل الانتقال إلى كلLifecycle.State
للمرة الأولى. - يتوفّر الآن بديل لواجهة برمجة التطبيقات
FragmentScenario
فيonFragment
على شكل طريقة إضافة معدَّلة في KotlinwithFragment
تتيح لك عرض قيمة. ويُرجى العِلم أنّه يعيد رمي الاستثناءات التي تمّت إثارتها في القسم المحدّد.
- يستخدم
دعم
ViewTree
: يتوافق "Fragment
" الآن مع واجهات برمجة التطبيقاتViewTreeLifecycleOwner.get(View)
وViewTreeViewModelStoreOwner.get(View)
وViewTreeSavedStateRegistryOwner
التي تمت إضافتها في رحلة المستخدِم2.3.0
وحالة الحفظ1.1.0
ما يؤدي إلى عرض الجزءViewModelStoreOwner
وSavedStateRegistryOwner
وLifecycleOwner
المرتبط بـ دورة حياة العرض عند استخدام {18./} ضمن {18./}Fragment
View
تغييرات في الصور المتحركة لـ
TRANSIT_
: تستخدم الآن التأثيرات التلقائية للأجزاءTRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
Animator
بدلاً منAnimation
. أصبحت الموارد المستخدمة لإنشاء برامج الصور المتحركة هذه خاصة الآن.إيقاف
setRetainInstance()
نهائيًا: تم إيقاف الطريقةsetRetainInstance()
نهائيًا في "المقاطع". مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة والمقاطع والرسوم البيانية للتنقّل. يتيح ذلك للمطوّرين استخدام عنصر Fragment عادي غير محفوظ وفصل الحالة المحدّدة التي يريدون الاحتفاظ بها، ما يتجنّب مصدرًا شائعًا للتسرّب مع الحفاظ على الخصائص المفيدة لإنشاء الحالة المحفوظة وإزالتها مرة واحدة (أيّ دالة الإنشاء لعنصرViewModel
ودالة الاستدعاءonCleared()
التي يتلقّاها).إيقاف محوِّل ViewPager 1 نهائيًا: مع إصدار ViewPager2
1.0.0
، تم إيقاف فئةFragmentPagerAdapter
وفئةFragmentStatePagerAdapter
للتفاعل معViewPager
نهائيًا. راجِع مقالة نقل البيانات من ViewPager إلى ViewPager2.
الإصدار 1.3.0-rc02
27 كانون الثاني (يناير) 2021
تم إصدار androidx.fragment:fragment:1.3.0-rc02
وandroidx.fragment:fragment-ktx:1.3.0-rc02
وandroidx.fragment:fragment-testing:1.3.0-rc02
. يحتوي الإصدار 1.3.0-rc02 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة ظهور
DialogFragment
الرئيسي فوقDialogFragment
الثانوي بعد تغيير الإعدادات، حيث تظهر الآن أجزاء مربّع الحوار الثانوي دائمًا فوق أجزاء مربّع الحوار الرئيسي. (I30806، b/177439520) - تم إصلاح مشكلة إحداث وميض في الجزء المخفي عند انتهاء الرسم المتحرك من خلال إجراء عملية
hide
باستخدامAnimation
. (I57e22، b/175417675) - تم إرفاق الأجزاء التي تمت إضافة الانتقالات إليها قبل العرض الهرمي
الآن للوصول بشكل صحيح إلى
RESUMED
. (I1fc1d، b/177154873)
إصلاح الأخطاء الجديدة في "مدير الولاية"
- يعالج عرض المقتطف
Lifecycle
الآن بشكلٍ سليم الحالات التي يتم فيها إتلاف عرض المقتطف قبل وصولLifecycle
إلىCREATED
، ما يتجنّب استثناءات تشير إلى "ما مِن حدث تمّ إنشاؤه من INITIALIZED". (eda2bd، b/176138645) - تظهر الآن الأجزاء التي تستخدم
Animator
بالترتيب الصحيح عند استخدامFragmentContainerView
. (Id9aa3، b/176089197)
الإصدار 1.3.0-rc01
16 كانون الأول (ديسمبر) 2020
تم إصدار androidx.fragment:fragment:1.3.0-rc01
وandroidx.fragment:fragment-ktx:1.3.0-rc01
وandroidx.fragment:fragment-testing:1.3.0-rc01
. يحتوي الإصدار 1.3.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- يتّبع
onPrepareOptionsMenu()
الآن المنطق نفسه المستخدَم فيonCreateOptionsMenu()
ولم يعُد يتمّ استدعاؤه عندما يُطلِب أحد الأجزاء الرئيسيةsetMenuVisibility(false)
. (Id7de8، b/173203654)
إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة
- تم إصلاح تسرُّب العناصر والعناصر المرئية عند إضافة
جزء يتضمن علامة
Animation
إلىFragmentContainerView
ثم إيقاف تلك الإضافة بعملية تشغيل سريعة. (I952d8) - تم حلّ مشكلة كانت تؤدي إلى بقاء عرض المقتطف في التسلسل الهرمي للعرض إذا تم استبداله أثناء تنفيذ الطريقتَين
onCreate()
أوonViewCreated()
. (I8a7d5) - تم الآن استعادة التركيز بشكلٍ صحيح على مشاهد الجذر للّقطات عند استئنافها. (Ifc84b)
- سيؤدي دمج عمليتَي الإزالة والاستبدال في المعاملة المعينة للجزء نفسه إلى عرض الصور المتحركة المناسبة (Ifd4e4، b/170328691).
الإصدار 1.3.0-beta02
2 كانون الأول (ديسمبر) 2020
تم إصدار androidx.fragment:fragment:1.3.0-beta02
وandroidx.fragment:fragment-ktx:1.3.0-beta02
وandroidx.fragment:fragment-testing:1.3.0-beta02
. يحتوي الإصدار 1.3.0-beta02 على هذه المراجعات.
الميزات الجديدة
- تم تحويل
FragmentScenario
بالكامل إلى Kotlin مع الحفاظ على توافق المصدر والثنائي من خلال استخدام الواجهات الوظيفية في Kotlin 1.4 لـFragmentAction
. (I19d31)
التغييرات في السلوك
- يمكن الآن استخدام عناصر FragmentContainerView التي لا تضخّم جزءًا باستخدام السمة
class
أوandroid:name
خارجFragmentActivity
. (Id4397، b/172266337) - عند محاولة ضبط الحد الأقصى لدورة حياة أي جزء على
DESTROYED
، سيتم الآن عرض القيمةIllegalArgumentException
(Ie7651، وb/170765622). - سيؤدي إعداد سيناريو جزء من الحالة باستخدام الحالة
DESTROYED
إلى عرض الخطأIllegalArgumentException
(I73590، b/170765622).
إصلاحات الأخطاء في أداة "إدارة الحالات" الجديدة
- تم حلّ مشكلة عدم وصول العرض إلى حالته النهائية في حال مقاطعة عملية انتقال أحد الأجزاء التي كانت تستخدم
Animator
أو أحد خياراتTRANSIT_FRAGMENT_
. (I92426، b/169874632) - تم إصلاح مشكلة كانت تمنع تلف الأجزاء التي تحتوي على علامة
Animation
متأخّرة بشكل صحيح. (I83d65) - عند الخروج من المقاطع التي تم عكس تأثيراتها، يتم الآن إلغاؤها وإعادة تشغيلها بشكل صحيح باستخدام تأثير الدخول المناسب. (I62226، b/167092035)
- تم إصلاح مشكلة تعذُّر تنفيذ
Animator
الخروج منhide()
. (Id7ffe) - تظهر الآن الأجزاء بشكل صحيح عند تأجيلها ثم بدؤها على الفور. (Ie713b، وb/170022857)
- لن تحاول الأجزاء التي تزيل العرض الذي تم التركيز عليه أثناء تشغيل صورة متحركة استعادة التركيز على طريقة العرض المنفصلة بعد بلوغ
RESUMED
(I38c65، b/172925703).
مساهمة خارجية
- تخزِّن أداة
FragmentFactory
الآن فئات المقتطفات بشكل منفصل لمثيلَيClassLoader
مختلفَين. شكرًا، رامي (#87، b/113886460)
الإصدار 1.3.0-beta01
1 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.fragment:fragment:1.3.0-beta01
وandroidx.fragment:fragment-ktx:1.3.0-beta01
وandroidx.fragment:fragment-testing:1.3.0-beta01
. يحتوي الإصدار 1.3.0-beta01 على هذه المراجعات.
الميزات الجديدة
- يتيح
setMaxLifecycle()
الآن ضبط حالةLifecycle
علىINITIALIZING
ما دام لم يتم نقل المقتطف إلىCREATED
. (b/159662173)
التغييرات في واجهة برمجة التطبيقات
- ترقية حزمة androidx لاستخدام Kotlin 1.4 (Id6471 وb/165307851 وb/165300826)
التغييرات في السلوك
- تمّت بنجاح إزالة إذن الوصول إلى ملفات مرجع المقاطع. (aosp/1425237)
إصلاح الأخطاء
- ستتم الآن معالجة الأجزاء التي تم تضخيمها باستخدام علامة
<fragment>
بشكلٍ سليم، وستبدأ في الانتظار إلى أن تتم إضافة مشاهداتها إلى حاوية قبل الانتقال إلى الحالة STARTED (I02f4c). - إنّ الشظايا المرئية ثم
setMaxLifecycle()
إلىCREATED
تعمل الآن بشكل صحيح على تشغيل تأثيرات الخروج. (b/165822335) - لم تعُد إزالة جزء منفصل لم تتم إضافته إلى الحزمة الخلفية تؤدي إلى تسرُّب الذاكرة. من إنتاج Nicklas Ansman Giertz (b/166489383)
- ستتضمّن الأجزاء النشطة دائمًا
FragmentManager
غير فارغة، وسيتم دائمًا اعتبار الأجزاء التي تحتوي علىFragmentManager
غير فارغة. (aosp/1422346) - تستخدم الآن التأثيرات التلقائية للمقاطع،
TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
، الرمزAnimator
بدلاً منAnimation
. (b/166155034)
إصلاح الأخطاء الجديدة في "مدير الولاية"
- تستعيد الأجزاء الآن بشكل صحيح حالة التركيز على العرض من قبل بدء الحركة مباشرةً. (Icc256)
- تُكمل الآن الأجزاء التي تحتوي على انتقال عنصر مشترك فقط تأثيراتها الخاصة بشكل صحيح، ما يعني أنها تنتقل بالفعل إلى حالتها النهائية (Iaebc7، b/166658128)
- تتم الآن إزالة طرق عرض الأجزاء دائمًا من الحاوية قبل إتلافها. (Id5876)
- يُزيل مدير الولاية الآن بشكل مستمر عرض الجزء المخرج قبل إضافة العرض المُدخَل. (I41a6e)
- يراعي الآن "مدير الحالة" الجديد التغييرات الصريحة في مستوى رؤية عرض المقتطف. وهذا يعني أنّه إذا تم ضبط طريقة عرض الجزء المُدخل على
INVISIBLE
قبل بدء الحركة، سيبقى غير مرئي في الواقع. (b/164481490) - تمنح الأجزاء الآن الأولوية لـ
Animators
علىAnimations
، ما يعني أنّ أي جزء يتضمّن كلاهما سينفّذAnimator
فقط ويتجاهلAnimation
. (b/167579557) - لم يعُد "مدير الحالة" الجديد يتسبب في وميض الأجزاء عند استخدام الرسوم المتحرّكة للدخول. (b/163084315)
مشكلة معروفة
عند استخدام أداة إدارة الحالات الجديدة، إذا ضغطت على "رجوع" أثناء تطبيق تأثير خاص بدلاً من العودة إلى المقطع السابق، لن تتم إعادة إضافة المقطع القديم مطلقًا، ما يؤدي إلى ظهور شاشة فارغة. (b/167259187 وb/167092035 وb/168442830)
الإصدار 1.3.0-alpha08
19 آب (أغسطس) 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha08
وandroidx.fragment:fragment-ktx:1.3.0-alpha08
وandroidx.fragment:fragment-testing:1.3.0-alpha08
. يحتوي الإصدار 1.3.0-alpha08 على هذه المراجعات.
مدير الحالة الجديد
يتضمّن هذا الإصدار عملية إعادة هندسة كبيرة لإدارة الحالة الداخلية لـ FragmentManager
، ما يؤثر في إرسال طرق دورة الحياة والرسوم المتحركة والانتقالات وكيفية معالجة المعاملات المؤجلة. يتم تفعيل هذه الإمكانية تلقائيًا. اطّلِع على مقالتنا المنشورة في مدوّنة "المقاطع: إعادة إنشاء العناصر الداخلية" للحصول على مزيد من التفاصيل. (b/139536619، b/147749580)
- يمكن استخدام واجهة برمجة تطبيقات تجريبية في
FragmentManager.enableNewStateManager(boolean)
للتحكّم في ما إذا كان FragmentManager يستخدم مدير الحالة الجديد. (I7b6ee)
لا يتم حلّ المشاكل التالية إلا عند استخدام "مدير الحالة" الجديد:
- تم الآن إيقاف الجزء السابق من عملية
replace
بشكل صحيح قبل بدء الجزء الجديد. (b/161654580) - تمنع الأجزاء الآن ظهور عدة صور متحركة متنافسة في الأجزاء نفسها، ما يتجنّب الحالات التي يتم فيها إلغاء تأثير
Animation
لجميع تأثيراتTransition
أو تشغيلAnimator
وTransition
في جزء فردي. (b/149569323) - يتم الآن تنفيذ
enterTransition
وexitTranstion
من جميع الأجزاء التي تدخل وتخرج بدلاً من الجزء الأخير الذي يدخل والجزء الأول الذي يخرج فقط. (b/149344150) - لم تعُد الأجزاء المؤجّلة تتعذّر في الحالة
CREATED
، بل يتم نقلها إلى الحالةSTARTED
مع الأجزاء الأخرى. (b/129035555) - تم حلّ مشكلة كانت تؤدي إلى تنفيذ
FragmentManager
العمليات بترتيب غير صحيح عند خلط معاملة تم إعادة ترتيبها مؤقتًا ومعاملة لم تتم إعادة ترتيبها. (b/147297731) - لن يؤدي عرض عدة أقسام في الوقت نفسه إلى ظهور أقسام وسيطة مؤقتًا عند تأجيل الأقسام. (b/37140383)
- يعرض
FragmentManager
الآن الأجزاء الصحيحة عند استدعاءfindFragmentById()
أوfindFragmentByTag()
من داخل دالة الاستدعاءonAttachFragment()
. (b/153082833) - لم تعُد المقاطع تستدعي
onCreateView()
على المقاطع التي يتم إتلافها عند تأجيل المقطع الذي يستبدلها. (b/143915710) - تشير رسالة الخطأ التي تظهر عند محاولة دمج مثيلَي إطار العمل
Transition
وAndroidXTransition
الآن إلى المقتطف الذي يتضمّن الانتقال غير الصالح. (b/155574969)
التغييرات في السلوك
- يمكنك الآن استدعاء
launch()
فيActivityResultLauncher
في طريقةonCreate()
لدورة حياة المقتطف. (b/161464278) - يؤدي طلب الدالة
registerForActivityResult()
بعدonCreate()
الآن إلى عرض استثناء يشير إلى أنّ ذلك غير مسموح به بدلاً من تعذُّر عرض النتائج بدون تنبيه صوتي بعد تغيير الإعدادات. (b/162255449) - يستخدم
FragmentActivity
الآنOnContextAvailableListener
API التي تم تقديمها في النشاط1.2.0-alpha08
لاستعادة حالةFragmentManager
. سيتم تنفيذ أي مستمعين تمت إضافتهم إلى الفئات الفرعية منFragmentActivity
بعد هذا المستمع. (I513da)
إصلاح الأخطاء
- يتم الآن احترام
ActivityOptions
التي تم تمريرها عند استخدامstartIntentSenderForResult()
. (b/162247961)
مشكلة معروفة
- عند استخدام مدير الحالة الجديد، يؤدّي ضبط إذن الوصول مباشرةً إلى العرض الجذر للجزء بعد
onViewCreated()
وقبلonResume()
إلى إلغاء إذن الوصول الذي حدّدته من خلالFragmentManager
الذي يتحكّم في إذن الوصول إلى العرض الجذر. كحل بديل، يجب دائمًا استخدام عمليتَيhide()
وshow()
لتغيير مستوى رؤية المقتطف. (b/164481490)
الإصدار 1.3.0-alpha07
22 تموز (يوليو) 2020
تم طرح الإصدارات androidx.fragment:fragment:1.3.0-alpha07
وandroidx.fragment:fragment-ktx:1.3.0-alpha07
وandroidx.fragment:fragment-testing:1.3.0-alpha07
. يحتوي الإصدار 1.3.0-alpha07 على هذه المراجعات.
الميزات الجديدة
- يتيح
FragmentScenario
الآن ضبط حالةCREATED
أوSTARTED
أوRESUMED
مبدئية بدلاً من نقل المقتطف دائمًا إلى الحالةRESUMED
. (b/159662750) - تمت إضافة بديل لواجهة برمجة التطبيقات
FragmentScenario
فيonFragment
على شكل طريقة إضافةwithFragment
في Kotlin تتيح لك عرض قيمة. ويُرجى العِلم أنّه يعيد رمي الاستثناءات التي تمّت إثارتها في القسم المحدّد. (b/158697631)
التغييرات في السلوك
- يستخدم
FragmentScenario
الآنsetMaxLifecycle()
لتنفيذmoveToState()
، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات ويفصل حالة المقتطف عن النشاط الأساسي. (b/156527405) - إنّ
SavedStateRegistryOwner
الذي يعرضهViewTreeSavedStateRegistryOwner
مرتبط الآن بدورة حياة عرض التقسيم. ويضمن ذلك حفظ حالته واستعادتها في الوقت نفسه الذي يتم فيه عرض المقتطف. (b/158503763)
إصلاح الأخطاء
- تنتظر الأجزاء الآن حتى يتم إرفاق عرض الجزء قبل استدعاء الدالة
ViewCompat.requestApplyInsets()
، لتجنُّب الحالات التي تم فيها تجاهل الطلب الداخلي. (b/158095749) - يؤدي الآن استدعاء
clearFragmentResultListener
إلى محو مراقبclearFragmentResultListener
بشكلٍ سليم. (b/159274993)
الإصدار 1.3.0-alpha06
10 حزيران (يونيو) 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha06
وandroidx.fragment:fragment-ktx:1.3.0-alpha06
وandroidx.fragment:fragment-testing:1.3.0-alpha06
. يحتوي الإصدار 1.3.0-alpha06 على هذه المراجعات.
الميزات الجديدة
- تم إيقاف نهائيًا ميزة معاودة الاتصال
onAttachFragment()
فيFragmentActivity
وFragment
. تمت إضافةFragmentOnAttachListener
جديد لتوفير بديل أكثر مرونة، ما يسمح بتفويضonAttachFragment()
إلى مستمعين منفصلين وقابلين للاختبار، وتوفير إمكانية إضافة مستمع إلى FragmentManagers غير FragmentManager الفرعي المباشر. (I06d3d)
إصلاح الأخطاء
- تم الآن استعادة حالة عرض الأجزاء الرئيسية قبل الأجزاء الفرعية، ما يحلّ مشكلة الترتيب المرئي بعد تغيير الإعدادات عندما يعرض
DialogFragment
DialogFragment
آخرًا كجزء فرعي. (b/157195715) - تم إصلاح مشكلة عدم معالجة عملية التحقّق من الأخطاء في
UseRequireInsteadOfGet
بشكل صحيح لاستخدامات عاملَي التشغيل?.
و!!
المتسلسلة. (b/157677616)
الإصدار 1.3.0-alpha05
20 أيار (مايو) 2020
تم طرح الإصدارات androidx.fragment:fragment:1.3.0-alpha05
وandroidx.fragment:fragment-ktx:1.3.0-alpha05
وandroidx.fragment:fragment-testing:1.3.0-alpha05
. يحتوي الإصدار 1.3.0-alpha05 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة إمكانية استخدام
ViewTreeViewModelStoreOwner
من Lifecycle2.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
تستخدم الآنActivityResultRegistry
داخليًا، وبالتالي إزالة القيود المفروضة على استخدام وحدات البت السفلية (أقل من0xFFFF
) فقط لرموز الطلبات عند استخدام واجهات برمجة التطبيقات هذه. (b/155518741)
تعديلات على المستندات
- تم توسيع نطاق المستندات حول عنصرَي الإنشاء
Fragment(@LayoutRes int)
وDialogFragment(@LayoutRes int)
لتوضيح أنّه يجب استدعاؤهما من عنصر الإنشاء بدون وسيطة في الأنواع الفرعية عند استخدامFragmentFactory
التلقائي. (b/153042497)
الإصدار 1.3.0-alpha04
29 نيسان (أبريل) 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha04
وandroidx.fragment:fragment-ktx:1.3.0-alpha04
وandroidx.fragment:fragment-testing:1.3.0-alpha04
. يحتوي الإصدار 1.3.0-alpha04 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة إمكانية تمرير النتائج بين عنصرَي تنسيق "الاقتباس" من خلال واجهات برمجة تطبيقات جديدة في
FragmentManager
. يعمل هذا الإجراء مع الأجزاء الهرمية (الأصل/التابع) وDialogFragments والمقاطع في Navigation، ويضمن عدم إرسال النتائج إلى الجزء إلا عندما يكونSTARTED
على الأقل. (b/149787344)
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف واجهات برمجة التطبيقات الخاصة بالمقاطع المستهدَفة نهائيًا. لتمرير البيانات بين الأجزاء، يجب استخدام واجهات برمجة تطبيقات Fragment Result API الجديدة بدلاً من ذلك. (b/149787344)
- تم إيقاف واجهتَي برمجة التطبيقات
startActivityForResult()
/onActivityResult()
وrequestPermissions()
/onRequestPermissionsResult()
على الجزء. يُرجى استخدام واجهات برمجة تطبيقات نتائج الأنشطة. (aosp/1290887) - تغيير جذري من النشاط
1.2.0-alpha04
: تمت إعادة تسمية الطريقةprepareCall()
إلىregisterForActivityResult()
. (aosp/1278717)
إصلاح الأخطاء
- يتم الآن إيقاف
getViewLifecycleOwner()
للجزء قبل استدعاءonSaveInstanceState()
، ما يعكس سلوك دورة حياة الجزء. (b/154645875) - يؤدي استدعاء
setMenuVisibility(false)
على جزء الآن إلى تغيير مستوى رؤية القوائم التي توفرها الأجزاء الفرعية بشكل صحيح. (b/153593580) - تمّ إصلاح
illegalStateException
عند إضافة جزء إلى التسلسل الهرمي لعرضDialogFragment
باستخدامFragmentContainerView
. (b/154366601) - لم يعُد يتم تعطُّل طريقة
getDefaultViewModelProviderFactory()
في الأجزاء عند استضافة الأجزاء خارج نشاط. (b/153762914)
الإصدار 1.3.0-alpha03
1 نيسان (أبريل) 2020
تم طرح الإصدارات androidx.fragment:fragment:1.3.0-alpha03
وandroidx.fragment:fragment-ktx:1.3.0-alpha03
وandroidx.fragment:fragment-testing:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أصبحت طرق
prepareCall
فيFragment
هيfinal
. (b/152439361)
إصلاح الأخطاء
- تم إصلاح الانحدار الذي تم تقديمه في القسم
1.3.0-alpha02
عند استخدامBottomSheetDialogFragment
. (b/151652127، aosp/1263328، aosp/1265163) - تم إصلاح عطل عند استخدام
prepareCall
من مقتطف بعد تغيير الإعدادات. (b/152137004) - تم إصلاح مشكلة تجاهل العناصر المشتركة وعمليات النقل إلى الخروج عند استخدام
setTargetFragment()
. (b/152023196) - من القسم
1.2.4
: تم تعديل قواعد ProGuard الخاصة بالقسم للسماح بتشوييش الأقسام المحفوظة. (b/151605338) - من الفقرة
1.2.4
: تم إيقاف قاعدة Lint الخاصة بـFragmentLiveDataObserve
في فئاتDialogFragment
لأنّ دورة حياتها ودورة حياة العرض تكونان متزامنتَين دائمًا، ما يجعل من الآمن استخدامthis
أوviewLifecycleOwner
عند استدعاءobserve
. (b/151765086)
تغييرات في التبعيات
- تعتمد الأجزاء على النشاط
1.2.0-alpha03
، الذي تم إدخال تحسينات ملحوظة على واجهة برمجة تطبيقات نتائج النشاط التي تم تقديمها في النشاط1.2.0-alpha02
.
الإصدار 1.3.0-alpha02
18 آذار (مارس) 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha02
وandroidx.fragment:fragment-ktx:1.3.0-alpha02
وandroidx.fragment:fragment-testing:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة دعم لواجهة برمجة تطبيقات
ActivityResultRegistry
التي تم تقديمها في النشاط1.2.0-alpha02
للتعامل مع مسارات التدفّقstartActivityForResult()
+onActivityResult()
وrequestPermissions()
+onRequestPermissionsResult()
بدون إلغاء الطرق في الجزء، بالإضافة إلى توفير عناصر الجذب لاختبار هذه المسارات. يمكنك الاطّلاع على النسخة المعدّلة الحصول على نتيجة من نشاط. (b/125158199)
تغييرات واجهة برمجة التطبيقات
- يوفّر
DialogFragment
الآن مُنشئًا يأخذ@LayoutRes
يشير إلى التنسيق الذي يجب أن يملأonCreateView()
بشكلٍ تلقائي. (b/150327080) - تم إيقاف الطريقة
onActivityCreated()
نهائيًا. يجب تنفيذ الرمز الذي يؤثر في عرض الجزء فيonViewCreated()
(وهو ما يتم طلبه مباشرةً قبلonActivityCreated()
) ويجب أن يكون رمز الإعداد الآخر علىonCreate()
. لتلقّي مكالمة تلقائية عند اكتمالonCreate()
النشاط تحديدًا، يجب تسجيلLifeCycleObserver
فيLifecycle
النشاط فيonAttach()
وإزالته بعد تلقّي المكالمة التلقائية منonCreate()
. (b/144309266)
إصلاح الأخطاء
- من الفقرة
1.2.3
: تم إصلاح خطأ فيDialogFragment
كان يتسبب في حدوثStackOverflowError
عند استدعاءgetLayoutInflater()
من داخلonCreateDialog()
. (b/117894767، aosp/1258664) - من Fragment
1.2.3
: تم تقليل نطاق قواعد ProGuard المضمنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدمة. (b/149665169) - من الفقرة
1.2.3
: تم إصلاح النتائج الإيجابية الزائفة في عملية التحقّق من Lint فيUseRequireInsteadOfGet
عند استخدام اسم متغيّر محلي يحجب اسم سمة Kotlin. (b/149891163) - من الفقرة
1.2.3
: لم يعُدFragmentContainerView
يُعرِض خطأUnsupportedOperationException
لاستخدامه طريقة الإنشاء غير الصحيحة في معاينة التنسيق. (b/149707833)
المشاكل المعروفة
- لم يعُد
BottomSheetDialogFragment
يضع مربّع الحوار الخاص به على الشاشة بشكل صحيح. (b/151652127)
الإصدار 1.3.0-alpha01
4 آذار (مارس) 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha01
وandroidx.fragment:fragment-ktx:1.3.0-alpha01
وandroidx.fragment:fragment-testing:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة دعم لواجهة برمجة التطبيقات
ViewTreeLifecycleOwner.get(View)
التي تمت إضافتها في Lifecycle2.3.0-alpha01
بحيث تعرضviewLifecycleOwner
للعنصر كLifecycleOwner
لأي مشاهدات تعرضهاonCreateView()
. (aosp/1182955)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف طريقة
setRetainInstance()
بشأن الأجزاء نهائيًا. مع طرح ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة والمقاطع والرسوم البيانية للتنقّل. ويتيح ذلك للمطوّرين استخدام جزء عادي من البيانات لا يتم الاحتفاظ به والاحتفاظ بالحالة المحدّدة التي يريدون الاحتفاظ بها بشكل منفصل، وتجنُّب مصدر شائع لتسريبات المستخدمين، مع الحفاظ على السمات المفيدة لعملية إنشاء واحدة وإتلاف حالة الاحتفاظ بالبيانات (وتحديداً إنشاءViewModel
واستدعاءonCleared()
الذي يتلقّاه). (b/143911815) - مع إصدار ViewPager2
1.0.0
، تم إيقاف فئةFragmentPagerAdapter
وفئةFragmentStatePagerAdapter
للتفاعل معViewPager
نهائيًا. راجِع مقالة نقل البيانات من ViewPager إلى ViewPager2. (b/145132715)
إصلاح الأخطاء
- تحتفظ قواعد ProGuard للأجزاء الآن بشكل صحيح بدوال الإنشاء التلقائية
Fragment
التي يتم استخدامها بدلاً من جميع الفئاتFragment
التي تؤدي إلى إصلاح الانحدار الذي حدث في التصنيف1.2.1
. (b/149665169 - لم تعُد قواعد Lint في
require___()
التي تمت إضافتها في الفقرة1.2.2
إيجابية خاطئة في المتغيّرات المحلية التي تتشارك الاسم نفسه مع أسماء سمات Kotlin التي تم حجبها (أيview
). (b/149891163) - لم يعُد
FragmentContainerView
يعرض خطأUnsupportedOperationException
عند استخدام ميزة معاينة التنسيق في "استوديو Android". (b/149707833) - تم إصلاح مشكلة عدم إعادة إنشاء الأجزاء المحتفظ بها والتي تمت إضافتها بعد حفظ الحالة باستمرار ثم إتلافها بعد كل تغيير في الإعدادات. (b/145832397)
الإصدار 1.2.5
الإصدار 1.2.5
10 حزيران (يونيو) 2020
تم إصدار androidx.fragment:fragment:1.2.5
وandroidx.fragment:fragment-ktx:1.2.5
وandroidx.fragment:fragment-testing:1.2.5
. يحتوي الإصدار 1.2.5 على عمليات الالتزام هذه.
إصلاح الأخطاء
- يتم الآن إيقاف
getViewLifecycleOwner()
للجزء قبل استدعاءonSaveInstanceState()
، ما ينسخ سلوك دورة حياة الجزء. تم إصدار هذا القسم سابقًا في القسم1.3.0-alpha04
. (b/154645875) - يؤدي استدعاء
setMenuVisibility(false)
على جزء الآن إلى تغيير مستوى رؤية القوائم التي توفرها الأجزاء الفرعية بشكل صحيح. تم إصدار ذلك سابقًا في الجزء1.3.0-alpha04
. (b/153593580)
الإصدار 1.2.4
الإصدار 1.2.4
1 نيسان (أبريل) 2020
تم إصدار androidx.fragment:fragment:1.2.4
وandroidx.fragment:fragment-ktx:1.2.4
وandroidx.fragment:fragment-testing:1.2.4
. يحتوي الإصدار 1.2.4 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم تعديل قواعد ProGuard الخاصة بالمقاطع للسماح بتشوييش المقاطع المحفوظة. (b/151605338)
- تم إيقاف قاعدة أداة Lint
FragmentLiveDataObserve
في صفوفDialogFragment
حيث تتم دائمًا مزامنة مراحل نشاطها والعرض، ما يجعل استخدامthis
أوviewLifecycleOwner
آمنًا عند الاتصال بـobserve
. (b/151765086)
الإصدار 1.2.3
الإصدار 1.2.3
18 آذار (مارس) 2020
تم إصدار androidx.fragment:fragment:1.2.3
وandroidx.fragment:fragment-ktx:1.2.3
وandroidx.fragment:fragment-testing:1.2.3
. يحتوي الإصدار 1.2.3 على عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح خلل في
DialogFragment
كان يتسبب في حدوثStackOverflowError
عند الاتصال بـgetLayoutInflater()
من داخلonCreateDialog()
. (b/117894767، aosp/1258665) - تم تقليل نطاق قواعد ProGuard المضمنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدمة. (b/149665169)
- تم إصلاح النتائج الموجبة الخاطئة في فحص Lint في
UseRequireInsteadOfGet
عند استخدام اسم متغيّر محلي ظلّ على اسم السمة Kotlin. (b/149891163) - لم يعُد
FragmentContainerView
يُعرِض خطأUnsupportedOperationException
عند استخدام طريقة الإنشاء غير الصحيحة في معاينة التنسيق. (b/149707833)
الإصدار 1.2.2
الإصدار 1.2.2
19 شباط (فبراير) 2020
تم إصدار androidx.fragment:fragment:1.2.2
وandroidx.fragment:fragment-ktx:1.2.2
وandroidx.fragment:fragment-testing:1.2.2
. يحتوي الإصدار 1.2.2 على عمليات الربط هذه.
عمليات التحقّق الجديدة من Lint
- تقترح أداة Lint استخدام
viewLifecycleOwner
باعتبارهLifecycleOwner
للاتصال بـOnBackPressedDispatcher
فيonCreateView()
وonViewCreated()
وonActivityCreated()
. (b/142117657) - تمت إضافة فحص Lint جديد يؤكّد استخدام
debugImplementation
الصحيح عند استخدام عنصرfragment-testing
. (b/141500106) - تقترح الآن واجهة برمجة تطبيقات "المقاطع" استخدام طرق
require___()
المرتبطة لعرض رسائل خطأ أكثر وصفًا بدلاً منcheckNotNull(get___())
أوrequireNonNull(get___())
أوget___()!!
لجميع واجهات برمجة تطبيقات "المقاطع" التي تتضمّن مكافئًا لكل منget
وrequire
. (aosp/1202883)
إصلاح الأخطاء
- تم إصلاح ملفات ProGuard الخاصة بالشرائح لتجنُّب تحذيرات R8 (b/148963981)
- تم تحسين عملية التحقّق الحالية من Lint التي تقترح استخدام
viewLifecycleOwner
عند استخدامobserve
للتعامل أيضًا مع إصدار طريقة إضافةlivedata-ktx
منobserve
. (b/148996309) - تم إصلاح التنسيق في العديد من عمليات التحقّق من Lint (aosp/1157012)
المساهمات الخارجية
- نشكر "زاك سفيرز" على المساهمة في فحصات
require___()
Lint نيابةً عن Slack. (aosp/1202883)
الإصدار 1.2.1
الإصدار 1.2.1
5 شباط (فبراير) 2020
تم إصدار androidx.fragment:fragment:1.2.1
وandroidx.fragment:fragment-ktx:1.2.1
وandroidx.fragment:fragment-testing:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الربط هذه.
إصلاح الأخطاء
- إنّ الشظايا التي تمت إضافتها من خلال الطريقتَين
add
وreplace
اللتين تأخذان مثيلClass
(أو الإصدارات المعدَّلة من Kotlin) تحتفظ الآن بوظيفتها التلقائية لإنشاء العناصر من خلال أداة ProGuard. (b/148181315) - لم يعُد
FragmentStatePagerAdapter
وFragmentPagerAdapter
يسجّلان الاستثناءات منFragmentManager
عند تشغيلfinishUpdate()
. (aosp/1208711) - تم إصلاح مشكلة عدم توافق
FragmentManager.findFragment()
مع الأجزاء التي تمت إضافتها باستخدام العلامة<fragment>
. (b/147784323) - إنّ الأجزاء التي تم تضخيمها باستخدام علامة
<fragment>
تتلقّى الآن دائمًا طلبًا للانتقال إلىonInflate()
قبلonCreate()
عند عرضها في التنسيق. (aosp/1215856) - لم يعُد استدعاء
toString()
على مثيلFragmentManager
يتسبب في حدوثNullPointerException
عندما يكون النشاط قد تم إغلاقه. (b/148189412)
التغييرات في التبعية
- تعتمد الآن الأجزاء
1.2.1
على Lifecycle ViewModel SavedState2.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
.- دمج SavedState في Lifecycle ViewModel: أصبح
SavedStateViewModelFactory
هو المصنع التلقائي المستخدَم عند استخدامby viewModels()
أوby activityViewModels()
أوViewModelProvider
أوViewModelProviders.of()
مع جزء. - عمليات تحقّق جديدة من الأخطاء البرمجية: تمت إضافة عملية تحقّق جديدة من الأخطاء البرمجية تضمن استخدام
getViewLifecycleOwner()
عند رصدLiveData
منonCreateView()
أوonViewCreated()
أوonActivityCreated()
. - إيقاف
getFragmentManager()
نهائيًا: تم إيقاف الطريقتَينgetFragmentManager()
وrequireFragmentManager()
نهائيًا في Fragment واستبدالهما بطريقةgetParentFragmentManager()
واحدة، والتي تُرجعFragmentManager
غير الصفري الذي تمت إضافة Fragment إليه (يمكنك استخدامisAdded()
لتحديد ما إذا كان من الآمن الاتصال). - إيقاف استخدام
FragmentManager.enableDebugLogging()
نهائيًا: تم إيقاف استخدام الطريقة الثابتةFragmentManager.enableDebugLogging
نهائيًا. يراعي FragmentManager الآنLog.isLoggable()
للعلامةFragmentManager
، ما يتيح لك تفعيل تسجيلDEBUG
أوVERBOSE
بدون إعادة تجميع تطبيقك.
المشاكل المعروفة
- لا يحتفظ ProGuard تلقائيًا بالأجزاء المُشار إليها إلا من خلال السمة
class
أوandroid:name
علىFragmentContainerView
، ما يتطلب إضافة قاعدة الاحتفاظ يدويًا لكل فئة جزء. (b/142601969) - عند إضافة
NavHostFragment
باستخدامclass
أوandroid:name
في ملف XML معFragmentContainerView
، لا يمكنك استخدامfindNavController()
فيonCreate()
من نشاطك. (b/142847973)
الإصدار 1.2.0-rc05
8 كانون الثاني (يناير) 2020
تم إصدار androidx.fragment:fragment:1.2.0-rc05
وandroidx.fragment:fragment-ktx:1.2.0-rc05
وandroidx.fragment:fragment-testing:1.2.0-rc05
. يحتوي الإصدار 1.2.0-rc05 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح الانحدار في الجزء
1.2.0-rc04
عند استخدام العلامة<fragment>
الذي تسبَّب في استدعاءonViewCreated()
بشكل غير صحيح أثناء إتلاف النشاط. (b/146290333) - يتم الآن محو الأجزاء التي تمت إضافتها باستخدام العلامة
<fragment>
بشكلٍ سليم حتى لو كانت في التنسيق الأفقي فقط (أي في التنسيق الأفقي فقط). نتيجةً لذلك، يتم الآن نقل هذه الأجزاء بشكل صحيح إلىCREATED
حتى في حال عدم تضمينها في التنسيق، بدلاً من إنشاء مثيل لها ولكن بدون الانتقال من خلال أي طرق دورة حياة. (b/145769287)
الإصدار 1.2.0-rc04
18 كانون الأول (ديسمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc04
وandroidx.fragment:fragment-ktx:1.2.0-rc04
وandroidx.fragment:fragment-testing:1.2.0-rc04
. يحتوي الإصدار 1.2.0-rc04 على هذه المراجعات.
إصلاح الأخطاء
- تم تعديل الصور المتحركة في
TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
لتجنُّب حدوث مشاكل مرئية. (b/145468417)
الإصدار 1.2.0-rc03
4 كانون الأول (ديسمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc03
وandroidx.fragment:fragment-ktx:1.2.0-rc03
وandroidx.fragment:fragment-testing:1.2.0-rc03
. يحتوي الإصدار 1.2.0-rc03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح تغيير سلوك غير مقصود حيث يستمر عرض الأجزاء التي تمت إزالتها بحلول
findFragmentById()
/findFragmentByTag()
أثناء تشغيل الصور المتحركة/عمليات الانتقال عند الخروج. (b/143982969، aosp/1167585) - يتم الآن إيقاف الأجزاء الفرعية الخاصة بالطفل بشكل صحيح قبل أن يطلب الوالدان ذلك عندما يطلب النشاط الذي يحتوي عليها
onSaveInstanceState()
. (b/144380645) - تم حلّ مشكلة وضع علامة
INVISIBLE
بشكل غير صحيح على "المشاهدات" بعد عرض "مقتطف" مخفي. (b/70793925) - تتعامل عمليات نقل العناصر المشتركة في أجزاء من معالجة طرق العرض التي تم تدويرها وتغيير حجمها وما إلى ذلك. (b/142835261)
تعديلات على المستندات
- توضيح مستندات الإيقاف النهائي في
setUserVisibleHint()
(b/143897055) - تم تحسين المستندات حول
setFragmentFactory()
وgetFragmentFactory()
للإشارة بشكل أفضل إلى أنّ ضبطFragmentFactory
سيؤثر أيضًا في FragmentManagers الفرعية. (aosp/1170095)
تغييرات التبعية
- تعتمد الأجزاء الآن على Lifecycle
2.2.0-rc03
وLifecycle ViewModel SavedState1.0.0-rc03
وActivity1.1.0-rc03
.
الإصدار 1.2.0-rc02
7 تشرين الثاني (نوفمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc02
وandroidx.fragment:fragment-ktx:1.2.0-rc02
وandroidx.fragment:fragment-testing:1.2.0-rc02
. يحتوي الإصدار 1.2.0-rc02 على هذه المراجعات.
إصلاح الأخطاء
- عند استخدام لغة Kotlin، يستخدم LintFix الآن بنية الوصول إلى السمة
viewLifecycleOwner
في Kotlin بدلاً منgetViewLifecycleOwner()
عند استخدامgetViewLifecycleOwner()
لمراقبةLiveData
منonCreateView()
أوonViewCreated()
أوonActivityCreated()
(تم تقديمه في القسم1.2.0-rc01
). (aosp/1143821)
الإصدار 1.2.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم طرح الإصدارات androidx.fragment:fragment:1.2.0-rc01
وandroidx.fragment:fragment-ktx:1.2.0-rc01
وandroidx.fragment:fragment-testing:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.
الميزات الجديدة
- تتيح العلامة
FragmentContainerView
الآن استخدام السمةclass
بالإضافة إلىandroid:name
، ما يعكس وظيفة علامة<fragment>
. (b/142722242) - تمت إضافة فحص Lint جديد يضمن استخدام
getViewLifecycleOwner()
عند مراقبةLiveData
منonCreateView()
أوonViewCreated()
أوonActivityCreated()
. (b/137122478)
إصلاح الأخطاء
- تضمن الآن وظيفتا الاستدعاء
onDismiss
وonCancel
فيDialogFragment
أنّ القيمةDialogInterface
التي تم تمريرها إليهما ليست فارغة وأنّgetDialog()
تعرض قيمة غير فارغة عند تنفيذها. (b/141974033) - يضيف
FragmentContainerView
الآن الجزء المحدّد منclass
أوandroid:name
كجزء من التضخم، ما يضمن عملfindFragmentById()
وfindFragmentByTag()
على الفور بعد ذلك. (b/142520327) - تم إصلاح
IllegalStateException
فيFragmentContainerView
بسبب حفظ الحالة. (b/142580713) - تم إصلاح
UnsupportedOperationException
فيFragmentContainerView
عند تشويش الفئةFragmentContainerView
. (b/142657034)
المشاكل المعروفة
- لا يحتفظ ProGuard تلقائيًا بالمقاطع التي تتم الإشارة إليها فقط من خلال سمة
class
أوandroid:name
فيFragmentContainerView
، ما يتطلّب منك إضافة قاعدة الاحتفاظ يدويًا لكل فئة من فئات المقاطع. لقد أوقفنا قاعدة Lint التي تقترح الانتقال إلىFragmentContainerView
إلى أن يتم حلّ هذه المشكلة من خلالaapt2
. (b/142601969)
الإصدار 1.2.0-beta02
11 تشرين الأول (أكتوبر) 2019
تم طرح الإصدارات androidx.fragment:fragment:1.2.0-beta02
وandroidx.fragment:fragment-ktx:1.2.0-beta02
وandroidx.fragment:fragment-testing:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على هذه المراجعات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم حصول
onInflate()
للجزء على السمات المناسبة منFragmentContainerView
، ما أدى إلى أعطال مثلNavHostFragment
. (b/142421837)
الإصدار 1.2.0-beta01
9 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-beta01
وandroidx.fragment:fragment-ktx:1.2.0-beta01
وandroidx.fragment:fragment-testing:1.2.0-beta01
. يحتوي الإصدار 1.2.0-beta01 على هذه المراجعات.
الميزات الجديدة
- توفّر
FragmentContainerView
إمكانية إضافة مقتطف أولي مع إمكانية إضافية لسمات 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
الآن على AndroidX Test1.2.0
، ما يحلّ مشكلة عدم التوافق مع أحدث إصدار من Espresso 3.2.0. (b/139100149) - تمت إزالة استخدام
Log.w
في FragmentManager. (aosp/1126468)
المشاكل المعروفة
- لا تتلقّى سمات
onInflate()
في المقتطف سمات صحيحة منFragmentContainerView
، ما يؤدي إلى حدوث أخطاء مثلNavHostFragment
. (b/142421837)
الإصدار 1.2.0-alpha04
18 أيلول (سبتمبر) 2019
تم طرح الإصدارات androidx.fragment:fragment:1.2.0-alpha04
وandroidx.fragment-ktx:example:1.2.0-alpha04
وandroidx.fragment:fragment-testing:1.2.0-alpha04
. يحتوي الإصدار 1.2.0-alpha04 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف الطريقتَين
getFragmentManager()
وrequireFragmentManager()
علىFragment
نهائيًا واستبدالهما بطريقةgetParentFragmentManager()
واحدة، ما يؤدي إلى عرض السمةFragmentManager
غير الفارغة التي تمت إضافة الجزء إليها (يمكنك استخدامisAdded()
لتحديد ما إذا كان الاتصال آمنًا). (b/140574496) - تم إيقاف طريقة
FragmentManager.enableDebugLogging
الثابتة نهائيًا. يراعي FragmentManager الآنLog.isLoggable()
للعلامةFragmentManager
، ما يتيح لك تفعيل تسجيلDEBUG
أوVERBOSE
بدون إعادة تجميع تطبيقك. (aosp/1116591)
إصلاح الأخطاء
- يتم الآن إتلاف الأجزاء بشكل صحيح أثناء تشغيل الرسوم المتحركة للخروج على الأجزاء الأخرى. (b/140574199)
- تم إصلاح مشكلة كانت تؤدي إلى استدعاء
Activity.findViewById()
من خلال "المقاطع"، في حين أنّها لم تكن تستدعيه من قبل. (aosp/1116431)
الإصدار 1.2.0-alpha03
5 أيلول (سبتمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-alpha03
وandroidx.fragment:fragment-ktx:1.2.0-alpha03
وandroidx.fragment:fragment-testing:1.2.0-alpha03
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تغيّر اسم
FragmentContainerView
ليصبح الآنfinal
. (b/140133091)
إصلاح الأخطاء
- يعكس
FragmentContainerView
الآن بشكلٍ صحيح ترتيب الرسم عند إزالة الأجزاء من الحزمة الخلفية. (b/139104187) - تم إصلاح مشكلة ظهور صورة متحركة غير صحيحة عند عرض جزء وإضافة جزء جديد في الوقت نفسه. (b/111659726)
- تنتظر الأجزاء الآن انتهاء الانتقالات (بالإضافة إلى الصور المتحركة، التي تم إصلاحها في القسم
1.2.0-alpha02
) قبل إرسالonDestroyView()
. (b/138741697)
الإصدار 1.2.0-alpha02
7 آب (أغسطس) 2019
تم إصدار androidx.fragment:fragment:1.2.0-alpha02
وandroidx.fragment:fragment-ktx:1.2.0-alpha02
وandroidx.fragment:fragment-testing:11.2.0-alpha02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
الميزات الجديدة
- أصبح
SavedStateViewModelFactory
الآن المصنع التلقائي المستخدَم عند استخدامby viewModels()
أوby activityViewModels()
أو أداة إنشاءViewModelProvider
أوViewModelProviders.of()
معFragment
. (b/135716331) - تم تعديل الصور المتحرّكة التلقائية عند استخدام
TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
معsetTransition
علىFragmentTransaction
لتتطابق مع الصور المتحرّكة المستخدَمة في الأنشطة على أجهزة Android 10. (aosp/1012812، aosp/1014730)
تغييرات واجهة برمجة التطبيقات
- تقديم
FragmentContainerView
كحاوية يُنصح بها بشدة للّقطات المُضافة ديناميكيًا، بدلاً من استخدامFrameLayout
وما إلى ذلك، لأنّها تُصلح مشاكل ترتيب الرسوم المتحرّكة في المستوى z وعمليات إرسال مربّعات النوافذ المُدمجة إلى اللقطات. (b/37036000 وaosp/985243 وb/136494650) - تمت إضافة طريقة
FragmentManager.findFragment(View)
ثابتة لاسترداد المقتطف المُضمّن من عرض تم تضخيمه بواسطة مقتطف. تتوفّر أيضًا إضافة Kotlin فيfragment-ktx
. (aosp/1090757) - تمت إضافة وظائف تحميل زائدة جديدة لـ
add()
وreplace()
فيFragmentTransaction
التي تأخذClass<? extends Fragment>
وBundle
اختياريًا من الوسيطات. تستخدِم هذه الطرقFragmentFactory
لإنشاء مثيل للّقطة التي تريد إضافتها. تمت أيضًا إضافة إضافة Kotlin التي تستخدم أنواعًا محدّدة (أيfragmentTransaction.replace<YourFragment>(R.id.container)
) إلىfragment-ktx
. (b/126124987) - تمت إضافة
@MainThread
تعليقات توضيحية إلىFragment
استدعاءات وظائف التشغيل/الإيقاف. (b/127272564) - تم إيقاف واجهات برمجة التطبيقات ذات الصلة بعناوين التنقل في
FragmentTransaction
وFragmentManager.BackStackEntry
نهائيًا. (b/138252944) - تم إيقاف طريقة
setTransitionStyle
علىFragmentTransaction
نهائيًا. (aosp/1011537) - لم تعُد العديد من الطرق في
FragmentManager
abstract
. يظلّFragmentManager
نفسهabstract
ويجب عدم إنشاؤه أو تمديده مباشرةً، ويجب الاستمرار في الحصول على نسخة حالية فقط منgetSupportFragmentManager()
أوgetChildFragmentManager()
أو غير ذلك.
إصلاح الأخطاء
- من القسم
1.1.0-rc04
: تم الآن إزالة الأجزاء التي تلغي عمليات النقل المؤجلة على "الأجزاء" بشكل صحيح. (b/138251858) - من الفقرة
1.1.0-rc03
: تم إصلاح مشكلة تؤدي إلى عدم إلغاء المهل السابقة عند استدعاءpostponeEnterTransition()
مع مهلة أكثر من مرة. (b/137797118) - من الفقرة
1.1.0-rc02
: تم إصلاح عطل فيFragmentPagerAdapter
وFragmentStatePagerAdapter
عند إزالة العنصر الحالي. (b/137209870) - تنتظر الأجزاء الآن انتهاء الصور المتحركة قبل إرسال
onDestroyView()
. (b/136110528) - يتم الآن التعامل بشكل صحيح مع الرسوم المتحرّكة للمقاطع من المقاطع الفرعية وسلالات تلك المقاطع عند إضافة رسوم متحركة إلى المقطع الرئيسي. (b/116675313)
- تم إصلاح
NullPointerException
عند استخدام عمليات انتقال العناصر المشتركة ودمج عملية الإضافة والظهور. (b/120507394) - تمت إضافة حل بديل إلى قيم
IllegalStateException
عند استخدام الترميزَينFragmentPagerAdapter
وFragmentStatePagerAdapter
في اختبارات Robolectric. (b/137201343)
الإصدار 1.2.0-alpha01
2 تموز (يوليو) 2019
تم إصدار androidx.fragment:fragment:1.2.0-alpha01
وandroidx.fragment:fragment-ktx:1.2.0-alpha01
وandroidx.fragment:fragment-testing:1.2.0-alpha01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
الميزات الجديدة
- يُطلِق FragmentManager الآن
requestApplyInsets()
بعد إرفاق عرض المقتطف وقبل استدعاءonViewCreated()
مباشرةً، ما يضمن أنّ عرضك يحتوي دائمًا على الأجزاء المضمّنة الصحيحة. (b/135945162)
إصلاح الأخطاء
- تم إصلاح
NullPointerException
عند عرضFragmentTransaction
استخدَمsetPrimaryNavigationFragment()
قبلreplace()
. (b/134673465)
الإصدار 1.1.0
الإصدار 1.1.0
5 أيلول (سبتمبر) 2019
تم إصدار androidx.fragment:fragment:1.1.0
وandroidx.fragment:fragment-ktx:1.1.0
وandroidx.fragment:fragment-testing:1.1.0
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
تغييرات مهمة منذ الإصدار 1.0.0
- fragment-testing: يقدّم العنصر
fragment-testing
فئةFragmentScenario
لاختبار جزء معيّن بشكل منفصل. للحصول على مزيد من التفاصيل، يمكنك الاطّلاع على مستندات اختبار أجزاء تطبيقك. - Fragmentfactor: يمكنك الآن ضبط
FragmentFactory
علىFragmentManager
لإدارة إنشاء مثيلات الأجزاء، ما يؤدي إلى إزالة المطلب الصارم المتمثل في استخدام دالة إنشاء بدون وسيطات. - مفوّضو خصائص Kotlin لـ ViewModels: يحتوي العنصر
fragment-ktx
الآن على مفوّضَين لخصائص Kotlin:by viewModels()
للوصول إلى ViewModels المرتبطة بالوحدة الفردية وby activityViewModels()
للوصول إلى ViewModels التي تقع في نطاق النشاط. - الحد الأقصى لمراحل النشاط: يمكنك الآن ضبط الحد الأقصى لحالة مراحل النشاط لجزء عن طريق استدعاء
setMaxLifecycle()
فيFragmentTransaction
. يحلّ هذا الإجراء محلّsetUserVisibleHint()
المتوقّفة نهائيًا. لدىFragmentPagerAdapter
وFragmentStatePagerAdapter
دالة إنشاء جديدة تسمح لك بالتبديل إلى السلوك الجديد. - طريقة وضع تصميم FragmentActivity: يمكن الآن للطبقات الفرعية من
FragmentActivity
استدعاء طريقة وضع تصميم اختيارية فيFragmentActivity
تأخذ معرّفR.layout
، ما يشير إلى التنسيق الذي يجب ضبطه كعرض محتوى كبديل لاستدعاءsetContentView()
فيonCreate()
. ولا يغير هذا من متطلبات أن تحتوي فئتك الفرعية على دالة إنشائية بدون وسيطات. - طريقة وضع تصميم المقتطف LayoutId: يمكن الآن للطبقات الفرعية من
Fragment
استدعاء طريقة وضع تصميم فيFragment
بشكل اختياري تأخذ معرّفR.layout
، ما يشير إلى التنسيق الذي يجب استخدامه لهذا المقتطف كبديل لإلغاءonCreateView()
. يمكن ضبط التنسيق الموسّع فيonViewCreated()
. - تأجيل مع مهلة: تمت إضافة حمل زائد جديد بقيمة
postponeEnterTransition()
يستغرق مهلة.
الإصدار 1.1.0-rc04
7 آب (أغسطس) 2019
تم طرح الإصدارات androidx.fragment:fragment:1.1.0-rc04
وandroidx.fragment:fragment-ktx:1.1.0-rc04
وandroidx.fragment:fragment-testing:1.1.0-rc04
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- يمكن الآن للمقاطع إلغاء الانتقالات المؤجّلة بشكل صحيح بعد إزالة المقاطع. (b/138251858)
الإصدار 1.1.0-rc03
19 تموز (يوليو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-rc03
وandroidx.fragment:fragment-ktx:1.1.0-rc03
وandroidx.fragment:fragment-testing:1.1.0-rc03
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إلغاء المهل السابقة عند الاتصال بـ
postponeEnterTransition()
باستخدام مهلة أكثر من مرة. (b/137797118)
الإصدار 1.1.0-rc02
17 تموز (يوليو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-rc02
وandroidx.fragment:fragment-ktx:1.1.0-rc02
وandroidx.fragment-testing:fragment:1.1.0-rc02
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل
FragmentPagerAdapter
وFragmentStatePagerAdapter
عند إزالة العنصر الحالي. (b/137209870)
الإصدار 1.1.0-rc01
2 تموز (يوليو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-rc01
وandroidx.fragment:fragment-ktx:1.1.0-rc01
وandroidx.fragment:fragment-testing:1.1.0-rc01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تعمل الأجزاء الآن على تحديث مستوى الرؤية بشكل صحيح عند استخدام عمليات
show()
أوhide()
أثناء تشغيل النقل. (b/133385058) - تم إصلاح
NullPointerException
عند تمييزFragmentTransaction
الذي تم استخدامsetPrimaryNavigationFragment()
قبلreplace()
. (b/134673465)
الإصدار 1.1.0-beta01
5 حزيران (يونيو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-beta01
وandroidx.fragment:fragment-ktx:1.1.0-beta01
وandroidx.fragment:fragment-testing:1.1.0-beta01
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تم الآن دمج عمليات استدعاء
androidx.lifecycle.Lifecycle
(المرتبطة تحديدًا بـSTARTED
وRESUMED
وPAUSED
وSTOPPED
وDESTROYED
) للأجزاء المتداخلة بشكل صحيح. (b/133497591) - إنّ نُسخ
OnBackPressedCallback
المسجَّلة فيonCreate()
للوحدة تتفوّق الآن بشكلٍ صحيح على FragmentManager الفرعي. (b/133175997) - لم تعُد الأجزاء الفرعية متحركة عند استبدال الجزء الرئيسي. (b/121017790)
- يتم الآن تجاهل الصور المتحركة للأجزاء والانتقالات عند استخدام
animateLayoutChanges="true"
، ما يؤدي إلى إصلاح المشكلة المتمثلة في عدم إتلاف "الأجزاء" بشكل صحيح. (b/116257087)
الإصدار 1.1.0-alpha09
16 أيار (مايو) 2019
تم طرح الإصدارات androidx.fragment:fragment:1.1.0-alpha09
وandroidx.fragment:fragment-ktx:1.1.0-alpha09
وandroidx.fragment:fragment-testing:1.1.0-alpha09
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تتلقّى الأجزاء الآن طلب استدعاء إلى طريقة
onPrimaryNavigationFragmentChanged(boolean)
جديدة عند تغيير جزء التنقّل الأساسي. aosp/960857
إصلاح الأخطاء
- تتم الآن إزالة عناصر القائمة التي تم تضخيمها بواسطة جزء فرعي بشكل صحيح عند إزالة الجزء الرئيسي. b/131581013
الإصدار 1.1.0-alpha08
7 أيار (مايو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha08
وandroidx.fragment:fragment-ktx:1.1.0-alpha08
وandroidx.fragment:fragment-testing:1.1.0-alpha08
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
هذا الإصدار غير متوافق مع الإصدارات 1.1.0-alpha01 إلى 1.1.0-alpha04 من "الإعدادات المفضّلة". يُرجى الترقية إلى الإصدار 1.1.0-alpha05 من Preferences عند استخدام هذا الإصدار من Fragments.
الميزات الجديدة
- تمت إضافة حمولة زائدة جديدة لـ
postponeEnterTransition()
تستغرق مهلة، وبعد ذلك سيطلب القسم تلقائيًاstartPostponedEnterTransition()
b/120803208.
التغييرات في واجهة برمجة التطبيقات
- تغيير جذري: تمت إزالة طريقة
FragmentFactory
instantiate
التي تم إيقافها نهائيًا سابقًا والتي كانت تأخذBundle
. aosp/953856 - تغيير جذري: تمت إعادة تسمية الثابتَين
RESUME_ONLY_CURRENT_FRAGMENT
وUSE_SET_USER_VISIBLE_HINT
فيFragmentPagerAdapter
وFragmentStatePagerAdapter
ليصبحاBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
وBEHAVIOR_SET_USER_VISIBLE_HINT
على التوالي. aosp/954782
إصلاح الأخطاء
- لن يتم استئناف عرض الشرائح التي تم تحديد مدة دورة حياتها من خلال
setMaxLifecycle()
قبل الوصول إلى حالتها النهائية. b/131557151 - عند استخدام
setMaxLifecycle(Lifecycle.State.CREATED)
، سيتم إتلاف عرض الأجزاء بشكل صحيح. aosp/954180
الإصدار 1.1.0-alpha07
25 نيسان (أبريل) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha07
وandroidx.fragment:fragment-ktx:1.1.0-alpha07
وandroidx.fragment:fragment-testing:1.1.0-alpha07
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
الميزات الجديدة
- يمكنك الآن ضبط الحد الأقصى لحالة "مراحل النشاط" للجزء من خلال طلب الرقم
setMaxLifecycle()
علىFragmentTransaction
. يحل ذلك محلsetUserVisibleHint()
المتوقّفة الآن. تضمFragmentPagerAdapter
وFragmentStatePagerAdapter
دالة إنشاء جديدة تسمح لك بالتبديل إلى السلوك الجديد. (b/129780800)
تغييرات واجهة برمجة التطبيقات
- لا يمكن الآن طلب
moveToState(STARTED)
علىFragmentScenario
إلا على الأجهزة التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. (b/129880016)
التغييرات في السلوك
- نتيجةً لذلك (b/129907905)، لن تتلقّى الأجزاء في الحزمة الخلفية إشعارًا بإعادة الاتصال بـ
onCreateView()
عند إعادة إنشاء نشاط الاستضافة. لن يتمّ الآن استدعاءonCreateView()
إلا عندما يصبح المقتطف مرئيًا (أي عند إزالة الحزمة الخلفية).
إصلاح الأخطاء
- تم إصلاح مشكلة عند استخدام علامة
<fragment>
في ملف XML وعنصر الإنشاءcontentLayoutId
لعنصرFragmentActivity
أوAppCompatActivity
. (b/129907905) - تم تصحيح مشكلة عدم نقل الأجزاء في الحزمة الخلفية إلى
CREATED
على الأقل بعد تغيير الإعدادات، ما يؤدي إلى عدم التخلص من نماذج ViewModel والأجزاء المحفوظة للطفل بشكلٍ صحيح. (b/129593351) - تم إصلاح عطل في
restoreSaveState
ناتج عن إلغاء مزامنة الأجزاء التي تم الاحتفاظ بها بعد حفظ حالة المثيل. (b/130433793) (aosp/947824) - تم إصلاح المشاكل التي كانت تؤدي إلى عدم استدعاء
OnBackPressedCallback
المُضاف باستخدام دورة حياة المقتطف إذا كانFragmentManager
يحتوي على حزمة خلفية. اطّلِع على androidx.activity 1.0.0-alpha07 للحصول على مزيد من التفاصيل. (aosp/948209) - لم تعُد المقتطفات تفرض استخدام
LAYER_TYPE_HARDWARE
للصور المتحركة. إذا كنت بحاجة إلى رسم متحرك لطبقة الأجهزة، يُرجى ضبطه كجزء من الصور المتحركة. (b/129486478)
الإصدار 1.1.0-alpha06
3 نيسان (أبريل) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha06
وandroidx.fragment:fragment-ktx:1.1.0-alpha06
وandroidx.fragment:fragment-testing:1.1.0-alpha06
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
الميزات الجديدة
- تتضمّن الآن الاستثناءات التي يُطلقها FragmentManager اسم المقتطف في الرسالة. (b/67759402)
التغييرات في واجهة برمجة التطبيقات
- تحتوي كلّ من
Fragment
وFragmentActivity
الآن على عنصر إنشاء ثانٍ يأخذ@LayoutRes int
، ما يحلّ محل السلوك السابق لإضافة تعليقات توضيحية إلى صفتك باستخدام@ContentView
. يعمل هذا النهج في كلٍّ من وحدات التطبيق والمكتبة. (b/128352521) - تم الآن وضع علامة
@CallSuper
بشكل صحيح علىonActivityResult()
في FragmentActivity. (b/127971684) - تم إيقاف طريقة
instantiate
في FragmentFactory التي تأخذ وسيطة Bundle نهائيًا، ويجب أن تستخدم التطبيقات طريقةinstantiate
الجديدة التي لا تأخذ Bundle. (b/128836103) - تم الآن إضافة تعليقات توضيحية بشكل صحيح إلى طرق
FragmentScenario
باستخدام@StyleRes
. (aosp/924193) - تم إيقاف
FragmentTabHost
نهائيًا. (b/127971835) - تمت إزالة
getThemedContext()
من FragmentActivity. (aosp/934078)
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع في الإصدار 1.1.0-alpha05 كانت تؤدي إلى وميض المقتطف الوافد على الشاشة. (b/129405432)
- تم إصلاح مشكلة فقدان جزء التنقّل الأساسي بعد سلسلة من عمليات popBackStack+replace+popBackStack. (b/124332597)
- تم إصلاح مشكلة عند استخدام
@ContentView
أدوات الإنشاء في نشاطك عند استعادة حالة المقتطف. (b/127313094) - تم تصحيح منطق
setTargetFragment()
عند استبدال جزء مستهدَف حالي بجزء لم يتم إرفاقه بعد إلى FragmentManager. (aosp/932156)
الإصدار 1.1.0-alpha05
13 آذار (مارس) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha05
وandroidx.fragment:fragment-ktx:1.1.0-alpha05
وandroidx.fragment:fragment-testing:1.1.0-alpha05
. يمكن الاطّلاع هنا على القائمة الكاملة لخطط الاشتراك المضمَّنة في هذا الإصدار.
الميزات الجديدة
@ContentView
تخزين عمليات البحث عن التعليقات التوضيحية مؤقتًا الآن (b/123709449)
تغييرات السلوك
- يؤدي الآن استدعاء
remove()
وhide()
وshow()
وdetach()
وsetPrimaryNavigationFragment()
مع عنصر Fragment مرتبط بـ FragmentManager مختلف إلى ظهور خطأIllegalStateException
بدلاً من تعذُّر التنفيذ بصمت (aosp/904301).
إصلاح الأخطاء
- تم الآن وضع علامة
@CallSuper
(b/124120586) بشكل صحيح علىonNewIntent
فيFragmentActivity
- تم إصلاح مشكلة تؤدي إلى استدعاء
onDismiss()
فيDialogFragment
مرّتين عند استخدامgetDialog().dismiss()
أوgetDialog().cancel()
(b/126563750)
الإصدار 1.1.0-alpha04
7 شباط (فبراير) 2019
تم إصدار androidx.fragment:fragment 1.1.0-alpha04
وandroidx.fragment:fragment-ktx 1.1.0-alpha04
وandroidx.fragment:fragment-testing 1.1.0-alpha04
.
الميزات الجديدة
- تمت إضافة ميزة تتيح لك الإشارة إلى ملف XML للتنسيق الذي يجب توسيعه كبديل لإلغاء
@ContentView
.onCreateView()
ننصحك بعرض العمل ذي الصلة فيonViewCreated()
. (aosp/837619) - يعتمد
fragment-testing
الآن على الإصدار 1.1.0 المستقر منandroidx.test:core-ktx
(b/121209673). - يمكنك الآن استخدام
openActionBarOverflowOrOptionsMenu
معFragmentScenario
لاختبار قوائم الخيارات المستضافة في المقتطفات (b/121126668).
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
requireArguments()
تعرض@NonNull Bundle
أو تُعرِض خطأIllegalStateException
(b/121196360) - تمت إضافة ملاحظة مفادها أنّه يجب عدم إلغاء
getLifecycle()
وgetViewLifecycleOwner()
وgetViewLifecycleOwnerLiveData()
وأنّه سيتم جعلها نهائية في إصدار مستقبلي. يُرجى تقديم طلب ميزة إذا كنت حاليًا تلغي هذه الطريقة. (aosp/880714) - تمت إضافة ملاحظة مفادها أنّه يجب عدم إلغاء
getViewModelStore()
وأنّه سيتمّ جعله نهائيًا في إصدار مستقبلي. يُرجى تقديم طلب ميزة إذا كنت تتجاوز هذه الطريقة في الوقت الحالي. (aosp/880713) - تم إصلاح مشكلة في التوافق الثنائي مع الإصدارات السابقة من Fragments. (aosp/887877) (aosp/889834)
إصلاح الأخطاء
- يتم محو الأجزاء المستهدَفة بشكل صحيح عند تمرير
null
إلىsetTargetFragment()
. (aosp/849969) - تم إصلاح مشكلة عدم توفّر الأقسام المستهدَفة في بعض الأحيان في
onDestroy()
أو بعد ذلك. (b/122312935) - يتم الآن استدعاء onDismiss() في DialogFragment قبل
onDestroy()
. (aosp/874133) (aosp/890734)
الإصدار 1.1.0-alpha03
17 كانون الأول (ديسمبر) 2018
الميزات الجديدة
- ينفِّذ الجزء الآن ميزة
BundleSavedStateRegistryOwner
ويعتمد على مكتبة SaveState التي تم إصدارها حديثًا [aosp/824380] - تمت إضافة
by activityViewModels
عنصر تحكم نيابةً عن خصائص Kotlin لاسترداد نماذج ViewModel المرتبطة بالنشاط الذي يحتوي عليها [b/119050253] - تم توسيع نطاق
by viewModels
Kotlin property delegate لقبول طريقة lambda اختيارية للحصول علىViewModelStoreOwner
، ما يتيح لك تمرير Fragment الأصل أوViewModelStoreOwner
مخصّص آخر باستخدام رمز مثلval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
تغييرات واجهة برمجة التطبيقات
- تتيح لك أداة
FragmentScenario
الآن تحديد مظهر مثلTheme.AppCompat
[b/119054431]. قد يؤدي هذا التغيير إلى عطل. - تمت إضافة طريقة
requireView()
التي تعرض@NonNull View
أو تطرحIllegalStateException
[b/120241368]. - تمت إضافة طريقة
requireParentFragment()
التي تعرض@NonNull Fragment
أو تطرحIllegalStateException
[b/112103783].
إصلاح الأخطاء
- تم إصلاح IllegalStateException: تعذّر حفظ الحالة b/120814739
- إنّ الشظايا التي تتمّ استعادتها من حالة النسخة المحفوظة ستتلقّى دائمًا قيمة غير صفرية ل
Bundle
[b/119794496] - لم تعُد المقتطفات التي تمّت إزالتها تعيد استخدام عنصر
Lifecycle
في حال إعادة إضافتها [b/118880674]
الإصدار 1.1.0-alpha02
3 كانون الأول (ديسمبر) 2018
الميزات الجديدة
- تتيح لك الآن إضافات Kotlin في FragmentScenario استخدام دالة لامتناهية لإنشاء Fragment كبديل عن إدخال مثيل
FragmentFactory
. (aosp/812913)
إصلاح الأخطاء
- تم إصلاح الخطأ UnknownStateException عند استخدام أجزاء متداخلة في الحزمة الخلفية (b/119256498)
- تم إصلاح عطل عند استخدام
FragmentScenario.recreate()
معFragmentFactory
(aosp/820540) - تم إصلاح مشكلة تعذّر الوصول إلى الأجزاء المستهدفة بعد إزالة الجزء (aosp/807634)
الإصدار 1.1.0-alpha01
5 تشرين الثاني (نوفمبر) 2018
هذا هو الإصدار الأول من ملف رمز برمجي
fragment-testing
وFragmentScenario
الذي تم إنشاؤه استنادًا إلى واجهات برمجة التطبيقات
androidx.test:core. اطّلِع على مستندات اختبار المقاطع للحصول على مزيد من التفاصيل.
الميزات الجديدة
- فئة Fragmentسيناريو جديدة لاختبار الأجزاء بشكل منفصل.
- يمكنك الآن ضبط
FragmentFactory
على أيFragmentManager
للتحكّم في كيفية إنشاء نُسخ جديدة من العناصر. - تمت إضافة تفويض جديد لخاصية
by viewModels()
Kotlin لاسترداد ViewModels من جزء. - يتم الآن إلغاء أحداث الإدخال المعلَّقة (مثل النقرات) في
onStop()
للجزء.
التغييرات في واجهة برمجة التطبيقات
- توسيع نطاق التعليقات التوضيحية المتعلّقة بإمكانية العدم على مستوى سطح Fragment API
إصلاح الأخطاء
- حلّ مشكلة أدّت إلى تعذُّر عمليات المقاطع من داخل LiveData (b/77944637)
المشاكل المعروفة
- لا يمكن الوصول إلى الأجزاء المستهدفة بعد إزالة جزء من FragmentManager.
- يعتمد
fragment-testing
علىandroidx.test:core:1.0.0-beta01
بدلاً منandroidx.test:core:1.0.0
الصحيح.