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