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