الجزء
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
13 أغسطس 2025 | 1.8.9 | - | - | - |
تعريف التبعيات
لإضافة تبعية على Fragment، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Groovy
dependencies { def fragment_version = "1.8.9" // 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.9" // 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. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.8
الإصدار 1.8.9
13 أغسطس 2025
تم طرح androidx.fragment:fragment-*:1.8.9
. يحتوي الإصدار 1.8.9 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبب في عدم تحرُّك الإيماءة اللاحقة بشكلٍ صحيح عند استخدام أدوات إنشاء الرسوم المتحركة، وذلك عند إلغاء إيماءة الرجوع التوقّعية التي تؤدي إلى ظهور عملية إخفاء. (I0a400، b/384765586)
- تم إصلاح الخطأ الذي كان يؤدي إلى تعذُّر نقل الجزء العلوي إلى الحالة RESUMED عند استخدام مزيج من
setMaxLifecycle
وpopBackStack
. (I3448b، b/406127576)
الإصدار 1.8.8
4 يونيو 2025
تم طرح androidx.fragment:fragment-*:1.8.8
. يحتوي الإصدار 1.8.8 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تعطُّل
FragmentManager
عند محاولة حفظ حالة "القصاصات" التي تمت إضافتها باستخدامsetMaxLifecycle(Lifecycle.State.INITIALIZED)
. وبما أنّ هذه الأجزاء لم تمرّ مطلقًا بالخطوةonCreate()
، لم يعُد لديها أي حالة محفوظة أو تم استدعاءonSaveInstanceState()
. (I6e37a)
الإصدار 1.8.7
20 مايو 2025
تم طرح androidx.fragment:fragment-*:1.8.7
. يحتوي الإصدار 1.8.7 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم توفّر
FragmentManager
في الحالة المناسبة بعد عمليات العرض والاستبدال في الإطار نفسه، ما قد يؤدي إلى حدوث عطل بالتزامن مع إزالة العناصر من الخلفية إما من خلالpopBackStack
أو إيماءة الرجوع التوقّعية. (I50ad1) - تم إصلاح عُطل ناتج عن استخدام AndroidX Transitions والوصول إلى حالة تحاول فيها عمليات نقل سريعة ومتتالية للأجزاء إلغاء عملية نقل لم تبدأ بعد، ولا تزيل مكتبة AndroidX Transition حالة النقل بشكل صحيح. (راجِع b/414612221). (Ib5235)
الإصدار 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
يتيح إضافة أجزاء إلى التسلسل الهرمي لـ Compose من خلال اسم فئة الجزء. تتعامل هذه الفئة تلقائيًا مع حفظ حالة Fragment واستعادتها. يجب استخدام هذه الطريقة كبديل مباشر للطريقة التي تمّت التوصية بها سابقًا لاستخدامAndroidViewBinding
لتوسيع Fragment. - يتم الآن تشغيل دالة الاستدعاء
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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- من Fragment
1.7.1
: لن يتم تشغيل ميزة "الرجوع التوقّعي" الآن إلا للمعاملات التي تحتوي جميع أجزائها على Animator أو Seekable Androidx Transition. يحلّ هذا الإصدار مشكلة ظهور شاشة سوداء عند إلغاء معاملة يمكن البحث فيها جزئيًا. (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) - من Fragment
1.7.0-rc02
: تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عطل في حال إضافة عنصر مشترك غير قابل للبحث إلى معاملات تكون فيها جميع عمليات الانتقال الأخرى قابلة للبحث. سيتم الآن اعتبار المعاملة غير قابلة للبحث بشكل صحيح. (I18ccd)
الإصدار 1.8.0-alpha01
3 أبريل 2024
تم طرح androidx.fragment:fragment-*:1.8.0-alpha01
. يحتوي الإصدار 1.8.0-alpha01 على عمليات الدمج هذه.
الميزات الجديدة
- تتيح السمة الجديدة
AndroidFragment
Composable
إضافة أجزاء إلى بنية Compose الهرمية من خلال اسم فئة الجزء. تتعامل هذه الفئة تلقائيًا مع حفظ حالة Fragment واستعادتها. يمكن استخدام هذه السمة كبديل مباشر لـ AndroidViewBindingComposable
.(b/312895363, Icf841)
التغييرات في المستندات
- تم تعديل المستندات الخاصة بواجهات برمجة التطبيقات
OnBackStackChangedListener
للإشارة إلى وقت طلبها وكيفية استخدامها. (I0bfd9)
تعديل التبعية
- يعتمد الجزء الآن على أداة تثبيت الملفات الشخصية 1.3.1.
الإصدار 1.7
الإصدار 1.7.1
14 مايو 2024
تم طرح androidx.fragment:fragment-*:1.7.1
. يحتوي الإصدار 1.7.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- لن يتم تشغيل ميزة "الرجوع التوقّعي" الآن إلا للمعاملات التي تحتوي جميع أجزائها على Animator أو Seekable Androidx Transition. يحلّ هذا التحديث مشكلة ظهور شاشة فارغة عند إلغاء معاملة يمكن البحث فيها جزئيًا. (I43037، b/339169168)
الإصدار 1.7.0
1 مايو 2024
تم طرح androidx.fragment:fragment-*:1.7.0
. يحتوي الإصدار 1.7.0 على عمليات الدمج هذه.
إتاحة إيماءة "الرجوع التوقّعي"
- توفّر الآن "اللقطات" إمكانية استخدام ميزة "الرجوع التوقّعي داخل التطبيق" عند استخدام
Animator
أو عند استخدام AndroidX Transition 1.5.0. يتيح ذلك للمستخدمين استخدام إيماءة الرجوع لرؤية الجزء السابق من خلال البحث في Animator/Transition قبل اتخاذ قرار إما بتنفيذ المعاملة من خلال إكمال الإيماءة أو إلغائها.
نظام الانتقال | مورد XML | التوافق مع ميزة "إيماءة إظهار شاشة الرجوع" |
---|---|---|
Animation |
R.anim |
لا |
Animator |
R.animator |
نعم |
إطار العمل Transition |
R.transition |
لا |
AndroidX Transition مع Transition 1.4.1 أو إصدار أقدم |
R.transition |
لا |
AndroidX Transition مع Transition 1.5.0 |
R.transition |
نعم |
إذا واجهت أي مشاكل في توافق "الرجوع التوقّعي" مع "اللقطات" بعد الموافقة على استخدام إيماءة الرجوع التوقّعي، يُرجى إبلاغ فريق Fragment عن المشكلة مع تقديم نموذج مشروع يعيد إنتاج المشكلة. يمكنك إيقاف ميزة "الرجوع التوقّعي" باستخدام FragmentManager.enabledPredictiveBack(false)
في onCreate()
من "نشاطك".
توفّر FragmentManager.OnBackStackChangedListener()
الآن onBackStackChangeProgressed()
وonBackStackChangeCancelled()
لتلقّي أحداث إلغاء وإحراز تقدّم في ميزة "إيماءة إظهار شاشة الرجوع" على التوالي.
Fragment Compose Artifact
تم إنشاء أداة fragment-compose
جديدة تركّز على دعم التطبيقات التي بصدد الانتقال من بنية مستندة إلى Fragment إلى بنية مستندة إلى Compose بالكامل.
الميزة الأولى المتاحة في هذا العنصر الجديد هي طريقة إضافة content
في Fragment
تهدف إلى تسهيل استخدام Compose لواجهة مستخدم جزء فردي من خلال إنشاء ComposeView
لك وضبط ViewCompositionStrategy
الصحيح.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
الإصدار 1.7.0-rc02
17 أبريل 2024
تم طرح androidx.fragment:fragment-*:1.7.0-rc02
. يحتوي الإصدار 1.7.0-rc02 على عمليات الدمج هذه.
إصلاح الأخطاء
- تمت إضافة سجلّات لتوضيح سبب عدم إمكانية تشغيل
sharedElement
بدون أي انتقالات أخرى. (Iec48e) - تم إصلاح الخطأ الذي كان يؤدي إلى حدوث عطل في حال إضافة عنصر مشترك غير قابل للبحث إلى معاملات كانت جميع الانتقالات الأخرى فيها قابلة للبحث. سيتم الآن اعتبار المعاملة غير قابلة للبحث بشكل صحيح. (I18ccd)
الإصدار 1.7.0-rc01
3 أبريل 2024
تم طرح androidx.fragment:fragment-*:1.7.0-rc01
. يحتوي الإصدار 1.7.0-rc01 على عمليات الدمج هذه.
تعديل التبعية
- يعتمد الجزء الآن على أداة تثبيت الملفات الشخصية 1.3.1.
الإصدار 1.7.0-beta01
20 مارس 2024
تم طرح androidx.fragment:fragment-*:1.7.0-beta01
. يحتوي الإصدار 1.7.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة كتابة
FragmentHostCallback
بلغة Kotlin لكي يتطابق السماح بقيمة فارغة للنوع العام الخاص بـ Host مع السماح بقيمة فارغة لنوع القيمة المعروضة منonGetHost()
. (I40af5)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إيقاف جزء نهائيًا عند تنفيذ إيماءة "الرجوع التوقّعي" على جزء غير موجود في حاوية. سيتم الآن نقل Fragment على الفور إلى الحالة النهائية. (Ida0d9)
- تم إصلاح مشكلة في "اللقطات" حيث يؤدي إيقاف عمليات الانتقال الواردة باستخدام إيماءة "الرجوع التوقّعي" إلى إتلاف طريقة العرض التي يتم الانتقال إليها، وعرض شاشة فارغة. (Id3f22، b/319531491)
الإصدار 1.7.0-alpha10
7 فبراير 2024
تم طرح androidx.fragment:fragment-*:1.7.0-alpha10
. يتضمّن الإصدار 1.7.0-alpha10 عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة المعروفة في إصدار Fragment السابق والتي كانت تتسبّب في عرض Fragments للخطأ
NullPointerException
منhandleOnBackProgressed
إذا لم تتم إضافة أيFragmentManager.OnBackStackChangedListener
من خلالaddOnBackStackChangedListener
عند استخدام ميزة "الرجوع التوقّعي" في Fragment معAnimator
أو AndroidX Transition. (I7c835)
الإصدار 1.7.0-alpha09
24 يناير 2024
تم طرح androidx.fragment:fragment-*:1.7.0-alpha09
. يحتوي الإصدار 1.7.0-alpha09 على عمليات الإيداع هذه.
Fragment Compose Artifact
تم إنشاء أداة fragment-compose
جديدة تركّز على دعم التطبيقات التي بصدد الانتقال من بنية مستندة إلى Fragment إلى بنية مستندة إلى Compose بالكامل.
الميزة الأولى المتاحة في هذا العنصر الجديد هي طريقة إضافة content
في Fragment
تهدف إلى تسهيل استخدام Compose لواجهة مستخدم جزء فردي من خلال إنشاء ComposeView
لك وضبط ViewCompositionStrategy
الصحيح. (561cb7، b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
الميزات الجديدة
- توفّر
FragmentManager.OnBackStackChangedListener()
الآنonBackStackChangeProgressed()
وonBackStackChangeCancelled()
لتلقّي أحداث إلغاء وإحراز تقدّم في ميزة "إيماءة إظهار شاشة الرجوع" على التوالي. (214b87)
مشكلة معروفة
- عند استخدام ميزة "الرجوع التوقّعي" في Fragment مع
Animator
أو AndroidX Transition، ستعرض Fragments الخطأNullPointerException
منhandleOnBackProgressed
إذا لم تتم إضافةFragmentManager.OnBackStackChangedListener
من خلالaddOnBackStackChangedListener
. يمكنك حلّ المشكلة عن طريق إضافة مستمع يدويًا. سيتوفّر حلّ لهذه المشكلة في الإصدار التالي من Fragments.
الإصدار 1.7.0-alpha08
10 يناير 2024
تم طرح androidx.fragment:fragment-*:1.7.0-alpha08
. يحتوي الإصدار 1.7.0-alpha08 على عمليات الإيداع هذه.
إخلاء بعض المساحة
- تمت إزالة الحلّ البديل لمكتبة Transition الذي تم إصلاحه في Transition
1.5.0-alpha06
. (I04356)
الإصدار 1.7.0-alpha07
29 نوفمبر 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha07
. يحتوي الإصدار 1.7.0-alpha07 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ
NullPointerException
الناتج عن ضبط عملية انتقال عنصر مشترك وتعذُّر ضبط enter/exitTransition أيضًا. (I8472b) - من الجزء
1.6.2
: عند تضخيم جزء منFragmentContainerView
، يمكن الآن الوصول إلى حالاته، مثلFragmentManager
وHost والمعرّف، في معاودة الاتصالonInflate
. (I1e44c، b/307427423) - من Fragment
1.6.2
: عند استخدامclearBackStack
لإزالة مجموعة من الأجزاء، سيتم الآن محو أيViewModel
متداخل في Fragment عند محوViewModels
الجزء الرئيسي. (I6d83c، b/296173018)
الإصدار 1.7.0-alpha06
4 أكتوبر 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha06
. يحتوي الإصدار 1.7.0-alpha06 على عمليات الإيداع هذه.
تحديث التبعية
- تم تعديل "اللقطات" لتعتمد على واجهة برمجة التطبيقات الجديدة
animateToStart
التي تمت إضافتها في Transition1.5.0-alpha04
.
الإصدار 1.7.0-alpha05
20 سبتمبر 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha05
. يحتوي الإصدار 1.7.0-alpha05 على عمليات الدمج هذه.
الميزات الجديدة
- توفّر الآن "اللقطات" إمكانية استخدام ميزة "إيماءة إظهار شاشة الرجوع" عند استخدام "عمليات الانتقال" في Androidx. يتيح لك ذلك استخدام إيماءة الرجوع للبحث عن الجزء السابق باستخدام Androidx Transition المخصّص قبل اتّخاذ قرار بتنفيذ المعاملة أو إلغائها من خلال الإيماءة المكتملة. يجب الاعتماد على إصدار Transition
1.5.0-alpha03
لتفعيل هذه الميزة. (Ib49b4، b/285175724)
المشاكل المعروفة
- هناك حاليًا مشكلة تتمثل في أنّه بعد إلغاء إيماءة الرجوع مع انتقال مرة واحدة، ستتعذّر عملية الانتقال في المرة التالية التي تبدأ فيها إيماءة الرجوع، ما يؤدي إلى ظهور شاشة فارغة. قد يكون السبب في ذلك مشكلة في مكتبة Transition. (b/300157785). إذا ظهرت لك هذه المشكلة، يُرجى إبلاغ فريق Fragment عن المشكلة مع تضمين نموذج مشروع يعيد إنتاج المشكلة. يمكنك إيقاف ميزة "الرجوع التوقّعي" باستخدام
FragmentManager.enabledPredictiveBack(false)
فيonCreate()
من "نشاطك".
الإصدار 1.7.0-alpha04
6 سبتمبر 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha04
. يحتوي الإصدار 1.7.0-alpha04 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عند إلغاء إيماءة الرجوع التوقّعي، حيث لم تتمكّن الأجزاء من الوصول إلى حالة Lifecycle الصحيحة. (I7cffe، b/297379023)
- تم إصلاح مشكلة تراجع حيث كان يُسمح بتشغيل "الرسوم المتحركة" مع "عمليات الانتقال". (I59f36)
- تم إصلاح مشكلة عند استخدام ميزة "الرجوع التوقّعي" مع الأجزاء، حيث كانت محاولة الرجوع مرتين متتاليتين بسرعة إلى الجزء قبل الأخير في سجلّ الرجوع تؤدي إلى حدوث عُطل. (Ifa1a4)
الإصدار 1.7.0-alpha03
23 أغسطس 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في "اللقطات" عند استخدام ميزة "الرجوع التوقّعي"، حيث كان يتم تخطّي اللقطة الأولى في سجلّ الرجوع الخاص بأداة إدارة اللقطات، ويتم إنهاء "النشاط" عند استخدام ميزة "الرجوع" في النظام من خلال التنقّل باستخدام ثلاثة أزرار أو إيماءة "الرجوع التوقّعي". (I0664b، b/295231788)
الإصدار 1.7.0-alpha02
9 أغسطس 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha02
. يتضمّن الإصدار 1.7.0-alpha02 عمليات الإيداع هذه.
إصلاح الأخطاء
- عند استخدام "اللقطات" مع إيماءات "الرجوع التوقّعي" من الإصدار 34 من واجهة برمجة التطبيقات، إذا كنت تستخدم نظام انتقال لا يتيح البحث (
Animations
أوTransitions
) أو لا تستخدم أي انتقالات على الإطلاق، ستنتظر "اللقطات" الآن إلى أن تكتمل الإيماءة قبل تنفيذ إجراء الرجوع. (I8100c)
الإصدار 1.7.0-alpha01
7 يونيو 2023
تم طرح androidx.fragment:fragment-*:1.7.0-alpha01
. تم تطوير هذا الإصدار في فرع داخلي.
الميزات الجديدة
- توفّر الآن الفِقرات إمكانية استخدام ميزة "إيماءة إظهار شاشة الرجوع" التوقّعية داخل التطبيق عند استخدام
Animator
. يتيح لك ذلك استخدام إيماءة الرجوع لرؤية الجزء السابق مع أداة Animator المخصّصة قبل اتّخاذ قرار إما بتأكيد المعاملة من خلال الإيماءة المكتملة أو إلغائها. يمكنك أيضًا إيقاف هذا السلوك الجديد باستخدامenablePredictiveBack()
التجريبي وإدخالfalse
.
الإصدار 1.6
الإصدار 1.6.2
1 نوفمبر 2023
تم طرح androidx.fragment:fragment-*:1.6.2
. يتضمّن الإصدار 1.6.2 عمليات الإيداع هذه.
إصلاح الأخطاء
- عندما يتم تضخيم جزء من
FragmentContainerView
، يمكن الآن الوصول إلى حالاته، مثلFragmentManager
وHost والمعرّف، في معاودة الاتصالonInflate
. (I1e44c، b/307427423) - عند استخدام
clearBackStack
لإزالة مجموعة من الأجزاء، سيتم الآن محو أيViewModel
في Fragment متداخل عند محوViewModels
في الجزء الرئيسي. (I6d83c، b/296173018)
الإصدار 1.6.1
26 يوليو 2023
تم طرح androidx.fragment:fragment-*:1.6.1
. يحتوي الإصدار 1.6.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبّب في تخزين الحالة المحفوظة بشكل غير صحيح في ذاكرة التخزين المؤقت عند إيقاف النشاط بدون إيقافه نهائيًا، حتى بعد نقل مثيل الجزء إلى الحالة
RESUMED
. سيؤدي ذلك إلى إعادة استخدام تلك الحالة المخزّنة مؤقتًا إذا كان مثيل الجزء هذا في سجلّ الرجوع عند استخدام واجهة برمجة التطبيقات الخاصة بسجلات الرجوع المتعددة لحفظ الجزء واستعادته. (I71288، b/246289075)
تحديث التبعية
- يعتمد Fragment الآن على 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()
. - يعتمد Fragment الآن على Lifecycle
2.6.1
. - تعتمد الآن الفئة Fragment على 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) - تمت إضافة التعليق التوضيحي
@MainThread
إلى واجهات برمجة التطبيقات الخاصة بالأجزاءcommitNow()
وexecutePendingTransactions()
وpopBackStackImmediate()
، ما يعني أنّها ستعرض الآن جميعًا أخطاء في الإصدار عند عدم استدعائها من سلسلة التعليمات الرئيسية بدلاً من انتظار حدوث خطأ أثناء وقت التشغيل. (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)
إصلاح الأخطاء
- من Fragment
1.5.6
: تم إصلاح مشكلة عدم عمل استدعاءclearFragmentResultListener
داخلsetFragmentResultListener
إذا كانLifecycle
STARTED
وكان هناك نتيجة متاحة. (If7458)
تحديثات التبعيات
- يعتمد Fragment الآن على Lifecycle
2.6.1
. (586fe7) - تعتمد الآن الفئة Fragment على 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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- من Fragment
1.5.6
: تم إصلاح مشكلة كانت تؤدي إلى إبطال قائمة النشاط عند إزالة أي Fragment، سواء كان قد أضاف عناصر قائمة أم لا. (50f098, b/244336571)
الإصدار 1.6.0-alpha06
22 فبراير 2023
تم طرح androidx.fragment:fragment-*:1.6.0-alpha06
. يحتوي الإصدار 1.6.0-alpha06 على عمليات الإيداع هذه.
تغيير السلوك
- سيتم الآن تنفيذ دالة الاستدعاء الجديدة
onBackStackChangedStarted
فيFragmentManager
علىonBackStackChangedListener
قبل أن تبدأ الأجزاء في الانتقال إلى حالاتها المستهدَفة. (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)
إصلاح الأخطاء
- من Fragment
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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- من Fragment
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)
إصلاح الأخطاء
- من Fragment
1.5.1
: تم إصلاح مشكلة تراجع فيDialogFragmentCallbacksDetector
حيث كان استخدام إصدار lint المُضمَّن في الإصدار 7.4 من "مكوّن Android الإضافي" يؤدي إلى تعطُّل lint. (b/237567009)
تعديل التبعية
- من Fragment
1.5.1
: تعتمد مكتبة Fragment الآن على Lifecycle2.5.1
. (Id204c) - من Fragment
1.5.1
: تعتمد مكتبة Fragment الآن على Activity1.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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى إبطال قائمة النشاط عند إزالة أي Fragment، سواء كان قد أضاف عناصر قائمة أم لا. (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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تشغيل
Animation
/Animator
غير صحيح عند تنفيذ عمليةpopBackStack()
وعمليةreplace()
في الوقت نفسه. (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 المضمّن في الإصدار 7.4 من "مكوّن Android الإضافي في Gradle" يؤدي إلى تعطُّل Lint. (b/237567009)
تعديل التبعية
- تعتمد مكتبة Fragment الآن على Lifecycle
2.5.1
. (Id204c) - تعتمد مكتبة Fragment الآن على Activity
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
في Lifecycle2.5.0
. - دمج مربّع الحوار الخاص بالمكوّن: يستخدم
DialogFragment
الآنComponentDialog
من خلال Activity1.5.0
كمربّع الحوار التلقائي الذي تعرضهonCreateDialog()
. - إعادة تصميم Saved Instance State: بدأت الأجزاء في تغيير طريقة حفظ حالة مثيلها. هذا جهد يهدف إلى المساعدة في تحديد الحالة التي تم حفظها في الجزء ومصدر الحالة بوضوح. تشمل التغييرات الحالية ما يلي:
- يحفظ
FragmentManager
الآن حالة الآلة الافتراضية المحفوظة فيBundle
بدلاً من حفظها مباشرةً فيParcelable
مخصّص. - يتم الآن حفظ النتائج التي تم ضبطها من خلال
Fragment Result APIs
ولم يتم تسليمها بعد بشكل منفصل عن الحالة الداخلية لـFragmentManager
. - يتم الآن حفظ الحالة المرتبطة بكل جزء على حدة بشكل منفصل عن الحالة الداخلية لـ
FragmentManager
، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بمعرّفات فريدة مضمّنة في سجلّ تصحيح الأخطاءFragment
.
- يحفظ
التغييرات الأخرى
- تتيح السمة
FragmentStrictMode
الآن إمكانية تجاوز عقوبات انتهاك معيّنة في الأجزاء الخاصة التابعة لجهات خارجية من خلال استخدامallowViolation()
مع اسم الفئة. - تم إيقاف واجهات برمجة التطبيقات Fragment التي توفّر قائمة
ActionBar
لنشاطك. توفّر واجهتا برمجة التطبيقاتMenuHost
وMenuProvider
اللتان تمت إضافتهما في Activity1.4.0
مساحة مكافئة لواجهة برمجة التطبيقات يمكن اختبارها وتتضمّن مراحل النشاط، ويجب أن تستخدمها الأجزاء.
الإصدار 1.5.0-rc01
11 مايو 2022
تم إصدار androidx.fragment:fragment:1.5.0-rc01
وandroidx.fragment:fragment-ktx:1.5.0-rc01
وandroidx.fragment:fragment-testing:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على عمليات الإيداع هذه.
إعادة تصميم حالة المثيل المحفوظة
- يتم الآن حفظ الحالة المرتبطة بكل جزء على حدة بشكل منفصل عن الحالة الداخلية لـ
FragmentManager
، ما يتيح لك ربط مقدار الحالة المحفوظة المرتبطة بجزء فردي بمعرّفات فريدة متوفّرة في تسجيل بيانات تصحيح الأخطاء في الجزء. (a153e0، b/207158202)
الإصدار 1.5.0-beta01
20 أبريل 2022
تم إصدار androidx.fragment:fragment:1.5.0-beta01
وandroidx.fragment:fragment-ktx:1.5.0-beta01
وandroidx.fragment:fragment-testing:1.5.0-beta01
. يحتوي الإصدار 1.5.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- أضافت
DialogFragment
طريقةdismissNow
جديدة تستخدمcommitNow
لتحقيق التكافؤ مع الدالةshowNow
. يُرجى العِلم أنّ هذا الإجراء لن يؤدي إلى إغلاقDialog
على الفور، بل سيؤدي فقط إلى تعديل حالةFragmentManager
بشكل متزامن. (I15c36، b/72644830)
إعادة تصميم حالة المثيل المحفوظة
- يحفظ
FragmentManager
الآن حالة الآلة الافتراضية المحفوظة فيBundle
بدلاً من حفظها مباشرةً فيParcelable
مخصّص. هذه هي الخطوة الأولى نحو توفير المزيد من الشفافية بشأن ما يتم حفظه فعليًا من خلال "اللقطات". (I93807، b/207158202) - يتم الآن حفظ النتائج التي تم ضبطها من خلال واجهات برمجة التطبيقات الخاصة بنتائج الأجزاء ولم يتم تسليمها بعد بشكل منفصل عن الحالة الداخلية لـ
FragmentManager
. سيسمح ذلك بمزيد من الشفافية بشأن النتائج التي يتم حفظها كجزء من حالة مثيلك المحفوظة. (I6ea12، b/207158202)
الإصدار 1.5.0-alpha05
6 أبريل 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha05
وandroidx.fragment:fragment-ktx:1.5.0-alpha05
وandroidx.fragment:fragment-testing:1.5.0-alpha05
. يحتوي الإصدار 1.5.0-alpha05 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
setHasOptionsMenu()
الخاص بـ "Fragment
" نهائيًا. لإدارة القوائم وعناصرها، يجب استخدام واجهات برمجة التطبيقات الجديدة للقوائم بدلاً من ذلك وفقًا لملاحظات إصدار1.5.0-alpha04
Fragment. (I7b4b4، b/226438239)
الإصدار 1.5.0-alpha04
23 مارس 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha04
وandroidx.fragment:fragment-ktx:1.5.0-alpha04
وandroidx.fragment:fragment-testing:1.5.0-alpha04
. يحتوي الإصدار 1.5.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف واجهات برمجة التطبيقات Fragment التي توفّر قائمة
ActionBar
لنشاطك نهائيًا لأنّها تربط الجزء بنشاطك بشكل وثيق ولا يمكن اختبارها بشكل مستقل. توفّر واجهتا برمجة التطبيقاتMenuHost
وMenuProvider
اللتان تمت إضافتهما في Activity1.4.0-alpha01
مساحة مكافئة لواجهة برمجة التطبيقات يمكن اختبارها وتتضمّن مراحل النشاط، ويجب أن تستخدمها الأجزاء. (I50a59، I20758)
إصلاح الأخطاء
- يتيح
SavedStateViewFactory
الآن استخدامCreationExtras
حتى إذا تم إعداده باستخدامSavedStateRegistryOwner
. في حال توفير عناصر إضافية، سيتم تجاهل الوسيطات التي تمّت تهيئتها. (I6c43b، b/224844583)
الإصدار 1.5.0-alpha03
23 فبراير 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha03
وandroidx.fragment:fragment-ktx:1.5.0-alpha03
وandroidx.fragment:fragment-testing:1.5.0-alpha03
. يحتوي الإصدار 1.5.0-alpha03 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن تمرير
CreationExtras
إلى الدالتَينby viewModels()
وby activityViewModels()
. (Ibefe7، b/217601110)
التغييرات في السلوك
- يستخدم
DialogFragment
الآنComponentDialog
كحوار تلقائي يتم عرضه من خلالonCreateDialog()
. (If3784، b/217618170)
الإصدار 1.5.0-alpha02
9 فبراير 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha02
وandroidx.fragment:fragment-ktx:1.5.0-alpha02
وandroidx.fragment:fragment-testing:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- تتيح السمة
FragmentStrictMode
الآن إمكانية تجاوز عقوبات انتهاك معيّنة في الأجزاء الخاصة التابعة لجهات خارجية من خلال استخدامallowViolation()
مع اسم الفئة. (I8f678)
الإصدار 1.5.0-alpha01
26 يناير 2022
تم إصدار androidx.fragment:fragment:1.5.0-alpha01
وandroidx.fragment:fragment-ktx:1.5.0-alpha01
وandroidx.fragment:fragment-testing:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- يتكامل
Fragment
الآن مع ViewModel CreationExtras، الذي تم طرحه كجزء من Lifecycle2.5.0-alpha01
. (I3060b، b/207012585)
إصلاح الأخطاء
- من Fragment
1.4.1
: لم يعُدFragmentContainerView
يعرض استثناء حالة غير قانونية عندما تكون قيم معرّفات العرض التي تم إنشاؤها من ملف XML سالبة. (Ic185b، b/213086140) - من Fragment
1.4.1
: عند استخدام دالة lambda مخصّصةownerProducer
مع الدالة الكسولةby viewModels()
، سيتم الآن استخدامdefaultViewModelProviderFactory
من هذا المالك إذا لم يتم توفيرViewModelProvider.Factory
مخصّصة بدلاً من استخدام مصنع الجزء دائمًا. (I56170، b/214106513) - تم إصلاح عُطل يحدث عند الوصول إلى
ViewModel
للمرة الأولى من خلال معاودة الاتصالregisterForActivityResult()
الخاصة بـFragment
. (Iea2b3)
الإصدار 1.4
الإصدار 1.4.1
26 يناير 2022
تم إصدار androidx.fragment:fragment:1.4.1
وandroidx.fragment:fragment-ktx:1.4.1
وandroidx.fragment:fragment-testing:1.4.1
. يحتوي الإصدار 1.4.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- لم يعُد
FragmentContainerView
يعرض استثناء حالة غير قانونية عندما تتضمّن معرّفات طرق العرض التي تم إنشاؤها من ملف XML قيمًا سالبة. (Ic185b، b/213086140) - عند استخدام دالة lambda مخصّصة
ownerProducer
مع الدالة الكسولةby viewModels()
، سيتم الآن استخدامdefaultViewModelProviderFactory
من هذا المالك إذا لم يتم توفيرViewModelProvider.Factory
مخصّص بدلاً من استخدام مصنع الجزء دائمًا. (I56170، b/214106513)
الإصدار 1.4.0
17 نوفمبر 2021
تم إصدار androidx.fragment:fragment:1.4.0
وandroidx.fragment:fragment-ktx:1.4.0
وandroidx.fragment:fragment-testing:1.4.0
. يتضمّن الإصدار 1.4.0 عمليات الإيداع هذه.
التغييرات المهمة منذ الإصدار 1.3.0
- توفّر واجهات برمجة التطبيقات
FragmentStrictMode
عمليات تحقّق أثناء وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات الأجزاء المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل أداة معالجة مخصّصة أو إيقاف تطبيقك. يمكن ضبطFragmentStrictMode.Policy
الذي يتحكّم في عمليات التحقّق المفعَّلة و"العقوبات" التي يتم تفعيلها علىFragmentManager
من خلال طريقةsetStrictModePolicy()
الجديدة. تنطبق هذه السياسة علىFragmentManager
هذا، وبشكل متعدٍّ على أي مدراء أجزاء فرعية لا يضبطون سياساتهم الفريدة. يمكنك الاطّلاع على StrictMode for fragments. توفّر
FragmentContainerView
الآن طريقةgetFragment()
تعرض الجزء الذي تمت إضافته مؤخرًا إلى الحاوية. يستخدم هذا الإجراء المنطق نفسه المستخدَم معfindFragmentById()
مع معرّفFragmentContainerView
، ولكنّه يسمح بتسلسل المكالمة.val navController = binding.container.getFragment<NavHostFragment>().navController
تتضمّن
FragmentScenario
الآنCloseable
، ما يتيح لك استخدامها مع طريقةuse
في Kotlin أو try-with-resources.تمت إضافة
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
لتحديد ما إذا كان سيتم تفعيل الحركة العادية للانتقال بين الأنشطة المستخدَمة من المظهر في عملية الانتقال بين الأجزاء.تمت إزالة واجهة برمجة التطبيقات التجريبية الخاصة بـ
FragmentManager.enableNewStateManager(boolean)
، وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن.
حِزم خلفية متعددة
تحتفظ FragmentManager
بسجلّ للرجوع يتألف من معاملات الأجزاء التي استخدمت addToBackStack()
. يتيح لك ذلك إلغاء هذه المعاملات والرجوع إلى الحالة السابقة، وذلك باستخدام آليات حفظ الحالة باستخدام الأجزاء للسماح لأجزائك باستعادة حالتها بشكلٍ مناسب.
يوسّع هذا الإصدار نطاق هذه الآليات من خلال توفير ثلاث واجهات برمجة تطبيقات جديدة FragmentManager
: saveBackStack(String name)
وrestoreBackStack(String name)
وclearBackStack(String name)
. تستخدِم واجهات برمجة التطبيقات هذه name
نفسها التي تستخدِمها addToBackStack()
لحفظ حالة FragmentTransaction
وحالة كل جزء تمت إضافته في هذه المعاملات، ما يتيح لك استعادة هذه المعاملات وأجزائها لاحقًا مع الحفاظ على حالتها. يتيح لك ذلك "التبديل" بفعالية بين حِزم الرجوع المتعددة من خلال حفظ حزمة الرجوع الحالية واستعادة حزمة رجوع محفوظة.
تعمل saveBackStack()
بشكل مشابه لـ popBackStack()
من حيث أنّها غير متزامنة وتؤدي إلى عكس جميع معاملات الأجزاء التي تحمل هذا الاسم تحديدًا (أي إزالتها) وإزالة أي أجزاء تمت إضافتها، ولكنها تختلف في بعض الجوانب المهمة:
saveBackStack()
شاملة دائمًا.- على عكس
popBackStack()
التي ستعرض جميع المعاملات في ذاكرة التخزين المؤقت إذا لم يتم العثور على الاسم المحدّد في ذاكرة التخزين المؤقت أو إذا تم تقديم اسم فارغ، لا تنفّذsaveBackStack()
أي إجراء إذا لم يسبق لك تنفيذ معاملة جزء باستخدامaddToBackStack()
مع هذا الاسم المحدد غير الفارغ. - يتم حفظ حالة جميع الأجزاء التي تمت إضافتها من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء
onSaveInstanceState()
لكل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلاتViewModel
مرتبطة بهذه الأجزاء (ولا يتم استدعاءonCleared()
عليها).
يجب أن تستوفي معاملات الأجزاء التي يمكن استخدامها مع saveBackStack()
معايير معيّنة:
- يجب أن تستخدم كل معاملة جزء
setReorderingAllowed(true)
لضمان إمكانية استعادة المعاملات كعملية واحدة غير قابلة للتجزئة. - يجب أن تكون مجموعة المعاملات المحفوظة مكتفية ذاتيًا (أي يجب ألا تشير صراحةً إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على سجلّ الرجوع خلال الفترة الفاصلة.
- لا يمكن أن تكون أيّ جزء محفوظ جزءًا محتفظًا به أو أن يتضمّن مجموعة متعدية من الأجزاء الفرعية المحتفظ بها لضمان عدم عرض
FragmentManager
أي مراجع لأجزاء محفوظة بعد حفظ سجلّ الرجوع.
على غرار saveBackStack()
وrestoreBackStack()
وclearBackStack()
، اللذين يؤديان إلى استعادة أو محو حزمة احتياطية تم حفظها سابقًا، على التوالي، لا يؤدي أي منهما إلى أي إجراء إذا لم يسبق لك استدعاء saveBackStack()
بالاسم نفسه.
لمزيد من المعلومات، يُرجى الاطّلاع على حِزم السجلّ الخلفي المتعدّدة: نظرة تفصيلية.
الإصدار 1.4.0-rc01
3 نوفمبر 2021
androidx.fragment:fragment:1.4.0-rc01
تم إصداره بدون أي تغييرات عن الإصدار 1.4.0-beta01 من Fragment. يتضمّن الإصدار 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 لتصحيح استخدامات "دورة حياة Fragment" إلى "دورة حياة عرض Fragment" عند استخدام واجهة برمجة التطبيقاتaddMenuProvider
فيMenuHost
. (aosp/1830457، b/200326272)
تعديلات على المستندات
- تم توسيع رسالة الإيقاف النهائي لواجهات برمجة التطبيقات التي تتعامل معها الآن واجهات برمجة تطبيقات نتائج الأنشطة، أي
startActivityForResult
وstartIntentSenderForResult
وonActivityResult
وrequestPermissions
وonRequestPermissionsResult
، لتشمل المزيد من التفاصيل. (cce80f) - تم توسيع رسالة الإيقاف النهائي لـ
onActivityCreated()
لكل منFragment
وDialogFragment
لتشمل المزيد من التفاصيل. (224db4)
الإصدار 1.4.0-alpha09
15 سبتمبر 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha09
وandroidx.fragment:fragment-ktx:1.4.0-alpha09
وandroidx.fragment:fragment-testing:1.4.0-alpha09
. يحتوي الإصدار 1.4.0-alpha09 على عمليات الإيداع هذه.
الميزات الجديدة
- يمكنك الآن الاتصال بـ
clearBackStack(name)
لمحو أي حالة تم حفظها سابقًا باستخدامsaveBackStack(name)
. (I70cd7)
تغييرات واجهة برمجة التطبيقات
- تمت إعادة كتابة الفئة
FragmentContainerView
بلغة Kotlin، ما يضمن أنّ الدالةgetFragment
ستراعي إمكانية القيم الفارغة بشكل صحيح. (If694a، b/189629145) - تمت إعادة كتابة FragmentStrictMode بلغة Kotlin (I11767 وb/199183506)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبّب في عدم تنظيف حالة Fragment
الذي تمت إضافته باستخدام
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
عملية التحقّق من Lint للتعامل بشكل أفضل مع الأقواس الزائدة. (I2d865) - تم تحسين
UseGetLayoutInflater
فحص Lint للتعامل مع حالات حدودية إضافية. (Ie5423)
الإصدار 1.4.0-alpha07
18 أغسطس 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha07
وandroidx.fragment:fragment-ktx:1.4.0-alpha07
وandroidx.fragment:fragment-testing:1.4.0-alpha07
بدون أي تغييرات ملحوظة. يحتوي الإصدار 1.4.0-alpha07 على عمليات الإيداع هذه.
الإصدار 1.4.0-alpha06
4 أغسطس 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha06
وandroidx.fragment:fragment-ktx:1.4.0-alpha06
وandroidx.fragment:fragment-testing:1.4.0-alpha06
. يحتوي الإصدار 1.4.0-alpha06 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تتعلّق بمجموعات متعددة من سجلّات الرجوع عند التبديل بسرعة بين سجلّات الرجوع، والتي كانت تظهر على شكل
IllegalStateException
عند استعادةFragmentTransaction
أو على شكل نسخة ثانية من جزء يظهر. (I9039f) - تم إصلاح مشكلة كانت تتسبب في احتفاظ
FragmentManager
بنسخة من الحالة التي تم حفظها سابقًا باستخدامsaveBackStack()
حتى بعد استعادة هذه الحالة. (Ied212) - لم يعُد يتعطّل التطبيق عند استخدام الطريقة
dismissAllowingStateLoss()
فيDialogFragment
بعد حفظ الحالة عند إضافة DialogFragment تحديدًا باستخدام الطريقةshow(FragmentTransaction, String)
. (I84422)
الإصدار 1.4.0-alpha05
21 تموز (يوليو) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha05
وandroidx.fragment:fragment-ktx:1.4.0-alpha05
وandroidx.fragment:fragment-testing:1.4.0-alpha05
. يحتوي الإصدار 1.4.0-alpha05 على عمليات الدمج التالية.
إصلاح الأخطاء
- من Fragment
1.3.6
: يتم الآن ضبط طريقة عرض Fragment بشكل صحيح علىGONE
عند استخدامhide()
عندما يتم ضبطtransitionGroup=”true”
على طريقة العرض الجذر. (aosp/1766655 وb/193603427) - من Fragment
1.3.6
: يتيحFragmentActivity
الآن دائمًا فتح الحالة المحفوظة كأول عملية في عمليات معاودة الاتصال بدورة الحياة التي يتم تجاهلها. (I6db7a)
تعديل التبعية
- من الجزء
1.3.6
: أصبحت الأجزاء تعتمد الآن على النشاط1.2.4
(I3a66c)
الإصدار 1.4.0-alpha04
30 حزيران (يونيو) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha04
وandroidx.fragment:fragment-ktx:1.4.0-alpha04
وandroidx.fragment:fragment-testing:1.4.0-alpha04
. يحتوي الإصدار 1.4.0-alpha04 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يستخدم
FragmentManager
الآنSavedStateRegistry
في الخلفية لحفظ حالته. تم أيضًا إيقاف استخدام الطريقتَينsaveAllState()
وrestoreSavedState()
نهائيًا فيFragmentController
. إذا كنت تستخدمFragmentController
لاستضافة أجزاء خارجFragmentActivity
، يجب أن يطبّقFragmentHostCallbacks
واجهةSavedStateRegistryOwner
. (Iba68e، b/188734238)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثّلة في تعذُّر تنفيذ طلب
saveBackStack()
كجزء من إتاحة عدة حِزم احتياطية عند تنفيذه في الوقت نفسه مع تنفيذFragmentTransaction
يستخدمreplace()
. (I73137) - تم إصلاح
NullPointerException
كان يحدث بعد استعادة حزمة احتياطية محفوظة يدويًا تحتوي على معاملات متعددة عند استخدام واجهة برمجة التطبيقاتrestoreBackStack()
لتوفير دعم حِزم احتياطية متعددة. أدّى ذلك أيضًا إلى حلّ مشكلة عدم التحقّق منsetReorderingAllowed(true)
في جميع المعاملات. (I8c593) - تم إصلاح مشكلة كانت تؤدي إلى استمرار
FragmentManager
في استعادة الحالة المحفوظة سابقًا للأجزاء بشكل غير صحيح حتى بعد إزالة هذه الأجزاء منFragmentManager
، ما يؤدي إلى زيادة حجم الحالة المحفوظة باستمرار بمرور الوقت. (I1fb8e)
الإصدار 1.4.0-alpha03
16 حزيران (يونيو) 2021
تم إصدار androidx.fragment:fragment:1.4.0-alpha03
وandroidx.fragment:fragment-ktx:1.4.0-alpha03
وandroidx.fragment:fragment-testing:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تم تعديل جميع فئات Fragment StrictMode
Violation
لتتضمّن رسائل خطأ أكثر تفصيلاً تشرح تفاصيل الانتهاك. (b/187871638)- يحتوي
FragmentTagUsageViolation
الآن على رسالة خطأ أكثر تفصيلاً تتضمّن الحاوية الرئيسية التي كان من المفترض أن تتم إضافة الجزء إليها. (Ic33a7) - يتضمّن
WrongFragmentContainerViolation
الآن رسالة خطأ أكثر تفصيلاً تتضمّن الحاوية التي كان يتمّ إضافة الجزء إليها. (Ib55f8) - تحتوي فئات حالة الاستخدام الخاصة بـ
TargetFragmentUsageViolation
الآن على رسائل خطأ أكثر تفصيلاً لتضمين الجزء الذي تسبّب في المخالفة وأي معلومات أخرى مضمّنة. (Icc6ac) - تحتوي الفئات التي تتضمّن
RetainInstanceUsageViolation
الآن على رسائل خطأ أكثر تفصيلاً تتضمّن الجزء الذي أدّى إلى حدوث المخالفة. (I6bd55) - يتضمّن
FragmentReuseViolation
الآن رسالة خطأ أكثر تفصيلاً تتضمّن المعرّف السابق للجزء. (I28ce2) - يتضمّن
SetUserVisibleHintViolation
الآن رسالة خطأ أكثر تفصيلاً تتضمّن التلميح المرئي الذي تم ضبطه للمستخدم. (Ib2d5f)
- يحتوي
التغييرات في السلوك
- تمت إعادة القيود المفروضة على استدعاء
fitsSystemWindows
علىFragmentContainerView
- لن يؤدي ذلك بعد الآن إلى تعطُّل تطبيقك. (6b8ddd، b/190622202)
إصلاح الأخطاء
- من الجزء
1.3.5
: تم إصلاح مشكلة تراجع في عمليات نقل العناصر المشتركة تم تقديمها في الجزء1.3.4
من خلال aosp/1679887. تتعامل الآن "اللقطات" بشكل صحيح مع مجموعات الانتقال (التي يتم ضبطها مباشرةً من خلالtransitionGroup="true"
أو بشكل غير مباشر من خلالtransitionName
أوbackground
)، ولن تؤدي العناصر المشترَكة إلى عرض أخطاءIndexOutOfBoundsException
. (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
وrestoreBackStack(String name)
.saveBackStack(String name)
تستخدِم واجهات برمجة التطبيقات هذه name
نفسها التي تستخدِمها addToBackStack()
لحفظ حالة FragmentTransaction
وحالة كل جزء تمت إضافته في هذه المعاملات، ما يتيح لك استعادة هذه المعاملات وأجزائها لاحقًا مع الحفاظ على حالتها. يتيح لك ذلك "التبديل" بفعالية بين حِزم الرجوع المتعددة من خلال حفظ حزمة الرجوع الحالية واستعادة حزمة رجوع محفوظة.
تعمل saveBackStack()
بشكل مشابه لـ popBackStack()
من حيث أنّها غير متزامنة وتؤدي إلى عكس جميع معاملات الأجزاء التي تحمل هذا الاسم تحديدًا (أي إزالتها) وإزالة أي أجزاء تمت إضافتها، ولكنها تختلف في بعض الجوانب المهمة:
saveBackStack()
شاملة دائمًا.- على عكس
popBackStack()
التي ستعرض جميع المعاملات في ذاكرة التخزين المؤقت إذا لم يتم العثور على الاسم المحدّد في ذاكرة التخزين المؤقت أو إذا تم تقديم اسم فارغ، لا تنفّذsaveBackStack()
أي إجراء إذا لم يسبق لك تنفيذ معاملة جزء باستخدامaddToBackStack()
مع هذا الاسم المحدد غير الفارغ. - يتم حفظ حالة جميع الأجزاء التي تمت إضافتها من هذه المعاملات. وهذا يعني أنّه يتم تخزين حالة العرض لكل جزء، ويتم استدعاء
onSaveInstanceState()
لكل جزء واستعادة هذه الحالة، ويتم الاحتفاظ بأي مثيلاتViewModel
مرتبطة بهذه الأجزاء (ولا يتم استدعاءonCleared()
عليها).
يجب أن تستوفي معاملات الأجزاء التي يمكن استخدامها مع saveBackStack()
معايير معيّنة:
- يجب أن تستخدم كل معاملة جزء
setReorderingAllowed(true)
لضمان إمكانية استعادة المعاملات كعملية واحدة غير قابلة للتجزئة. - يجب أن تكون مجموعة المعاملات المحفوظة مكتفية ذاتيًا (أي يجب ألا تشير صراحةً إلى أي أجزاء خارج مجموعة المعاملات هذه) لضمان إمكانية استعادتها في أي وقت لاحق، بغض النظر عن التغييرات التي تم إجراؤها على سجلّ الرجوع خلال الفترة الفاصلة.
- لا يمكن أن تكون أيّ جزء محفوظ جزءًا محتفظًا به أو أن يتضمّن مجموعة متعدية من الأجزاء الفرعية المحتفظ بها لضمان عدم عرض
FragmentManager
أي مراجع لأجزاء محفوظة بعد حفظ سجلّ الرجوع.
على غرار saveBackStack()
، لا تنفّذ الدالة restoreBackStack()
أي إجراء إذا لم يسبق لك استدعاء الدالة saveBackStack()
بالاسم نفسه. (b/80029773)
Fragment StrictMode
توفّر واجهات برمجة التطبيقات FragmentStrictMode
عمليات تحقّق أثناء وقت التشغيل تتيح لك التأكّد من أنّ تطبيقك أو المكتبات التي تعتمد عليها لا تستدعي واجهات برمجة تطبيقات الأجزاء المتوقّفة نهائيًا. عند رصد انتهاك، يمكنك اختيار طباعة رسالة سجلّ أو تفعيل أداة معالجة مخصّصة أو إيقاف تطبيقك. يمكن ضبط FragmentStrictMode.Policy
الذي يتحكّم في عمليات التحقّق المفعَّلة و"العقوبات" التي يتم تفعيلها على FragmentManager
من خلال طريقة setStrictModePolicy()
الجديدة. تنطبق هذه السياسة على FragmentManager
هذا، وبشكل متعدٍّ على أي مدراء أجزاء فرعية لا يضبطون سياساتهم الفريدة. (#123، #131، #150، b/143774122)
- تحدّد
detectFragmentReuse()
ما إذا كان يتم إعادة إضافة مثيلFragment
تمت إزالته سابقًا إلىFragmentManager
. يجب عدم التفاعل مع مثيلFragment
أو الاحتفاظ بمرجع له بعد إتلافه وإزالته منFragmentManager
. (#142، b/153738653) - ترصد
detectFragmentTagUsage()
متى تستخدم العلامة<fragment>
في ملف XML للتصميم. يجب استخدامFragmentContainerView
دائمًا عند توسيع الأجزاء كجزء من التصميم. (#141، b/153738235) - ترصد
detectWrongFragmentContainer()
عند إضافة جزء إلى حاوية ليستFragmentContainerView
. يجب دائمًا استخدامFragmentContainerView
كحاوية للأجزاء في التصميم. (#146، b/181137036) - ترصد
detectRetainInstanceUsage()
الحالات التي تستخدم فيها واجهات برمجة التطبيقاتsetRetainInstance()
أوgetRetainInstance()
المتوقّفة نهائيًا. (#140، b/153737954) - ترصد
detectSetUserVisibleHint()
الحالات التي تستخدم فيها واجهة برمجة التطبيقاتsetUserVisibleHint()
المتوقّفة نهائيًا. (#136، b/153738974) - ترصد
detectTargetFragmentUsage()
الحالات التي تستخدم فيها واجهات برمجة التطبيقات المتوقّفة نهائيًاsetTargetFragment()
أوgetTargetFragment()
أوgetTargetRequestCode()
. (#139، b/153737745)
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات التجريبية الخاصة بـ
FragmentManager.enableNewStateManager(boolean)
، وأصبح مدير الحالة الجديد هو الخيار الوحيد المتاح الآن. (I90036، b/162776418) - تتضمّن
FragmentScenario
الآنCloseable
، ما يتيح لك استخدامها مع طريقةuse
في Kotlin أو try-with-resources. (#121، b/143774122)
عمليات فحص Lint الجديدة
- يُصدر
UseGetLayoutInflater
Lint check الآن تحذيرًا عند استخدامLayoutInflater.from(Context)
داخلDialogFragment
، ويجب دائمًا استخدام طريقةgetLayoutInflater()
الخاصة بـ DialogFragment للحصول علىLayoutInflater
المناسب. (#156، b/170781346) - يحذّرك فحص
DialogFragmentCallbacksDetector
Lint الآن عند استدعاءsetOnCancelListener
أوsetOnDismissListener
في طريقةonCreateDialog()
الخاصة بـDialogFragment
، إذ يملكDialogFragment
نفسه أدوات معالجة الأحداث هذه، وعليك إلغاءonCancel()
وonDismiss()
لتلقّي عمليات معاودة الاتصال هذه. (#171، b/181780047، b/187524311)
إصلاح الأخطاء
- من الإصدار 1.3.4 من Fragment: تم إصلاح خطأ تم رصده في الإصدار
1.3.3
من Fragment عند استخدام واجهة برمجة التطبيقاتViewTreeViewModelStoreOwner.get()
معViewModelProvider
أو طريقةviewModel()
في Jetpack Compose داخل Fragment. تستخدم حالات الاستخدام هذه الآنViewModelProvider.Factory
المقدَّمة من Fragment بشكل صحيح إذا كانت تتجاوزgetDefaultViewModelProviderFactory()
(كما تفعل أجزاء@AndroidEntryPoint
التي تتضمّن تعليقات توضيحية عند استخدام Hilt). إذا لم يتم إلغاء هذا الإجراء، سيتم إنشاءSavedStateViewModelFactory
يحفظ حالته ويستعيدها إلى جانب طريقة عرض Fragment كإعداد تلقائي للمصنع. (I5cbfa، b/186097368) - اعتبارًا من Fragment 1.3.4: عند استخدام
FragmentContainerView
على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال الحواف الداخلية إلى أجل غير مسمى، ما يؤدي إلى حل المشاكل المتعلقة بمثيلَيBottomNavigationBar
وFloatingActionButton
. (I1bb78، b/186012452) - من الإصدار 1.3.4 من Fragment: يمكنك الآن استرداد Parcelable من حزمة نتائج Fragment بعد إيقاف العملية. (I65932، b/187443158)
- بدءًا من Fragment 1.3.4: عند إجراء انتقال عنصر مشترك على ViewGroup، إذا تم ضبط
transitionGroup
على القيمة false في 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 check. (#156، b/170781346) - شكرًا tatocaster على إضافة
DialogFragmentCallbacksDetector
Lint check. (#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 عمليات الدمج التالية.
إصلاح الأخطاء
- من Fragment
1.4.0-alpha03
: لن يتعطّلFragmentManager
بعد الآن عند محاولة إخفاء جزء تتم إزالته. (I573dd، b/183634730) - تم الآن ضبط طريقة عرض Fragment بشكل صحيح على
GONE
عند استخدامhide()
عندما تم ضبطtransitionGroup=”true”
في طريقة العرض الجذر. (aosp/1766655 وb/193603427) - يفتح
FragmentActivity
الآن دائمًا الحالة المحفوظة كأول عملية في عمليات معاودة الاتصال بدورة الحياة التي يتم تجاهلها. (I6db7a)
تعديل التبعية
- من الجزء
1.3.6
: أصبحت الأجزاء تعتمد الآن على النشاط1.2.4
(I3a66c)
الإصدار 1.3.5
16 حزيران (يونيو) 2021
تم إصدار androidx.fragment:fragment:1.3.5
وandroidx.fragment:fragment-ktx:1.3.5
وandroidx.fragment:fragment-testing:1.3.5
. يحتوي الإصدار 1.3.5 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع في عمليات الانتقال بين العناصر المشترَكة تم تقديمها في Fragment
1.3.4
من خلال aosp/1679887. تتعامل الآن "اللقطات" بشكل صحيح مع مجموعات الانتقال (التي يتم ضبطها مباشرةً من خلالtransitionGroup="true"
أو بشكل غير مباشر من خلالtransitionName
أوbackground
)، ولن تؤدي العناصر المشترَكة إلى عرض أخطاءIndexOutOfBoundsException
. (I16484، b/188679569، b/188969304)
الإصدار 1.3.4
18 أيار (مايو) 2021
تم إصدار androidx.fragment:fragment:1.3.4
وandroidx.fragment:fragment-ktx:1.3.4
وandroidx.fragment:fragment-testing:1.3.4
. يحتوي الإصدار 1.3.4 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح خطأ برمجي تم تقديمه في Fragment
1.3.3
عند استخدام واجهة برمجة التطبيقاتViewTreeViewModelStoreOwner.get()
معViewModelProvider
أو طريقة Jetpack Compose فيviewModel()
داخل Fragment عند استخدام Hilt. تستخدم حالات الاستخدام هذه الآنViewModelProvider.Factory
المقدَّمة من Fragment بشكل صحيح إذا كانت تتجاوزgetDefaultViewModelProviderFactory()
(كما تفعل Fragments التي تمّت إضافة التعليقات التوضيحية إليها باستخدام@AndroidEntryPoint
). إذا لم يتم إلغاء هذا الإجراء، سيتم إنشاءSavedStateViewModelFactory
يحفظ حالته ويستعيدها إلى جانب طريقة عرض Fragment كإعداد تلقائي للمصنع. (I5cbfa، b/186097368) - عند استخدام
FragmentContainerView
على الإصدار 29 من واجهة برمجة التطبيقات، لن يتم إرسال عمليات الإدخال إلى أجل غير مسمى، ما يؤدي إلى حل المشاكل في مثيلاتBottomNavigationBar
وFloatingActionButton
. (I1bb78، b/186012452) - يمكنك الآن استرداد Parcelable من حزمة نتائج الجزء بعد إيقاف العملية. (I65932، b/187443158)
- عند إجراء انتقال عنصر مشترك على ViewGroup، إذا تم ضبط
transitionGroup
على false في ViewGroup، سيتم الآن الانتقال بشكل صحيح. (I99675)
الإصدار 1.3.3
21 أبريل 2021
تم إصدار androidx.fragment:fragment:1.3.3
وandroidx.fragment:fragment-ktx:1.3.3
وandroidx.fragment:fragment-testing:1.3.3
. يحتوي الإصدار 1.3.3 على عمليات الإيداع هذه.
الميزات الجديدة
- أصبح بإمكانك استخدام
SavedStateViewModelFactory
عند استخدامه معSavedStateRegistryOwner
الذي تم عرضه من خلال استخدامViewTreeSavedStateRegistryOwner.get()
مع طريقة العرض الخاصة بالجزء. (I21acf، b/181577191)
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع في الأداء تم رصدها في Fragment
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)
إصلاحات أخطاء جديدة في State Manager
- يتعامل مدير حالة الجزء الجديد الآن بشكل صحيح مع عمليات الانتقال عند الخروج باستخدام عمليات الإخفاء. (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 على عمليات الإيداع هذه.
إصلاحات أخطاء جديدة في State Manager
- عند تنفيذ العمليتَين
popBackStack()
وcommit()
معًا، ستحدّد العملية الأخيرة الآن اتجاه جميع الحركات بدلاً من تنفيذ بعض حركات الظهور وبعض حركات الدخول. (I7072e، b/181142246) - لن يتم بعد ذلك محو اسم الانتقال الخاص بعمليات الانتقال بين العناصر المشتركة في التسلسل الهرمي للعناصر المشتركة. (I4d4a6، b/179934757)
تحديثات التبعيات
- يعتمد الجزء الآن على Activity 1.2.2، ما يحلّ مشكلة في عملية فحص
InvalidFragmentVersionForActivityResult
lint في Activity عند استخدام الإصدار 1.3.1 من Fragment أو إصدار أحدث. - يعتمد Fragment الآن على 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 من خلال 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).
إصلاحات أخطاء جديدة في State Manager
- تم إصلاح تسرب الذاكرة في الأجزاء بسبب
mFocusedView
(Ib4e9e، b/179925887) - تستدعي الآن الأجزاء بشكل صحيح
onCreateOptionsMenu
عند استخدام معاملات العرض/الإخفاء (I8bce8، b/180255554) - ستصل الآن الأجزاء الفرعية التي تتضمّن انتقالات تبدأ قبل ترتيب الجزء بشكل صحيح إلى
RESUMED
(Ic11e6، b/180825150) - ستصل الآن الأجزاء التي تم تضخيمها باستخدام العلامة
<fragment>
دائمًا إلىRESUMED
(I452ac، (I9fa49)
تحديثات التبعيات
- يعتمد الإصدار 1.3.1 من Fragment على Activity
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
- New State Manager: أدت إعادة كتابة كبيرة للأجزاء الداخلية من
FragmentManager
إلى إصلاح العديد من المشاكل المتعلّقة بإرسال أحداث مراحل النشاط والرسوم المتحركة وعمليات الانتقال وطريقة التعامل مع الأجزاء المؤجّلة. دمج Activity Result API: تمت إضافة إمكانية استخدام واجهة برمجة التطبيقات
ActivityResultRegistry
التي تم طرحها في Activity1.2.0
للتعامل مع عملياتstartActivityForResult()
+onActivityResult()
بالإضافة إلى عملياتrequestPermissions()
+onRequestPermissionsResult()
بدون إلغاء الطرق في Fragment، بالإضافة إلى توفير نقاط ربط لاختبار هذه العمليات. اطّلِع على الحصول على نتيجة من نشاط المعدَّل.- يُصلح هذا الإصدار عددًا من المشاكل المتعلقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع واجهة برمجة التطبيقات Activity Result API من العمل على الإصدارات السابقة من
FragmentActivity
. يجب الترقية إلى الإصدار 1.3.0 من Fragment لاستخدام واجهات برمجة التطبيقات الخاصة بنتائج الأنشطة فيFragmentActivity
أوAppCompatActivity
.
- يُصلح هذا الإصدار عددًا من المشاكل المتعلقة برموز الطلبات غير الصالحة وإرسال طلبات الأذونات التي تمنع واجهة برمجة التطبيقات Activity Result API من العمل على الإصدارات السابقة من
Fragment Result API: تمت إضافة إمكانية تمرير النتائج بين جزأين من خلال واجهات برمجة تطبيقات جديدة على
FragmentManager
. يعمل ذلك مع أجزاء التسلسل الهرمي (الأصل/التابع) وDialogFragment والأجزاء في Navigation، ويضمن إرسال النتائج إلى Fragment فقط عندما يكون في حالةSTARTED
على الأقل. تم إيقاف واجهات برمجة التطبيقات الخاصة بالجزء المستهدَف نهائيًا لصالح واجهات برمجة التطبيقات الجديدة هذه. اطّلِع على الحصول على نتائج باستخدام Fragment Result API.
FragmentOnAttachListener
: تم إيقاف معاودة الاتصالonAttachFragment()
نهائيًا فيFragmentActivity
وFragment
. تمت إضافةFragmentOnAttachListener
جديد لتوفير بديل أكثر مرونة، ما يتيح تفويضonAttachFragment()
إلى أدوات معالجة منفصلة وقابلة للاختبار، وإتاحة إضافة أداة معالجة إلى FragmentManagers غير FragmentManager التابع لك مباشرةً.FragmentScenario
تحسينات: تمت إعادة كتابة فئةFragmentScenario
من العنصرfragment-testing
في Kotlin، وتم إجراء عدد من التحسينات عليها:- يستخدم الإصدار
FragmentScenario
الآنsetMaxLifecycle()
لتنفيذmoveToState()
، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات وفصل حالة Fragment عن النشاط الأساسي. - تتيح السمة
FragmentScenario
الآن ضبطLifecycle.State
أولي لتأكيد حالة الجزء قبل الانتقال إلى كلLifecycle.State
للمرة الأولى. - يتوفّر الآن بديل لواجهة برمجة التطبيقات
FragmentScenario
الخاصة بـonFragment
في شكل طريقة الإضافة المحدّدةwithFragment
في Kotlin التي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة.
- يستخدم الإصدار
ViewTree
Support: تتوافق مكتبةFragment
الآن مع واجهات برمجة التطبيقاتViewTreeLifecycleOwner.get(View)
وViewTreeViewModelStoreOwner.get(View)
وViewTreeSavedStateRegistryOwner
التي تمت إضافتها في Lifecycle2.3.0
وSavedState1.1.0
، ما يتيح عرض Fragment على أنّهViewModelStoreOwner
، بالإضافة إلىSavedStateRegistryOwner
وLifecycleOwner
المرتبطَين بدورة حياة العرض الخاصة بالجزء عند استخدامView
ضِمنFragment
.تغييرات في الصور المتحركة
TRANSIT_
: تستخدم الآن التأثيرات التلقائية للقطعة،TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
،Animator
بدلاً منAnimation
. أصبحت الموارد المستخدَمة لإنشاء أدوات تحريك الصور هذه خاصة الآن.إيقاف نهائي للطريقة
setRetainInstance()
: تم إيقاف الطريقةsetRetainInstance()
في الفئات Fragment نهائيًا. مع تقديم 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)
إصلاحات أخطاء جديدة في State Manager
- تعالج الآن طريقة العرض
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)
إصلاحات أخطاء جديدة في State Manager
- تم إصلاح مشكلة تسريب الذاكرة والتشوّه المرئي عند إضافة جزء يحتوي على
Animation
إلىFragmentContainerView
ثم إيقاف عملية الإضافة هذه من خلال عملية إزالة. (I952d8) - تم إصلاح المشكلة التي كانت تؤدي إلى بقاء عرض الجزء في التسلسل الهرمي للعرض إذا تم استبداله أثناء تنفيذ الطريقتَين
onCreate()
أوonViewCreated()
. (I8a7d5) - يتم الآن استعادة التركيز بشكل صحيح إلى طرق عرض جذر Fragment عند استئنافها. (Ifc84b)
- سيؤدي الجمع بين عمليات pop وreplace في معاملة جزء واحدة إلى عرض الصور المتحركة المناسبة (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) - سيؤدي الآن إعداد FragmentScenario باستخدام حالة
DESTROYED
إلى عرضIllegalArgumentException
(I73590، b/170765622)
إصلاحات أخطاء جديدة في State Manager
- تم إصلاح مشكلة عدم وصول طريقة العرض إلى حالتها النهائية في حال مقاطعة انتقال جزء كان يستخدم
Animator
أو أحد خياراتTRANSIT_FRAGMENT_
. (I92426، b/169874632) - تم إصلاح مشكلة كانت تمنع إيقاف الأجزاء التي تتضمّن
Animation
بشكلٍ صحيح. (I83d65) - عند الخروج من الأجزاء التي تم عكس تأثيراتها، يتم الآن إلغاؤها وإعادة تشغيلها بشكل صحيح باستخدام تأثير الدخول المناسب. (I62226، b/167092035)
- تم إصلاح المشكلة المتمثّلة في عدم تنفيذ أمر الخروج
Animator
منhide()
. (Id7ffe) - تظهر الآن الأجزاء بشكل صحيح عند تأجيلها ثم بدءها على الفور. (Ie713b، b/170022857)
- لن تحاول الأجزاء التي تزيل طريقة العرض المركّزة أثناء الرسوم المتحركة استعادة التركيز على طريقة العرض المنفصلة بعد وصولها إلى
RESUMED
(I38c65، b/172925703).
المساهمة الخارجية
- تخزّن
FragmentFactory
الآن فئات الأجزاء بشكل منفصل لمثيلاتClassLoader
المختلفة. شكرًا "سيمون شيلر"! (#87، b/113886460)
الإصدار 1.3.0-beta01
1 تشرين الأول (أكتوبر) 2020
تم إصدار androidx.fragment:fragment:1.3.0-beta01
وandroidx.fragment:fragment-ktx:1.3.0-beta01
وandroidx.fragment:fragment-testing:1.3.0-beta01
. يحتوي الإصدار 1.3.0-beta01 على عمليات الإيداع هذه.
الميزات الجديدة
- يتيح
setMaxLifecycle()
الآن ضبط حالةLifecycle
علىINITIALIZING
طالما لم يتم نقل الجزء إلىCREATED
. (b/159662173)
تغييرات واجهة برمجة التطبيقات
- ترقية androidx لاستخدام Kotlin 1.4 (Id6471 وb/165307851 وb/165300826)
التغييرات في السلوك
- تم ضبط ملفات موارد الأجزاء على "خاصة" بشكلٍ صحيح. (aosp/1425237)
إصلاح الأخطاء
- ستنتظر الآن الأجزاء التي تم تضخيمها باستخدام العلامة
<fragment>
بشكل صحيح إلى أن تتم إضافة طرق العرض الخاصة بها إلى حاوية قبل الانتقال إلى الحالة STARTED (I02f4c). - يتم الآن تشغيل تأثيرات الخروج بشكل صحيح للأجزاء التي تكون مرئية ثم يتم الانتقال من
setMaxLifecycle()
إلىCREATED
. (b/165822335) - لم تعُد إزالة جزء منفصل لم تتم إضافته إلى سجلّ الرجوع إلى الخلف تؤدي إلى حدوث تسرُّب للذاكرة. شكرًا لـ "نيكلاس أنسمان غيرتز"! (b/166489383)
- ستتضمّن الأجزاء النشطة الآن دائمًا قيمة
FragmentManager
غير فارغة، وسيتم دائمًا اعتبار الأجزاء التي تتضمّن قيمةFragmentManager
غير فارغة نشطة. (aosp/1422346) - تستخدم التأثيرات التلقائية للأجزاء،
TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
، الآنAnimator
بدلاً منAnimation
. (b/166155034)
إصلاحات أخطاء جديدة في State Manager
- تعمل الآن الأجزاء على استعادة حالة تركيز العرض بشكل صحيح من قبل بدء الحركة مباشرةً. (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 على عمليات الإيداع هذه.
New State Manager
يتضمّن هذا الإصدار إعادة تصميم رئيسية لإدارة الحالة الداخلية في 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
التي تم تقديمها في النشاط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
بدلاً من نقل Fragment دائمًا إلى الحالةRESUMED
. (b/159662750) - تمت إضافة بديل لواجهة برمجة التطبيقات
FragmentScenario
الخاصة بـonFragment
في شكل طريقة الإضافةwithFragment
التي تم إنشاؤها في Kotlin والتي تتيح لك عرض قيمة. والجدير بالذكر أنّه يعيد طرح الاستثناءات التي تم إنشاؤها في الكتلة المحدّدة. (b/158697631)
التغييرات في السلوك
- يستخدم الإصدار
FragmentScenario
الآنsetMaxLifecycle()
لتنفيذmoveToState()
، ما يضمن سلوكًا متسقًا على جميع مستويات واجهة برمجة التطبيقات وفصل حالة Fragment عن النشاط الأساسي. (b/156527405) - إنّ
SavedStateRegistryOwner
الذي تعرضهViewTreeSavedStateRegistryOwner
مرتبط الآن بدورة حياة عرض الجزء. ويضمن ذلك حفظ حالته واستعادتها في الوقت نفسه الذي يتم فيه حفظ طريقة عرض الجزء. (b/158503763)
إصلاح الأخطاء
- تنتظر الآن الأجزاء إلى أن يتم ربط طريقة عرض الجزء قبل طلب
ViewCompat.requestApplyInsets()
، ما يمنع حدوث حالات تم فيها تجاهل طلب الحاشية. (b/158095749) - عند الاتصال بـ
clearFragmentResultListener
، تتم الآن إزالة مراقب دورة الحياة بشكل صحيح. (b/159274993)
الإصدار 1.3.0-alpha06
10 يونيو 2020
تم إصدار androidx.fragment:fragment:1.3.0-alpha06
وandroidx.fragment:fragment-ktx:1.3.0-alpha06
وandroidx.fragment:fragment-testing:1.3.0-alpha06
. يحتوي الإصدار 1.3.0-alpha06 على عمليات الإيداع هذه.
الميزات الجديدة
- تم إيقاف معاودة الاتصال
onAttachFragment()
فيFragmentActivity
وFragment
نهائيًا. تمت إضافةFragmentOnAttachListener
جديد لتوفير بديل أكثر مرونة، ما يتيح تفويضonAttachFragment()
إلى أدوات معالجة منفصلة وقابلة للاختبار، بالإضافة إلى إمكانية إضافة أداة معالجة إلى FragmentManagers غير FragmentManager الثانوي المباشر. (I06d3d)
إصلاح الأخطاء
- يتم الآن استعادة حالة عرض الأجزاء الرئيسية قبل الأجزاء الفرعية، ما يحلّ مشكلة الترتيب المرئي بعد تغيير الإعدادات عندما يعرض
DialogFragment
آخرDialogFragment
كجزء فرعي. (b/157195715) - تم إصلاح مشكلة عدم تعامل
UseRequireInsteadOfGet
Lint check مع الاستخدامات المتسلسلة للعاملَين?.
و!!
بشكلٍ صحيح. (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 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة إمكانية تمرير النتائج بين Fragmentَين من خلال واجهات برمجة تطبيقات جديدة على
FragmentManager
. يعمل ذلك مع أجزاء التسلسل الهرمي (الأصل/التابع) وDialogFragment والأجزاء في Navigation، ويضمن إرسال النتائج إلى Fragment فقط عندما يكون في حالة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)
إصلاح الأخطاء
- تم إصلاح خطأ في الإصدار Fragment
1.3.0-alpha02
عند استخدامBottomSheetDialogFragment
. (b/151652127، aosp/1263328، aosp/1265163) - تم إصلاح عُطل عند استخدام
prepareCall
من جزء بعد تغيير الإعداد. (b/152137004) - تم إصلاح مشكلة تجاهل الانتقالات المشتركة بين العناصر وانتقالات الخروج عند استخدام
setTargetFragment()
. (b/152023196) - من الجزء
1.2.4
: تم تعديل قواعد ProGuard الخاصة بالجزء للسماح بتشفير الأجزاء التي تم الاحتفاظ بها. (b/151605338) - من Fragment
1.2.4
: تم إيقاف قاعدةFragmentLiveDataObserve
Lint في فئاتDialogFragment
لأنّ دورة حياتها ودورة حياة العرض متزامنتان دائمًا، ما يجعل من الآمن استخدامthis
أوviewLifecycleOwner
عند استدعاءobserve
. (b/151765086)
تغييرات التبعية
- تعتمد الأجزاء على Activity
1.2.0-alpha03
، الذي تمّ إجراء تحسينات كبيرة عليه في Activity Result API الذي تمّ تقديمه في Activity1.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
التي تم طرحها في Activity1.2.0-alpha02
للتعامل معstartActivityForResult()
+onActivityResult()
بالإضافة إلى مساراتrequestPermissions()
+onRequestPermissionsResult()
بدون إلغاء الطرق في Fragment، بالإضافة إلى توفير نقاط ربط لاختبار هذه المسارات. اطّلِع على الحصول على نتيجة من نشاط المعدَّل. (b/125158199)
تغييرات واجهة برمجة التطبيقات
- توفّر السمة
DialogFragment
الآن دالة إنشاء تأخذ@LayoutRes
تشير إلى التنسيق الذي يجب أن يتم تضخيمه تلقائيًا بواسطةonCreateView()
. (b/150327080) - تم إيقاف استخدام الطريقة
onActivityCreated()
نهائيًا. يجب تنفيذ الرمز الذي يتفاعل مع طريقة عرض الجزء فيonViewCreated()
(الذي يتم استدعاؤه مباشرةً قبلonActivityCreated()
)، ويجب أن يكون رمز التهيئة الآخر فيonCreate()
. لتلقّي ردّ عند اكتمالonCreate()
النشاط تحديدًا، يجب تسجيلLifeCycleObserver
فيLifecycle
النشاط فيonAttach()
، وإزالته بعد تلقّي ردّonCreate()
. (b/144309266)
إصلاح الأخطاء
- من Fragment
1.2.3
: تم إصلاح خطأ فيDialogFragment
كان يؤدي إلى حدوثStackOverflowError
عند استدعاءgetLayoutInflater()
من داخلonCreateDialog()
. (b/117894767، aosp/1258664) - من Fragment
1.2.3
: تم تقليل نطاق قواعد ProGuard المضمّنة في Fragment لضمان إمكانية إزالة فئات Fragment غير المستخدَمة. (b/149665169) - من القصاصة
1.2.3
: تم إصلاح النتائج الإيجابية الخاطئة في عملية التحقّق منUseRequireInsteadOfGet
Lint عند استخدام اسم متغير محلي يحجب اسم السمة في Kotlin. (b/149891163) - من Fragment
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
الخاصة بـ Fragment كـLifecycleOwner
لأي "طرق عرض" تعرضهاonCreateView()
. (aosp/1182955)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الطريقة
setRetainInstance()
في "التقسيمات". مع تقديم ViewModels، أصبح لدى المطوّرين واجهة برمجة تطبيقات محدّدة للاحتفاظ بالحالة التي يمكن ربطها بالأنشطة واللقطات ورسوم بيانية للتنقّل. يتيح ذلك للمطوّرين استخدام Fragment عادي لا يتم الاحتفاظ به، والاحتفاظ بالحالة المحدّدة التي يريدون الاحتفاظ بها بشكل منفصل، ما يؤدي إلى تجنُّب مصدر شائع لتسرُّب الذاكرة مع الحفاظ على الخصائص المفيدة لعملية إنشاء وتدمير واحدة للحالة المحفوظة (أي الدالة الإنشائيةViewModel
وonCleared()
التي تتلقّاها). (b/143911815) - مع إصدار ViewPager2
1.0.0
، تم إيقاف الفئتَينFragmentPagerAdapter
وFragmentStatePagerAdapter
نهائيًا للتفاعل معViewPager
. راجِع نقل البيانات من ViewPager إلى ViewPager2. (b/145132715)
إصلاح الأخطاء
- تحتفظ قواعد Fragment ProGuard الآن بشكل صحيح بمنشئات
Fragment
التلقائية فقط التي يتم استخدامها بدلاً من جميع مثيلاتFragment
، ما يؤدي إلى إصلاح مشكلة تراجع تم تقديمها في Fragment1.2.1
. (b/149665169 - لم تعُد
require___()
قواعد Lint المضافة في Fragment1.2.2
تظهر بشكل إيجابي خاطئ بشأن المتغيّرات المحلية التي تشارك الاسم نفسه مع أسماء سمات Kotlin المخفية (أي view
). (b/149891163) - لم يعُد يعرض الخطأ
UnsupportedOperationException
عند استخدام معاينة التصميم في "استوديو Android".FragmentContainerView
(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()
، ما يعكس سلوك دورة حياة الجزء. تم إصدار هذا الإصدار سابقًا في Fragment1.3.0-alpha04
. (b/154645875) - يؤدي استدعاء
setMenuVisibility(false)
في جزء الآن إلى تغيير مستوى ظهور القوائم التي توفّرها الأجزاء الفرعية بشكل صحيح. تم إصدار هذا الإصدار سابقًا في Fragment1.3.0-alpha04
. (b/153593580)
الإصدار 1.2.4
الإصدار 1.2.4
1 نيسان (أبريل) 2020
تم إصدار androidx.fragment:fragment:1.2.4
وandroidx.fragment:fragment-ktx:1.2.4
وandroidx.fragment:fragment-testing:1.2.4
. يتضمّن الإصدار 1.2.4 عمليات الإيداع هذه.
إصلاح الأخطاء
- تم تعديل قواعد Fragment ProGuard للسماح بتعتيم الأجزاء التي تم الاحتفاظ بها. (b/151605338)
- تم إيقاف قاعدة
FragmentLiveDataObserve
Lint في فئات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)
- تم إصلاح النتائج الإيجابية الخاطئة في عملية فحص
UseRequireInsteadOfGet
Lint عند استخدام اسم متغير محلي يحجب اسم سمة Kotlin. (b/149891163) - لم يعُد
FragmentContainerView
يعرض الخطأUnsupportedOperationException
عند استخدام الدالة الإنشائية غير الصحيحة في معاينة التصميم. (b/149707833)
الإصدار 1.2.2
الإصدار 1.2.2
19 شباط (فبراير) 2020
تم إصدار androidx.fragment:fragment:1.2.2
وandroidx.fragment:fragment-ktx:1.2.2
وandroidx.fragment:fragment-testing:1.2.2
. يتضمّن الإصدار 1.2.2 عمليات الإيداع هذه.
عمليات فحص Lint الجديدة
- يقترح Lint استخدام
viewLifecycleOwner
كـLifecycleOwner
للمكالمات فيOnBackPressedDispatcher
فيonCreateView()
وonViewCreated()
وonActivityCreated()
. (b/142117657) - تمت إضافة عملية فحص جديدة باستخدام أداة Lint للتأكّد من استخدام
debugImplementation
الصحيح عند استخدام العنصرfragment-testing
. (b/141500106) - تقترح الأجزاء الآن استخدام طرق
require___()
المرتبطة بها للحصول على رسائل خطأ أكثر وصفًا بدلاً منcheckNotNull(get___())
أوrequireNonNull(get___())
أوget___()!!
لجميع واجهات برمجة التطبيقات للأجزاء التي تتضمّن كلاً منget
وrequire
. (aosp/1202883)
إصلاح الأخطاء
- تم إصلاح ملفات Fragment ProGuard لتجنُّب تحذيرات R8 (b/148963981)
- تم تحسين عملية التحقّق الحالية من Lint التي تقترح استخدام
viewLifecycleOwner
عند استخدامobserve
للتعامل أيضًا مع إصدار طريقة الإضافةlivedata-ktx
منobserve
. (b/148996309) - تم إصلاح التنسيق للعديد من عمليات التحقّق من أداة Lint (aosp/1157012)
المساهمات الخارجية
- نشكر Zac Sweers على المساهمة في
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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يحتفظ ProGuard الآن ببرنامج الإنشاء التلقائي للأجزاء التي تتم إضافتها باستخدام الطريقتَين
add
وreplace
اللتَين تستخدمان مثيلاً منClass
(أو إصدارات Kotlin reified). (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 (عند استخدام Transition1.3.0
) قبل استدعاءonDestroyView()
.- استنادًا إلى الفئة
add()
وreplace()
: تمت إضافة عمليات تحميل زائدة جديدة منadd()
وreplace()
علىFragmentTransaction
التي تأخذClass<? extends Fragment>
وBundle
اختيارية من الوسيطات. تستخدِم هذه الطرقFragmentFactory
لإنشاء مثيل من Fragment المراد إضافته. تمت أيضًا إضافة إضافات Kotlin التي تستخدم أنواعًا مجسَّدة (أيfragmentTransaction.replace<YourFragment>(R.id.container)
) إلىfragment-ktx
. - دمج Lifecycle ViewModel SavedState: أصبح
SavedStateViewModelFactory
الآن المصنع التلقائي المستخدَم عند استخدامby viewModels()
أوby activityViewModels()
أو الدالة الإنشائيةViewModelProvider
أوViewModelProviders.of()
مع Fragment. - عمليات فحص Lint الجديدة: تمت إضافة عملية فحص Lint جديدة تضمن استخدام
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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح خطأ في الإصدار السابق في Fragment
1.2.0-rc04
عند استخدام العلامة<fragment>
، ما أدّى إلى استدعاءonViewCreated()
بشكل غير صحيح أثناء إيقاف النشاط. (b/146290333) - يتم الآن محو الأجزاء المضافة باستخدام العلامة
<fragment>
بشكلٍ سليم حتى عندما تكون في التصميم في بعض الأحيان فقط (أي في التصميم الأفقي فقط). نتيجةً لذلك، يتم الآن نقل هذه الفئات Fragment بشكل صحيح إلىCREATED
حتى في حال عدم توفّرها في التصميم، بدلاً من إنشاء مثيل لها ولكن بدون نقلها مطلقًا من خلال أي طرق لدورة الحياة. (b/145769287)
الإصدار 1.2.0-rc04
18 كانون الأول (ديسمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc04
وandroidx.fragment:fragment-ktx:1.2.0-rc04
وandroidx.fragment:fragment-testing:1.2.0-rc04
. يحتوي الإصدار 1.2.0-rc04 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم تعديل الصور المتحركة الخاصة بـ
TRANSIT_FRAGMENT_OPEN
وTRANSIT_FRAGMENT_CLOSE
وTRANSIT_FRAGMENT_FADE
لتجنُّب حدوث مشاكل مرئية. (b/145468417)
الإصدار 1.2.0-rc03
4 كانون الأول (ديسمبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc03
وandroidx.fragment:fragment-ktx:1.2.0-rc03
وandroidx.fragment:fragment-testing:1.2.0-rc03
. يحتوي الإصدار 1.2.0-rc03 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح تغيير غير مقصود في السلوك، حيث كان يتم عرض الأجزاء التي تمت إزالتها من خلال
findFragmentById()
/findFragmentByTag()
أثناء تشغيل الرسوم المتحركة/عمليات الانتقال للخروج. (b/143982969، aosp/1167585) - يتم الآن إيقاف الأجزاء الفرعية للطفل بشكل صحيح قبل الأجزاء الرئيسية عند استدعاء النشاط الحاوي
onSaveInstanceState()
. (b/144380645) - تم إصلاح المشكلة التي كانت تؤدي إلى وضع العلامة
INVISIBLE
بشكل غير صحيح على "طرق العرض" بعد إظهار جزء مخفي. (b/70793925) - تتعامل الآن عمليات الانتقال بين العناصر المشترَكة في الأجزاء مع طرق العرض التي تم تدويرها أو تغيير حجمها أو غير ذلك (b/142835261).
تعديلات على المستندات
- تم توضيح مستندات الإيقاف النهائي حول
setUserVisibleHint()
. (b/143897055) - تم تحسين المستندات حول
setFragmentFactory()
وgetFragmentFactory()
للإشارة بشكل أفضل إلى أنّ ضبطFragmentFactory
سيؤثر أيضًا في FragmentManager الفرعية. (aosp/1170095)
التغييرات في التبعيات
- تعتمد الآن الفئات Fragment على 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 الآن صيغة الوصول إلى السمة في Kotlin
viewLifecycleOwner
بدلاً منgetViewLifecycleOwner()
عند مراقبةLiveData
منonCreateView()
أوonViewCreated()
أوonActivityCreated()
(تم تقديمها في Fragment1.2.0-rc01
).getViewLifecycleOwner()
(aosp/1143821)
الإصدار 1.2.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.fragment:fragment:1.2.0-rc01
وandroidx.fragment:fragment-ktx:1.2.0-rc01
وandroidx.fragment:fragment-testing:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على عمليات الإيداع هذه.
الميزات الجديدة
- تتيح السمة
FragmentContainerView
الآن السمةclass
بالإضافة إلىandroid:name
، ما يعكس وظيفة العلامة<fragment>
. (b/142722242) - تمت إضافة عملية فحص جديدة باستخدام أداة Lint تضمن استخدام
getViewLifecycleOwner()
عند مراقبةLiveData
منonCreateView()
أوonViewCreated()
أوonActivityCreated()
. (b/137122478)
إصلاح الأخطاء
- تضمن الآن عمليات معاودة الاتصال
onDismiss
وonCancel
فيDialogFragment
أنّ قيمةDialogInterface
التي تم تمريرها إليها ليست فارغة وأنّgetDialog()
تعرض قيمة غير فارغة عند تنفيذها. (b/141974033) - تضيف
FragmentContainerView
الآن الجزء الذي تم تحديده بواسطةclass
أوandroid:name
كجزء من التضخّم، ما يضمن عملfindFragmentById()
وfindFragmentByTag()
مباشرةً بعد ذلك. (b/142520327) - تم إصلاح
IllegalStateException
فيFragmentContainerView
بسبب حفظ الحالة. (b/142580713) - تم إصلاح
UnsupportedOperationException
فيFragmentContainerView
عندما يكون صفFragmentContainerView
مشوّشًا. (b/142657034)
المشاكل المعروفة
- لا يحتفظ ProGuard تلقائيًا بالرموز التي تتم الإشارة إليها فقط من خلال السمة
class
أوandroid:name
فيFragmentContainerView
، ما يتطلّب منك إضافة قاعدة الاحتفاظ يدويًا لكل فئة من الرموز. لقد أوقفنا قاعدة Lint التي تقترح الانتقال إلىFragmentContainerView
إلى أن يتم حلّ هذه المشكلة من خلالaapt2
. (b/142601969)
الإصدار 1.2.0-beta02
11 أكتوبر 2019
تم إصدار androidx.fragment:fragment:1.2.0-beta02
وandroidx.fragment:fragment-ktx:1.2.0-beta02
وandroidx.fragment:fragment-testing:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تلقّي
onInflate()
في Fragment السمات المناسبة منFragmentContainerView
، ما يؤدي إلى حدوث مشاكل مثلNavHostFragment
. (b/142421837)
الإصدار 1.2.0-beta01
9 أكتوبر 2019
تم إصدار androidx.fragment:fragment:1.2.0-beta01
وandroidx.fragment:fragment-ktx:1.2.0-beta01
وandroidx.fragment:fragment-testing:1.2.0-beta01
. يتضمّن الإصدار 1.2.0-beta01 عمليات الإيداع هذه.
الميزات الجديدة
- تضيف السمة
FragmentContainerView
إمكانية إضافة جزء أولي مع إتاحة السمتَينandroid:name
وandroid:tag
الاختياريتَين في XML. على عكس العلامة<fragment>
، تستخدم العلامةFragmentContainerView
علامةFragmentTransaction
عادية في الخلفية لإضافة الجزء الأوّلي، ما يسمح بإجراء المزيد من عملياتFragmentTransaction
على العلامةFragmentContainerView
ويتيح استخدام View Binding للتصميم. (b/139830628، b/141177981) - تحتوي الآن الفئات الفرعية على تحذير Lint يقترح إصلاحًا سريعًا لاستبدال
<fragment>
بـFragmentContainerView
. (b/139830056)
إصلاح الأخطاء
- تم إصلاح
ClassCastException
عند استخدامandroidx.transition
. (b/140680619) - عند استخدام Transition
1.3.0-beta01
، تنتظر الآن الأجزاء انتهاء عمليات الانتقالandroidx.transition
(بالإضافة إلى عمليات الانتقال والرسوم المتحركة في إطار العمل، والتي تم إصلاحها في Fragment1.2.0-alpha03
وFragment1.2.0-alpha02
على التوالي) قبل إرسالonDestroyView()
. (aosp/1119841) - عند استخدام Transition
1.3.0-beta01
، تلغي الآن "اللقطات" عمليات الانتقالandroidx.transition
بشكل صحيح قبل بدء عمليات انتقال أو رسوم متحركة جديدة على الحاوية نفسها. (aosp/1119841) - تم إصلاح مشكلة في الإصدار 17 من واجهة برمجة التطبيقات والإصدارات الأقدم عند استخدام عمليات الانتقال
androidx.transition
في العرض الجذر لـ Fragment عند استخدامFragmentContainerView
. (b/140361893) - تعتمد حزمة
fragment-testing
الآن على حزمة AndroidX Test1.2.0
، ما يحلّ مشكلة عدم التوافق مع الإصدار الأخير 3.2.0 من Espresso. (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
غير الفارغ الذي تمت إضافة Fragment إليه (يمكنك استخدام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)
- تنتظر الآن الأجزاء اكتمال عمليات الانتقال (بالإضافة إلى الصور المتحركة التي تم إصلاحها في Fragment
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)
ثابتة لاسترداد Fragment الذي يحتوي على طريقة عرض تم إنشاؤها من خلال fragment. تتوفّر أيضًا إضافة Kotlin فيfragment-ktx
. (aosp/1090757) - تمت إضافة عمليات تحميل زائدة جديدة للدالتَين
add()
وreplace()
فيFragmentTransaction
التي تقبلClass<? extends Fragment>
وBundle
اختيارية من الوسيطات. تستخدِم هذه الطرقFragmentFactory
لإنشاء مثيل من Fragment المراد إضافته. تمت أيضًا إضافة إضافة 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()
أو غير ذلك.
إصلاح الأخطاء
- من Fragment
1.1.0-rc04
: تلغي الآن الأجزاء عمليات الانتقال المؤجّلة بشكل صحيح عند إغلاقها. (b/138251858) - من Fragment
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()
بعد ربط طريقة عرض Fragment وقبل استدعاء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 النطاقية في النشاط. - Max Lifecycle: يمكنك الآن ضبط الحد الأقصى لحالة Lifecycle الخاصة بـ Fragment من خلال استدعاء
setMaxLifecycle()
علىFragmentTransaction
. يحلّ هذا الإصدار محلّsetUserVisibleHint()
الذي تم إيقافه نهائيًا. يتضمّنFragmentPagerAdapter
وFragmentStatePagerAdapter
طريقة وضع تصميم جديدة تتيح لك التبديل إلى السلوك الجديد. - دالة إنشاء FragmentActivity LayoutId: يمكن الآن لفئات
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
) بشكل صحيح في الفئات Fragment المتداخلة. (b/133497591) - تأخذ الآن مثيلات
OnBackPressedCallback
المسجّلة فيonCreate()
الخاص بـ Fragment الأولوية بشكل صحيح على FragmentManager الفرعي. (b/133175997) - لم تعُد الأجزاء الفرعية للأطفال متحركة عند استبدال الجزء الرئيسي. (b/121017790)
- تم الآن تجاهل الرسوم المتحركة والانتقالات في الأجزاء عند استخدام
animateLayoutChanges="true"
، ما يؤدي إلى حلّ مشكلة عدم إيقاف الأجزاء بشكل صحيح. (b/116257087)
الإصدار 1.1.0-alpha09
16 أيار (مايو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha09
وandroidx.fragment:fragment-ktx:1.1.0-alpha09
وandroidx.fragment:fragment-testing:1.1.0-alpha09
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تتلقّى الآن الأجزاء ردّ اتصال إلى طريقة
onPrimaryNavigationFragmentChanged(boolean)
جديدة عند تغيُّر جزء التنقّل الأساسي. aosp/960857
إصلاح الأخطاء
- تتم الآن إزالة عناصر القائمة التي تم توسيعها بواسطة جزء ثانوي بشكل صحيح عند إزالة الجزء الرئيسي. b/131581013
الإصدار 1.1.0-alpha08
7 أيار (مايو) 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha08
وandroidx.fragment:fragment-ktx:1.1.0-alpha08
وandroidx.fragment:fragment-testing:1.1.0-alpha08
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
هذا الإصدار غير متوافق مع الإصدارات من 1.1.0-alpha01 إلى 1.1.0-alpha04 من مكتبة Preferences. يُرجى الترقية إلى الإصدار 1.1.0-alpha05 من Preferences عند استخدام هذا الإصدار من Fragments.
الميزات الجديدة
- تمت إضافة تحميل زائد جديد للوظيفة
postponeEnterTransition()
يستغرق مهلة زمنية، وبعدها سيستدعي Fragment تلقائيًا الوظيفة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
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يمكنك الآن ضبط الحدّ الأقصى لحالة Lifecycle الخاصة بـ Fragment من خلال استدعاء
setMaxLifecycle()
علىFragmentTransaction
. يحلّ هذا الإصدار محلّsetUserVisibleHint()
الذي تم إيقافه نهائيًا. يتضمّنFragmentPagerAdapter
وFragmentStatePagerAdapter
طريقة وضع تصميم جديدة تتيح لك التبديل إلى السلوك الجديد. (b/129780800)
تغييرات واجهة برمجة التطبيقات
- يمكن الآن طلب
moveToState(STARTED)
علىFragmentScenario
فقط على الأجهزة التي تعمل بالإصدار 24 من واجهة برمجة التطبيقات والإصدارات الأحدث. (b/129880016)
التغييرات في السلوك
- نتيجةً لذلك (b/129907905)، لن تتلقّى الأجزاء في سجلّ الرجوع ردّ اتصال إلى
onCreateView()
عند إعادة إنشاء النشاط المضيف. لن يتم استدعاءonCreateView()
إلا عندما يصبح الجزء مرئيًا (أي عند إزالة آخر جزء من حزمة الخلف).
إصلاح الأخطاء
- تم إصلاح مشكلة عند استخدام علامة
<fragment>
في XML ومنشئcontentLayoutId
الخاص بـFragmentActivity
أوAppCompatActivity
. (b/129907905) - تم إصلاح مشكلة عدم نقل الأجزاء في سجلّ التراجع إلى
CREATED
على الأقل بعد تغيير الإعدادات، ما يؤدي إلى عدم التخلص من ViewModels والأجزاء الفرعية المحفوظة بشكلٍ صحيح. (b/129593351) - تم إصلاح عُطل في
restoreSaveState
ناتج عن عدم مزامنة الأجزاء المحفوظة بعد حفظ حالة المثيل. (b/130433793) (aosp/947824) - تم إصلاح المشاكل التي لم يتم فيها استدعاء
OnBackPressedCallback
تمت إضافته باستخدام دورة حياة جزء إذا كانFragmentManager
يحتوي على سجلّ الخلف. لمزيد من التفاصيل، يمكنك الاطّلاع على androidx.activity 1.0.0-alpha07. (aosp/948209) - لم تعُد الأجزاء تفرض استخدام
LAYER_TYPE_HARDWARE
للصور المتحركة. إذا كنت بحاجة إلى صورة متحركة على مستوى الأجهزة، يُرجى ضبطها كجزء من الصورة المتحركة. (b/129486478)
الإصدار 1.1.0-alpha06
3 أبريل 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha06
وandroidx.fragment:fragment-ktx:1.1.0-alpha06
وandroidx.fragment:fragment-testing:1.1.0-alpha06
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تتضمّن الاستثناءات التي يطرحها FragmentManager الآن اسم Fragment في الرسالة. (b/67759402)
تغييرات واجهة برمجة التطبيقات
- يحتوي كل من
Fragment
وFragmentActivity
الآن على دالة إنشاء ثانية تأخذ@LayoutRes int
، ما يحلّ محل السلوك السابق المتمثل في إضافة تعليقات توضيحية إلى صفك باستخدام@ContentView
. يعمل هذا الأسلوب في كلّ من وحدات التطبيق والمكتبة. (b/128352521) - تم الآن وضع علامة
@CallSuper
علىonActivityResult()
في FragmentActivity بشكل صحيح. (b/127971684) - تم إيقاف الطريقة
instantiate
في FragmentFactory التي تقبل حزمة وسيطة، ويجب أن تستخدم التطبيقات الطريقة الجديدةinstantiate
التي لا تقبل حزمة. (b/128836103) - تمت الآن إضافة التعليقات التوضيحية بشكل صحيح إلى طرق
FragmentScenario
باستخدام@StyleRes
. (aosp/924193) - تم إيقاف
FragmentTabHost
نهائيًا. (b/127971835) - تمت إزالة
getThemedContext()
من FragmentActivity. (aosp/934078)
إصلاح الأخطاء
- تم إصلاح مشكلة في الإصدار 1.1.0-alpha05 كانت تؤدي إلى ظهور Fragment الوارد بشكل سريع على الشاشة. (b/129405432)
- تم إصلاح مشكلة فقدان جزء التنقّل الأساسي بعد سلسلة من العمليات popBackStack+replace+popBackStack. (b/124332597)
- تم إصلاح مشكلة عند استخدام منشئات
@ContentView
في نشاطك عند استعادة حالة Fragment. (b/127313094) - تم تصحيح منطق
setTargetFragment()
عند استبدال Fragment مستهدَف حالي بـ Fragment لم يتم ربطه بعد بـ FragmentManager. (aosp/932156)
الإصدار 1.1.0-alpha05
13 مارس 2019
تم إصدار androidx.fragment:fragment:1.1.0-alpha05
وandroidx.fragment:fragment-ktx:1.1.0-alpha05
وandroidx.fragment:fragment-testing:1.1.0-alpha05
. يمكنك الاطّلاع هنا على القائمة الكاملة بالتغييرات المضمّنة في هذا الإصدار.
الميزات الجديدة
- تم الآن تخزين عمليات البحث عن التعليقات التوضيحية في
@ContentView
مؤقتًا (b/123709449)
تغييرات السلوك
- عند استدعاء
remove()
وhide()
وshow()
وdetach()
وsetPrimaryNavigationFragment()
مع ربط جزء بـ FragmentManager مختلف، سيتم الآن عرض الخطأIllegalStateException
بدلاً من حدوث خطأ بدون إشعار (aosp/904301).
إصلاح الأخطاء
- تم الآن وضع علامة
@CallSuper
علىonNewIntent
مقابلFragmentActivity
بشكل صحيح (b/124120586) - تم إصلاح مشكلة كان يمكن فيها استدعاء
onDismiss()
فيDialogFragment
مرّتين عند استخدامgetDialog().dismiss()
أوgetDialog().cancel()
(b/126563750)
الإصدار 1.1.0-alpha04
7 فبراير 2019
تم إصدار androidx.fragment:fragment 1.1.0-alpha04
وandroidx.fragment:fragment-ktx 1.1.0-alpha04
وandroidx.fragment:fragment-testing 1.1.0-alpha04
.
الميزات الجديدة
- تمت إضافة إمكانية استخدام التعليق التوضيحي للفئة
@ContentView
الذي يتيح لك تحديد ملف XML للتصميم الذي يجب توسيعه كبديل لتجاوزonCreateView()
. يُنصح بعرض العمل ذي الصلة فيonViewCreated()
. (aosp/837619) - تعتمد
fragment-testing
الآن على الإصدار الثابت 1.1.0 منandroidx.test:core-ktx
(b/121209673) - يمكنك الآن استخدام
openActionBarOverflowOrOptionsMenu
معFragmentScenario
لاختبار قوائم الخيارات المستضافة في Fragment (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 لاسترداد ViewModels المرتبطة بـ Activity التي تحتوي عليها [b/119050253] - تمت توسعة
by viewModels
مفوّض سمة Kotlin لتضمين طريقة 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 الآن استخدام تعبير lambda لإنشاء 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
للتحكّم في طريقة إنشاء مثيلات Fragment الجديدة. - تمت إضافة
by viewModels()
Kotlin property delegate جديد لاسترداد ViewModels من Fragment. - يتم الآن إلغاء أحداث الإدخال المعلّقة (مثل النقرات) في
onStop()
ضمن Fragment.
تغييرات واجهة برمجة التطبيقات
- تمت توسيع نطاق التعليقات التوضيحية الخاصة بقابلية القيم الفارغة بشكل كبير على مستوى واجهة برمجة التطبيقات Fragment.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تعذُّر تنفيذ عمليات Fragment من داخل LiveData (b/77944637)
المشاكل المعروفة
- لا يمكن الوصول إلى Target Fragments بعد إزالة Fragment من FragmentManager.
- يعتمد
fragment-testing
على androidx.test:core:1.0.0-beta01
بدلاً من androidx.test:core:1.0.0
الصحيح.