navigationevent
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 23 سبتمبر 2026 | 1.1.2 | 1.2.0-rc01 | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على navigationevent، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.2.0-rc01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.2.0-rc01") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.2
الإصدار 1.2.0-rc01
23 سبتمبر 2026
تم طرح androidx.navigationevent:navigationevent-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
تحديثات الاعتماديات
- تم تعديل الاعتمادية
androidx.lifecycle:lifecycle-runtimeإلى الإصدار 2.10.0. هذا الإصدار مطلوب لتشغيل عمليات التحقّق من أخطاء lint المجمَّعة في وقت التشغيل لدورة الحياة مع الإصدار 9.5.0-alpha04 أو إصدار أحدث من "مكوّن Android الإضافي لبرنامج Gradle". (I99bfd، b/556807521)
الإصدار 1.2.0-alpha04
12 أغسطس 2026
تم طرح androidx.navigationevent:navigationevent-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة واجهتَي برمجة التطبيقات الجديدتَين
hasEnabledBackHandlersوhasEnabledForwardHandlersإلىNavigationEventInputللسماح بتتبُّع إمكانات تحديد الاتجاه بشكل مستقل. (I772bf، b/123456789)
إصلاح الأخطاء
- إضافة عملية بحث احتياطية عن مسار السياق لحلّ المشكلة
LocalNavigationEventDispatcherOwnerعند عدم توفّر مالكي شجرة العرض. (I51e30، b/530641649)
الإصدار 1.2.0-alpha03
29 يوليو 2026
تم طرح androidx.navigationevent:navigationevent-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف
titleوurlإلىNavigationEventInfoللسماح بتخصيص عنوان الوجهة وعنوان URL الخاص بالموقع الجغرافي. (Ie5619) - أضِف مصنع
NavigationEventDispatcherOwnerفي navigationevent. (I740d3) - أضِف التعليق التوضيحي ExperimentalNavigationEventApi للسماح بالموافقة الصريحة على استخدام واجهات برمجة التطبيقات الجديدة وغير المستقرة. (Ia5d25)
إصلاح الأخطاء
- إتاحة BrowserInput للجميع في استهدافات wasmJs كواجهة برمجة تطبيقات تجريبية (Icc2a8)
الإصدار 1.2.0-alpha02
15 يوليو 2026
تم طرح androidx.navigationevent:navigationevent-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف السمة
hasEnabledHandlersإلىNavigationEventInputللسماح للمطوّرين بالبحث عن حالة المعالج الحالية مباشرةً بدون الاعتماد على عمليات رد الاتصال. (I8ecec)
إصلاح الأخطاء
- إصلاح عملية نشر البيانات الاحتياطية في
NavigationEventDispatcher(I015f8، b/531988076)
الإصدار 1.2.0-alpha01
01 يوليو 2026
تم طرح androidx.navigationevent:navigationevent-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- لدى "
androidx.benchmark" الآنminSdkيبلغ 24. (Ic2a85) - أضِف onForwardCompletedFallback إلى TestNavigationEventDispatcherOwner لتفعيل تتبُّع أحداث التنقّل للأمام غير المعالَجة واختبارها. (I6bbd7)
- أضِف navigationEventInput إلى TestNavigationEventDispatcherOwner لتسهيل محاكاة أحداث التنقّل في الاختبارات. (I3ef48)
إصلاح الأخطاء
- تنظيف معلومات واجهة برمجة التطبيقات (Ia8066)
- تجاهل أحداث التنقّل التي يتم إرسالها إلى أجهزة إدخال غير متصلة في السابق، كان إرسال الأحداث إلى إدخال تمت إزالته يؤدي إلى ظهور
IllegalStateException. (I1a8bc، b/515890298) - منع تكرار الرموز مع الإصدارات القديمة من فرع JetBrains عند الترقية إلى الإصدار 1.11.0 من Compose Multiplatform (I4cc4d)
لا تتوفّر ملاحظات إصدار لهذا العنصر.
الإصدار 1.1
الإصدار 1.1.2
17 يونيو 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.2. يتضمّن الإصدار 1.1.2 هذه التعديلات.
إصلاح الأخطاء
- حدِّث حِزم Compose إلى الإصدار 1.11.2. (a5e9259)
الإصدار 1.1.1
6 مايو 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة
NavigationEventHandlerno-op عند تفعيل وضع الفحص لتفعيل ميزة "الرجوع التوقّعي" في الإصدارات التجريبية من "استوديو Android".
الإصدار 1.1.0
22 أبريل 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
الإصدار 1.1.0-rc01
8 أبريل 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل compileSdk في Compose إلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب استخدام الإصدار 9.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" على الأقل عند استخدام Compose. (Id45cd، b/413674743)
الإصدار 1.1.0-beta01
27 مارس 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف
OnForwardCompletedFallbackإلىNavigationEventDispatcher، ما يتيح سلوكًا تلقائيًا للنظام لأحداث التنقّل غير المعالَجة للأمام. (Iac620، b/489138116)
الإصدار 1.1.0-alpha01
25 فبراير 2026
تم طرح androidx.navigationevent:navigationevent-*:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إتاحة جميع أهداف Kotlin Multiplatform (KMP) في NavigationEvent-Compose فصل عملية تحديد المالك عن
LocalViewللسماح لمضيفي المنصات بتوفير قيمة تلقائيةLocalNavigationEventDispatcherOwnerمع الحفاظ علىLocalViewكخيار احتياطي آمن على Android (Iae980، b/434940570، Iccf58)
التغييرات في واجهة برمجة التطبيقات
- أضِف دالّتَي الإضافة
NavigationEvent.toBackEvent()وBackEvent.toNavigationEvent()للتحويل بينBackEventوNavigationEventفي Android. (Ie3b71، b/477001292)
الإصدار 1.0
الإصدار 1.0.2
28 يناير 2026
تم طرح androidx.navigationevent:navigationevent-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.
إصلاح الأخطاء
- إصلاح تعطُّل عند استخدام
NavigationEventHandlerفي "إصدارات استوديو Android التجريبية" يرصد المعالج الآن وضع الفحص ولا ينفّذ أي إجراء، ما يسمح بعرض "المعاينة" بدون توفير أداة إرسال. (I370f2، b/454313986).
الإصدار 1.0.1
3 ديسمبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
ConcurrentModificationExceptionعند التخلص من عنصر ثانويNavigationEventDispatcher، مثل العناصر التي تم إنشاؤها باستخدامrememberNavigationEventDispatcherOwner()(ec68a9، b/454363524)
الإصدار 1.0.0
19 نوفمبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0:
أصبحت مكتبة Navigation Event مستقرة الآن. Navigation Event هي مكتبة AndroidX للتعامل مع التفاعلات على مستوى النظام، مثل الرجوع إلى الخلف على مستوى النظام وإيماءة إظهار شاشة الرجوع في Android (والمنصات الأخرى).
للتعامل مع
NavigationEvent، يمكنك تنفيذNavigationEventHandlerخاص بك يتجاوز الوظائف المطلوبة. بعد ذلك، عليك إضافة المعالج إلىNavigationEventDispatcher. بدءًا من إصدار النشاط1.12.0، تنفّذComponentActivityواجهةNavigationEventDispatcherOwnerالجديدة التي توفّر أداة إرسال جاهزة للاستخدام :// The NavigationEventInfo provides information about a navigation state object CurrentInfo : NavigationEventInfo() // you can retrieve this from any component that is a NavigationEventDispatcherOwner // or you can instantiate your own custom dispatcher val dispatcher = myActivity.navigationEventDispatcher val myHandler = object : NavigationEventHandler<NavigationEventInfo>( initialInfo = CurrentInfo, isBackEnabled = true ) { override fun onBackStarted(event: NavigationEvent) { // Prepare for the back event } override fun onBackProgressed(event: NavigationEvent) { // Use event.progress for predictive animations } // This is the required method for final event handling override fun onBackCompleted() { // Complete the back event } override fun onBackCancelled() { // Cancel the back event } } dispatcher.addHandler(myHandler)يوفّر الوحدة
navigationevent:navigationevent-composeدالة إنشاء ملائمةNavigationBackHandlerتربط المعالج تلقائيًا بأقربLocalNavigationEventDispatcherOwnerفيNavigationEventDispatcherوتسمح للمطوّرين بتوفير السلوك المطلوب كمعلَمات:object CurrentInfo : NavigationEventInfo() object PreviousInfo : NavigationEventInfo() val navEventState = rememberNavigationEventState( currentInfo = CurrentInfo, backInfo = PreviousInfo ) // Inside composition NavigationBackHandler( State = navEventState, isBackEnabled = true, // optional onBackCancelled = { // Cancel the back event }, // required onBackCompleted = { // Complete the back event } , )
يؤدي استخدام هذا النمط في Compose إلى تسهيل عملية نقل NavigationEventState والسماح بمراقبته من خلال عناصر Composable مختلفة (أي في حالة Navigation3، حيث يمكنك نقل الحالة خارج NavDisplay).
يمكن لكل
NavigationEventDispatcherتوفير أداة إرسال رئيسية لكل من حالات الإنشاء وغير الإنشاء. يتيح ذلك للمطوّرين إنشاء بنية هرمية يمكن فيها إدارة العديد من أدوات الإرسال من خلال أداة رئيسية واحدة. يؤدي توفّر عنصر رئيسي إلى تسهيل التعامل مع مجموعات من أدوات إرسال البيانات التي قد تحتاج إلى إيقافها أو التخلص منها:// Non-Compose val parentDispatcher = NavigationEventDispatcher() val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher) // Compose val composeChildDispatcher = rememberNavigationEventDispatcher( // This defaults to `LocalNavigationEventDispatcherOwner.current` // Must explicitly provide null to have an unparented dispatcher created here parent = NavigationEventDispatch() )تتيح المكتبة أيضًا إمكانية تقديم الإشارات مباشرةً إلى
NavigationEventDispatcherمن خلالNavigationEventInput. تعملNavigationEventInputs كجانب "الإدخال" في نظام التنقّل، حيث تحوّل الأحداث الخاصة بالنظام الأساسي (مثل إيماءات الرجوع في النظام أو النقرات على الأزرار) إلى أحداث موحّدة يمكن إرسالها إلىNavigationEventDispatcher. يوفّر وحدةnavigationevent:navigationeventحاليًاNavigationEventInputَين:DirectNavigationEventInputأكثر عمومية للسماح بإرسال أي حدث، وOnBackInvokedInputخاص بنظام التشغيل Android يسمحNavigationEventDispatcherبدعم الرجوع إلى الخلف في النظام وإيماءة الرجوع التوقّعية. إذا كنت تستخدم أداة إرسال خاصة بك (بدلاً من الأداة التي توفّرهاComponentActivity)، عليك إضافة الإدخال يدويًا باتّباع الخطوات التالية:val dispatcher = NavigationEventDispatcher() dispatcher.addInput(DirectNavigationEventInput()) dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
الإصدار 1.0.0-rc01
5 نوفمبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الإصدار 1.0.0-beta01
8 أكتوبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- صحِّح التعليق التوضيحي
FloatRangeالخاص بـNavigationEvent.touchXوNavigationEvent.touchY. تمثّل هذه القيم إحداثيات وحدات البكسل المطلقة وليس لها حدّ أقصى1.0. (I4b205، b/445989313) - أعِد تصميم العنصر القابل للإنشاء
NavigationEventDispatcherOwnerليصبحrememberNavigationEventDispatcherOwner. تعرض الدالة الآنNavigationEventDispatcherOwnerمباشرةً. لتوفير هذا المالك لتركيبة فرعية، استخدِمCompositionLocalProvider. (I874b2، b/444446629)
الإصدار 1.0.0-alpha09
24 سبتمبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- استخدِم كائن
NavigationEventTransitionState.Idleالسينغلتون مباشرةً بدلاً من إنشاء مثيلIdle(). (Ic7d9e، b/444734264) - اجعل دوال الإنشاء المريحة داخلية، واحصل على مثيلات من خلال
NavigationEventDispatcher.historyالعامة بدلاً من الإنشاء المباشر. (I3b7e0، b/444734264) - يجب إنشاء
NavigationEventStateمن خلالrememberNavigationEventState، وأصبح المنشئ داخليًا الآن. (Ie143c، b/444734264) - استخدِم
onBackCompletedFallbackبدلاً من استخداماتfallbackOnBackPressedومَعلمة الدالة الإنشائية. لم يتغيّر السلوك، ويتم استدعاؤه فقط عند اكتمال أحداث الرجوع غير المعالَجة. (Idabe9، b/444734264) - أصبح الآن الباني الأساسي للفئة
NavigationEventHistory(mergedHistory, currentIndex)هوinternal. يجب أن يستخدم المستهلكون الخارجيون أدوات الإنشاء العامة (إما أداة الإنشاء الفارغة أو أداة الإنشاء المستندة إلى الأقسام) لإنشاء مثيلات. (I1c047، b/444734264) - جعل
View.setViewTreeNavigationEventDispatcherOwnerيقبل المالك القابل للتصغير (Ic9eb6، b/444436762) - أصبح "
NavigationEventInfo" الآنabstract classبدلاً منinterface. تعديل جميع عمليات التنفيذ المخصّصة لتكون مشتقة من الفئة (مثلdata class MyInfo : NavigationEventInfo()) (I1e59c، b/444734264) - تمت إزالة السمة القديمة
NavigationEventDispatcher.stateوالدالةgetState<T>(). استخدِم مسارَيdispatcher.transitionState(لتقدُّم الإيماءة) وdispatcher.history(لمجموعة التنقّل) الجديدَين والمنفصلَين. (Ic2ceb، b/444734264) - تم استبدال دالة الاستدعاء
NavigationEventInput.onInfoChanged(...). نفِّذ وظيفة الاستدعاء الجديدةonHistoryChanged(history: NavigationEventHistory)لتلقّي التعديلات كعنصرNavigationEventHistoryواحد. (I23e0b، b/444734264) - إضافة
NavigationEventDispatcher.historyStateFlowجديد على مستوى العالم يتيح هذا المسار غير العام للمراقبين الاشتراك فقط في التغييرات التي تطرأ على حزمة التنقّل، ويظل ثابتًا أثناء تقدّم الإيماءة. هذا هو الجزء المقابل لـtransitionState. (I1db10، b/444734264) - إضافة
NavigationEventDispatcher.transitionStateStateFlowجديد على مستوى العالم يتيح هذا المسار غير العام للمراقبين الاشتراك فقط في حالة الإيماءة المادية (Idle/InProgress)، بشكل منفصل عن السجلّ. (I171fa، b/444734264) - قدِّم صف
NavigationEventHistoryState. ستكون هذه الواجهة هي واجهة برمجة التطبيقات الأساسية لتتبُّع سجلّ معلومات التنقّل، بشكل منفصل عن حالة الإيماءة. (I81ca5، b/444734264) - تم الآن وضع علامة
@ImmutableعلىNavigationEvent، ما يتيح لبرنامج Compose Compiler تحسين عمليات إعادة التركيب. (If78c7، b/444734264) - تم تعديل واجهات برمجة التطبيقات الخاصة بمعالج
navigationevent-compose. تتيح الآن السمتانNavigationEventHandlerوNavigationBackHandler(والسمات المتغيرة) تحميلًا جديدًا يقبل السمةNavigationEventStateالتي تم نقلها. يتم الاحتفاظ بالتحميلات الزائدة البسيطة (التي تتضمّنcurrentInfo) وتستخدم الآن نموذج الحالة الجديد هذا داخليًا. (Ic3251، b/444734264) - أضِف عنصر الاحتفاظ بالحالة
@StableNavigationEventState<T>الجديد إلى مكتبةnavigationevent-compose. يجمع هذا العنصر بين السجلّ المحلي وحالة الإيماءة المحلية، وسيكون الرابط الأساسي بينrememberNavigationEventStateوNavigationEventHandler. (Ifb69f، b/444734264) - أضِف سمة
transitionState: TransitionStateجديدة عامة للقراءة فقط إلىNavigationEventHandler. تحتفظ المعالجات الآن بحالة الانتقال الخاصة بها، ويمكن للأنظمة الخارجية مراقبتها. (I9acd2، b/444734264) - نقدّم لك فئة
TransitionStateالجديدة المحكمة الإغلاق. ستكون هذه الواجهة هي واجهة برمجة التطبيقات الأساسية لمراقبة حالة الإيماءات، وهي منفصلة عن سجلّ التنقّل. (Id4beb، b/444734264) - عرض
currentInfoوbackInfoوforwardInfoكسمات عامة للقراءة فقط علىNavigationEventHandler(Ia7636، b/444734264) - يجب أن توفّر عمليات تنفيذ
NavigationEventHandlerالآن قيمةinitialInfo: Tلمنشئ الفئة الأساسية. (Idcfea، b/444734264) - استبدِل
OnBackInvokedInputبـOnBackInvokedOverlayInputأوOnBackInvokedDefaultInput. (I5323f، b/428948766) - وضع علامة
NavigationEventStateكـ@Immutableيؤدي ذلك إلى تحسين أداء Compose من خلال ضمان إمكانية تخطّي إعادة التركيب بشكل صحيح في العناصر القابلة للإنشاء التي تراقب هذه الحالة. (I399c8) - أعِد تسمية
NavigationEventInfo.NotProvidedإلىNavigationEventInfo.None;لتعديل المراجع. لن يتغيّر السلوك. (I5e2d4) - تم الآن وضع علامة
@ImmutableعلىNavigationEventInfo، ما يتيح لبرنامج Compose Compiler تحسين عمليات إعادة التركيب. (I7c112) - تحسين بيئة العمل في Java من خلال واجهة ممتعة للردّ الاحتياطي عند إكمال الرجوع (I8a860)
- تمّت إعادة تسمية
onHasEnabledHandlerChangedإلىonHasEnabledHandlersChanged. يوضّح ذلك أنّ تقارير معاودة الاتصال تتضمّن حالة التفعيل الجماعي لجميع المعالِجات، وليس معالِجًا واحدًا فقط. (I1af61، b/443711297) - أزِل
hasEnabledHandler()منNavigationEventDispatcher;واستخدِمNavigationEventInput.onHasEnabledHandlersChangedبدلاً منه. (Idef72، b/443711297) - أضِف الدالة
onInfoChangedللردّ إلىNavigationEventInputلإعلام المستمعين بالتغييرات في سجلّ التنقّل. يوفّر ذلك السياق الكامل لمجموعات التراجع والتقدّم الحالية، ما يتيح لـ Inputs التفاعل مع المعلومات السياقية. (I69a8b، b/443282983) - تحويل
swipeEdgeمنNavigationEventإلى@IntDef(Icee54، b/443950342) - أضِف المَعلمة
priorityإلىNavigationEventDispatcher.addInputلتحديد نطاق أولوية واحدة للمرسِل، ولن يتم الآن تنشيط أحداث مثلonHasEnabledCallbacksChangedإلا عند تغيير معاودة الاتصال بهذه الأولوية. (I3e488، b/443711297) - أعِد تسمية المَعلمة
NavigationEventDispatcherمنparentDispatcherإلى parent لتوضيحها. (Id4f1f، b/443801782) - إزالة
NavigationEventPriorityواستخدام@IntDefبدلاً منها لمستخدمي Java (I10a9f، b/440514265) - فرض عقد معالج التنقّل إذا كانت قيمة
NavigationEventHandlerهيisBackEnabledأوisForwardEnabledوتم ضبطها علىtrue، عليك الآن إلغاءonBackCompletedأوonForwardCompletedعلى التوالي. تُصدر عمليات التنفيذ التلقائية الآن استثناءً لمنع حدوث أخطاء غير ظاهرة. (I17c62) - فرض قيم أولوية صالحة عند إضافة معالِجات أحداث التنقّل سيؤدي استدعاء
addHandlerبأولوية غير متوافقة الآن إلى عرضIllegalArgumentException، ما يوفّر ملاحظات فورية بشأن الاستخدام غير الصحيح على جميع المنصات المستهدَفة. (I3c474)
إصلاح الأخطاء
- اجعل
addHandlerمتكرّرة، وتجاهل عمليات التسجيل المكرّرة. (I052aa، b/444734264) - الحفاظ على مزامنة سمات
NavigationEventStateأثناء إعادة التركيب (Ib3b4d، b/444734264) - تأكَّد من أنّ
NavigationEventInputsتتلقّى معلومات السياق الحالية (الحالية والسابقة والتالية) فور التسجيل. (Ie65bf، b/443282983)
الإصدار 1.0.0-alpha08
10 سبتمبر 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
الميزات الجديدة
- إضافة واجهة برمجة تطبيقات
NavigationEventHandlerمستندة إلى تعبير lambda تحلّ محلّ معالج Flow-based. التعامل مع إيماءات الرجوع والتقدّم باستخدام عمليات ردّ نداء بسيطة بدلاً من جمع التدفقات، ما يقلّل من النصوص النموذجية ويتجنّب مشاكل الإلغاء توفيرNavigationBackHandlerوNavigationForwardHandlerكواجهات برمجة تطبيقات مستهدَفة لتسهيل الاستخدام إزالةNavigationEventHandlerالمستند إلى Flow ونقل البيانات إلى عمليات معاودة الاتصال الجديدة (I23bac، b/436248277) - السماح للمستمعين غير النشطين بالوصول إلى الأنشطة السابقة الكاملة من خلال معلومات الرجوع المجمّعة، والسماح لواجهات المستخدم بعرض المعاينات وسجلّ التنقّل المتداخل بدلاً من الاقتصار على معاودة الاتصال الأعلى. (I7a510، b/436248277)
- تقديم نموذج صريح للخلف/الحالي/الأمام لتوضيح حالة التنقّل وإتاحة التنقّل للأمام باستخدام معالِجات متداخلة (Ib86da، b/420443609)
- أضِف طرق
onForward*وisForwardEnabledإلىNavigationEventCallback. (Ic100f، b/436248290) - إضافة إمكانية التنقّل للأمام إلى
NavigationEventInput(I5734b)
التغييرات في واجهة برمجة التطبيقات
- فعِّل اختبار أحداث التنقّل للأمام باستخدام
TestNavigationEventCallback. استخدِم الخطافَينisForwardEnabledوonForward*. (I21fb5، b/420443609) - إعادة تسمية عمليات ردّ الاتصال
onEvent*إلىonBack*فيNavEvent(I228b3، b/436248290) - تحويل
SwipeEdgeإلى فئة مضمّنة (Id5e01) - اجعل مكتبة
navigationeventقابلة للتشغيل التفاعلي مع Java. يمكن الآن الوصول إلى جميع واجهات برمجة التطبيقات العامة بالكامل من رمز Java البرمجي، ما يتيح الدمج السلس في المشاريع المختلطة اللغات أو التي تستخدم Java فقط. (Ibc944،I5465f، I9fb1e، b/440532890b/443040294) - توضيح أدوار واجهة برمجة التطبيقات من خلال إعادة تسمية
NavigationEventCallbackإلىNavigationEventHandlerيعكس هذا التغيير بشكل أفضل الغرض من الفئة وهو التعامل مع إيماءات التنقّل المتعدّدة المراحل. أصبحت طريقةaddCallbackالمقابلة الآنaddHandler. (I2492a، b/443040331)
إصلاح الأخطاء
- منع تشغيل عملية الرجوع الاحتياطية عند التنقّل للأمام (I74814، b/436248290)
- إتاحة استخدام ميزة "التنقّل التوقّعي للأمام"
NavigationEventتتعامل واجهات برمجة التطبيقات الآن مع إيماءتَي الرجوع إلى الخلف والتقدّم للأمام، ما يتيح عرض صور متحركة متسقة لكلا الاتجاهين. (Idc98c، b/436248290) - منع حدوث تعطُّل
IllegalStateExceptionأثناء إعادة التكوين عند إزالة عنصر فرعيNavigationEventDispatcherOwner(Iff50c، b/412629020) - يمكن الآن للمستمعين غير النشطين الوصول إلى حزمة التنقّل الكاملة السابقة من خلال معلومات الرجوع المجمّعة، ما يتيح لواجهات المستخدم عرض معاينات وسجلّ التنقّل المتداخل بدلاً من الاقتصار على معاودة الاتصال في أعلى الصفحة. (I7a510، b/436248277)
الإصدار 1.0.0-alpha07
27 أغسطس 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- إزالة
NavigationEventDispatcher.onHasEnabledCallbacksChanged(I50e97) - اجعل
NavigationEventCallback.onEventCompleted()مجرّدًا. (I36b38) - غيِّر طرق
NavigationEventCallback#on*إلىprotected. عدِّل رمز الاتصال لتجاوزها. (I6b691) - إعادة تسمية دوال
DirectNavigationEventInput(Iffb62) - تمّت إعادة تسمية
NavigationEventInput.onAttachإلىonAdded. (I2d0b8) - تمّت إعادة تسمية
NavigationEventInput.onDetachإلىonRemoved. (I2d0b8) - تمّت إعادة تسمية
NavigationEventInputHandlerإلىNavigationEventInput. (I676a4) - أضِف
@EmptySuperإلىNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - نفِّذ
onAttachفيNavigationEventInputHandler. (I03648) - نفِّذ
onDetachفيNavigationEventInputHandler. (I03648) - يتم ضبط القيمة التلقائية
NavigationEventCallbackعلى "مفعَّل" عند الإنشاء. (Ic0188) - استبدِل
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackبـNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - يجب استخدام سلسلة التعليمات الرئيسية في
NavigationEventDispatcher.addInput. (Ic2930) - يجب استخدام سلسلة التعليمات الرئيسية في
NavigationEventDispatcher.removeInput. (Ic2930) - إزالة
Dispatcher.addOnHasEnabledCallbacksChangedCallbackاستبدِلها بـ "Dispatcher.onHasEnabledCallbacksChanged". (Ida3e3، b/436530096)
إصلاح الأخطاء
- إصلاح الخطأ الذي كان يؤدي إلى تشغيل منطق دورة الحياة غير الصحيح عند إضافة معالج مرفق أو إزالة معالج غير مرفق (I9e47b)
الإصدار 1.0.0-alpha06
13 أغسطس 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
الميزات الجديدة
Passive Listeners API
يمكنك الآن تمرير معلومات سياقية مخصّصة من أي مضيف تنقّل والاستماع بشكل غير مباشر إلى تغييرات حالة الإيماءات من أي مكان في واجهة المستخدم. يتيح ذلك عرض صور متحركة تراعي السياق لإيماءة إظهار شاشة الرجوع وغيرها من عمليات التنقّل المستندة إلى الإيماءات.
تتضمّن هذه الميزة جزأين:
- توفير المعلومات: استخدِم
NavigationEventInfoلنقل البيانات المخصّصة. - حالة الاستهلاك: استخدِم
dispatcher.state(NavigationEventState) لمراقبة تقدّم الإيماءة وسياقها.
- تعرض السمة
NavigationEventCallbackالآن الطريقةsetInfo(currentInfo, previousInfo)لضبط سياق الإيماءة في مكالمة واحدة (I1d5e7، b/424470518). - تضيف
NavigationEventHandlerحمولة زائدة جديدة تقبلcurrentInfoوpreviousInfo، ما يجعلها واجهة برمجة التطبيقات الأساسية لتوفير السياق في تطبيقات Compose (I6ecd3، b/424470518).
مثال:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
- تعرض السمة
NavigationEventDispatcherالآن السمتَينdispatcher.stateوdispatcher.getState<T>()(If7fae وIa90ca وb/424470518). تتيح واجهات برمجة التطبيقات المستندة إلىStateFlowلأي واجهة مستخدم مراقبة تقدّم الإيماءة والبيانات السياقية بدون معالجة الحدث مباشرةً.
مثال:
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
أضِف السمة
progressإلىNavigationEventState(I7b196) التي تعرضlatestEvent.progressعندما تكون الحالة قيد التقدّم، أو0Fفي الحالات الأخرى:val progress = state.progressأضِف
NavigationEventDispatcherOwnerدالة مركّبة لإنشاء مثيلاتNavigationEventDispatcherوربطها والتخلص منها بشكل هرمي. تفعيل التحكّم الديناميكي في حالة التفعيل في أداة الإرسال والتنظيف التلقائي@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
التغييرات في واجهة برمجة التطبيقات
- تمّت إزالة المَعلمة
isPassthroughمنNavigationEventCallback. (I99028، b/424470518) - أصبحت دوال الإنشاء
NavigationEventStateداخلية الآن. للاختبار، عدِّل الحالة (القيمة التلقائية هيIdle) من خلالDirectNavigationEventInputHandler. اتّصِل بالرقمhandleOnStartedأوhandleOnProgressedلضبط الحالة علىInProgress، وبالرقمhandleOnCompletedأوhandleOnCancelledلإرجاعها إلىIdle. لتحديثNavigationEventInfo، استخدِمNavigationEventCallback.setInfo. (I93dca، b/424470518) - تمت إضافة مَعلمات تلقائية إلى
NavigationEventللسماح بإنشاء مثيل أسهل ولتبسيط الاختبار الذي يجب استخدامه بدلاً منTestNavigationEvent. (I5dc49, I232f4) - تمت إضافة
TestNavigationEventCallbackلاختبار أحداث التنقّل بحالات حالية/سابقة معيّنة. (Idd22e، b/424470518) - تم تحويل
NavigationEventInputHandlerإلى فئة مجرّدة لاستبدالAbstractNavigationEventInputHandlerالسابقة بتنفيذ فيDirectNavigationEventInputHandler(Iadde5، Ifed40I3897c، b/432616296، b/435416924) - تمت إعادة تسمية البادئات الخاصة بالدوال
send*فيNavigationEventInputHandlerإلىhandle*. (Iffcaf) - توسّع
OnBackInvokedInputHandlerالآن نطاقabstractNavigationInputHandlerالجديد. (Ib45aa) - تم تغيير
NavigationEventDispatcherOwnerليتطلّب موزعًا رئيسيًا يجب فيه تمريرnullبشكل صريح لإنشاء موزع رئيسي. (Ia6f64، b/431534103)
إصلاح الأخطاء
- تحسين الكفاءة من خلال تجنُّب نُسخ المجموعات في
NavigationEventDispatcher.dispose()(I4ab09) - تم إصلاح المشكلة المتمثّلة في عدم استجابة
NavigationEventHandlerبشكلٍ صحيح للتغييرات في حالته المفعّلة. (Ia5268 وI19bec وI5be5c وb/431534103)
آخر الأخبار في "مستندات Google"
- تم توسيع نطاق KDocs الخاص بـ
NavigationEventلتوضيح دوره كغلاف موحّد للأحداث وسلوك خاصية التفاصيل على مستوى أنواع التنقّل المختلفة (الإيماءات والنقرات). (I91e8d) - تم تعديل المستندات الخاصة بواجهات برمجة التطبيقات (
BackHandlerوPredictiveBackHandlerوNavigationEventHandler) التي تتعامل مع الرجوع إلى الخلف على مستوى النظام لتوضيح السلوك المتعلق بترتيب معاودة الاتصال. (I7ab94, )
تحديث الاعتمادية
- يعتمد
NavigationEventالآن على الإصدار 1.9.0-beta03 من Compose Runtime الذي يتيح للعنصرnavigationevent-composeإتاحة جميع أهداف KMP. (Ia1b87)
الإصدار 1.0.0-alpha05
30 يوليو 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
إتاحة التسلسل الهرمي بين الوالدَين والطفل:
يمكن أن تتضمّن NavigationEventDispatcher الآن أدوات إرسال رئيسية وثانوية، ما يؤدي إلى إنشاء بنية شجرية هرمية. يتيح ذلك نشر أحداث التنقّل وإدارتها بمرونة أكبر على مستوى عناصر واجهة مستخدم Compose المعقّدة من خلال عرض التسلسل الهرمي البنيوي لواجهة المستخدم من خلال أدوات إرسال متسلسلة. (I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
تتيح السمة الهرمية isEnabled التحكّم في أداة إرسال من أعلى إلى أسفل. عند ضبط isEnabled على false في أداة إرسال، يتم تلقائيًا إيقاف جميع أدوات الإرسال التابعة لها. تتيح هذه الميزة إيقاف فروع كاملة من نظام أحداث التنقّل بكفاءة. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
بالإضافة إلى ذلك، تراعي السمة isEnabled في NavigationEventCallback الآن حالة التفعيل الخاصة ببرنامج الإرسال المرتبط بها. وهذا يعني أنّه لا يمكن اعتبار معاودة الاتصال مفعّلة إلا إذا كانت معاودة الاتصال نفسها وبرنامج إرسالها (بما في ذلك العناصر الرئيسية) مفعّلة، ما يضمن التحكّم الهرمي المتّسق في تفعيل معاودة الاتصال. (I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
تم تقديم طريقة dispose() جديدة لتنظيف أدوات الإرسال والعناصر التابعة لها بشكل سليم. يؤدي استدعاء dispose() إلى إيقاف المستمعين لمنع تسرُّب الذاكرة، وإزالة جميع أدوات معالجة الأحداث التابعة بشكل متكرر، وإزالة جميع عمليات معاودة الاتصال المسجّلة في أداة معالجة الأحداث، وإلغاء ربطها بالعنصر الرئيسي. يضمن ذلك تحرير الموارد بشكل صحيح عندما لا تعود هناك حاجة إلى أدوات الإرسال. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
إذا تم استدعاء أي طريقة عامة على أداة معالجة تم التخلص منها، سيتم طرح IllegalStateException على الفور. يمنع ذلك حدوث أخطاء غير ظاهرة ويساعد المطوّرين في تحديد الاستخدام غير السليم أثناء عملية التطوير. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
ملاحظة: سنطرح NavigationEventDispatcherOwner Composable جديدًا يدير تلقائيًا أداة إرسال تابعة في واجهة مستخدم Compose في aosp/3692572. ومع ذلك، لم يتم تضمين هذا التغيير في الإصدار الحالي، ومن المقرّر إدراجه في الإصدار التالي.
مكتبة Navigation Testing
- أضِف وحدة
navigationevent-testingلتوفير أدوات اختبار مخصّصة لمكتبةnavigationevent. (0e50b6) - أضِف فئة أدوات وهمية
TestNavigationEventCallbackللاختبار. تسجّل هذه السمة طلبات طريقة رد الاتصال وتخزّن عناصرNavigationEventالمستلَمة للمساعدة في عملية التحقّق. (4a0246) - أضِف الدالة المساعدة الوهمية
TestNavigationEventلإنشاء مثيلاتNavigationEventبالقيم التلقائية، ما يسهّل اختبارات الوحدات لمعالجة أحداث التنقّل. (3b63f5) - أضِف فئة أدوات وهمية
TestNavigationEventDispatcherOwnerللاختبار. يتتبّع هذا العداد عدد أحداث تغيير حالة التفعيل والاحتياطي لدعم التحقّق من التفاعل في الاختبارات. (c8753e)
التغييرات في واجهة برمجة التطبيقات
- انقل
NavigationEventInputHandlerمنandroidMainإلىcommonMainلإتاحته في الرمز البرمجي المشترك في KMP. تمت إضافة طرقpublic send*جديدة لإرسال الأحداث. تغيير دوال الإرسال علىNavigationEventDispatcherمنpublicإلىinternal، ويجب أن يستخدم المستخدمون الآنNavigationEventInputHandlerلإرسال الأحداث. (Ia7114) - تمّت إعادة تسمية
NavigationInputHandlerإلىOnBackInvokedInputHandler. (I63405)
إصلاح الأخطاء
- إعادة هيكلة
NavigationEventDispatcherلتقليل الحمل الزائد من خلال تجنُّب عمليات تخصيص القوائم الوسيطة وتحسين أداء إرسال عمليات معاودة الاتصال (I82702، I1a9d9) - أضِف تعليقات توضيحية
@FloatRangeإلى الحقولtouchXوtouchYوprogressفيNavigationEventلفرض نطاقات القيم الصالحة في وقت الترجمة وتحسين أمان واجهة برمجة التطبيقات. (Iac0ec)
الإصدار 1.0.0-alpha04
2 يوليو 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
إصلاح الأخطاء
- تم استبدال
implementedInJetBrainsForkبـnavigationevent-composeوإضافة هدفcommonStubsليتوافق مع اصطلاحات Compose. تم طلب التغيير من قِبل JetBrains. (f60c79) - تم إصلاح تطبيق المكوّن الإضافي لبرنامج الترجمة البرمجية Compose في Kotlin/Native لضمان إنشاء رمز تجريبي صحيح. لن يؤثّر ذلك في واجهات برمجة التطبيقات أو السلوكيات المتاحة للجميع. (1890c9)
الإصدار 1.0.0-alpha03
18 يونيو 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة وحدة
navigationevent-composeجديدة لتوفير ميزات Jetpack Compose في مكتبةnavigationevent. (980d78) NavigationEventأضافت ميزة "إنشاء الأغاني" أغنية جديدةLocalNavigationEventDispatcherOwnerمحلية. تعرض هذه السمة قيمة تقبل القيم الفارغة لتحديد ما إذا كانت متوفّرة في التركيبة الحالية بشكل أفضل. سيؤديNavigationEventHandlerالآن إلى ظهور خطأ في حال لم يتم العثور على المالك الأساسي. (62ffda)NavigationEventأضافت Compose عنصرNavigationEventHandlerComposable جديدًا للتعامل مع أحداث (إيماءة إظهار شاشة الرجوع). يوفّرFlowلعناصرNavigationEventالتي يجب جمعها في دالة lambda المعلقة التي تقدّمها c42ba6 :
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
التغييرات في واجهة برمجة التطبيقات
- يمكن الآن تسجيل كل
NavigationEventCallbackباستخدامNavigationEventDispatcherواحد فقط في كل مرة، وإضافته إلى عدة أدوات إرسال يؤدي إلى ظهورIllegalStateException. يُرجى العِلم أنّ هذا السلوك يختلف عنOnBackPressedDispatcher، الذي يسمح باستخدام العديد من أدوات الإرسال. (e82c19) - تمّ تحويل
isPassThroughإلىvalلمنع التغيير أثناء التنقّل، ما قد يؤدي إلى إيقاف عملية إرسالNavigationEvent. (I0b287)
الإصدار 1.0.0-alpha02
4 يونيو 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- استبدِل الدالة الإنشائية الثانوية لـ
NavigationEventDispatcherبالوسيطات التلقائية. (I716a0) - أزِل السمة ذات الأولوية من
NavigationEventCallback. يمكنك نقل الأولوية إلىNavigationEventDispatcher.addCallback()بدلاً من ذلك. (I13cae)
إصلاح الأخطاء
- تم إصلاح
ConcurrentModificationExceptionالذي كان يمكن أن يحدث عند استدعاءNavigationEventCallback.remove()بسبب تعديل القائمة الداخلية للعناصر القابلة للإغلاق في الوقت نفسه. (b/420919815)
الإصدار 1.0.0-alpha01
20 مايو 2025
تم طرح androidx.navigationevent:navigationevent-*:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الميزات الجديدة
- توفّر مكتبة
androidx.navigationeventواجهة برمجة تطبيقات متوافقة مع KMP للتعامل مع الرجوع إلى الخلف في النظام، بالإضافة إلى ميزة الرجوع التوقّعي. يعملNavigationEventDispatcherكواجهات برمجة تطبيقات شائعة لتسجيل مثيل واحد أو أكثر منNavigationEventCallbackلتلقّي أحداث الرجوع إلى الخلف في النظام. - تقع هذه الطبقة أسفل واجهات برمجة التطبيقات التي تم إصدارها سابقًا في
androidx.activity، وتهدف إلى أن تكون بديلاً أقلّ تحكّمًا في طريقة الاستخدام لواجهات برمجة التطبيقات Activity في المكوّنات ذات المستوى الأعلى أو استخدام واجهات برمجة التطبيقاتOnBackInvokedDispatcherلإطار عمل Android مباشرةً. تمت إعادة كتابة واجهات برمجة التطبيقاتandroidx.activityاستنادًا إلى واجهات برمجة التطبيقات Navigation Event كجزء من الإصدار 1.12.0-alpha01 من "النشاط".