التنقل
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 9 سبتمبر 2026 | 2.10.1 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على Navigation، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.8" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.8" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
لإضافة Safe Args إلى مشروعك، أدرِج classpath التالي في ملف build.gradle ذي المستوى الأعلى:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.8" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.8" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
يجب أيضًا تطبيق أحد المكوّنين الإضافيين المتاحَين.
لإنشاء رمز لغة Java مناسب لوحدات Java أو الوحدات المختلطة التي تستخدم Java وKotlin، أضِف السطر التالي إلى ملف build.gradle في تطبيقك أو وحدتك:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
بدلاً من ذلك، لإنشاء رمز Kotlin مناسب للوحدات التي تستخدم Kotlin فقط، أضِف ما يلي:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
يجب أن يتضمّن ملف gradle.properties android.useAndroidX=true وفقًا لما ورد في مقالة نقل البيانات إلى AndroidX.
للحصول على معلومات حول استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 2.10 من Navigation
الإصدار 2.10.1
9 سبتمبر 2026
تم طرح androidx.navigation:navigation-*:2.10.1. يتضمّن الإصدار 2.10.1 هذه التعديلات.
إصلاح الأخطاء
- في الحالات التي يتخطّى فيها
NavHostالصور المتحركة، سيأخذ الآنsizeTransformفي الاعتبار أيضًا كجزء من الصورة المتحركة التي تم تخطّيها لمنع أي قص غير متوقّع. (I4f995، b/550924680)
الإصدار 2.10.0
26 أغسطس 2026
تم طرح androidx.navigation:navigation-*:2.10.0. يتضمّن الإصدار 2.10.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.9.0:
- توفّر السمة
NavHostالآن تحميلًا زائدًا يقبل المَعلمتَينpredictivePopEnterTransitionوpredictivePopExitTransitionللسماح بانتقال مخصّص أثناء استخدام إيماءة إظهار شاشة الرجوع. - تم تعديل
handleDeepLinkلضمان التعامل مع الروابط العميقة المعروفة فقط، مع تجاهل جميع الروابط الأخرى. إذا تسبّب ذلك في حدوث خطأ في تطبيقك، ننصحك بالانتقال إلى التنقّل عبر الروابط لصفحات معيّنة المحدّدة في الرسم البياني للتنقّل. بالنسبة إلى اختبارات Robolectric، قد تحتاج إلى استخدام الطريقةsetPackageلحزمة موثوق بها. - تمت إضافة
NavBackStackEntryInfoلعرض لقطات من سجلّ الرجوع أثناء أحداث التنقّل. يتيح ذلك إنشاء صور متحركة مخصّصة أكثر تفصيلاً لإيماءة إظهار شاشة الرجوع.
منصات إضافية متوافقة
- أضافت الوحدات
navigation-commonوnavigation-runtimeوnavigation-testingإمكانية استخدامdesktopوlinuxوmacOSوiOSوjavascriptوWASMوwatchosوtvos.
الإصدار 2.10.0-rc01
12 أغسطس 2026
تم طرح androidx.navigation:navigation-*:2.10.0-rc01. يتضمّن الإصدار 2.10.0-rc01 هذه التعديلات.
تغييرات السلوك
- تم نقل الحد الأدنى من حزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation إلى المستوى 24 من واجهة برمجة التطبيقات، وذلك إلى جانب بقية مكتبات AndroidX. (I972da، b/474169350)
الإصدار 2.10.0-beta01
29 يوليو 2026
تم طرح androidx.navigation:navigation-*:2.10.0-beta01. يتضمّن الإصدار 2.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة
NavBackStackEntryInfoلعرض لقطات من سجلّ الرجوع أثناء أحداث التنقّل يتيح ذلك إنشاء صور متحركة مخصّصة أكثر تفصيلاً تعرض إيماءة إظهار شاشة الرجوع. (Icb3b8)
الإصدار 2.10.0-alpha06
01 يوليو 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha06. يتضمّن الإصدار 2.10.0-alpha06 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل
handleDeepLinkلضمان التعامل مع الروابط المعروفة لصفحات معيّنة في التطبيق فقط (Id4fe3، b/509640056) - تم تغيير
ComposableFragmentلاستخدام الاسم المؤهّل بالكامل من الوجهة بدلاً من وسيطة جزء لتوسيع الدوال القابلة للإنشاء. (I65ded، b/509640586) - تم إصلاح تعطّل في
FragmentNavigatorتسبّب في أن تطرح Fragment شرعيةIllegalArgumentExceptionعند تحسين العمليات. (I093b0، b/340202276) - تم إصلاح خطأ في "التنقّل باستخدام الأجزاء" حيث يتعذّر استعادة الرسم البياني بشكل صحيح عند ضبطه آليًا. (I41251، b/321147435)
الإصدار 2.10.0-alpha05
19 مايو 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha05. يتضمّن الإصدار 2.10.0-alpha05 هذه التعديلات.
الإصدار 2.10.0-alpha04
6 مايو 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha04. يتضمّن الإصدار 2.10.0-alpha04 هذه التعديلات.
إصلاح الأخطاء
- تم تحسين
NavHostلتعزيز الحماية منNullPointerExceptionالمحتملة الناتجة عن حالة تزامن مع ميزة إيماءة إظهار شاشة الرجوع. (Ie36c6، b/500945998)
الإصدار 2.10.0-alpha03
22 أبريل 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha03. يتضمّن الإصدار 2.10.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل Compose
compileSdkإلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب توفُّر الإصدار 9.2.0 أو إصدار أحدث من "مكوّن Android الإضافي" عند استخدام Compose. (Id45cd، b/413674743)
المساهمة الخارجية
- تمت إضافة استهدافات
watchosوtvosإلى الوحداتnavigation-commonوnavigation-runtimeوnavigation-testing(I60e46) - إتاحة
DefaultNavTransitionsللجميع (Ide293)
الإصدار 2.10.0-alpha02
25 مارس 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha02. يتضمّن الإصدار 2.10.0-alpha02 هذه التعديلات.
الإصدار 2.10.0-alpha01
11 مارس 2026
تم طرح androidx.navigation:navigation-*:2.10.0-alpha01. يتضمّن الإصدار 2.10.0-alpha01 هذه التعديلات.
الميزات الجديدة
- توفّر السمة
NavHostالآن تحميلًا زائدًا يقبل المَعلمتَينpredictivePopEnterTransitionوpredictivePopExitTransitionللسماح بانتقال مخصّص أثناء استخدام إيماءة إظهار شاشة الرجوع. (Iac9b0، b/478294569)
تعديل الحد الأدنى من حزمة تطوير البرامج (SDK)
- كانت قيمة minSdk التلقائية تتراوح بين المستوى 21 والمستوى 23 لواجهة برمجة التطبيقات، وذلك إلى جانب بقية مكتبات AndroidX. (Ibdfca، b/380448311، b/435705964، b/435705223)
المساهمة الخارجية
- تتوافق الإصدارات
navigation:navigation-commonوnavigation:navigation-runtimeوnavigation:navigation-testingالآن مع أجهزة الكمبيوتر المكتبي وLinux وmacOS وiOS وJavaScript وWASM بالإضافة إلى Android. شكرًا "كونستانتين تسخوفريبو"!(I035d9، Iec624، I1615d)
الإصدار 2.9
الإصدار 2.9.8
22 أبريل 2026
تم طرح androidx.navigation:navigation-*:2.9.8. يتضمّن الإصدار 2.9.8 هذه التعديلات.
إصلاح الأخطاء
- تم تحسين
NavHostلتعزيز الحماية منNullPointerExceptionالمحتملة الناتجة عن حالة تزامن مع ميزة إيماءة إظهار شاشة الرجوع. (Ie36c6، b/500945998)
الإصدار 2.9.7
28 يناير 2026
تم طرح androidx.navigation:navigation-*:2.9.7. يتضمّن الإصدار 2.9.7 هذه التعديلات.
إصلاح الأخطاء
- لم يعُد هناك مشاكل في التخزين المؤقت لإعدادات التنقّل
SafeArgsعند استخدامه مع "خدمات Google". (I57cda، b/458071608) - تم إصلاح أداة إنشاء الاختبار
SavedStateHandleفي اختبار التنقّل التي لا تفك ترميزList<String>. (I26aac،b/454180135)
الإصدار 2.9.6
5 نوفمبر 2025
تم طرح androidx.navigation:navigation-*:2.9.6. يتضمّن الإصدار 2.9.6 هذه التعديلات.
إصلاح الأخطاء
- تم نقل المكوّن الإضافي
SafeArgsفي Navigation إلى واجهات برمجة التطبيقات الحديثة الخاصة بالمكوّن الإضافي لنظام Gradle المتوافق مع Android، ما يضمن توافقه مع جميع إصدارات 8.4.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث. نتيجةً لهذه التغييرات، تم تغيير دليل الإخراج للملفات التي تم إنشاؤها بواسطة المكوّن الإضافي إلى الموقع التلقائي الذي يوفّره "مكوّن Android الإضافي في Gradle". (Ie09d6 وI7c431 وb/203559535 وb/293920476 وb/269532448 وb/443261197) - لن تتطلّب إضافة Navigation
SafeArgsضبط السمةuseAndroidXعند استخدامها مع الإصدار 9.0.0-alpha04 أو الإصدارات الأحدث من "مكوّن Android الإضافي في Gradle" (AGP). (I6c3a4، b/444746731، b/443106400)
الإصدار 2.9.5
24 سبتمبر 2025
تم طرح androidx.navigation:navigation-*:2.9.5. يتضمّن الإصدار 2.9.5 هذه التعديلات.
إصلاح الأخطاء
- يمكن الآن لأداة Navigation Safe Args التعامل مع ميزة الإصدار 9.0 من "مكوّن Android الإضافي لبرنامج Gradle" التي تتيح استخدام لغة Kotlin المضمّنة. (I1d9d76)
تحديث الاعتمادية
- يعتمد المكوّن الإضافي Navigation Safe Args الآن على الإصدار 8.4.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (b/431847270، I5932a)
الإصدار 2.9.4
10 سبتمبر 2025
تم طرح androidx.navigation:navigation-*:2.9.4. يتضمّن الإصدار 2.9.4 هذه التعديلات.
إصلاح الأخطاء
- منع حدوث تعطُّل عند تسليم حدث إيماءة إظهار شاشة الرجوع في منتصف الإطار بعد إيقاف المعالج في عملية انتقال
NavHost(I5667c، b/384186542)
الإصدار 2.9.3
30 يوليو 2025
تم طرح androidx.navigation:navigation-*:2.9.3. يتضمّن الإصدار 2.9.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في
NavControllerتسبّب في ظهورConcurrentModificationExceptionعند استخدامOnDestinationChangedListeners. (If7406، b/417784831) - تم إصلاح خطأ يحدث عند استخدام
navigate(uri, navOptions,navigationExtras)حيث يتم تجاهل الإضافات. (I67fb7، b/430336813)
الإصدار 2.9.2
16 يوليو 2025
تم طرح androidx.navigation:navigation-*:2.9.2. يتضمّن الإصدار 2.9.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استئناف الإدخال عند إغلاق مربّع الحوار أعلى الإدخال (Idb20e، b/418746335)
- تم إصلاح الخطأ
MissingFieldExceptionالذي كان يظهر عند اختبارSavedStateHandleباستخدام مسارات آمنة الأنواع أثناء استخدامNavTypesمخصّص. (I2f843، b/421002511)
الإصدار 2.9.1
2 يوليو 2025
تم طرح androidx.navigation:navigation-*:2.9.1. يتضمّن الإصدار 2.9.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبّب في عدم تجاوز
NavEntriesالتي تم إنشاء مثيل لها باستخدام single top الحالة CREATED فيLifecycle.State. (I043ba، b/421095236)
الإصدار 2.9.0
7 مايو 2025
تم طرح androidx.navigation:navigation-*:2.9.0. يتضمّن الإصدار 2.9.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.8.0
- يتم الآن إنشاء إجراءات Navigation Safe Args باستخدام التعليق التوضيحي
@CheckResultلضمان استخدامها.
واجهة SupportingPane
- يمكن الآن لمكوّنات Custom Navigators وضع علامة على وجهاتها للإشارة إلى أنّها تنفّذ واجهة
SupportingPane، ما يشير إلىNavControllerبأنّه سيتم عرض هذه الوجهات إلى جانب الوجهات الأخرى. باستخدام هذه الواجهة، يمكنRESUMEDوجهات متعددة في الوقت نفسه، على سبيل المثال.
Compose Kotlin Multiplatform
- توفّر ميزة "التنقّل" الآن دالة
NavController.handleDeepLink()جديدة مشتركة تأخذNavDeepLinkRequestبدلاً منIntent. يتيح ذلك للمنصات الأخرى غير Android التعامل مع الروابط لصفحات في التطبيق بشكل صحيح. شكرًا لك "كونستانتين تسخوفريبو"! - توفّر ميزة "التنقّل" الآن
NavUri، وهي دالة محلّل جديدة مشتركة تمثّل واجهة برمجة تطبيقات متوافقة مع معرّف الموارد المنتظم (URI) في Android على المنصات الأخرى. ويتيح ذلك إنشاء معرّف موارد منتظم (URI) بطريقة مستقلة عن النظام الأساسي. شكرًا لك "كونستانتين تسخوفريبو"!
الدوال الآمنة من حيث النوع
- واجهات برمجة التطبيقات الآمنة من حيث النوع التي كان يمكن الوصول إليها سابقًا فقط من خلال طرق
reified، أي تتضمّنcomposable<YourScreen>الآن إصدارات غير مجسَّمة تستخدم مباشرةً مثيلاً منKClass. - تتيح ميزة منع أخطاء الكتابة في التنقّل الآن استخدام فئات القيم كمسار أو كنوع وسيطة لمسار.
الإصدار 2.9.0-rc01
23 أبريل 2025
تم طرح androidx.navigation:navigation-*:2.9.0-rc01. يتضمّن الإصدار 2.9.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة جميع استهدافات الأنظمة الأساسية غير Android من Jetpack Navigation لأنّ هذه الاستهدافات لا تعمل في الواقع. تم الآن توفير رموز صورية للأنظمة الأساسية المختلفة بدلاً من ذلك.(I2877d)
الإصدار 2.9.0-beta01
9 أبريل 2025
تم طرح androidx.navigation:navigation-*:2.9.0-beta01. يتضمّن الإصدار 2.9.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تغيير واجهة برمجة التطبيقات الشائعة
parseStringAsNavUriإلى دالة مصنعNavUriتأخذ سلسلة. (I4db6e، b/403616316)
تحديثات الاعتماديات
- تستهدف هذه المكتبة الآن مستوى اللغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (Idb6b5)
الإصدار 2.9.0-alpha09
26 مارس 2025
تم طرح androidx.navigation:navigation-*:2.9.0-alpha09. يتضمّن الإصدار 2.9.0-alpha09 هذه التعديلات.
الميزات الجديدة
- يتوافق وحدة
navigation-testingالآن مع أجهزة الكمبيوتر المكتبي وLinux وmacOS وiOS بالإضافة إلى Android. (I2b770، b/398265336) - يتوافق
NavTypeالآن مع أجهزة الكمبيوتر المكتبي وLinux وmacOS وiOS بالإضافة إلى Android. (I297d8)
الإصدار 2.9.0-alpha08
12 مارس 2025
تم طرح androidx.navigation:navigation-*:2.9.0-alpha08. يتضمّن الإصدار 2.9.0-alpha08 هذه التعديلات.
إصلاح الأخطاء
- من Navigation
2.8.9: تم إصلاح مشكلة في Navigation 2.8.8 كانت تتطلّب أن يتطابق الرابط لصفحة في التطبيق مع جميع حقول طلب الرابط لصفحة في التطبيق أو الغرض منه تمامًا ليتم اعتباره مطابقًا. وقد أدّى ذلك إلى توقّف الروابط لصفحات في التطبيق التي تتضمّن تطابقات جزئية للحقول ولا تتضمّن غيرها. (Ie5e36، b/399826566)
المساهمة الخارجية
- دالة محلّل عامة جديدة لإنشاء
NavUriشكرًا لك "كونستانتين تسخوفريبو"! (If0a6a)
الإصدار 2.9.0-alpha07
26 فبراير 2025
تم طرح androidx.navigation:navigation-*:2.9.0-alpha07. يتضمّن الإصدار 2.9.0-alpha07 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى ظهور قيمة فارغة لـ savedState عند محاولة تنفيذ
saveStateباستخدام نافذة منبثقة غير شاملة، ما قد يؤدي إلى حدوث عُطل عند الاستعادة. (I9f3e8، b/395091644) - من Navigation 2.8.8: تم إصلاح مشكلة مطابقة
NavDeepLinkحيث يجب أن يتطابق الرابط لصفحة معيّنة وطلب الرابط لصفحة معيّنة تمامًا مع عنوان URI والإجراء ونوع MIME. لم يعُد مسموحًا بالمطابقة إذا تطابق حقل واحد أو حقلان فقط. (I3b029، b/395712033) - من Navigation 2.8.8: تم إصلاح الخطأ الذي لا تتطابق فيه المسارات التي تتضمّن مسارات أحرف بدل مع رابط إضافي لصفحة معيّنة في التطبيق (I7ea92، b/389970341)
المساهمة الخارجية
- استخراج واجهات برمجة التطبيقات navigation-common وnavigation-runtime وnavigation-compose إلى المنصة المشتركة شكرًا لك "كونستانتين تسخوفريبو"! (I1e626 وIca76f وIdf479)
المشاكل المعروفة
- بسبب العمل على حلّ المشكلة b/395712033، يُشترط بشكلٍ غير صحيح أن تتضمّن الروابط لصفحات في التطبيق جميع الحقول نفسها التي يتضمّنها طلب الرابط لصفحة في التطبيق و/أو
Intent. يجب أن تتطابق الروابط لصفحات في التطبيق مع الحقول التي تتضمّنها فقط، ويجب تجاهل الحقول غير المضمّنة. تم حلّ هذه المشكلة في إصدار لاحق كجزء من b/399826566.
الإصدار 2.9.0-alpha06
12 فبراير 2025
تم طرح androidx.navigation:navigation-*:2.9.0-alpha06. يتضمّن الإصدار 2.9.0-alpha06 هذه التعديلات.
الميزات الجديدة
- يتم الآن إنشاء إجراءات Navigation Safe Args باستخدام التعليق التوضيحي
@CheckResultلضمان استخدامها. (I14d4c، b/356323084)
إصلاح الأخطاء
- تم إصلاح خطأ في
NavControllerحيث تمت محاولة استعادة حالات backStack بشكل غير صحيح إلى مصفوفة عند حفظها في قائمة. (Idfb9b) - من التنقل
2.8.7: توفّر ميزة Navigation Safe Args الآن إمكانية استخدام وجهات قابلة للإنشاء. (I35320، b/362791955)
الإصدار 2.9.0-alpha05
29 يناير 2025
تم طرح androidx.navigation:navigation-*:2.9.0-alpha05. يتضمّن الإصدار 2.9.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة تسبّبت في ظهور صورة متحركة غير متوقّعة عند استخدام Navigation Compose. (I480f4، b/353294030)
- من التنقّل
2.8.6: سيتم تحليل تصنيفاتNavDestinationالمقدَّمة من خلال XML باستخدامNavType.getلضمان احترام منطقNavTypeالمخصّص. (I7ec2f، b/388100796) - من شريط التنقّل
2.8.6: عند الانتقال إلى نشاط باستخدامdataPattern، سيحاولActivityNavigatorالآن ترميز قيمة الوسيط باستخدامNavTypeللوسيط. (I16376، b/383616432) - من التنقّل
2.8.5: تم إصلاح مشكلة تسبّبت في ظهور حركة تحجيم غير متوقّعة عند استخدام Navigation Compose واستدعاء navigate في الإطار نفسه الذي تنتهي فيه الحركة الحالية. (I26cb1، b/353294030)
الإصدار 2.9.0-alpha04
11 ديسمبر 2024
تم طرح androidx.navigation:navigation-*:2.9.0-alpha04. يتضمّن الإصدار 2.9.0-alpha04 هذه التعديلات.
الميزات الجديدة
- واجهات برمجة التطبيقات الآمنة من حيث النوع التي كان يمكن الوصول إليها سابقًا فقط من خلال طرق
reified، أيcomposable<YourScreen>تتضمّن الآن إصدارات غير مجسّمة تقبل مباشرةً مثيلاً منKClass.(Ia7eed وId2879 وIbf244 وI17d79 وId09d2 وI54696 وIa47be وI93281 وIc1bf0 وIba4ee وIf56a5 وIcf969 وI67644 وI6f788 وb/382094941 وb/366291612 وb/381938808)
يقدّم الجدول أدناه واجهات برمجة التطبيقات التي تمّت إعادة صياغتها وKClass.
| reified | KClass |
|---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
تغييرات واجهة برمجة التطبيقات
- يتم إخفاء عملية التحميل الزائد
NavGraph.setStartDestinationالخاصة بلغة Kotlin لضمان منع أخطاء الكتابة عن مصادر Java. (Ic640c، b/364634035)
إصلاح الأخطاء
- من التنقّل
2.8.5: تم إصلاح مشكلة كان يمكن أن يؤدي فيهاNavHostإلى طرح استثناء داخلPredictiveBackHandlerإذا تم إزالة آخر إدخال من سجلّ الرجوع وتم تفعيل الرجوع إلى الخلف في النظام في الإطار نفسه. (I1a429، b/375343407) - من التنقّل
2.8.5: تم إصلاحNavDestinationNullPointerExceptionعند تعديلstartDestinationفي رسم بياني. (I99421، b/361560785)
المساهمة الخارجية
- من التنقّل
2.8.5: يتيح منع أخطاء الكتابة في التنقّل الآن استخدامList<Enum>كنوع وسيطة لمسار بدون الحاجة إلى أيNavTypeمخصّص. شكرًا Csaba Kozák. (GH-725، b/375559962)
الإصدار 2.9.0-alpha03
13 نوفمبر 2024
تم طرح androidx.navigation:navigation-*:2.9.0-alpha03. يتضمّن الإصدار 2.9.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تتيح ميزة منع أخطاء الكتابة في التنقّل الآن استخدام فئات القيم كمسار أو كنوع وسيطة لمسار. (I9344a، b/374347483)
إصلاح الأخطاء
- تم إصلاح
ConcurrentModificationExceptionكان من المحتمل أن يحدث عندما يؤديLifecycleObserverمرفق بـNavBackStackEntryإلى تغيير في سجلّ التصفّح الخلفي عندما يغيّر المضيفLifecycleOwner، مثل النشاط أو الجزء الحاوي، حالة دورة حياته. (Ia9494)
الإصدار 2.9.0-alpha02
30 أكتوبر 2024
تم طرح androidx.navigation:navigation-*:2.9.0-alpha02. يتضمّن الإصدار 2.9.0-alpha02 هذه التعديلات.
المساهمة الخارجية
- طريقة
NavController.handleDeepLink(request: NavDeepLinkRequest)شائعة جديدة شكرًا لك "كونستانتين تسخوفريبو"! (I3e228)
الإصدار 2.9.0-alpha01
16 أكتوبر 2024
تم طرح androidx.navigation:navigation-*:2.9.0-alpha01. يتضمّن الإصدار 2.9.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يمكن الآن لمكوّنات Custom Navigators وضع علامة على وجهاتها للإشارة إلى أنّها تنفّذ واجهة
SupportingPane، ما يشير إلىNavControllerبأنّه سيتم عرض هذه الوجهات إلى جانب الوجهات الأخرى. باستخدام هذه الواجهة، يمكنRESUMEDوجهات متعددة في الوقت نفسه، على سبيل المثال. (Id5559) - من Navigation
2.8.3: أضفنا عمليات فحص جديدة باستخدام أداة Lint للوحداتnavigation-commonوnavigation-runtimeوnavigation-composeللمساعدة في تحديد أي مسارات آمنة من حيث النوع لم يتمّ وضع تعليقات توضيحية لها بشكل صحيح باستخدام@Serializable. يتم تطبيق عملية التحقّق هذه على جميع وظائف الإضافةNavGraphBuilderوNavDeepLinkBuilder. (I4a259 وI95402 وIe601a وId8c6e وI28bda وb/362725816) - من التنقل
2.8.3: تمت إضافة عمليات فحص جديدة للتدقيق اللغوي في الوحداتnavigation-commonوnavigation-runtimeوnavigation-composeللمساعدة في تحديد أي مسارات آمنة من حيث النوع تتضمّن وسيطات Enum لم يتم وضع تعليقات توضيحية لها بشكل صحيح باستخدام@Keep. يتم تطبيق عملية التحقّق هذه على جميع وظائف الإضافةNavGraphBuilderوNavDeepLinkBuilder. (I4a259 وI95402 وIe601a وId8c6e وI2b46f وb/358687142)
التغييرات في السلوك
- ستؤدي محاولة استخدام
NavControllerتمDESTROYEDسابقًا إلى حدوثIllegalStateException. (I520da، b/369616172)
إصلاح الأخطاء
- تعديل استثناء عدم العثور على فئة Enum لاقتراح استخدام التعليق التوضيحي
@Keepفي حال محو فئة Enum في الإصدارات المصغّرة (I90e79، b/358137294)
المشاكل المعروفة
- هناك مشكلة في قواعد Lint الجديدة التي تمت إضافتها في
Navigation 2.8.*وتتسبّب في ظهور الخطأObsolete custom lint checkعند محاولة تشغيل Lint باستخدام الإصدار 8.4 أو الإصدارات الأحدث من Android Gradle Plugin. (b/368070326 وb/371463741)
الإصدار 2.8
الإصدار 2.8.9
12 مارس 2025
تم طرح androidx.navigation:navigation-*:2.8.9. يتضمّن الإصدار 2.8.9 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في الإصدار 2.8.8 من Navigation كان يتطلّب أن يتطابق الرابط لصفحة معيّنة في التطبيق مع جميع حقول طلب الرابط أو الهدف بشكلٍ تام ليتم اعتباره مطابقًا. وقد أدّى ذلك إلى توقّف الروابط لصفحات في التطبيق التي تتضمّن تطابقات جزئية للحقول ولا تتضمّن غيرها. (Ie5e36، b/399826566)
الإصدار 2.8.8
26 فبراير 2025
تم طرح androidx.navigation:navigation-*:2.8.8. يتضمّن الإصدار 2.8.8 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يتسبب في عدم تطابق المسارات التي تتضمّن مسارات أحرف بدل مع رابط إضافي لصفحة في التطبيق. (I7ea92، b/389970341)
- تم إصلاح مشكلة مطابقة
NavDeepLinkحيث يجب أن يتطابق الرابط لصفحة في التطبيق وطلب الرابط لصفحة في التطبيق تمامًا مع معرّف الموارد المنتظم والإجراء ونوع MIME. لم يعُد مسموحًا بالمطابقة إذا تطابق حقل واحد أو حقلان فقط. (I3227f، b/395712033)
المشاكل المعروفة
- بسبب العمل على حلّ المشكلة b/395712033، يُشترط بشكلٍ غير صحيح أن تتضمّن الروابط لصفحات في التطبيق جميع الحقول نفسها التي يتضمّنها طلب الرابط لصفحة في التطبيق و/أو
Intent. يجب أن تتطابق الروابط لصفحات في التطبيق مع الحقول التي تتضمّنها فقط، ويجب تجاهل الحقول غير المضمّنة. تم حلّ هذه المشكلة في إصدار لاحق كجزء من b/399826566.
الإصدار 2.8.7
12 فبراير 2025
تم طرح androidx.navigation:navigation-*:2.8.7. يتضمّن الإصدار 2.8.7 هذه التعديلات.
إصلاح الأخطاء
- توفّر مكتبة Navigation Safe Args الآن إمكانية استخدام الوجهات القابلة للإنشاء. (I35320، b/362791955)
الإصدار 2.8.6
29 يناير 2025
تم طرح androidx.navigation:navigation-*:2.8.6. يتضمّن الإصدار 2.8.6 هذه التعديلات.
إصلاح الأخطاء
- سيتم تحليل تصنيفات
NavDestinationالمقدَّمة من خلال XML باستخدامNavType.getلضمان احترام منطقNavTypeالمخصّص. (Id366d، b/388100796) - عند الانتقال إلى النشاط باستخدام
dataPattern، سيحاولActivityNavigatorالآن ترميز قيمة الوسيطة باستخدامNavTypeللوسيطة. (I1a71d، b/383616432)
الإصدار 2.8.5
11 ديسمبر 2024
تم طرح androidx.navigation:navigation-*:2.8.5. يتضمّن الإصدار 2.8.5 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كان يمكن أن يؤدي فيها
NavHostإلى حدوث استثناء داخلPredictiveBackHandlerإذا تم إزالة آخر إدخال من سجلّ الرجوع وتم تفعيل زر الرجوع في النظام في الإطار نفسه. (I1a429، b/375343407) - تم إصلاح الخطأ
NavDestinationNullPointerExceptionعند تعديلstartDestinationلرسم بياني. (I99421، b/361560785) - تم إصلاح مشكلة تسبّبت في ظهور حركة تحجيم غير متوقّعة عند استخدام Navigation Compose واستدعاء navigate في الإطار نفسه الذي تنتهي فيه الحركة الحالية. (I26cb1، b/353294030)
- تم إصلاح
ConcurrentModificationExceptionكان من المحتمل أن يحدث عندما يؤديLifecycleObserverمرفق بـNavBackStackEntryإلى تغيير في سجلّ التصفّح الخلفي عندما يغيّر المضيفLifecycleOwner، مثل النشاط أو الجزء الحاوي، حالة دورة حياته. (Ia9494)
المساهمة الخارجية
- تتيح ميزة "منع أخطاء الكتابة في التنقّل" الآن استخدام
List<Enum>كنوع وسيطة لمسار بدون الحاجة إلى أيNavTypeمخصّص. شكرًا Csaba Kozák. (GH-725، b/375559962)
الإصدار 2.8.4
13 نوفمبر 2024
تم طرح androidx.navigation:navigation-*:2.8.4. يتضمّن الإصدار 2.8.4 هذه التعديلات.
الميزات الجديدة
- من التنقّل
2.9.0-alpha03: يتيح منع أخطاء الكتابة في التنقّل الآن استخدام فئة القيمة كمسار أو كنوع وسيطة لمسار (I9344a، b/374347483)
إصلاح الأخطاء
- من شريط التنقّل
2.9.0-alpha01: ستؤدي محاولة استخدامNavControllerتمDESTROYEDسابقًا إلى حدوثIllegalStateException. (I520da، b/369616172)
الإصدار 2.8.3
16 أكتوبر 2024
تم طرح androidx.navigation:navigation-*:2.8.3. يتضمّن الإصدار 2.8.3 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عمليات فحص جديدة باستخدام أداة Lint للوحدات
navigation-commonوnavigation-runtimeوnavigation-composeللمساعدة في تحديد أي مسارات آمنة من حيث النوع لم يتم وضع تعليقات توضيحية لها بشكل صحيح باستخدام@Serializable. يتم تطبيق عملية التحقّق هذه على جميع وظائف الإضافةNavGraphBuilderوNavDeepLinkBuilder. (I4a259 وI95402 وIe601a وId8c6e وI28bda وb/362725816) - تمت إضافة عمليات فحص جديدة باستخدام أداة Lint للوحدات
navigation-commonوnavigation-runtimeوnavigation-composeللمساعدة في تحديد أي مسارات آمنة من حيث النوع تتضمّن وسيطات Enum لم يتمّ إضافة التعليقات التوضيحية إليها بشكل صحيح باستخدام@Keep. يتم تطبيق عملية التحقّق هذه على جميع وظائف الإضافةNavGraphBuilderوNavDeepLinkBuilder. (I4a259 وI95402 وIe601a وId8c6e وI2b46f وb/358687142)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبّب في ظهور الخطأ
Obsolete custom lint checkعند محاولة تشغيل أداة lint باستخدام الإصدار 8.4 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك بسبب قواعد lint الجديدة التي تمت إضافتها فيNavigation 2.8.*. (I1be3d وb/368070326 وb/371463741)
المشاكل المعروفة
- سيُظهر فحص Navigation lint رسالة خطأ بشأن فحص lint المخصّص القديم عند محاولة تشغيل lint باستخدام الإصدار 16 (الإصدار 8.7 من "مكوّن Android الإضافي في Gradle") أو إصدار أحدث. (b/371926651)
الإصدار 2.8.2
2 أكتوبر 2024
تم طرح androidx.navigation:navigation-*:2.8.2. يتضمّن الإصدار 2.8.2 هذه التعديلات.
الميزات الجديدة
- تتيح ميزة "أمان نوع التنقّل" الآن استخدام فئات Serializable التي تتضمّن
DoubleوDouble?وDoubleArrayوDoubleArray?وList<Double>وList<Double>?بدون الحاجة إلى أيNavTypeمخصّص. (I570eb وIbc4c0 وI37461 وI5bed4 وb/359245753)
إصلاح الأخطاء
- تم تحسين رسالة الخطأ التي تظهر عندما يتعذّر على Navigation ربط وسيطة مسار بـ
NavType، وستتضمّن رسالة الخطأ الجديدة اسم الوسيطة واسم الوسيطة المؤهَّل بالكامل واسم المسار المؤهَّل بالكامل. (Id8416، b/346264232)
الإصدار 2.8.1
18 سبتمبر 2024
تم طرح androidx.navigation:navigation-*:2.8.1. يتضمّن الإصدار 2.8.1 هذه التعديلات.
الميزات الجديدة
- تمت إضافة قاعدة lint جديدة لضمان استخدام الدالة
popBackStackالتي تأخذ نوع فئة مجسَّم عند محاولةpopBackStackباستخدام واجهات برمجة التطبيقات الآمنة من حيث النوع. (Ief161، b/358095343)
إصلاح الأخطاء
- يتطلّب التنقّل الآن أن يتضمّن المسار الذي تم تمريره إلى
NavGraphفيstartDestinationقيمًا لجميع الوسيطات المطلوبة، بما في ذلك الوسيطات غير القابلة للتصغير والتي ليس لها قيمة تلقائية. (I18e74، b/362594265) - أضافت ميزة "الوسيطات الآمنة" في Navigation دعمًا للسلاسل غير القابلة للقيم الفارغة، بحيث سيتم تحليل القيم "null" وتخزينها في الحزمة كما هي، وهذا يختلف عن السلوك الحالي الذي يتم فيه تحليل القيم "null" إلى عنصر فارغ. لا ينطبق هذا التغيير إلا على أنواع السلاسل غير القابلة للقيم الفارغة. تبقى السلاسل القابلة للقيم الخالية بدون تغيير. (I08b4a، b/348936238)
- لم يعُد بالإمكان إنشاء رابط لصفحة في التطبيق يؤدي إلى
NavDestinationإلا من خلال رابط عميق تمت إضافته بشكل صريح إلى الوجهة. يعني هذا أيضًا أنّه يمكنك الانتقال إلى مسار وجهة باستخدام وظيفة التحميل الزائد لوظيفة التنقّل التي تأخذ مسار سلسلة فقط. يحلّ هذا الإصدار ثغرة أمنية كانت تتيح إنشاء رابط لصفحة في التطبيق قد تكون محمية. (Ie30e6)
تحديث الاعتمادية
- تعتمد Navigation Safe Args الآن على الإصدار 1.9.24 من Kotlin بدلاً من الإصدار 2.X من Kotlin، ما يضمن عدم اضطرار المطوّرين إلى التحديث. (a4129a)
- تعتمد مكتبة Navigation Compose الآن على Compose
1.7.2.
الإصدار 2.8.0
4 سبتمبر 2024
تم طرح androidx.navigation:navigation-*:2.8.0. يتضمّن الإصدار 2.8.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.7.0
أمان الأنواع في لغة Kotlin الخاصة بمجال Navigation
- توفّر ميزة "التنقّل" الآن أمان الأنواع للغة Kotlin الخاصة بالنطاق (DSL) (التي تستخدمها Navigation Compose) باستخدام Kotlin Serialization للسماح لك بتحديد الوجهات في الرسم البياني للتنقّل من خلال الكائنات وفئات البيانات الآمنة الأنواع:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
لمزيد من المعلومات، يُرجى الاطّلاع على منشور المدوّنة حول ميزة "أمان الأنواع" في Navigation Compose.
Navigation Compose Predictive Back
- تتيح مكتبة Navigation Compose الآن استخدام ميزة "إيماءة إظهار شاشة الرجوع" داخل التطبيق من خلال واجهات برمجة التطبيقات الجديدة
SeekableTransitionStateمن compose-animation. يتيح لك ذلك استخدام إيماءة الرجوع للاطّلاع على الوجهة السابقة مع الانتقال المخصّص قبل اتّخاذ قرار بإكمال المعاملة من خلال الإيماءة المكتملة أو إلغائها.
Navigation Fragment Composable
- تمت إضافة عنصر
navigation-fragment-composeجديد يتضمّن بديلاًComposableNavHostFragmentعنNavHostFragmentيتيح لك إضافة وجهات قابلة للإنشاء إلى ملفات Navigation XML. يجب التعبير عن كل وجهةcomposableكطريقة@Composableذات مستوى أعلى وبدون وسيطة، ويتم استخدام اسمها المؤهَّل بالكامل كسمةandroid:nameفي كل وجهة. عند الانتقال إلى إحدى هذه الوجهات، يتم إنشاء جزء حاوٍ لعرض المحتوى القابل للإنشاء.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
التغييرات الأخرى
- تعتمد مكتبة Navigation Compose الآن على الإصدار 1.7.0 من Compose.
- توفّر ميزة "التنقّل" الآن فئة
CollectionNavType<T>جديدة، وهي فئة فرعية منNavType<T>للوسيطات المستندة إلى المجموعات، مثل القوائم والصفائف والخرائط. تتضمّن جميع مصفوفاتNavTypeالتلقائية (IntArrayTypeوLongArrayTypeوFloatArrayTypeوBoolArrayTypeوStringArrayType) الآن هذه الفئة الجديدة. - يتوافق
NavTypeالآن مع قوائم الأعداد الصحيحة والسلاسل والقيم المنطقية والأعداد العشرية والأعداد الصحيحة الطويلة.
الإصدار 2.8.0-rc01
21 أغسطس 2024
تم طرح androidx.navigation:navigation-*:2.8.0-rc01. يتضمّن الإصدار 2.8.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل التنقّل عند تمرير فئات تعداد المستوى الأعلى كمعلَمات آمنة الأنواع (I0ba76، b/358137294)
- تعمل حزمة Navigation 2.8 الآن بشكل صحيح مع الإصدار 34 من حزمة تطوير البرامج (SDK)، ولن يتم التبديل إلى الإصدار 35 إلا عند طرح الإصدار 2.9 مع بقية مكتبات AndroidX. (b/358798728)
الإصدار 2.8.0-beta07
7 أغسطس 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta07. يتضمّن الإصدار 2.8.0-beta07 هذه التعديلات.
المشاكل المعروفة
- بسبب b/358137294، لا تتوفّر إلا التعدادات المتداخلة في فئة أخرى. سيتوفّر دعم لفئات Enums ذات المستوى الأعلى في الإصدار التالي.
إصلاح الأخطاء
- عند التنقّل إلى وجهات مكرّرة أو مشترَكة، ستعطي ميزة التنقّل الأولوية للوصول إلى أقرب وجهة مطابقة من الموقع الجغرافي الحالي في الرسم البياني. (Ic89a4، b/352006850)
- تمت إضافة
NavType.EnumTypeجديدة إلى التنقّل في Safe Args. وهذا يعني أنّ أنواعEnumلم تعُد تتطلّبNavTypeمخصّصة. يُرجى العِلم أنّEnumSerialNameيجب أن يكون الاسم المؤهَّل بالكامل التلقائي. (I66d22، b/346475493) - أضافت ميزة التنقّل في Safe Args إمكانية استخدام أنواع وسيطات تقبل القيم الخالية، بما في ذلك
Int?وLong?وFloat?وBoolean?وEnum<*>?. (I32d13،I1c580،Ifba66،I978b0،Ide076 , b/351994237) - سيستخدم
NavGraphstartDestinationالآن قيم الوسيطات التلقائية إذا كان مسارstartDestinationالذي تم تمريره إلىNavGraphيساويstartDestination.routeتمامًا. (I13762، b/354046047)
الإصدار 2.8.0-beta06
24 يوليو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta06. يتضمّن الإصدار 2.8.0-beta06 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تحقّق عمليات فحص
WrongStartDestinationTypelint من كائنات Companion في نوع الفئة الذي تم تمريره، ما أدّى إلى عدم رصد lint للخطأ. (I92b09)
الإصدار 2.8.0-beta05
10 يوليو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta05. يتضمّن الإصدار 2.8.0-beta05 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل التنقّل
singleTopعند مشاركةNavGraphsالمتداخلة للمسارstartDestinationنفسه (I17b94، b/294408596)
الإصدار 2.8.0-beta04
26 يونيو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta04. يتضمّن الإصدار 2.8.0-beta04 هذه التعديلات.
إصلاح الأخطاء
- تتيح ميزة التنقّل الآن التنقّل باستخدام سلاسل فارغة في وسيطات المسار. (Ic5dbd، b/339481310)
- تحسين رسالة الخطأ الخاصة أدوات التسلسل المخصّصة التي يتم تعريفها مباشرةً في حقول الفئات من خلال
@Serializable(with =...)لتوضيح أنّ هذه الميزة غير متاحة حاليًا. (I052b0، b/341319151) - يمكن الآن استخدام واجهة برمجة التطبيقات
SavedStateHandleFactoryللاختبار في الاختبارات غير المتعلّقة بنظام Android، ولكن سيتطلّب ذلك أن يتيح Robolectric تحليل الوسيطات باستخدام حِزم. (I76cdc، b/340966212) - تم إصلاح تعطّل ناتج عن استعادة الحالة عند استئناف التطبيق بعد إيقاف العملية نهائيًا باستخدام Type-Safe Navigation في Compose. (Ia8f38، b/341801005)
- تم إصلاح مشكلة في Navigation Compose حيث لا تعود
NavBackStackEntryالتي يعود إليها المستخدم بعد إلغاء الإيماءة التوقعية للرجوع إلى الحالةRESUMEDلدورة الحياة. يضمن ذلك أيضًا إعادة تحريك الوجهة العائدة بشكل صحيح بدلاً من تثبيتها في مكانها بعد التمرير السريع. (I97a0c، b/346608857) - عند استخدام ميزة "إيماءة إظهار شاشة الرجوع" مع Navigation Compose، ستتضمّن الوجهة التي يتم إغلاقها الآن ترتيب z المناسب، وسيتم تحريكها بشكل صحيح في أعلى الوجهة الواردة. (I2077b، b/345993681)
الإصدار 2.8.0-beta03
12 يونيو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta03. يتضمّن الإصدار 2.8.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يحتوي
CollectionNavTypeعلى طريقة مجرّدة جديدةemptyCollection(). تجاوز هذا الإعداد للتعامل مع مجموعة فارغة تم تمريرها كوسيطة. (Ie4d84، b/341723133)
إصلاح الأخطاء
- أضفنا مستندات حول
NavType.serializeAsValueوserializeAsValuesلتوضيح أنّه يجب ترميز المخرجات النهائية باستخدام Uri. (Ida6bd، b/344943214) - تم إصلاح عُطل يحدث عند استدعاء
toRoute<T>باستخدام وسيطةCollectionNavTypeفارغة. عند التنقّل باستخدام قيمة فارغةCollectionNavType، ستكون وسيطة الإخراج هي القيمة التلقائية المُعلَن عنها في فئة Serializable، أو قيمة الإرجاعemptyCollection()إذا لم تكن هناك قيمة تلقائية. (I84158 وId630f وb/342672856)
الإصدار 2.8.0-beta02
29 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta02. يتضمّن الإصدار 2.8.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل
ClassCastExceptionعند استخدامNavBackStackEntry.toRouteمعNavTypeمخصّص يقبل القيم الخالية. (I1c29b، b/342239473) - تم إصلاح المشاكل المتعلّقة باستعادة حالة مجموعة الخلفية في "التنقّل" والتي تحدث عند محاولة استعادة إدخال مجموعة خلفية لا يمكن الوصول إليه من خلال المعرّف من الوجهة الحالية. بما أنّ المسارات تستند إلى معرّفات، تأثّرت أيضًا الوجهات التي تم إنشاؤها باستخدام المسارات. يحلّ هذا الإصدار أيضًا مشكلة تعطُّل ناتجة عن استدعاء
clearBackStack()التي كانت تتضمّن المشكلة الأساسية نفسها. (I423c3، b/339908057)
الإصدار 2.8.0-beta01
14 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta01. يتضمّن الإصدار 2.8.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتلقّى الدالة
SavedStateHandle.toRoute()الآن المَعلمةtypeMapلأنواع الوسيطات المخصّصة. (Ie39fb، b/339026523) - تمّت إضافة واجهة برمجة تطبيقات تجريبية إلى
navigation-testingلإنشاءSavedStateHandleمن عنصر Kotlin Serializable. (Id4867، b/339080702)
إصلاح الأخطاء
- تمت إضافة مستندات مَعلمات غير متوفّرة لدوال Navigation Kotlin DSL. (I26a36)
الإصدار 2.8.0-alpha08
1 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha08. يتضمّن الإصدار 2.8.0-alpha08 هذه التعديلات.
Safe Args في Navigation Compose
- اكتمل العمل على توفير منع أخطاء الكتابة في وقت التجميع لكل من Navigation Compose ومستخدمي Navigation Kotlin DSL استنادًا إلى Kotlin Serialization، وأصبحت واجهات برمجة التطبيقات التجريبية السابقة ثابتة الآن. (Iea94d وI0eb0d وI873b7 وI3a64b وI6c3a2 وI11f0b وIc3032 وI8d394 وI95710 وIce060 وId0e55 وI45f8b وIdcdaf وIf5380 وI08b23 وIa5c59 وb/188693139)
تستخدم هذه الوظيفة Kotlin Serialization للسماح لك بتحديد وجهات في الرسم البياني للتنقّل من خلال كائنات آمنة الأنواع وفئات البيانات:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
لمزيد من المعلومات، يُرجى الاطّلاع على منشور المدوّنة حول ميزة "أمان الأنواع" في Navigation Compose.
الميزات الجديدة
- يوفّر العنصر
navigation-fragment-composeالآن تركيبةLocalFragmentمحلية للطُرق القابلة للإنشاء داخلComposableFragment. (If35e5) - يتوافق
NavTypeالآن مع قوائم الأعداد الصحيحة والسلاسل والقيم المنطقية والأعداد العشرية والأعداد الصحيحة الطويلة. (I4b6dd وIa914c وb/188693139)
الإصدار 2.8.0-alpha07
17 أبريل 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha07. يتضمّن الإصدار 2.8.0-alpha07 هذه التعديلات.
الميزات الجديدة
تضيف هذه السمة عنصر
navigation-fragment-composeجديدًا يتضمّن بديلاًComposableNavHostFragmentللعنصرNavHostFragmentيتيح لك إضافةcomposableوجهات إلى ملفات XML الخاصة بالتنقّل. يجب التعبير عن كل وجهةcomposableكطريقة@Composableذات مستوى أعلى وبدون وسيطة، ويتم استخدام الاسم المؤهّل بالكامل كسمةandroid:nameفي كل وجهة. عند الانتقال إلى إحدى هذه الوجهات، يتم إنشاء جزء حاوٍ لعرض المحتوى القابل للإنشاء. (I0ef2e، b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
تغييرات واجهة برمجة التطبيقات
- تمت مواصلة توفير إمكانية استخدام Safe Args في Navigation Compose باتّباع نهج يستند إلى Kotlin Serialization. لم يتم الانتهاء من واجهات برمجة التطبيقات هذه، وهي تحمل التعليق التوضيحي
ExperimentalSafeArgsApi. ستتم إزالة هذه التعليقات التوضيحية عند اكتمال مساحة واجهة برمجة التطبيقات بأكملها في إصدار مستقبلي. (Iefd95 وI409c8 وI5b5ac وI7e753 وI960f8 وI3eabd وI8ed5a وIed2c9 وI9b73c وI554db وIb3aba وIa668d وb/188693139)
الإصدار 2.8.0-alpha06
3 أبريل 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha06. يتضمّن الإصدار 2.8.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- بدأنا في توفير إمكانية استخدام Safe Args في Navigation Compose باتّباع نهج يستند إلى Kotlin Serialization. لم يتم الانتهاء من واجهات برمجة التطبيقات هذه، وهي تحمل التعليق التوضيحي
ExperimentalSafeArgsApi. ستتم إزالة هذه التعليقات التوضيحية عند اكتمال مساحة واجهة برمجة التطبيقات بأكملها في إصدار مستقبلي. (I644e7 وI98896 وI2a1c5 وI43a51 وI836a1 وIc5eec وI39407 وI24e41 وIf9e14 وIbb13e وIf44d3 وIcb70f وI8972f وI1d432 وIcf32b وI20a14 وI262aa وI7de99 وI35990 وI1033d وb/188693139)
إصلاح الأخطاء
- تستخدم
NavHostالآنAlignment.TopStartكقيمة تلقائية لوسيط contentAlignment. يؤدي ذلك إلى توافقه مع الإعداد التلقائي لـAnimatedContentوإصلاح بعض حالات الانتقال غير المتوقّع من المنتصف. (I09e72، b/330111602) - عند تنفيذ إيماءة إظهار شاشة الرجوع أثناء استخدام Navigation Compose، سيكمل
NavHostالآن الانتقال المخصّص بشكلٍ صحيح بدلاً من الانتهاء منه على الفور. (I99017، b/327292110)
الإصدار 2.8.0-alpha05
20 مارس 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha05. يتضمّن الإصدار 2.8.0-alpha05 هذه التعديلات.
الميزات الجديدة
- يمكنك الآن تمرير وسيطات إلى
NavGraphstartDestinationمباشرةً في مسارstartDestinationبدون الاعتماد علىdefaultValue. وينطبق ذلك أيضًا علىNavGraphstartDestinationsالمتداخلة. (I0e0b5، b/109505019، b/188693139)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة فئة
CollectionNavType<T>مجرّدة جديدة، وهي فئة فرعية منNavType<T>للوسيطات المستندة إلى المجموعات، مثل القوائم والصفائف والخرائط. (Ic6d63، b/188693139) - أصبحت جميع مصفوفات
NavTypeالتلقائية (IntArrayTypeوLongArrayTypeوFloatArrayTypeوBoolArrayTypeوStringArrayType) الآن من النوعCollectionNavType(Idcf79 وb/188693139) - توفّر
NavTypeالآن واجهة برمجة تطبيقات مفتوحة جديدةvalueEqualsتحدّد ما إذا كانت قيمتان من النوع نفسه متساويتين. (I6cb97، b/327229511)
إصلاح الأخطاء
- تسمح مَعلمات طلب البحث في الروابط لصفحات في التطبيق الآن بقيم في شكل أقواس معقوفة حول اسم الوسيط (أي
{argName}) كقيم صالحة لـNavTypesالمستند إلى السلسلة. يحلّ هذا الإجراء مشكلة اعتبار هذه القيمة غير صالحة (أو عدم توفّر قيمة) لجميع الأنواع. (I18302، b/327274038) - يمكن الآن لدوال
NavControllerالتي تتوافق مع مسارات مثلnavigateأوpopBackStackأن تطابق بشكل صحيح المسارات التي تم ملؤها بوسيطات من النوع ArrayNavTypes. (Iea805، b/327229511)
الإصدار 2.8.0-alpha04
6 آذار (مارس) 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha04. يتضمّن الإصدار 2.8.0-alpha04 هذه التعديلات.
الميزات الجديدة
- يمكنك الآن تحديد
SizeTranformلعمليات الانتقال في Navigation Compose من خلال تعريفها كجزء من عملية الإعداد للدالتَينcomposableو/أوnavigation. (I91062، b/296912651)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبب في عدم عرض
NavHostفي Compose Navigation للانتقال بشكل صحيح عند استخدام "الرجوع إلى الخلف" في النظام بدون إيماءة. (Iceeae، b/325998468)
الإصدار 2.8.0-alpha03
21 فبراير 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha03. يتضمّن الإصدار 2.8.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم الآن وضع علامة
@MainThreadعلىNavBackStackEntry.savedStateHandleلأنّه يستخدم رمزًا يجب أن يكون على سلسلة التعليمات الرئيسية على أي حال. (Ibb988، b/299523245)
إصلاح الأخطاء
- تم إصلاح مشكلة في Navigation تسبّبت في إنشاء
NavGraphViewModelsDESTROYEDمبكرًا جدًا لأنّViewModelللإدخال المرتبط لم يكن جزءًا من الحالة المحفوظة. (Ib6bb7، b/317581849)
تحديث الاعتمادية
- تعتمد مكتبة Navigation Compose الآن على Compose 1.7.0-alpha03.
الإصدار 2.8.0-alpha02
7 فبراير 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha02. يتضمّن الإصدار 2.8.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تتيح مكتبة Navigation Compose الآن استخدام ميزة "إيماءة إظهار شاشة الرجوع" داخل التطبيق من خلال واجهات برمجة التطبيقات الجديدة
SeekableTransitionStateمن compose-animation. يتيح لك ذلك استخدام إيماءة الرجوع للاطّلاع على الوجهة السابقة مع الانتقال المخصّص قبل اتّخاذ قرار بإكمال المعاملة من خلال الإيماءة المكتملة أو إلغائها. (I8b8e9)
الإصدار 2.8.0-alpha01
24 يناير 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha01. يتضمّن الإصدار 2.8.0-alpha01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح تسريب
BackStackStateحيث تؤدي طلباتsaveStateالمتعددة على وجهة إلى حفظ حالات متعددة، ولكن يمكن استعادة الحالة الأولى فقط. (I598b0، b/309559751) - تم إصلاح مشكلة عدم عرض وسيطات غير السلسلة بشكل صحيح عند استخدام أدوات المساعدة
NavigationUIلملء عنوان أشرطة التطبيقات. (#636، b/316676794)
تحديث الاعتمادية
- تعتمد Navigation Compose الآن على Compose
1.7.0-alpha01في حلّ مشكلة قد تؤدي إلى ظهور حركة تحجيم غير متوقّعة. (b/297258205)
المساهمة الخارجية
- شكرًا SimonMarquis على إصلاح مشكلة العرض المتعلّقة بالوسيطات غير النصية عند استخدام أدوات المساعدة
NavigationUIلتعبئة عنوان أشرطة التطبيقات.
الإصدار 2.7.7
الإصدار 2.7.7
7 فبراير 2024
تم طرح androidx.navigation:navigation-*:2.7.7. يتضمّن الإصدار 2.7.7 هذه التعديلات.
إصلاح الأخطاء
- تم نقل الإصلاح من Navigation
2.8.0-alpha01: تم إصلاح تسريبBackStackStateحيث كانت طلباتsaveState()المتعددة علىNavBackStackEntryواحدة تؤدي إلى حفظ حالات متعددة، ولكن لا يمكن استعادة سوى الحالة الأولى المحفوظة. (I598b0، b/309559751) - تم نقل الإصلاح من Navigation
2.8.0-alpha01: تم إصلاح مشكلة عدم عرض الوسيطات غير النصية بشكلٍ صحيح عند استخدام أدواتNavigationUIالمساعدة لتعبئة عنوان أشرطة التطبيقات. (#636، b/316676794)
المساهمة الخارجية
- شكرًا SimonMarquis على إصلاح مشكلة العرض المتعلّقة بالوسيطات غير النصية عند استخدام أدوات المساعدة
NavigationUIلتعبئة عنوان أشرطة التطبيقات.
الإصدار 2.7.6
الإصدار 2.7.6
13 ديسمبر 2023
تم طرح androidx.navigation:navigation-*:2.7.6. يتضمّن الإصدار 2.7.6 هذه التعديلات.
إصلاح الأخطاء
- تأخذ الدالة
NavGraphequals()الآن في الاعتبار عُقد الرسم البياني الآخر بشكل صحيح بدلاً من الرسم البياني الذي تم استدعاؤه فقط. سيضمن ذلك عدم اعتبار الرسومات البيانية التي تحتوي على عُقد بأرقام تعريف مختلفة متساوية (I401cb، b/311414915)
الإصدار 2.7.5
الإصدار 2.7.5
1 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.navigation:navigation-*:2.7.5. يتضمّن الإصدار 2.7.5 هذه التعديلات.
تحسينات على الأداء
- تم تحسين أداء مقارنة رسمَين بيانيَين بشكل كبير (من حيث الوقت وعدد عمليات التخصيص). وهذا يعني أنّ عمليات الاستدعاء، مثل
setGraphالتي تقارن داخليًا الرسم البياني الجديد بالرسم البياني الحالي، تكون أسرع بكثير وتؤدي إلى تقليل عدد اللقطات التي تم تخطّيها. نشكر Michał Z على التحليل الشامل الذي أدّى إلى هذا التحسين. (I6ad62) - ستعرض
NavHostالآن وجهة البدء في عملية الإنشاء الأولى بدلاً من الانتظار حتى العملية الثانية لقراءة الحالة المعدَّلة. (I439a7، b/304852206)
إصلاح الأخطاء
- تم إصلاح مشكلة يتم فيها إزالة سجلّ الرجوع إذا تم استدعاء
setGraphأكثر من مرة باستخدام الرسم البياني نفسه بالضبط، وذلك فقط إذا كان هناك وجهة في الرسم البياني تحتوي على إجراء يربط بين وجهتَين. (Ieaed7) - لن يتم بعد الآن إدراج مربّعات الحوار التي تم الانتقال إليها وإغلاقها بسرعة في قائمة
NavController.visibleEntries. (I67586، b/287969970) - عند إزالة إدخال ثم إجراء تغيير في الإعدادات، سيتم الآن محو
ViewModelالخاص بالإدخال بشكل صحيح إذا كانت قيمةsaveStateهي false. (Idf242، b/298164648) - تم إصلاح مشكلة كانت تتسبب في إمكانية أن يتعامل
NavControllerمع رابط عميق أكثر من مرة إذا كانت حزمة الأنشطة السابقة فارغة تمامًا قبل تغيير الإعداد أو استدعاءsetGraphفقط عندما كان intent الوارد يتضمّن العلامةFLAG_ACTIVITY_NEW_TASK. (I73c7f)
تحديثات الاعتماديات
- تعتمد ميزة التنقّل باستخدام "التقسيمات" الآن على التقسيم 1.6.2، ما يؤدي إلى إصلاح مشكلة عدم محو مثيلات
ViewModelللتقسيمات المتداخلة عند استدعاءclearBackStack.
الإصدار 2.7.4
الإصدار 2.7.4
4 أكتوبر 2023
تم طرح androidx.navigation:navigation-*:2.7.4. يتضمّن الإصدار 2.7.4 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية استخدام
popUpToمع المسارات التي تتضمّن وسيطات للسماح بالرجوع إلى إدخال معيّن يستخدم تلك الوسيطات نفسها، ما يتيح إمكانية المطابقة المتوفّرة فيpopBackStack. (I731f4، b/299255572)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تعطُّل
FragmentNavigatorعند مقاطعة عملية تنقّل بأخرى باستخدامpopUpTo. (I3c848، b/301887045) - تم إصلاح المشكلة التي كانت تؤدي إلى عدم تعديل
currentDestinationبشكل صحيح ليتطابق مع Fragment المعروض عند الضغط على زر الرجوع في النظام. (Id0d6c، b/289877514) - ستنتقل الآن دورة حياة
DialogFragmentبشكلٍ سليم إلى حالةRESUMEDعند إغلاق مربّع الحوار أعلاه. (I88f0d، b/301811387)
الإصدار 2.7.3
الإصدار 2.7.3
20 سبتمبر 2023
تم طرح androidx.navigation:navigation-*:2.7.3. يتضمّن الإصدار 2.7.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في Navigation with Fragments تسبّبت في احتواء القائمة
visibleEntriesعلى إدخالات غير صحيحة. (I5caa9، b/288520638) - تم إصلاح مشكلة كانت تتسبّب في عدم تلقّي وجهة النافذة العائمة (مثل
DialogsوBottomsheetsوما إلى ذلك) مطلقًا لعملية ردّ الاتصالRESUMEDLifecycle. (I3b866، b/287505132)
الإصدار 2.7.2
الإصدار 2.7.2
6 سبتمبر 2023
تم طرح androidx.navigation:navigation-*:2.7.2. يتضمّن الإصدار 2.7.2 هذه التعديلات.
إصلاح الأخطاء
- تعتمد ميزة "التنقّل" الآن على Lifecycle
2.6.2، ما يحلّ مشكلة التفاعل بينrememberSaveableوNavHostفي Navigation Compose التي كانت تؤدي إلى عدم استعادة حالةrememberSaveableللوجهات وأي مثيلاتSavedStateHandleمملوكةViewModelبشكل صحيح بعد إيقاف العملية وإعادة إنشائها. (b/298059596 وb/289436035) - تم إصلاح مشكلة عند عرض مربّعات حوار متعدّدة في Navigation Compose في الوقت نفسه، حيث تكون مربّعات الحوار المخفية جزئيًا (مثل مربّع الحوار غير العلوي) في حالة دورة الحياة
CREATEDبدلاً من الحالةSTARTED. (aosp/2728520 وb/289257213) - تم إصلاح مشكلة عند عرض مربّعات حوار متعدّدة في Navigation Compose في الوقت نفسه، حيث كان إغلاق مربّع الحوار العلوي يؤدي إلى بقاء مربّع الحوار العلوي الجديد في حالة دورة الحياة
STARTEDبدلاً من الانتقال بشكل صحيح إلىRESUMED. (aosp/2629401 وb/286371387) - لم يعُد تطبيق Navigation Safe Args ينشئ مثيلاً للمهمة بشكل استباقي إذا لم يتم تنفيذها فعليًا. (I0e385، b/260322841)
تحديث الاعتمادية
- تعتمد Navigation Compose الآن على الإصدار 1.5.1 من Compose.
الإصدار 2.7.1
الإصدار 2.7.1
23 أغسطس 2023
تم طرح androidx.navigation:navigation-*:2.7.1. يتضمّن الإصدار 2.7.1 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في التنقّل باستخدام Compose، حيث كان من الممكن ظهور خطأ عند محاولة الوصول إلى
Lifecycle.State.DESTROYEDViewModelعند استخدامScaffold. (I1dc11، b/268422136)
الإصدار 2.7.0
الإصدار 2.7.0
9 أغسطس 2023
تم طرح androidx.navigation:navigation-*:2.7.0. يتضمّن الإصدار 2.7.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.6.0
الصور المتحركة من تطبيق "المرافق الموسيقي"
بعد أن أصبح الإصدار AnimatedContent مستقرًا، تمكّنا من نقل الرمز من الرسوم المتحركة الخاصة بالتنقل في Accompanist إلى Navigation Compose نفسه.
وهذا يعني أنّ جميع الميزات المتاحة في AnimatedNavHost لإعداد انتقالات مخصّصة متاحة مباشرةً في NavHost.
لن يتم إجراء أي تغييرات إضافية على Accompanist Navigation Animation، وسنتوقف نهائيًا عن إتاحتها قريبًا، وسنقدّم إرشادات حول كيفية الرجوع إلى Navigation Compose نفسها، ولكنها ستكون عكس دليل النقل بدون الحاجة إلى أي تغييرات أخرى في واجهة برمجة التطبيقات إذا كنت تستخدم حاليًا أحدث إصدار أولي من Accompanist (0.31.2-alpha). (b/197140101)
إصلاح الأخطاء
- يعترض NavHost في Navigation Compose الآن بشكلٍ صحيح طلبات الرجوع إلى الخلف في النظام حتى بعد أن تم إيقاف النشاط مؤقتًا ثم استئنافه. (Icb6de، b/279118447)
تحديثات الاعتماديات
- تعتمد عملية التنقّل الآن على
1.5.0في Compose بدلاً من1.1.0.
الإصدار 2.7.0-rc01
26 تموز (يوليو) 2023
تم طرح androidx.navigation:navigation-*:2.7.0-rc01. يتضمّن الإصدار 2.7.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبب في بقاء تعبيرات lambda
EnterTransitionوExitTransitionالتي تم إنشاؤها كجزء منNavHostفي الذاكرة حتى بعد إزالةNavHostمن التركيب. (I893d0)
المشاكل المعروفة
- هناك مشكلة في الإصدار 2.6.x من Navigation، وهي أنّه عند التنقّل باستخدام popUpTo، من المحتمل حدوث
IllegalArgumentException. من المحتمل أنّه يمكن تجنُّب هذا الاستثناء من خلال إعادة هيكلة الرسم البياني، على غرار النصيحة المقترَحة هنا. (b/287133013)
الإصدار 2.7.0-beta02
28 حزيران (يونيو) 2023
تم طرح androidx.navigation:navigation-*:2.7.0-beta02. يتضمّن الإصدار 2.7.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- تتضمّن مكتبة Navigation Compose الآن ترتيب z الصحيح لعمليات الانتقال المخصّصة التي تستخدم navigate مع الخيار
popUpTo.(/Ib1c3a، b/285153947)
الإصدار 2.7.0-beta01
7 يونيو 2023
تم طرح androidx.navigation:navigation-*:2.7.0-beta01. يتضمّن الإصدار 2.7.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تعترض
NavHostفي Navigation Compose الآن بشكلٍ صحيح على طلبات الرجوع إلى الخلف في النظام حتى بعد أن تمSTOPPEDوRESUMEDActivity. (Icb6de، b/279118447)
الإصدار 2.7.0-alpha01
24 مايو 2023
تم طرح androidx.navigation:navigation-*:2.7.0-alpha01. يتضمّن الإصدار 2.7.0-alpha01 هذه التعديلات.
الصور المتحركة من تطبيق "المرافق الموسيقي"
بعد أن أصبح الإصدار AnimatedContent مستقرًا، تمكّنا من نقل الرمز من الرسوم المتحركة الخاصة بالتنقل في Accompanist إلى Navigation Compose نفسه.
وهذا يعني أنّ جميع الميزات المتاحة في AnimatedNavHost لإعداد انتقالات مخصّصة متاحة مباشرةً في NavHost.
لن يتم إجراء أي تغييرات إضافية على Accompanist Navigation Animation، وسنتوقف نهائيًا عن إتاحتها قريبًا، وسنقدّم إرشادات حول كيفية الرجوع إلى Navigation Compose نفسها، ولكنها ستكون عكس دليل النقل بدون الحاجة إلى أي تغييرات أخرى في واجهة برمجة التطبيقات إذا كنت تستخدم حاليًا أحدث إصدار أولي من Accompanist (0.31.2-alpha). (b/197140101)
إصلاح الأخطاء
- من Navigation
2.6.0-rc02: تم إصلاح مشكلة في Navigation في Fragments، حيث كان التنقّل باستخدامpopUpToوإزالة جزء من سجلّ الأنشطة السابقة بدون إعادة إنشاء طريقة العرض يؤدي إلى توقّف الرجوع إلى الخلف في النظام. (Ieb8d4، b/281726455)
تحديثات الاعتماديات
- أصبحت عملية التنقّل تعتمد الآن على
1.5.0-beta01في Compose.
الإصدار 2.6.0
الإصدار 2.6.0
7 يونيو 2023
تم طرح androidx.navigation:navigation-*:2.6.0. يتضمّن الإصدار 2.6.0 هذه التعديلات.
التغييرات المهمة التي طرأت على "التنقّل" منذ الإصدار 2.5.0
- إنّ
argumentsالخاص بـNavBackStackEntryوargumentsالذي تم تمريره إلىOnDestinationChangedListenerهما الآن مجرد نسخة من الوسيطات غير القابلة للتغيير التي تم إنشاؤها عند الانتقال إلى الوجهة. وهذا يعني أنّ أي تغييرات يتم إجراؤها على هذه الحِزم لن تظهر في عمليات الوصول اللاحقة إلىargumentsأو مثيلاتOnDestinationChangedListenerالأخرى. - تتيح السمة
NavDeepLinkالآن القيم التلقائية للصفائف، ما يسمح بتوفير مَعلمات طلب متكرّرة سيتم ربطها بنوع صفيف الوسيطة. تتضمّنNavTypeالآن أيضًا طريقة تلقائية يمكن إلغاؤها لدمج قيمتَين تم تحليلهما. - يمكن الآن لفئات
NavTypeالفرعية المخصّصة إلغاءserializeAsValueلتسلسل قيمة في سلسلة، ما يتيح تضمين كل من التسلسل وإلغاء التسلسل (عبرparseValue) بالكامل في فئةNavType. يحلّStringTypeالآن محلّ هذه الطريقة لاستدعاءUri.encodeعلىStringالمحدّد.
التغييرات المهمة في Navigation Compose منذ الإصدار 2.5.0
- عند معاينة عنصر قابل للإنشاء باستخدام
NavHost، سيتم الآن عرضstartDestinationفي NavGraph تلقائيًا. - تتيح الآن كل من
NavController.popBackStack(route)وNavController.getBackStackEntry(route)وNavController.clearBackStack(route)استخدام مسارات تتضمّن وسيطات تم ملؤها جزئيًا أو كليًا. يُرجى العِلم أنّه يجب أن تتطابق الوسيطات تمامًا مع وسيطات الإدخال. - ستؤدي محاولة إنشاء
NavDeepLinkفارغ باستخدامnavDeepLinkKotlin DSL الآن إلى ظهور تحذير من أداة Lint يشير إلى أنّ الرابط لصفحة في التطبيق يحتاج إلى معرّف URI و/أو إجراء و/أو نوع MIME ليكون صالحًا.
التغييرات المهمة في Navigation with Fragments منذ الإصدار 2.5.0
- لم يعُد تطبيق
NavHostFragmentيعترض زر الرجوع في النظام نفسه. يتيح ذلك لـFragmentManagerالأساسي التعامل مع الرجوع إلى الخلف في النظام. يتيح ذلك للإصدار Fragment1.7.0-alpha01والإصدارات الأحدث توفير رسم متحرك لميزة "الرجوع التوقّعي داخل التطبيق" على أجهزة Android U. - عند استخدام Navigation مع Fragments، ستؤدي محاولة تنفيذ
FragmentTransactionيدويًا لإضافة جزء إلى الأنظمة السابقة فيFragmentManagerإلى طرحIllegalArgumentException. يجب إضافة الأجزاء دائمًا من خلال واجهة برمجة التطبيقاتnavigate(). - عند استخدام السلسلة المطابقة
${applicationId}كعنصر نائب في السمتَينapp:dataوapp:dataPatternضمن عنصر النشاط في ملف XML للتنقّل، سيتم ملء العنصر النائب تلقائيًا بقيمةpackageNameللسياق عند التضخّم. - تستخدم
FragmentNavigatorالآن واجهات برمجة تطبيقات الانتقال عند التنقّل وإظهارNavBackStackEntries. وهذا يعني أنّNavBackStackEntryLifecycleسينتظر الآن إلى أن تكتمل المؤثرات الخاصة لعملية الدخول والخروج من الجزء قبل نقلLifecycle.Stateالنهائي. - تستخدم
DialogFragmentNavigatorالآن واجهات برمجة تطبيقات الانتقال عند التنقّل وإظهارNavBackStackEntries. هذا يعني أنّNavBackStackEntryLifecycleسينتظر الآنDialogFragmentLifecycleللانتقال إلىDESTROYEDقبل الانتقال إلىDESTROYEDنفسه. - تتيح لك
NavHostFragmentالآن استردادNavControllerفور إرفاقNavHostFragmentبـFragmentManager، بدلاً من استرداده بعدonCreate()فقط. - يعتمد الآن توفّر ميزة التنقّل في "وحدات الميزات الديناميكية" على مكتبة "عرض الميزات في Play" الدقيقة.
- يعتمد المكوّن الإضافي لنظام Gradle الخاص بـ Safe Args في Navigation الآن على الإصدار 7.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. وهذا يعني أنّه أصبح متوافقًا فقط مع الإصدارات 7.3.0 والإصدارات الأحدث.
التغييرات المهمة التي تم إجراؤها على NavigationUI منذ الإصدار 2.5.0
- عند تمرير معرّف رسم بياني للتنقّل إلى
AppBarConfiguration(مثل تمريره عبرMenu)، لا يعتبرNavigationUIالآن سوى وجهة البدء في رسم بياني التنقّل هذا كوجهة ذات مستوى أعلى، بدلاً من وضع علامة بشكل غير صحيح على كل وجهة داخل الرسم البياني كوجهة ذات مستوى أعلى. لم يتغيّر سلوك تمرير معرّف وجهة فردية. تتوفّر هذه الوظيفة نفسها لرمزك البرمجي من خلال الدالة الجديدةisTopLevelDestinationعلىAppBarConfiguration. - ستحلّل عمليات دمج
setupWithNavControllerفيNavigationUIللعمل مع شريط التطبيق العلوي الآن قيمR.stringلوسيطاتReferenceTypeالتي تم العثور عليها فيandroid:labelإلى قيم السلسلة بدلاً من إخراج عدد صحيح للمورد تم إنشاؤه تلقائيًا. - يوفّر
NavigationUIالآن سجلّات عند تعذّر التنقّل من خلالMenuItemمحدّد.
الإصدار 2.6.0-rc02
24 مايو 2023
تم طرح androidx.navigation:navigation-*:2.6.0-rc02. يتضمّن الإصدار 2.6.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في التنقّل في "التقسيمات"، حيث كان التنقّل باستخدام
popUpToوإزالة جزء من "الأنشطة السابقة" بدون إعادة إنشاء طريقة العرض يؤدي إلى توقّف عمل زر الرجوع في النظام. (Ieb8d4، b/281726455)
الإصدار 2.6.0-rc01
10 مايو 2023
تم طرح androidx.navigation:navigation-*:2.6.0-rc01. يتضمّن الإصدار 2.6.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في التنقّل باستخدام Fragment حيث كان يؤدي إزالة جزء من خلال navigate باستخدام
popUpToفي الاستدعاء في إحدى مراحل النشاطonResume()إلى حدوثIllegalStateException. (I21884، b/279644470)
الإصدار 2.6.0-beta01
19 أبريل 2023
تم طرح androidx.navigation:navigation-*:2.6.0-beta01. يتضمّن الإصدار 2.6.0-beta01 هذه التعديلات.
الميزات الجديدة
- توفّر
NavBackStackEntryالآن عملية تنفيذ مخصّصة لـtoString. (Iff00b)
إصلاح الأخطاء
- عند استخدام Navigation مع "التقسيمات"، ستؤدي محاولة تنفيذ
FragmentTransactionيدويًا لإضافة جزء إلى سجلّ الرجوع فيFragmentManagerإلى ظهورIllegalArgumentException. يجب إضافة الأجزاء دائمًا من خلال واجهة برمجة التطبيقاتnavigate(). (I6d38e) - عندما يكون هناك
navigateيضيف إدخالاً وpopBackStackيزيله في الإطار نفسه، سيؤدي الإدخال العلوي الناتج في الأنشطة السابقة الآن إلى إعادته باستمرار إلىRESUMEDLifecycle.State. (Id8067، b/276495952)
الإصدار 2.6.0-alpha09
5 أبريل 2023
تم طرح androidx.navigation:navigation-*:2.6.0-alpha09. يتضمّن الإصدار 2.6.0-alpha09 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عمليات التحقّق من المسار غير الصالح، بحيث إذا كان العنصر
NavDestinationيحتوي علىNavArgumentغير قابل للقيم الفارغة، يجب أن يحتوي مسار الوجهة على عناصر نائبة للوسيطات التي تحمل الاسم نفسه مثلNavArgumentغير القابل للقيم الفارغة. (Ic62bf، b/274697949) - ستتعذّر الآن عمليات التنقّل عبر الروابط لصفحات في التطبيق استنادًا إلى
Action/MimeTypeإذا كانت عملية التنقّل لا تتضمّنNavArgumentغير قابل للقيم الفارغة ومطلوب من خلالNavDestinationالذي يتطابق معهAction/MimeType. (Ibfa17، b/271777424) - عندما يضبط
NavControllerرسمًا بيانيًا يتضمّن المسار والوجهات نفسها التي يتضمّنها الرسم البياني السابق، يستبدل الآن بشكل صحيح عُقد الرسم البياني الحالية ووجهات الأنشطة السابقة بمثيلات جديدة. يحلّ هذا الإصلاح مشكلة تعذُّر التطبيق عن العمل عند استخدامonLaunchSingleTopبدون حفظ الحالة في Navigation Compose. يحلّ هذا أيضًا خطأً يؤدي فيه الانتقال إلى الوجهات المرتبطة بالرسم البياني الأساسي إلى إنشاء حزمة الأنشطة السابقة غير صحيحة. (I5bc58، b/275258161، b/275407804)
الإصدار 2.6.0-alpha08
22 مارس 2023
تم طرح androidx.navigation:navigation-*:2.6.0-alpha08. يتضمّن الإصدار 2.6.0-alpha08 هذه التعديلات.
الميزات الجديدة
- تتيح لك
NavHostFragmentالآن استردادNavControllerفور إرفاقNavHostFragmentبـFragmentManager، بدلاً من استرداده بعدonCreate()فقط. (Ic6382، b/220186282)
إصلاح الأخطاء
- تم إصلاح
NullPointerExceptionعند عرض رسم بياني متداخل يتضمّن وسيطة غير قابلة للتصغير. (6b3581، b/249988437) - عند استخدام زر الرجوع في النظام بعد التنقّل باستخدام
popUpTo، ستظهر حالةNavControllerفي الإدخال الصحيح. (I3a8ec، b/270447657) - ستعرض السمة
FragmentNavigatorالآن الإدخالات بشكل صحيح عند إزالة العناصر من الأنشطة السابقة باستخدام زر الرجوع في النظام أوpopBackStack()، وسواء كانت المعاملة تستخدم تأثيرات للجزء أو لا. (I81bdf) - لن تؤدي إضافة أجزاء إلى
FragmentNavigatorFragmentManagerبدون استخدام التنقّل إلى حدوث عُطل. (b17204، b/274167493)
تحديثات الاعتماديات
- يعتمد التنقّل الآن على Lifecycle
2.6.1. (586fe7) - يعتمد التنقّل الآن على SavedState
1.2.1. (078e4e) - يعتمد التنقّل الآن على ProfileInstaller
1.3.0. (512f0c)
الإصدار 2.6.0-alpha07
8 مارس 2023
تم طرح androidx.navigation:navigation-*:2.6.0-alpha07. يتضمّن الإصدار 2.6.0-alpha07 هذه التعديلات.
إصلاح الأخطاء
- تتلقّى الآن صيغ واجهة برمجة التطبيقات
getBackStackEntryوpopBackStackوclearBackStackالتي تتلقّى مسارات أنماط مسارات تتضمّن وسيطات وقيم مَعلمات طلب بحث قابلة للتصغير (I22294 وb/269302500). - تم إصلاح مشكلة عدم محو الحالة المحفوظة في أداة إدارة الأجزاء المرتبطة بالأنشطة السابقة التي تم محوها عند استدعاء
clearBackStack()منNavController. (Ic1cce، b/271190202) - تم إصلاح مشكلة في الإصدار 2.6.0-alpha06 كانت تؤدي إلى تمييز
MenuItemغير صحيح فيBottomNavigationViewعند استخدام "الرجوع إلى الخلف" في النظام بين علامات التبويب. (I634f6، b/270447657) - تم إصلاح مشكلة في الإصدار 2.6.0-alpha06 تسبّبت في عدم نقل
NavBackStackEntryإلى الحالة RESUMED عند استخدامAnimation. (Ib3589، b/269646882)
الإصدار 2.6.0-alpha06
22 فبراير 2023
تم طرح androidx.navigation:navigation-*:2.6.0-alpha06. يتضمّن الإصدار 2.6.0-alpha06 هذه التعديلات.
الميزات الجديدة
- عند معاينة عنصر قابل للإنشاء باستخدام
NavHost، سيتم الآن عرضstartDestinationفي NavGraph تلقائيًا. (I2b89f)
تغييرات واجهة برمجة التطبيقات
- تمت الآن إضافة التعليق التوضيحي
@MainThreadإلى جميع عمليات التحميل الزائدNavControllernavigateلضمان استدعائها في سلسلة التعليمات البرمجية الرئيسية. (I2c0b0، b/263427111)
إصلاح الأخطاء
- تم إصلاح عُطل عند محاولة التنقّل أثناء استخدام ميزة "التنقّل الديناميكي بين الأجزاء". (I3ee29، b/268360479)
- تم إصلاح الخطأ الذي كان يؤدي إلى عدم تعديل الشريط السفلي إلى العنصر المحدّد الصحيح عند الانتقال إلى جزء آخر باستخدام زر الرجوع في النظام (If559f، b/269044426)
المشاكل المعروفة
- عند استخدام Navigation مع Fragments، يتعذّر على دورة حياة
NavBackStackEntryالوصول إلىRESUMEDعند استخدام واجهات برمجة التطبيقاتAnimation. (b/269646882) - عند استخدام Navigation مع "التقسيمات"، والتنقّل باستخدام
BottomNavigation، إذا حاولت استعادة سجلّ الرجوع الذي يتضمّن عدّة إدخالات، لن يتم تعديلBottomMenuItemبشكل صحيح. (b/270447657) - عند استخدام Navigation مع Fragments، بعد استعادة الحالة، لا يتم الحصول على
NavBackStackEntryLifecycleDESTROYEDعندDESTROYEDالجزء الخاص به . (b/270610768)
الإصدار 2.6.0-alpha05
8 فبراير 2023
تم طرح androidx.navigation:navigation-*:2.6.0-alpha05. يتضمّن الإصدار 2.6.0-alpha05 هذه التعديلات.
الميزات الجديدة
- تتيح الآن كل من
NavController.popBackStack(route)وNavController.getBackStackEntry(route)وNavController.clearBackStack(route)استخدام مسارات تتضمّن وسيطات تم ملؤها جزئيًا أو كليًا. يُرجى العِلم أنّه يجب أن تتطابق الوسيطات تمامًا مع وسيطات الإدخال. (Iebd28 وIc678c وI3b37b وb/257514373) - تستخدم
FragmentNavigatorالآن واجهات برمجة تطبيقات الانتقال عند التنقّل وإظهارNavBackStackEntries. وهذا يعني أنّNavBackStackEntryLifecycleسينتظر الآن إلى أن تكتمل المؤثرات الخاصة لعملية الدخول والخروج من الجزء قبل نقلLifecycle.Stateالنهائي. (I3cb19، b/238686802) - تستخدم
DialogFragmentNavigatorالآن واجهات برمجة تطبيقات الانتقال عند التنقّل وإظهارNavBackStackEntries. هذا يعني أنّNavBackStackEntryLifecycleسينتظر الآنDialogFragmentLifecycleللانتقال إلىDESTROYEDقبل الانتقال إلىDESTROYEDنفسه. (I53ee5، b/261213893)
تغييرات واجهة برمجة التطبيقات
- توفّر
NavigatorStateالآن واجهة برمجة التطبيقاتprepareForTransitionللسماحNavigatorبنقلNavBackStackEntriesإلىLifecycle.Stateوسيطة. (I42c21، b/238686802) - يمكنك الآن الوصول إلى الأنشطة السابقة المرتبطة بموقع
NavGraphNavigatorأوComposeNavigatorمن خلال موقعbackstack. تعرض السمةComposeNavigatorالآن أيضًا الدالةonTransitionComplete()لتحديد حالةNavBackStackEntryالتي نفّذت عملية تنقّل أوpopBackStackعلى أنّها مكتملة. (I02062 وI718db وb/257519195)
إصلاح الأخطاء
- لن يتم تنفيذ أي عملية في حالة Navigator عند استخدام واجهات برمجة التطبيقات
push/popWithTransitionويتم التعامل مع الإدخال بالفعل. (Iadbfa، b/261213893) - عند استخدام
launchSingleTopمعNavGraphمتداخلة، لن تتم إضافة جميع الوجهات بدءًا من الوجهة الأصلية إلىstartDestinationبشكل صحيح إلا إلى أعلى حزمة الخلف. (Id4bea، b/253256629) - سيؤدي التنقّل الآن إلى استبدال مثيل
DialogFragmentبشكل صحيح عند التنقّل إلى الوجهة نفسها مع ضبط العلامةlaunchSingleTopعلى "صحيح". (I45b5a، b/149572817) - لن تتسبّب Navigation SafeArgs بعد الآن في حدوث خطأ في التجميع عند استخدام وسيطات تتألف من 19 حرفًا بالضبط. (Id60bc، b/257110095)
الإصدار 2.6.0-alpha04
9 نوفمبر 2022
تم طرح androidx.navigation:navigation-*:2.6.0-alpha04. يتضمّن الإصدار 2.6.0-alpha04 هذه التعديلات.
الميزات الجديدة
- يمكن الآن لفئات
NavTypeالفرعية المخصّصة إلغاءserializeAsValueلتسلسل قيمة في سلسلة، ما يتيح تضمين كل من التسلسل وإلغاء التسلسل (عبرparseValue) بالكامل في فئةNavType. يحلّStringTypeالآن محلّ هذه الطريقة لاستدعاءUri.encodeعلىStringالمحدّد. (Ie5213، b/247637434) - يوفّر
NavigationUIالآن سجلّات عند تعذّر التنقّل من خلالMenuItemمحدّد. (I2af5a، b/247730357)
إصلاح الأخطاء
- يتم الآن تحليل الروابط لصفحات معيّنة الخاصة بالتنقّل بشكل غير مباشر بدلاً من تحليلها عند تهيئة الرسم البياني، ما قد يحسّن أداء التطبيق عند بدء تشغيله. (Iab0ab)
- تم إصلاح عُطل ناتج عن الانتقال للأعلى بعد الربط بصفحة معيّنة تتضمّن وسيطات تلقائية فارغة. (I51c24، b/243183636)
تحديث الاعتمادية
- يعتمد الآن توفّر ميزة التنقّل في "وحدات الميزات الديناميكية" على مكتبة "عرض الميزات في Play" الدقيقة. (Ib4ddc)
- يعتمد المكوّن الإضافي لنظام Gradle الخاص بـ Safe Args في Navigation الآن على الإصدار 7.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. وهذا يعني أنّها أصبحت متوافقة فقط مع الإصدارات 7.3.0 والإصدارات الأحدث (I47e49).
الإصدار 2.6.0-alpha03
24 أكتوبر 2022
تم طرح androidx.navigation:navigation-*:2.6.0-alpha03. يتضمّن الإصدار 2.6.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- من شريط التنقّل
2.5.3: لن يؤديNavHostبعد الآن إلى حدوثNoSuchElementExceptionعندما لا تتوفّر وجهة لإنشاءCrossfade. سيتم الآن تخطّي الأغنية فقط. (Ieb46e، b/253299416) - من التنقّل
2.5.3: تم إصلاح مشكلة عدم نسيان حالة Compose المحفوظة (مثل استخداماتrememberSaveable) وإزالتها عند إزالة وجهة من سجلّ الرجوع. (I64949)
تحديثات الاعتماديات
- يعتمد التنقّل الآن على Fragment
1.5.4. (Icd424)
الإصدار 2.6.0-alpha02
5 أكتوبر 2022
تم طرح androidx.navigation:navigation-*:2.6.0-alpha02. يتضمّن الإصدار 2.6.0-alpha02 هذه التعديلات.
التغييرات في السلوك
- عند تمرير معرّف رسم بياني للتنقّل إلى
AppBarConfiguration(مثل تمريره عبرMenu)، لا يعتبرNavigationUIالآن سوى وجهة البدء في رسم بياني التنقّل هذا كوجهة ذات مستوى أعلى، بدلاً من وضع علامة بشكل غير صحيح على كل وجهة داخل الرسم البياني كوجهة ذات مستوى أعلى. لم يتغيّر سلوك تمرير معرّف وجهة فردية. تتوفّر هذه الوظيفة نفسها لرمزك البرمجي من خلال الدالة الجديدةisTopLevelDestinationعلىAppBarConfiguration. (Ie936e، b/238496771)
إصلاح الأخطاء
- يعتمد مكوّن
navigation:navigation-fragmentالآن على الإصدار1.5.2من Fragment. (I00ba4) - لن يتم تعديل عنصر القائمة المحدّد عند الانتقال إلى وجهة
FloatingWindow، مثل مربّع حوار. (I4cde8، b/240308330)
الإصدار 2.6.0-alpha01
7 أيلول (سبتمبر) 2022
تم طرح androidx.navigation:navigation-*:2.6.0-alpha01. يتضمّن الإصدار 2.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- ستحلّل عمليات دمج
setupWithNavControllerفيNavigationUIللعمل مع شريط التطبيق العلوي الآن قيمR.stringلوسيطاتReferenceTypeالتي تم العثور عليها فيandroid:labelإلى قيم السلسلة بدلاً من إخراج عدد صحيح للمورد تم إنشاؤه تلقائيًا. (I5f803، b/167959935) - تتيح السمة
NavDeepLinkالآن القيم التلقائية للصفائف، ما يسمح بتوفير مَعلمات طلب متكرّرة سيتم ربطها بنوع صفيف الوسيطة. تتضمّنNavTypeالآن أيضًا طريقة تلقائية يمكن إلغاؤها لدمج قيمتَين تم تحليلهما. (Id68c3، b/209977108) - عند استخدام السلسلة المطابقة
${applicationId}كعنصر نائب في السمتَينapp:dataوapp:dataPatternضمن عنصر النشاط في ملف XML للتنقّل، سيتم ملء العنصر النائب تلقائيًا بقيمةpackageNameللسياق عند التضخّم. (Iaabde، b/234223561) - ستؤدي محاولة إنشاء
NavDeepLinkفارغ باستخدامnavDeepLinkKotlin DSL الآن إلى ظهور تحذير من أداة Lint يشير إلى أنّ الرابط لصفحة في التطبيق يحتاج إلى معرّف URI و/أو إجراء و/أو نوع MIME ليكون صالحًا. (I08d2f، b/154038883)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة دالة الإضافة الجديدة
NavDestinationلتحليل التصنيفات الديناميكية مع وسيطات بالتنسيقandroid:label="{arg}"إلى سلسلة. تتيح وسيطاتReferenceTypeمن خلال تحليل قيمR.stringإلى قيم السلسلة الخاصة بها. (I07d89، b/236269380)
التغييرات في السلوك
- أصبح
argumentsالخاص بـ NavBackStackEntry وargumentsالذي تم تمريره إلىOnDestinationChangedListenerالآن مجرد نسخة من الوسيطات غير القابلة للتغيير التي تم إنشاؤها عند الانتقال إلى الوجهة. وهذا يعني أنّ أي تغييرات يتم إجراؤها على هذه الحِزم لن تظهر في عمليات الوصول اللاحقة إلىargumentsأو مثيلاتOnDestinationChangedListenerالأخرى. (I676f5)
إصلاح الأخطاء
- من التنقّل
2.5.2: تحاول ميزة "التنقّل الديناميكي" الآن تثبيت وجهات الأنشطة من الوحدات الأخرى بشكل صحيح قبل الانتقال إليها. (Ia2c16، b/240292838) - من Navigation
2.5.2: سيؤدي التنقّل الآن إلى استبدال مثيل Fragment بشكلٍ سليم عند التنقّل إلى الوجهة نفسها وضبط العلامةlaunchSingleTopعلى "صحيح". (I5a2f1، b/237374580) - من التنقّل
2.5.2: تم إصلاح الخطأIllegalStateExceptionالناتج عن الانتقال إلى رسم بياني متداخل مرتين يتشارك عنصرًا رئيسيًا مع وجهة بدء جديدة تم إغلاقها. (I9f7cb، b/243778589)
الإصدار 2.5
الإصدار 2.5.3
24 أكتوبر 2022
تم طرح androidx.navigation:navigation-*:2.5.3. يتضمّن الإصدار 2.5.3 هذه التعديلات.
إصلاح الأخطاء
- لن يؤدي
NavHostبعد الآن إلى حدوثNoSuchElementExceptionعندما لا تتوفّر وجهة لإنشاءCrossfade. سيتم الآن تخطّي الأغنية فقط. (Ieb46e، b/253299416) - تم إصلاح المشكلة المتمثّلة في عدم نسيان حالة Compose المحفوظة (مثل استخدامات
rememberSaveable) وإزالتها عند إزالة وجهة من الأنشطة السابقة. (I64949)
الإصدار 2.5.2
7 أيلول (سبتمبر) 2022
تم طرح androidx.navigation:navigation-*:2.5.2. يتضمّن الإصدار 2.5.2 هذه التعديلات.
إصلاح الأخطاء
- تحاول ميزة "التنقّل الديناميكي" الآن تثبيت وجهات الأنشطة من الوحدات الأخرى بشكل صحيح قبل الانتقال إليها. (Ia2c16، b/240292838)
- سيؤدي التنقّل الآن إلى استبدال مثيل Fragment بشكل صحيح عند التنقّل إلى الوجهة نفسها وضبط العلامة
launchSingleTopعلى "صحيح". (I5a2f1، b/237374580) - تم إصلاح الخطأ
IllegalStateExceptionالناتج عن الانتقال إلى رسم بياني متداخل مرتين يتشارك عنصرًا رئيسيًا مع وجهة بدء جديدة تم فتحها. (I9f7cb، b/243778589)
تحديث الاعتمادية
- تعتمد عملية التنقّل
2.5.2الآن على Fragment1.5.2. (aosp/2178734)
الإصدار 2.5.1
27 يوليو 2022
تم طرح androidx.navigation:navigation-*:2.5.1. يتضمّن الإصدار 2.5.1 هذه التعديلات.
إصلاح الأخطاء
- لن يؤدي
Navigation Safe Argsبعد الآن إلى ظهور تحذيرات الإيقاف نهائيًا في الفئات التي تم إنشاؤها عند استخدام أنواع وسيطات مخصّصة يتم حفظها فيBundle. (Id86ed، b/237725966)
تحديثات الاعتماديات
- تعتمد مكتبة Navigation الآن على Lifecycle
2.5.1. (Ib4451) - تعتمد مكتبة Navigation الآن على Activity
1.5.1. (I3efe8) - تعتمد مكتبة Navigation الآن على Fragment
1.5.1. (I56177)
الإصدار 2.5.0
29 يونيو 2022
تم طرح androidx.navigation:navigation-*:2.5.0. يتضمّن الإصدار 2.5.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.4.0
- دمج CreationExtras: يمكن الآن لتطبيق
NavigationتوفيرViewModelProvider.Factoryبدون حالة من خلالCreationExtrasفي Lifecycle2.5.0.
Navigation SafeArgs
- تمت ترقية الاعتمادية
Android Gradle PluginفيNavigation Safe Argsللاستناد إلى7.0.4، ما أدى إلى إيقاف التوافق مع إصدارات "المكوّن الإضافي لنظام Gradle المتوافق مع Android" قبل الإصدار7.0. - تمت إضافة إمكانية استخدام سمة build.gradle لمساحة الاسم بدلاً من applicationId.
التغييرات الأخرى
- لم تعُد واجهة برمجة التطبيقات
visibleEntriesتجريبية، وهي توفّر وظيفة لاسترداد جميع الإدخالات التي تكون وجهتها مرئية حاليًا وفقًا لـNavController.
الإصدار 2.5.0-rc02
15 يونيو 2022
تم طرح androidx.navigation:navigation-*:2.5.0-rc02. يتضمّن الإصدار 2.5.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح عُطل ناتج عن التبديل السريع بين الوجهات السفلية عند استخدام Navigation Compose
NavHost. (I3979a، b/234054916) - لن يتعطّل
Navigation SafeArgsبعد الآن عند استخدامapplicationIdSuffixومساحة اسم بدونapplicationId، أو عندما يختلفapplicationIdعن مساحة الاسم. (I754b1، b/233119646) - يتضمّن
NavArgumentالآن دالةtoString()مخصّصة لعرض القيم الداخلية للوسيطة. (I900a8)
الإصدار 2.5.0-rc01
11 مايو 2022
تم طرح androidx.navigation:navigation-*:2.5.0-rc01. يتضمّن الإصدار 2.5.0-rc01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة قاعدة تدقيق جديدة للتحذير من وضع عناصر
<deeplink>داخل عناصر<activity>في ملفnavigation.xml.(Ic15a5، b/178403185)
إصلاح الأخطاء
- يتم الآن إيقاف النطاقات القابلة للإنشاء في
NavHostوDialogHostبالترتيب المتوقّع، أي يتم إيقاف الدوال المركّبة الداخلية قبل الدوال المركّبة الخارجية. (I157e6) - تستخدم Navigation SafeArgs الآن
PathSensitivity.RELATIVEفيArgumentsGenerationTaskللسماح بإمكانية نقل البيانات المخزّنة مؤقتًا. وهذا يعني أنّه يمكن الآن إعادة استخدام إدخال ذاكرة التخزين المؤقت من إصدار CI إلى إصدار محلي. (I5f67c، b/173420454) - تم تعديل قاعدة التدقيق
UnrememberedGetBackStackEntryDetectorلضمان أنّ طلبrememberالذي يحيط بطلبgetBackStackEntry()يمرِّر أيضًا عنصرNavBackStackEntryكمفتاح.(Ib7081، b/227382831)
الإصدار 2.5.0-beta01
20 أبريل 2022
تم طرح androidx.navigation:navigation-*:2.5.0-beta01. يتضمّن الإصدار 2.5.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- يستخدم
DialogNavigatorالآنpopWithTransitionعند تنفيذ مكالمةdismiss(). يحلّ هذا الخطأ حالة التنافس عند استخدامViewModelضمن وجهةdialogالتي كانت تتسبّب في حدوثIllegalStateExceptionعند إغلاق مربع الحوار إما باستخدام زر الرجوع في النظام أو النقر خارج مربع الحوار للخروج منه. (Id7376، b/226552301)
تحديثات الاعتماديات
- يعتمد التنقّل الآن على Lifecycle
2.5.0-beta01، ما يؤدي إلى إصلاحIllegalStateExceptionعند تضمينNavHostداخلNavHostأخرى في علامة تبويب غير أساسية في شريط التنقّل السفلي عند استخدام حِزم متعددة من السجلّ الخلفي.
الإصدار 2.5.0-alpha04
6 أبريل 2022
تم طرح androidx.navigation:navigation-*:2.5.0-alpha04. يتضمّن الإصدار 2.5.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
visibleEntriesفي مرحلة تجريبية. (I4829f، b/225394514)
إصلاح الأخطاء
- يعتمد NavHost الآن على
visibleEntriesمنNavControllerلتحديد الإدخالات التي سيتم إنشاؤها. وهذا يعني أنّه عند استخدام NavHost متداخل، من المفترض أن يتم الآن إيقاف الرسوم المتحركة الخاصة بـNavHostبشكل صحيح. (I4ba2b، b/225394514) - تستند
visibleEntriesStateFlowالتي يوفّرهاNavControllerالآن إلى الحدّ الأقصى لحالة Lifecycle بدلاً من حالة Lifecycle الحالية. وهذا يعني أنّه حتى إذا انخفضت دورة حياة المضيفnavControllerإلى أقل من STARTED، ستبقى قائمة الإدخالات المرئية كما هي. (I9e2a8، b/225394514) - يتيح
SavedStateViewFactoryالآن استخدامCreationExtrasحتى إذا تم إعداده باستخدامSavedStateRegistryOwner. في حال توفير عناصر إضافية، سيتم تجاهل الوسيطات التي تمّت تهيئتها. (I6c43b، b/224844583) - يمكن الآن لـ
NavDeepLinkتحليل عناوين URI التي تتضمّن مَعلمة طلب بحث واحدة بدون قيمة. (I0efe8، b/148905489) - تُعد السلاسل الفارغة الآن وسيطات صالحة في الروابط لصفحات معيّنة. (I70a0d، b/217399862)
- لن يتعطّل
Navigation Safe Argsبعد الآن عند استخدام مساحات الأسماء وعدم توفّرAndroidManifest.xml. (I17ccf، b/227229815)
الإصدار 2.5.0-alpha03
23 فبراير 2022
تم طرح androidx.navigation:navigation-*:2.5.0-alpha03. يتضمّن الإصدار 2.5.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إدخال
CreationExtrasإلىby navGraphViewModelsلإنشاءViewModel. (I29217، b/217618359)
إصلاح الأخطاء
- تتوافق
NavDeepLinksالآن بشكلٍ سليم مع أحرف السطر الجديد المرمّزة والمضمّنة في مسارات/معرّفات الموارد المنتظمة (URI) للروابط لصفحات معيّنة. (I513d1، b/217815060) - ستعمل السمة
CreationExtrasالآن بشكل صحيح عند استخدامها معNavBackStackEntriesلإنشاء ViewModels. (I69161، b/217617710) - تتيح Navigation Safe Args الآن استخدام مساحة الاسم المحدّدة في
build.gradleبدلاً من الحزمة في AndroidManifest. (I659ef، b/217414933)
الإصدار 2.5.0-alpha02
9 فبراير 2022
تم طرح androidx.navigation:navigation-*:2.5.0-alpha02. يتضمّن الإصدار 2.5.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
- من التنقّل
2.4.1: سيضبطNavHostFragmentالآنOnBackPressedDispatcherبشكل صحيح عند استخدام viewbinding مع الرسوم البيانية المتداخلة. (Ifbb51، b/214577959) - من التنقّل
2.4.1: عند استخدام الروابط لصفحات في التطبيق من خلال عدة عناصرNavGraphمتداخلة، ستتضمّن حزمة الأنشطة السابقة الآن وجهات بدء وسيطة بشكلٍ سليم. (I504c0، b/214383060)
الإصدار 2.5.0-alpha01
26 يناير 2022
تم طرح androidx.navigation:navigation-*:2.5.0-alpha01. يتضمّن الإصدار 2.5.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يتكامل
NavBackStackEntryالآن مع ViewModel CreationExtras، الذي تم تقديمه كجزء من Lifecycle2.5.0-alpha01. (Ib9fe2، b/207012490)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى تعذُّر الوصول إلى
ViewModelتم إنشاؤه باستخدامby navGraphViewModels()منonCreate()في Fragment مع ظهور الخطأIllegalStateException. (I8a14d) - لن يتم بعد الآن فك ترميز
NavDeepLinks مرتين بدون داعٍ، ما يعني أنّه يتم الآن تمرير الوسيطات المناسبة إلى وجهتك النهائية. (I31b0a، b/210711399)
Safe Args
- تعتمد Safe Args الآن على الإصدار 7.0.4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. وهذا يعني أنّ ميزة Navigation Safe Args لن تكون متوافقة مع إصدارات استوديو Android الأقدم من 7.0، ولكنّها ستكون متوافقة مع الإصدار 7.1.0 من "مكوّن إضافي لنظام Gradle المتوافق مع Android" والإصدارات الأحدث. (I41c88، b/213086135، b/207670704)
الإصدار 2.4.2
الإصدار 2.4.2
6 أبريل 2022
تم طرح androidx.navigation:navigation-*:2.4.2. يتضمّن الإصدار 2.4.2 هذه التعديلات.
إصلاح الأخطاء
- تم نقل الميزة من Navigation
2.5.0-alpha03:NavDeepLinks، وأصبحت الآن تتيح بشكل صحيح أحرف السطر الجديد المرمّزة والمضمّنة في مسارات/معرّفات الموارد المنتظمة (URI) للروابط لصفحات معيّنة. (I513d1، b/217815060) - تم نقل هذه الميزة من Navigation
2.5.0-alpha03: تتيح ميزة Navigation SafeArgs الآن استخدام مساحة الاسم المحدّدة فيbuild.gradleبدلاً من الحزمة في AndroidManifest. (I659ef، b/217414933) - تمت إعادة نقل هذه المشكلة من Navigation
2.5.0-alpha04: لن يتعطّلNavigation Safe Argsبعد الآن عند استخدام مساحات الأسماء وعدم توفّرAndroidManifest.xml. (I17ccf، b/227229815) - تم نقل هذه الميزة من Navigation
2.5.0-alpha04: أصبحت السلسلة الفارغة تُعتبر الآن وسيطات صالحة في الروابط لصفحات معيّنة. (I70a0d، b/217399862)
الإصدار 2.4.1
الإصدار 2.4.1
9 فبراير 2022
تم طرح androidx.navigation:navigation-*:2.4.1. يتضمّن الإصدار 2.4.1 هذه التعديلات.
إصلاح الأخطاء
- سيضبط
NavHostFragmentالآنOnBackPressedDispatcherبشكل صحيح عند استخدام viewbinding مع الرسوم البيانية المتداخلة. (Ifbb51، b/214577959) - عند استخدام الربط العميق من خلال عدة
NavGraphs متداخلة، سيتضمّن الآن سجلّ الأنشطة السابقة وجهات البدء الوسيطة بشكلٍ صحيح. (I504c0، b/214383060) - تم نقل إصلاح من Navigation
2.5.0-alpha01: تم إصلاح مشكلة تعذُّر الوصول إلى ViewModel تم إنشاؤه باستخدامby navGraphViewModels()منonCreate()في Fragment مع ظهور الخطأIllegalStateException. (I8a14d) - تم نقل التغيير من Navigation
2.5.0-alpha01:NavDeepLinkلم يعُد يتم فك ترميز الوسيطات مرتين بدون داعٍ، ما يعني أنّه يتم الآن تمرير الوسيطات التي تم فك ترميزها بشكل صحيح إلى وجهتك النهائية. (I31b0a، b/210711399) - تم نقل هذه الميزة من الإصدار
2.5.0-alpha01من Navigation: يعتمد Safe Args الآن على الإصدار 7.0.4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. وهذا يعني أنّ Navigation Safe Args لن يكون متوافقًا مع إصدارات استوديو Android الأقدم من 7.0، ولكنّه سيكون متوافقًا مع الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث. (I41c88، b/213086135، b/207670704)
الإصدار 2.4.0
الإصدار 2.4.0
26 يناير 2022
تم طرح androidx.navigation:navigation-*:2.4.0. يتضمّن الإصدار 2.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.3.0
- تمت إعادة كتابة جميع عناصر Navigation في Kotlin. وقد أدّى ذلك إلى تحسين إمكانية قبول القيم الفارغة في الفئات التي تستخدم الأنواع العامة (مثل الفئات الفرعية
NavType). تم نقل جميع دوال الإضافة في Kotlin التي كانت جزءًا من عناصر-ktxإلى عناصرها الرئيسية المعنية. ستستمر عملية نشر عناصر-ktx، ولكنها ستكون فارغة تمامًا. - يحتوي العنصر
navigation-fragmentالآن على تنفيذ مُعدّ مسبقًا لتصميم ذي لوحتَين من خلال الفئة الجديدةAbstractListDetailFragment. تستخدِم هذه الفئة المجزّأةSlidingPaneLayoutلإدارة لوحة قائمة (توفّرها الفئة الفرعية) ولوحة تفاصيل تستخدِمNavHostFragmentكطريقة تنفيذ، كما هو موضّح في مثال التنفيذ. - تقدّم الطريقة
currentBackStackEntryAsFlow()فيNavControllerFlowينبعث كلما تغيّرNavBackStackEntryالحالي. يمكن استخدام هذا المسار كبديل لإدارةOnDestinationChangedListenerيدويًا. - يتيح NavController الآن إمكانية استرداد قائمة بجميع مثيلات
NavBackStackEntryالمرئية كـStateFlowمن خلال السمة التجريبيةvisibleEntries. - يمكن الآن توسيع فئة
NavTypeلإنشاء أنواع NavType مخصّصة. لا تتوفّر الأنواع المخصّصة إلا عند إنشاء الرسم البياني للتنقّل آليًا، مثلاً من خلال Navigation Graph Kotlin DSL. توفّر ميزة "التنقّل" الآن واجهتَي برمجة التطبيقات
findStartDestination()وgetHierarchy()اللتين يمكن استخدامهما للمساعدة في تنفيذ NavigationUI مخصّصة. findStartDestination()هي دالة إضافية فيNavGraphستحدّد وجهة البدء الفعلية التي سيتم عرضها عند الانتقال إلى الرسم البياني، حتى إذا كانstartDestinationعبارة عنNavGraphمتداخل. getHierarchy()هي دالة فيNavDestinationيمكن استخدامها للتحقّق مما إذا كانت وجهة معيّنة تقع ضمن التسلسل الهرمي لوجهة أخرى.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }تم تعديل طرق
NavigationUIالتي كانت تستخدمBottomNavigationViewلتستخدم بدلاً من ذلك الفئة الرئيسية التي تم تقديمها في الإصدار1.4.0من Material، أيNavigationBarView. يتيح ذلك استخدام هذه الطرق معNavigationRailView.عند إنشاء عنصر
<action>من خلال XML، يمكن أن تستخدم سمات الحركة السمات التي يتم استردادها من المظهر باستخدام البنيةapp:enterAnim="?attr/transitionEnter".تنشئ Safe Args الآن طريقة
fromSavedStateHandle()لكل فئةNavArgs. (#122، b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
مسارات التنقّل ولغة Kotlin الخاصة بالنطاق
اعتمدت الإصدارات السابقة من Navigation على توفّر معرّف عدد صحيح ثابت لكل وجهة يحدّدها بشكل فريد عن الوجهات الأخرى المشابهة لها ويسمح لك navigate()بالانتقال إلى هذه الوجهة إما مباشرةً أو من خلال إجراء. على الرغم من أنّ هذه الطريقة لا تزال صالحة ومفيدة، لا سيما في الحالات التي تحدّد فيها الرسم البياني للتنقّل في تنسيق XML ويمكنك استخدام ثوابت R.id التي يتم إنشاؤها تلقائيًا أو Safe Args (التي تستخدم هذه الثوابت لإنشاء الرمز البرمجي في مدّة التصميم)، لم يستوعب نظام الأعداد الصحيحة الفريدة المعاني والتعبيرية اللازمَين لدعم الرسوم البيانية الديناميكية بالكامل التي يتم إنشاؤها آليًا في وقت التشغيل من خلال Navigation Kotlin DSL.
يقدّم هذا الإصدار خيارًا جديدًا لتحديد وجهة بشكل فريد في الرسم البياني للتنقّل من خلال المسار. المسار هو String يحدّد المسار الفريد إلى وجهة معيّنة. تم إيقاف جميع طرق Kotlin DSL التي كانت تتطلّب معرّف وجهة نهائيًا واستبدالها بواجهة برمجة تطبيقات مكافئة تتطلّب مسارًا.
يجب التعامل مع كل مسار على أنّه جزء "المسار" من Uri الذي يحدّد الوجهة، مثل home وprofile/{userId} وprofile/{userId}/friends وما إلى ذلك. وعندما تكون هوية الوجهة مرتبطة بجزء معيّن من المحتوى، يجب أن تكون هذه الوسيطات الديناميكية جزءًا من المسار، مع اتّباع القواعد نفسها المتّبعة في الروابط لصفحات معيّنة الضمنية.
تحتوي جميع واجهات برمجة التطبيقات NavController التي كانت تقبل معرّفًا فقط على حمولة زائدة تقبل مسارًا String. ويشمل ذلك navigate() وpopBackStack() وpopUpTo() وgetBackStackEntry().
وقد كان لذلك بعض الآثار على واجهة برمجة التطبيقات:
- تم إيقاف السمة
popUpToفي Kotlin نهائيًا في لغة Kotlin الخاصة بالنطاق (DSL) واستبدالها بالسمةpopUpToId. - تم إيقاف واجهة برمجة التطبيقات
getStartDestination()نهائيًا لصالحgetStartDestinationId().
على عكس التنقّل باستخدام المعرّف، يتبع التنقّل باستخدام المسار القواعد نفسها المتّبعة في الروابط لصفحات في التطبيق الضمنية، حيث يمكنك الانتقال مباشرةً إلى أي وجهة في أي رسم بياني متداخل، ما يضمن إمكانية استخدام هذه المسارات في المشاريع المتعددة الوحدات بدون إضافة رابط لصفحة في التطبيق مرئي خارجيًا إلى كل وجهة.
Navigation Compose
توفّر أداة navigation-compose إمكانية الدمج بين مكوّن التنقّل وJetpack Compose. تستخدم @Composable الدوال كوجهات في تطبيقك.
يوفّر هذا الإصدار ما يلي:
NavHostدالة مركّبة تتيح لك إنشاء رسم بياني للتنقّل من خلال لغة خاصة بالنطاق (DSL) في Kotlin، وذلك باستخدام وجهتَيcomposableوdialog، بالإضافة إلى إمكانية استخدام أدوات التنقّل الاختيارية، مثل تلك المتوفّرة في Accompanist Navigation Material.- يجب توفير إمكانية التداخل التدريجي بين الوجهات. يمكن استخدام رسوم Accompanist المتحركة للتنقّل للتحكّم في عمليات الانتقال عند الدخول والخروج باستخدام واجهات برمجة تطبيقات Compose التجريبية.
- تحديد نطاق
Lifecycleلكل وجهة قابلة للإنشاء لا تصل كل وجهة إلى الحالةRESUMEDإلا عند انتهاء أي انتقالات داخلية، وتنتقل على الفور إلى الحالةSTARTEDعند بدء أي انتقالات خارجية، ما يتيح لك تجنُّب جميع مشاكلIllegalStateExceptionواللمس المتعدد من خلال تفعيل طلبnavigateفقط عندما تكون قيمةLifecycleهيRESUMED. - تحديد نطاق
ViewModel(من خلال واجهة برمجة التطبيقاتviewModel()الخاصة بـ Lifecycle ViewModel Compose2.4.0أوhiltViewModel()الخاصة بـ Hilt Navigation Compose1.0.0على مستوى الوجهة، ما يوفّر نطاقًا يظل متاحًا عند إجراء تغييرات في الإعدادات وعندما يكون في سجلّ الرجوع (عند التخلّص من محتوى Composable بطريقة أخرى) وإشارة فيonCleared()الخاص بـ ViewModel تشير إلى التخلّص الدائم من الحالة المرتبطة بـNavBackStackEntryوتنظيفها. - تحديد نطاق حالة
rememberSaveableعلى مستوى الوجهة، ما يضمن حفظ جميع الحالات القابلة للإنشاء واستعادتها تلقائيًا عند الرجوع إلى وجهة. - إتاحة إمكانية حفظ حالة
NavControllerوحالة وجهتها واستعادتها بالكامل بعد إيقاف العملية وإعادة إنشائها - التكامل التلقائي مع زر الرجوع في النظام
إتاحة تمرير الوسيطات وإرفاق روابط لصفحات معيّنة بالوجهات وإرجاع نتيجة إلى الوجهات السابقة
يمكنك إنشاء أدوات مساعدة محدّدة في
rememberNavController()وcurrentBackStackEntryAsState()للسماح برفع الحالة وربطNavControllerبعناصر قابلة للإنشاء خارجNavHost(مثل شريط التنقّل السفلي).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
لمزيد من المعلومات، يُرجى الاطّلاع على دليل التنقّل في Compose.
حِزم خلفية متعددة
يتولّى NavController إدارة سجلّ الرجوع الخاص بالوجهات، وإضافة الوجهات إلى سجلّ الرجوع عند الانتقال navigate() إليها وإزالتها عند استدعاء popBackStack() أو تفعيل زر الرجوع في النظام. تم توسيع فئة NavOptions الحالية وعملية الدمج في عناصر <action> في ملف XML الخاص بمخطط التنقّل من أجل إتاحة حفظ الأنشطة السابقة واستعادتها.
في إطار هذا التغيير، تحفظ الآن طُرق NavigationUI في onNavDestinationSelected() وBottomNavigationView.setupWithNavController() وNavigationView.setupWithNavController() تلقائيًا حالة الوجهات التي تم إرجاعها، ما يتيح إمكانية استخدام حِزم متعددة من سجلّ الرجوع بدون إجراء أي تغييرات على الرمز البرمجي. عند استخدام Navigation مع Fragments، هذه هي الطريقة المُوصى بها للتكامل مع حِزم سابقة متعددة.
يتم عرض واجهات برمجة التطبيقات الأساسية لحفظ الحالة واستعادتها من خلال عدد من الأسطح:
في ملف XML الخاص بالتنقّل، يمكن للعنصر
<action>الآن استخدام السمات المنطقيةapp:popUpToSaveStateوapp:restoreStateلحفظ حالة أي وجهات تم إغلاقها باستخدامapp:popUpToواستعادة الحالة المرتبطة بالوجهة التي تم تمريرها كـapp:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />في
navOptionsKotlin DSL، يمكنك إضافة السمة المنطقيةrestoreStateوالسمة المنطقيةsaveStateإلىpopUpToأداة الإنشاء:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }عند إنشاء عنصر
NavOptionsيدويًا من خلالNavOptions.Builder، يمكنك استخدامsetRestoreState()والتحميل الزائد الجديد إلىsetPopUpTo()الذي يأخذ مَعلمةsaveStateإضافية.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);يمكن أن تتضمّن طلبات
popBackStack()الآلية الآن مَعلمةsaveStateإضافية.يمكنك استخدام الطريقة
clearBackStack()لمحو أي حالة تم حفظها باستخدامpopBackStack()أوpopUpToSaveState.
في جميع الحالات، سيحفظ NavController حالة كل NavBackStackEntry ويستعيدها، بما في ذلك أي مثيلات ViewModel ذات نطاق وجهة التنقّل. تم تعديل واجهات برمجة التطبيقات Navigator لتتيح لكل Navigator إمكانية حفظ حالته واستعادتها.
تغييرات السلوك
- تضيف السمة
NavDeepLinkBuilderالآنPendingIntent.FLAG_IMMUTABLEإلىPendingIntentالتي تعرضها الدالةcreatePendingIntent()، ما يضمن عمل واجهة برمجة التطبيقات هذه على النحو المتوقّع عند استهداف Android 12. - تعتمد عملية التنقّل الآن على
Lifecycle
2.3.1وتشير الآن إلىsetGraph()وpopBackStack()وnavigateUp()وnavigate()، وهي الطُرق التي تعدّلNavBackStackEntryLifecycle، على أنّها@MainThread، ما يتيح توافق Navigation مع عملية فرض التنفيذ على سلسلة التعليمات الرئيسية التي تم تقديمها في Lifecycle2.3.0. - تتحقّق الروابط لصفحات في التطبيق الآن من توفّر جميع الوسيطات المطلوبة (التي ليس لها قيم تلقائية) في
Uri. - تتعامل الوسيطات التي تم تحليلها في
NavDeepLinkالآن مع علامات الجنيه بالطريقة نفسها التي تتعامل بها مع علامات الاستفهام كفاصل بين أجزاء المسار، ما يمنع الوسيطة من الامتداد على علامة الجنيه. - عند إنشاء الإجراءات، يضع رمز Kotlin البرمجي الذي تم إنشاؤه من Safe Args الآن الوسيطات التي لا تتضمّن قيمًا تلقائية قبل تلك التي تتضمّن قيمًا تلقائية كمعلَمات.
- عند إنشاء وسيطات، تضع Safe Args الآن المَعلمات التي ليس لها قيم تلقائية قبل تلك التي لها قيم تلقائية.
- يعتمد Safe-Args الآن على الإصدار 4.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. يعني ذلك أنّه من المفترض ألا يظهر لك التحذير بشأن استخدام
applicationIdTextResourceبعد الآن.
المشاكل المعروفة
- تم إصلاح الخطأ في Navigation
2.5.0-alpha01: سيؤدي الوصول إلىViewModelتم إنشاؤه عبرby navGraphViewModels()منonCreate()في Fragment إلى حدوث خطأIllegalStateException. (b/213504272) - تم إصلاح الخطأ في Navigation
2.5.0-alpha01: لا يتوافق الإصدار 2.4.0 من Safe Args مع الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث. (b/213086135) - لا يؤدي الربط بصفحات في التطبيق باستخدام عدة رسومات بيانية للتنقّل متداخلة إلى إنشاء سجلّ الرجوع الكامل بشكل صحيح. (b/214383060)
الإصدار 2.4.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-rc01. يتضمّن الإصدار 2.4.0-rc01 هذه التعديلات.
تغييرات السلوك
- تتعامل الآن الوسيطات التي تم تحليلها في
NavDeepLinkمع علامات الجنيه بالطريقة نفسها التي تتعامل بها مع علامات الاستفهام كفاصل بين الوسيطات. (I21309، b/180042703)
إصلاح الأخطاء
- لن تتجاهل الروابط لصفحات في التطبيق بعد الآن الوسيطات التي تتضمّن قيمًا مماثلة لاسم العنصر النائب. (If8017، b/207389470)
- لن يتعطّل
NavControllerبعد الآن عند إظهار وجهة متداخلة باستخدام عمليات الانتقال بعد استعادةNavController. (I0f7c9، b/205021623) - ستعرض رسالة الخطأ عند استخدام
startDestinationغير صالح الآن مسار وجهة البدء تلقائيًا إذا كان متاحًا. (I86b9d، b/208041894)
إصلاح الأخطاء في Navigation Compose
- تم إصلاح عُطل محتمل ناتج عن التبديل السريع بين وجهة البدء ووجهة أخرى باستخدام عناصر قائمة شريط التنقّل السفلي. (Ic8976، b/208887901)
- تتم الآن استعادة وجهة مربّع الحوار بشكل صحيح في أعلى الشاشة بعد إجراء تغييرات في الإعدادات أو إيقاف العملية. (I4c0dc، b/207386169)
- تم إصلاح مشكلة كانت تؤدي إلى تعذُّر استرداد
ViewModelمنNavBackStackEntryفي مربّع حوار عند إغلاق مربّع الحوار. (I6b96d، b/206465487) - تم إصلاح مشكلة عند استخدام وجهات
activityمعNavHostفي Navigation Compose، ما كان يؤدي إلى إعادة إنشاء لا نهائية. (I8f64c) - تم إصلاح تسريب في Navigation Compose حيث كان يحتفظ بمرجع للنشاط القديم بعد تغيير الإعدادات أو إيقاف العملية. (I4efcb، b/204905432)
إصلاح الأخطاء في Safe Args
- لم يعُد تطبيق
SafeArgsيتعطّل عند محاولة استعادة مصفوفات قابلة للتسلسل مخصّصة بعد إيقاف العملية. (I618e8، b/207315994) - تم إصلاح خطأ في الوسيطات الآمنة كان لا يسمح لمصفوفات القيم المنطقية بأن تتضمّن القيمة
null. (I8c396، b/174787525)
الإصدار 2.4.0-beta02
3 نوفمبر 2021
تم طرح androidx.navigation:navigation-*:2.4.0-beta02. يتضمّن الإصدار 2.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تؤدي معالجة الروابط لصفحات في التطبيق سواء كانت صريحة أو ضمنية إلى إضافة العلامة
saveStateتلقائيًا عند الانتقال إلى رسم بياني آخر، ما يضمن عمل الرمز البرمجي، مثلNavigationUI.setupWithNavController، والرمز البرمجي الذي يستخدم حِزم احتياطية متعددة على النحو المتوقّع. (Ic8807)
التغييرات في السلوك
- يتم الآن تجميع أنماط الروابط لصفحات معيّنة بشكل غير مباشر في NavDeepLink بدلاً من تجميعها أثناء التضخّم. من المفترض أن يؤدي ذلك إلى تحسين وقت تحميل الرسومات البيانية للتنقّل التي تتضمّن روابط لصفحات في التطبيق. (b8d257، b/184149935)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى نقل NavBackStackEntries إلى
Lifecycle.State.CREATEDبعد الانتقال إلىLifecycle.State.STARTEDعند إضافةNavHostمباشرةً إلىsetContent()في النشاط. (Ia5ac1، b/203536683) - تم إصلاح مشكلة تداخل في التنفيذ حيث إنّ إزالة وجهة
DialogFragmentمن الأنشطة السابقة قبل عرض مربّع الحوار فعليًا لن يؤدي إلى إغلاقه، ما يؤدي إلى حدوث عُطل عند إغلاق مربّع الحوار الخاطئ يدويًا من قِبل المستخدم. (I687e5) - تم إصلاح مشكلة كانت تتسبب في أن تعرض الدالة
onNavDestinationSelectedالبرمجية API علىNavigationUIالرمزtrueحتى إذا لم يتمnavigate()إلى رسم بياني التنقّل هذا. تستخدِم هذه السمة الآن المنطق نفسه الذي تستخدمهsetupWithNavControllerداخليًا لاختيارMenuItemالمرتبط بالوجهة الحالية فقط باستخدامhierarchyالخاص بالوجهة. (I2b053)
الإصدار 2.4.0-beta01
27 أكتوبر 2021
تم طرح androidx.navigation:navigation-*:2.4.0-beta01. يتضمّن الإصدار 2.4.0-beta01 هذه التعديلات.
الميزات الجديدة
- يمكنك الآن استخدام
by navGraphViewModelمع مسار كبديل لاستخدام معرّف من أجل توفير دعم أفضل لاستخدام Navigation Kotlin DSL مع "التقسيمات". (I901e3، b/201446416)
تغييرات واجهة برمجة التطبيقات
- أصبحت واجهة برمجة التطبيقات
visibleEntriesتجريبية الآن. (I93f6f)
إصلاح الأخطاء
- لن يتم إيقاف ViewModels عند مقاطعة عمليات الانتقال من خلال التنقّل ذهابًا وإيابًا بين الشاشات نفسها (Id52d8، b/200817333)
- لم تعُد وسيطات
NavDeepLinkالقابلة للقيم الفارغة تتطلّب قيمة تلقائية عند إضافة روابط لصفحات في التطبيق إلىNavDestination. (I5aad4، b/201320030) - لم يعُد يتم اعتبار NavBackStackEntries متساوية إذا كانت لها دورات حياة مختلفة. وهذا يعني أنّ NavHost ستعيد إنشاء جميع الوجهات بشكل صحيح عند التنقّل باستخدام singleTop وعند إعادة اختيار عناصر القائمة السفلية. (I1b351، b/196997433)
- تم إصلاح مشكلة في
AbstractListDetailFragmentتسبّبت في معالجة أو تجاهل سماتlayout_widthوlayout_weightفي لوحة القائمة التي تعرضهاonCreateListPaneView()بشكل غير صحيح. (f5fbf3) - تتزامن الحالة المرئية لوجهات مربّعات الحوار الآن بشكل صحيح مع حالة
DialogFragmentNavigator. وهذا يعني أنّ طلبdismiss()API غير المتزامن يدويًا لعرضDialogFragmentيؤدي الآن إلى محو جميع وجهات مربّعات الحوار التي تظهر فوق مربّع الحوار الذي تم إغلاقه. لا يؤثر ذلك في الحالات التي تستخدم فيهاpopUpToأوpopBackStack()لإغلاق مربع الحوار. (I77ba2) - يعرض
AbstractAppBarOnDestinationChangedListenerالآن رسائل خطأ أوضح بشأنonDestinationChanged(). (Ie742d)
الإصدار 2.4.0-alpha10
29 سبتمبر 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha10. يتضمّن الإصدار 2.4.0-alpha10 هذه التعديلات.
الميزات الجديدة
- يتيح NavController الآن إمكانية استرداد قائمة بجميع مثيلات
NavBackStackEntryالظاهرة من خلالvisibleEntriesStateFlow (Ia964e). - تقبل السمة
rememberNavController()الآن مجموعة اختيارية من مثيلاتNavigatorالتي ستتم إضافتها إلىNavControllerالمعروضة من أجل توفير دعم أفضل لـ Navigators الاختيارية، مثل تلك الواردة من Accompanist Navigation Material. (I4619e)
إصلاح الأخطاء
- لن يتعطّل Dynamic Navigation بعد الآن عند إعادة إنشاء النشاط. (Ifa6a3، b/197942869)
- تم إصلاح مشكلة في زر الرجوع في النظام تحدث فقط بعد الرجوع إلى وجهة دالة مركّبة تحتوي على
NavHost. (3ed148، b/195668143) - تنشئ SafeArgs الآن وسيطات
fromBundle()وfromSavedStateHandle()بترتيب المَعلمات الصحيح. (I824a8، b/200059831)
الإصدار 2.4.0-alpha09
15 سبتمبر 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha09. يتضمّن الإصدار 2.4.0-alpha09 هذه التعديلات.
الميزات الجديدة
- يمكنك الآن استخدام طريقة
clearBackStack()لمحو أي حالة تم حفظها باستخدامpopBackStack()أوpopUpToSaveState. (I80a0f) - يمكنك الآن تمرير قائمة من الوسيطات و/أو الروابط لصفحات معيّنة إلى أداة إنشاء الرسم البياني للتنقّل المتداخل، وستتم إضافتها تلقائيًا إلى الرسم البياني الناتج. (I8a470، b/182545357)
تغييرات واجهة برمجة التطبيقات
- أصبحت دالة
navArgumentKotlin DSL الآن جزءًا منnavigation-commonبدلاً منnavigation-compose. سيتطلّب ذلك تعديل عمليات الاستيراد لمواصلة استخدام هذه الدالة. (I1d095)
التغييرات في السلوك
- عند إنشاء وسيطات، تضع Safe Args الآن المَعلمات التي ليس لها قيم تلقائية قبل تلك التي لها قيم تلقائية. (I89709، b/198493585)
إصلاح الأخطاء
- عند استخدام Navigation Compose، لن يتم تجميع NavGraphs إلا
DESTROYEDبعد أن يتم تجميع جميع العناصر التابعة لهاDESTROYED. (I86552، b/198741720) - لم تعُد وسيطات
NavDeepLinkالقابلة للقيم الخالية تتطلّب قيمة تلقائية. (Ia14ef، b/198689811) - سيؤدي استدعاء
setGraph()باستخدام رسم بياني جديد إلى محو أي أنشطة سابقة محفوظة، بالإضافة إلى سلوكه السابق المتمثل في إزالة الأنشطة السابقة. (I97f96) - تم إصلاح مشكلة عدم تلقّي مثيلات
OnDestinationChangedListenerوcurrentBackStackEntryFlowإشعارات عند استخدامlaunchSingleTop. (Iaaebc)
تحديثات الاعتماديات
- تعتمد Navigation Compose الآن على Activity Compose 1.3.1. (I05829)
- تعتمد Navigation Compose الآن على
Lifecycle ViewModel Compose
2.4.0-beta01. (Ib86a3)
الإصدار 2.4.0-alpha08
1 سبتمبر 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha08. يتضمّن الإصدار 2.4.0-alpha08 هذه التعديلات.
الميزات الجديدة
- يمكن الآن توسيع فئة
NavTypeلإنشاء أنواع NavType مخصّصة. لا تتوفّر الأنواع المخصّصة إلا عند إنشاء الرسم البياني للتنقّل آليًا، مثلاً من خلال Navigation Graph Kotlin DSL. (I78440، b/196871885)
التغييرات في السلوك
- عند إنشاء الإجراءات، يضع رمز Kotlin البرمجي الذي تم إنشاؤه من Safe Args الآن الوسيطات التي لا تتضمّن قيمًا تلقائية قبل تلك التي تتضمّن قيمًا تلقائية كمعلَمات. (Idb697، b/188855904)
- تتحقّق الروابط لصفحات في التطبيق الآن من توفّر جميع الوسيطات المطلوبة (التي ليس لها قيم تلقائية) في
Uri. (#204، b/185527157)
إصلاح الأخطاء
- لن يؤدي استخدام
getBackStackEntryوpreviousBackStackEntryداخل composable()، بالإضافة إلىremember()، إلى حدوث استثناء لعدم توفّر وجهة في سجلّ الرجوع. (I75138، b/194313238) - تعيد مكتبة Navigation Compose الآن إنشاء التركيب بشكل صحيح عند تغيير وسيطات الحزمة السابقة واستخدام
launchSingleTop=true. (Iebd69، b/186392337) - لن يظهر
ArrayIndexOutOfBoundsExceptionعند الاتصال بـsetGraphباستخدام رسم بياني يتضمّن 13 أو 29 وجهة. (I1a9f1، b/195171984) - من المفترض ألا يتسبّب مولّد Java في SafeArgs في ظهور تحذيرات Lint عند إنشاء فئات Args. (I1a666، b/185843837)
المساهمة الخارجية
- نشكر ospixd على التأكّد من أنّ الروابط لصفحات في التطبيق تتحقّق من توفّر جميع الوسيطات المطلوبة (التي ليس لها قيم تلقائية) في
Uri. (#204، b/185527157)
الإصدار 2.4.0-alpha07
18 أغسطس 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha07. يتضمّن الإصدار 2.4.0-alpha07 هذه التعديلات.
إصلاح الأخطاء
- تحفظ مكتبة Navigation Compose الآن الحالة بشكل صحيح بعد إجراء تغييرات في الإعدادات وعند تغيير الرسومات البيانية أثناء استخدام ميزة "الأنشطة السابقة المتعدّدة". (If5a3d، b/195141957)
- لن يؤدي إعادة تحديد علامة التبويب نفسها عند استخدام Navigation Compose مع حِزم سابقة متعددة إلى ظهور شاشة فارغة. (I860dc، b/194925622)
- تتتبّع
NavHostالآن التغييرات فيLifecycle.Stateالخاصة بـNavBackStackEntry، ما يعني أنّ استخدامNavHostفي جزء سيؤدي الآن إلى إعادة التركيب بشكل صحيح عند تغيُّر مراحل النشاط بدلاً من عرض شاشة فارغة. (I4eb85، b/195864489) - تم إصلاح مشكلة عدم تعديل حالة
NavControllerبشكل صحيح بعد إعادة إنشاء نشاطك (أي بعد تغيير الإعدادات) عند تجاهلDialogFragment. (Icd72b) - تم إصلاح مشكلة عدم تعديل معالجة زر الرجوع في نظام NavController عند عرض وجهة مربع حوار، ما قد يؤدي إلى اعتراض NavController لزر الرجوع على الرغم من عدم توفّر أي أنشطة سابقة لعرضها. (If3b34)
- تنشئ Safe-args الآن تلقائيًا
toSavedStateHandleطريقة للوسيطات يمكن استخدامها لاختبار الرمزViewModel. (If1e2d، b/193353880)
الإصدار 2.4.0-alpha06
4 أغسطس 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha06. يتضمّن الإصدار 2.4.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الطريقتَين
requireSlidingPaneLayout()وrequireDetailPaneNavHostFragment()فيAbstractListDetailFragmentإلىgetSlidingPaneLayout()وgetDetailPaneNavHostFragment()على التوالي. (I34a08)
التغييرات في السلوك
- عند التنقّل باستخدام صور متحركة (مثل
Crossfade)، لن يصلLifecycleالخاص بالوجهة الجديدة الآن إلا إلىRESUMEDعند اكتمال الصورة المتحركة. (If0543، b/172112072، b/194301889) - تضبط
NavHostNavigation Compose الآن الرسم البياني كجزء من التركيب الأول. (Ieb7be)
إصلاح الأخطاء
- لم يعُد يؤدي إغلاق آخر وجهة في الرسم البياني للتنقّل إلى ظهور الخطأ
ClassCastException. (If0543، b/172112072، b/194301889) - تم إصلاح
NullPointerExceptionكان يحدث عند إضافة رابط لصفحة في التطبيق بدونUriوالانتقال عبر مسار أو رابط لصفحة في التطبيق. (938a0c، b/193805425) - تم إصلاح مشكلة في Navigation Compose حيث لا يصل الرابط لصفحة معيّنة
NavBackStackEntryإلى الحالةRESUMED. (I192c5) - تم إصلاح مشكلة عدم تعديل معالجة زر الرجوع في النظام في NavController عند عرض وجهة مربّع حوار، ما قد يؤدي إلى اعتراض NavController على زر الرجوع على الرغم من عدم توفّر أي أنشطة سابقة لعرضها. (aosp/1782668)
الإصدار 2.4.0-alpha05
21 تموز (يوليو) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha05. يتضمّن الإصدار 2.4.0-alpha05 هذه التعديلات.
التغييرات في السلوك
- يستخدم
NavHostفي Navigation Compose الآن تأثيرات Crossfade دائمًا عند التنقّل بين الوجهات. (I07049، b/172112072) - يمكنك الآن إجراء تغييرات على الرسم البياني لـ NavHost. سيتم اعتبار الرسوم البيانية التي تتضمّن startDestination ووجهات متطابقة في الرسم البياني متساوية، ولن يتم محو حزمة الأنشطة السابقة
NavController. (I0b8db، b/175392262)
إصلاح الأخطاء
- تم إصلاح الخطأ
NoSuchElementExceptionالذي كان يحدث عند استدعاءpopBackStack()من داخلLifecycleObserverمرفق بـNavBackStackEntryبسبب التعديلات المتكررة على حالة NavController. (I64621) - تسمح
AbstractListDetailFragmentالآنSlidingPaneLayoutبإزالة هذه السمة تمامًا من حزمة APK عند عدم استخدامAbstractListDetailFragment. (I611ad) - تتجاوز السمتان
NavGraphوNavDestinationالآن طريقة equals، لذا سيتم اعتبار كائنَين لهما القيم نفسها متساويَين. (I166eb، b/175392262)
الإصدار 2.4.0-alpha04
1 تموز (يوليو) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha04. يتضمّن الإصدار 2.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- يحتوي العنصر
navigation-fragmentالآن على تنفيذ مُعدّ مسبقًا لتصميم ذي لوحتَين من خلال الفئة الجديدةAbstractListDetailFragment. تستخدِم هذه الفئة المجزّأةSlidingPaneLayoutلإدارة لوحة قائمة (توفّرها الفئة الفرعية) ولوحة تفاصيل تستخدِمNavHostFragmentكطريقة تنفيذ، كما هو موضّح في مثال التنفيذ. (Iac4be، b/191276636) - يتيح العنصر
NavHostمن العنصرnavigation-composeالآن استخدام وجهاتdialogبالإضافة إلى وجهاتcomposable. سيتم عرض كل وجهة من وجهات مربّع الحوار داخلDialogComposable، وستظهر فوق وجهةcomposableالحالية. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية الدالة
addفيNavigatorStateلتصبحpush. يجب تغيير جميع طلباتadd()الحالية إلى push(). (Ie89fc، b/172112072) - يمكن الآن لحالات
Navigatorالمخصّصة استخدام واجهتَي برمجة التطبيقاتpushWithTransactionوpopWithTransitionعلىNavigatorStateلإرسال وجهة أو إزالتها بشكل غير متزامن. يُرجى العِلم أنّ واجهات برمجة التطبيقات هذه لم يتم استخدامها بعد من قِبل أي من أدوات التنقّل المضمّنة. (Ic4d7c، b/172112072)
التغييرات في السلوك
- تضيف السمة
NavDeepLinkBuilderالآنPendingIntent.FLAG_IMMUTABLEإلىPendingIntentالتي تعرضها الدالةcreatePendingIntent()، ما يضمن عمل واجهة برمجة التطبيقات هذه على النحو المتوقّع عند استهداف Android 12. (If8c52)
إصلاح الأخطاء
- تم إصلاح مشكلة في
<include-dynamic>حيث لم يتم تمرير الوسيطات التي تم تمريرها إلى الرسم البياني بشكل صحيح إلى الرسم البياني الذي تم تضمينه بشكل ديناميكي. (I3e115) - تم إصلاح
NullPointerExceptionعند الانتقال إلى وجهة باستخدام وسيطةstring[]بقيمة تلقائية@null. (I1fbe8) - أضِف قواعد ProGuard إلى
@Navigator.Name، مع إصلاح المشاكل التي تحدث عند استخدام الوضع الكامل من الإصدار 3.1 من R8. (I2add9، b/191654433) - لن يتعذّر إنشاء تطبيقك باستخدام SafeArgs عند استخدام الإصدارات الأقدم من
Kotlinقبل1.5.0. (Icd1ff، b/190739257)
الإصدار 2.4.0-alpha03
16 حزيران (يونيو) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha03. يتضمّن الإصدار 2.4.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتطلّب إجراء استدعاءَين للدالة
navigate()من أجل الانتقال إلى رسم بياني ديناميكي مضمّن. (I7785c، b/188859835) - تم إصلاح مشكلة تراجع تم رصدها في
Navigation
2.4.0-alpha01حيثsetupActionBarWithNavController()لا يزيل رمز "أعلى" بشكل صحيح عند الانتقال إلى وجهة من المستوى الأعلى. (I5d443، b/189868637) - تم إصلاح
IllegalStateExceptionعند استدعاءpopBackStack()بعد إزالة الرسم البياني الأساسي من NavController. (I2a330، b/190265699) - يتم الآن تطبيق قواعد ProGuard الخاصة بـ
by navArgs()بشكل صحيح عند استخدامnavigation-commonأو أي عناصر تعتمد عليها. (I68800، b/190082521) - يمكن الآن أن يتلقّى
OnDestinationChangedListenerالذي يستدعيnavigate()عند تلقّي رد الاتصال للمرة الأولى رد اتصال ثانيًا يتضمّن الوجهة التي تم الانتقال إليها. (Ie5f9e، b/190228815) - لم يعُد Safe Args يتسبّب في حدوث أعطال عند استخدامه مع وحدات الميزات الديناميكية والإصدار 7.0 من "مكوّن Android الإضافي" أو الإصدارات الأحدث. (I69518، b/189966576)
مشكلة معروفة
- ستتعذّر عملية Safe Args مع ظهور الخطأ
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’عند استخدام Gradle6.7.0بسبب الاعتماد على إصدار قديم من Kotlin. يمكن حلّ هذه المشكلة من خلال الترقية إلى الإصدار 7.0 من Gradle. (b/190739257)
الإصدار 2.4.0-alpha02
2 حزيران (يونيو) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha02. يتضمّن الإصدار 2.4.0-alpha02 هذه التعديلات.
الميزات الجديدة
- تتوفّر المسارات الآن لوجهات Activity وFragment وDialog، بالإضافة إلى جميع أنحاء DynamicNavigation Kotlin DSL. (Ib5544 وIa617b وI22f96 وb/188914648 وb/188901565)
- أضافت
NavigationUIمؤقتًا واجهات برمجة تطبيقات تجريبية للسماح بإيقاف حفظ حالتك. على الرغم من أنّ حفظ الحالة دائمًا هو السلوك الصحيح، لا يزال هناك استخدام للمكتبات المتوقّفة نهائيًا (مثل الأجزاء المحفوظة)، والتي لا يمكن توفيرها عند حفظ الحالة، لذا يتيح ذلك للتطبيقات فرصة التحويل تدريجيًا من أي واجهات برمجة تطبيقات غير متوافقة. (Idf93c) توفّر ميزة "التنقّل" الآن واجهتَي برمجة التطبيقات
findDestination()وgetHierarchy()اللتين يمكن استخدامهما للمساعدة في تنفيذ NavigationUI مخصّصة. findDestination()هي دالة إضافية فيNavGraphستحدّد موقع وجهة ضمن الرسم البياني. getHierarchy()هي دالة فيNavDestinationيمكن استخدامها للتحقّق مما إذا كانت وجهة معيّنة تقع ضمن التدرّج الهرمي لوجهة أخرى.(I2932f، b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }تم تعديل طرق NavigationUI التي كانت تستخدم
BottomNavigationViewلتستخدم بدلاً من ذلك الفئة الرئيسية التي تم تقديمها في الإصدار1.4.0وNavigationBarViewمن Material. يتيح ذلك استخدام هذه الطرق معNavigationRailView. (Ib0b36، b/182938895)عند إنشاء عنصر
<action>من خلال XML، يمكن أن تستخدم سمات الصور المتحركة سمات تم استخراجها من المظهر باستخدام بنيةapp:enterAnim="?attr/transitionEnter". (I07bc1، b/178291654)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف أدوات إنشاء Kotlin DSL التي تستخدم رقم تعريف نهائيًا، ويجب استبدالها بأدوات إنشاء تستخدم مسارات (I85b42 وb/188816479) (I9f58f وb/188816479).
إصلاح الأخطاء
- يستخدم
DialogFragmentNavigatorالآن واجهة برمجة التطبيقاتNavigatorState.pop()لإعلامNavControllerعندما يتم إغلاق مربّع حوار من خلال الضغط على زر الرجوع في النظام أو النقر خارجه، ما يضمن أن تكون حالةNavControllerمتزامنة دائمًا مع حالة Navigator. (I2ead9) لم يعُد التنقّل يعرض
ConcurrentModificationExceptionعند استخدام معالجة قائمةOnDestinationChangedListenersمن خلال معاودة الاتصالonDestinationChanged. (Ib1707، b/188860458)لم يعُد Safe Args يتعطّل عند محاولة إنشاء سمات الاتجاه في Kotlin. (Id2416، b/188564435)
تمت الآن إضافة التعليق التوضيحي
@IdResبشكل صحيح إلى طريقة setId في NavDestination، وبالتالي لن تقبل سوى معرّفات الموارد. (I69b80)أصبحت قيمة المَعلمة int في
findNodeهيresIdبدلاً منresid. (I7711d)
تحديث الاعتمادية
- يعتمد Safe-Args الآن على الإصدار 4.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. يعني ذلك أنّه من المفترض ألا يظهر لك التحذير بشأن استخدام
applicationIdTextResourceبعد الآن. (I6d67b، b/172824579)
الإصدار 2.4.0-alpha01
18 أيار (مايو) 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha01. يتضمّن الإصدار 2.4.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تقدّم الطريقة
currentBackStackEntryAsFlow()فيNavControllerFlowينبعث كلما تغيّرNavBackStackEntryالحالي. يمكن استخدام هذا المسار كبديل لإدارةOnDestinationChangedListenerيدويًا. (I19c4a، #89، b/163947280)
حِزم خلفية متعددة
يتولّى NavController إدارة سجلّ الرجوع الخاص بالوجهات، وإضافة الوجهات إلى سجلّ الرجوع عند الانتقال navigate() إليها وإزالتها عند استدعاء popBackStack() أو تفعيل زر الرجوع في النظام. تم توسيع فئة NavOptions الحالية وعملية الدمج في إدخالات <action> في ملف XML الخاص بمخطط التنقّل لتتيح حفظ حزمة الخلفية واستعادتها. (b/80029773)
في إطار هذا التغيير، تحفظ الآن طُرق NavigationUI في onNavDestinationSelected() وBottomNavigationView.setupWithNavController() وNavigationView.setupWithNavController() تلقائيًا حالة الوجهات التي تم إرجاعها، ما يتيح إمكانية استخدام حِزم متعددة من سجلّ الرجوع بدون إجراء أي تغييرات على الرمز البرمجي. عند استخدام Navigation مع Fragments، هذه هي الطريقة المُوصى بها للتكامل مع حِزم سابقة متعددة. (Ie07ca)
يتم عرض واجهات برمجة التطبيقات الأساسية لحفظ الحالة واستعادتها من خلال عدد من الأسطح:
في ملف XML الخاص بالتنقّل، يمكن للعنصر
<action>الآن استخدام السمات المنطقيةapp:popUpToSaveStateوapp:restoreStateلحفظ حالة أي وجهات تم إغلاقها باستخدامapp:popUpToواستعادة الحالة المرتبطة بالوجهة التي تم تمريرها كـapp:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />في
navOptionsKotlin DSL، يمكنك إضافة السمة المنطقيةrestoreStateوالسمة المنطقيةsaveStateإلىpopUpToأداة الإنشاء:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }عند إنشاء عنصر
NavOptionsيدويًا من خلالNavOptions.Builder، يمكنك استخدامsetRestoreState()والتحميل الزائد الجديد إلىsetPopUpTo()الذي يأخذ مَعلمةsaveStateإضافية.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);يمكن أن تتضمّن طلبات
popBackStack()الآلية الآن مَعلمةsaveStateإضافية.
في جميع الحالات، سيحفظ NavController حالة كل NavBackStackEntry ويستعيدها، بما في ذلك أي مثيلات ViewModel ذات نطاق وجهة التنقّل. تم تعديل واجهات برمجة التطبيقات Navigator لتتيح لكل Navigator إمكانية حفظ حالته واستعادتها.
تم تعديل كل من ComposeNavigator المستخدَمة لوجهات composable في Navigation Compose وFragmentNavigator وDynamicFragmentNavigator المستخدَمة لوجهات <fragment> في Navigation with Fragments لاستخدام واجهات Navigator API الجديدة وإتاحة حفظ الحالة واستعادتها.
مسارات التنقّل
المسار هو String يحدّد الوجهة بشكل فريد. مع أنّ هذا المفهوم كان يُستخدم سابقًا في Navigation Compose فقط، أصبح الآن جزءًا من واجهات برمجة التطبيقات الأساسية الخاصة بمكوّن Navigation. يوفّر ذلك بديلاً لاستخدام معرّفات الأعداد الصحيحة عند إنشاء الرسم البياني من خلال Navigation Kotlin DSL. (b/172823546)
تحتوي جميع واجهات برمجة التطبيقات التي كانت تقبل معرّفًا فقط على حمولة زائدة تقبل مسارًا String. ويشمل ذلك navigate() وpopBackStack() وpopUpTo() وgetBackStackEntry().
وقد كان لذلك بعض الآثار على واجهة برمجة التطبيقات:
- تم إيقاف السمة
popUpToفي Kotlin نهائيًا في Kotlin DSL، وتم استبدالها بالسمةpopUpToId. (I59c73، b/172823546) - تم إيقاف واجهة برمجة التطبيقات
getStartDestination()نهائيًا، وأصبح بإمكانك استخدامgetStartDestinationId()بدلاً منها. (I0887f، b/172823546)
بالنسبة إلى المطوّرين الذين يجرون ترقية من الإصدارات السابقة من Navigation Compose إلى الإصدار 2.4.0-alpha01 من Navigation Compose، يعني ذلك أنّ عمليات الاستيراد التالية لطُرق الإضافة لم تعُد ضرورية ويجب إزالتها:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
تم استبدال الوسيطة KEY_ROUTE بالسمة route في NavDestination، ما يتيح لك استدعاء navBackStackEntry.destination.route مباشرةً.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة كتابة جميع عناصر Navigation في Kotlin. وقد أدّى ذلك إلى تحسين إمكانية قبول القيم الفارغة في الفئات التي تستخدم الأنواع العامة (مثل الفئات الفرعية
NavType). تم نقل جميع دوال الإضافة في Kotlin التي كانت جزءًا من حِزم-ktxإلى حِزمها الرئيسية. ستستمر عملية نشر-ktxالقطع الأثرية، ولكنها ستكون فارغة تمامًا. (b/184292145) - تتيح السمة
NavDeepLinkBuilderالآن إضافة وجهات متعدّدة ومختلفة إلى سجلّ الرجوع الذي تم إنشاؤه. (I3ee0d، b/147913689) - إضافة دوال المصنع لـ
DynamicNavHostFragment(Icd515، b/175222619) - يتم الآن عرض المعرّف الفريد
NavBackStackEntryكجزء من واجهة برمجة التطبيقات العامة. (Ie033a) - أصبحت حقول
nameوargumentودوال التفكيك فيNamedNavArgumentمتاحة للجميع. (#174، b/181320559) - تم تقديم إضافة
NavBackStackEntry#provideToCompositionLocalsجديدة توفّرNavBackStackEntryإلى السلاسل النصية ذات الصلة بالمحتوى. (#175، b/187229439)
Safe Args
تنشئ Safe Args الآن طريقة
fromSavedStateHandle()لكل فئةNavArgs. (#122، b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }تم تعديل Safe Args ليعتمد على KotlinPoet
1.8.0. (#172، b/183990444)
التغييرات في السلوك
- تعتمد عملية التنقّل الآن على
Lifecycle
2.3.1وتشير الآن إلىsetGraph()وpopBackStack()وnavigateUp()وnavigate()، وهي الطُرق التي تعدّلNavBackStackEntryLifecycle، على أنّها@MainThread، ما يتيح توافق Navigation مع عملية فرض التنفيذ على سلسلة التعليمات الرئيسية التي تم تقديمها في Lifecycle2.3.0. (b/171125856) - أصبحت عملية تحليل وسيطات Enum من الروابط لصفحات في التطبيق غير حساسة لحالة الأحرف، ما يسمح بربط رابط لصفحة في التطبيق مثل
http://www.example.com/redبرابط لصفحة في التطبيقwww.example.com/{color}حتى عندما تكون قيمة التعدادRED. (#152، b/135857840)
توافق Compose
- لا يتوافق
androidx.navigation:navigation-compose:2.4.0-alpha01إلا مع الإصدار1.0.0-beta07من Compose والإصدارات الأحدث.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تتسبّب في منح الأولوية لعناصر نائبة لوسيطة لاحقة على الروابط لصفحات معيّنة التي تتضمّن لاحقة مطابقة ودقيقة. (#153، b/184072811)
- تتيح حزمة
NavHostFragmentالآن استخدام أدوات Navigators مخصّصة تستخدم@Navigator.Name("dialog")نفسها المستخدَمة فيDialogFragmentNavigatorالتلقائية. (Ib1c2c، b/175979140) - تم تحسين سلوك
NavigatorProvider#addNavigatorلضمان أنّ تكرار استدعائه باستخدام المثيل نفسه لا يتسبّب في حدوث مشاكل. (#176، b/187443146)
المساهمات الخارجية
- نشكر simonschiller على توفير إمكانية إنشاء طريقة
fromSavedStateHandle()لكل فئةNavArgsباستخدام Safe Args. (#122، b/136967621) - نشكر Bradleycorn على جعل تحليل وسيطات Enum من الروابط لصفحات معيّنة غير حساس لحالة الأحرف. (#152، b/135857840)
- شكرًا osipxd على إصلاح المشكلة التي كانت تتسبب في أن يكون للأحرف النائبة للوسيطات اللاحقة الأولوية على الروابط لصفحات في التطبيق التي تتضمّن لاحقة مطابقة تمامًا. (#153، b/184072811)
- نشكر tatocaster على تعديل Safe Args ليعتمد على KotlinPoet
1.8.0. (#172، b/183990444) - نشكر jossiwolf على إتاحة الحقلَين
nameوargumentووظائف تفكيكNamedNavArgumentللجميع. (#174، b/181320559) - شكرًا jossiwolf على تقديم إضافة
NavBackStackEntry#provideToCompositionLocalsجديدة توفّرNavBackStackEntryإلى المواقع الجغرافية ذات الصلة. (#175، b/187229439) - شكرًا jossiwolf على تحسين سلوك
NavigatorProvider#addNavigatorلضمان عدم حدوث مشاكل عند استدعائه بشكل متكرر باستخدام المثيل نفسه. (#176، b/187443146)
الإصدار 1.0.0 من Navigation Compose
الإصدار 1.0.0-alpha10
7 أبريل 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha10. يتضمّن الإصدار 1.0.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يقبل
NavHostالآنModifier، ويتم تمريره إلى الحاوية القابلة للإنشاء التي تتضمّن الدوال القابلة للإنشاء الخاصة بالوجهة. (I85aca، b/175125483)
إصلاح الأخطاء
- تعمل
NavHostالآن حتى في حال عدم العثور علىOnBackPressedDispatcherOwner، كما هو الحال عند معاينةNavHost. (I7d8b4) - تعتمد Navigation Compose الآن على Navigation
2.3.5، ما يؤدي إلى حلّ مشكلة عند استخدامBackHandlerداخل وجهةNavHost. (I7e63b، b/182284739)
الإصدار 1.0.0-alpha09
10 آذار (مارس) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تعرض الدالة
LocalViewModelStoreOwner.currentالآن قيمةViewModelStoreOwnerقابلة للتصغير لتحديد ما إذا كانViewModelStoreOwnerمتاحًا في التركيب الحالي بشكل أفضل. ستظل واجهات برمجة التطبيقات التي تتطلّبViewModelStoreOwner، مثلviewModel()وNavHost، تعرض استثناءً في حال عدم ضبطViewModelStoreOwner. (Idf39a)
إصلاح الأخطاء
- تعتمد Navigation Compose الآن على Navigation 2.3.4 الذي يتضمّن إصلاحًا لمحاولة ضبط كائن ViewModelStore نفسه بعد ضبط الرسم البياني. (I65c24، b/177825470)
الإصدار 1.0.0-alpha08
24 شباط (فبراير) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha08. يتضمّن الإصدار 1.0.0-alpha08 هذه التعديلات.
الميزات الجديدة
- تعبئ
NavHostالآنLocalSavedStateRegistryOwnerCompositionLocal باستخدامNavBackStackEntryالخاص بهذه الوجهة، ما يضمن حفظ أي حالة يتم حفظها مباشرةً فيSavedStateRegistryواستعادتها إلى جانب الوجهة. (I435d7، b/179469431)
الإصدار 1.0.0-alpha07
10 شباط (فبراير) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.
تحديثات الاعتماديات
- تعتمد مكتبة Navigation Compose الآن على Lifecycle ViewModel Compose 1.0.0-alpha01 لتوفير إمكانية استخدام
viewModel()مع وجهاتcomposable. (I7a374) - تستخدم
NavHostالآنLocalOnBackPressedDispatcherOwnerالجديدة من Activity-Compose 1.3.0-alpha01 للحصول علىOnBackPressedDispatcherالتي تم ضبطها علىNavController. (I65b12)
الإصدار 1.0.0-alpha06
28 يناير 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
getBackStackEntry(route: String)إلىNavControllerتعرضNavBackStackEntryالمرتبط. (If8931)
الإصدار 1.0.0-alpha05
13 كانون الثاني (يناير) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha05. يتضمّن الإصدار 1.0.0-alpha05 هذه التعديلات.
تم تعديلها لتعتمد على الإصدار 1.0.0-alpha10 من Compose.
الإصدار 1.0.0-alpha04
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.
- تم تعديلها لتتوافق مع Compose
1.0.0-alpha09.
الإصدار 1.0.0-alpha03
2 ديسمبر 2020
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل
popBackStack()وnavigateUp()بعد تغيير الإعدادات أو إيقاف العملية وإعادة إنشائها. (Icea47، b/173281473) - أصبح بإمكانك الآن الانتقال إلى رسم بياني متداخل ضمن NavHost بشكل صحيح. (I0948d، b/173647694)
الإصدار 1.0.0-alpha02
11 تشرين الثاني (نوفمبر)، 2020
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتيح أداة إنشاء التنقّل الآن استخدام NavOptions لتنفيذ العمليتَين popUpTo وlaunchSingleTop (If96c3، b/171468994)
- تمت إضافة دالة تنقّل تأخذ مسارًا بدلاً من رقم تعريف، ما يتيح لك إنشاء رسومات بيانية متداخلة في لغة DSL الخاصة بمكتبة Navigation Compose. (I1661d)
- تظهر startDestination الآن قبل المسار في قائمة المَعلمات الخاصة بـ NavHost (Ie620e)
- يمكنك الآن إنشاء رسم بياني باستخدام المسار كوجهة بداية خارج عنصر NavHost قابل للإنشاء. (Iceb75)
الإصدار 1.0.0-alpha01
28 أكتوبر 2020
تم طرح android.navigation:navigation-compose:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
الميزات الجديدة
توفّر أداة navigation-compose إمكانية الدمج بين مكوّن التنقّل وJetpack Compose. تستخدم @Composable الدوال كوجهات في تطبيقك.
يوفّر هذا الإصدار الأوّلي ما يلي:
NavHostدالة مركّبة تتيح لك إنشاء الرسم البياني للتنقّل من خلال لغة خاصة بالنطاق (DSL) في Kotlin.- نطاق مراحل النشاط و
ViewModelوالحالة المحفوظة على مستوى الوجهة - التكامل التلقائي مع زر الرجوع في النظام
- إتاحة تمرير الوسيطات وإرفاق روابط لصفحات معيّنة بالوجهات وإرجاع نتيجة إلى الوجهات السابقة
- يمكنك إنشاء أدوات مساعدة محدّدة في
rememberNavController()وcurrentBackStackEntryAsState()للسماح برفع الحالة وربطNavControllerبعناصر قابلة للإنشاء خارجNavHost(مثل شريط التنقّل السفلي).
لمزيد من المعلومات، يُرجى الاطّلاع على دليل التنقّل في Compose.
الإصدار 2.3.5
الإصدار 2.3.5
7 أبريل 2021
تم طرح androidx.navigation:navigation-*:2.3.5. يتضمّن الإصدار 2.3.5 هذه التعديلات.
الميزات الجديدة
- عند التنقّل باستخدام
NavDeepLinkRequestأوUri، يمكنك الآن الوصول إلىUriوالإجراء ونوع MIME في الوجهة الناتجة من خلال الحصول على الغرض من الوسيطات عبرKEY_DEEP_LINK_INTENT، ما يعكس الوظيفة المتاحة حاليًا للربط بصفحات في التطبيق من مصادر خارجية. (I975c3، b/181521877)
إصلاح الأخطاء
- تمت إضافة
OnBackPressedCallbacksإلى أداة إرسال معNavBackStackEntryباعتبارها LifecycleOwner، ما يؤدي الآن إلى اعتراض زر الرجوع بشكل صحيح بعد أن تصبح "مراحل نشاط التطبيق"STOPPED، ثمSTARTED(Iff94f، b/182284739) - أصبحت عملية تحليل نطاق الرابط لصفحة معيّنة في التطبيق غير حساسة لحالة الأحرف، ما يضمن تطابق
www.example.comمع كل منwww.example.comوwww.Example.com. يُرجى العلم أنّ أسماء مَعلمات طلب البحث لا تزال حسّاسة لحالة الأحرف. (#144، b/153829033) - تم إصلاح
NullPointerExceptionكان يمكن أن يحدث عندما يكون للوجهة وسيطات تلقائية متعددة غير قابلة للتصغير وتنتقل إلى هذه الوجهة مع تجاهل مجموعة فرعية فقط من هذه الوسيطات. (aosp/1644827)
تحديثات الاعتماديات
- يعتمد المكوّن الإضافي لنظام Gradle الخاص بـ Safe Args في Navigation الآن على الإصدار 1.4.31 من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin. (aosp/1661058 وb/181156413)
المساهمة الخارجية
- نشكر
bentrengroveعلى طلب السحب الذي يجعل تحليل نطاق الربط العميق غير حساس لحالة الأحرف. (#144، b/153829033)
الإصدار 2.3.4
الإصدار 2.3.4
10 آذار (مارس) 2021
تم طرح androidx.navigation:navigation-*:2.3.4. يتضمّن الإصدار 2.3.4 هذه التعديلات.
الميزات الجديدة
- يمكن الآن تحليل وسيطات
ReferenceTypeبشكلٍ صحيح عند إرسالها كجزء من عنوان URI للرابط لصفحة معيّنة. يمكن استخدام قيمة عدد صحيح أولية بالإضافة إلى قيم سداسية عشرية مسبوقة بـ0x. (#127، b/179166693) - تتيح الآن السمة
android:defaultValueلوسيط يتضمّنapp:argType="float"استخدام قيم تلقائية صحيحة، ما يسمح لك باستخدامandroid:defaultValue="0"بدلاً من اشتراط استخدام0.0. (#117، b/173766247)
إصلاح الأخطاء
- إصلاح مشكلة تعذُّر إحراز تقدّم في عملية التثبيت عند استخدام ميزة "التنقّل" لدعم الميزات الديناميكية (Ib27a7، b/169636207)
- سيؤدي الاتصال بـ
setViewModelStoreأوsetLifecycleOwnerباستخدام العنصر نفسه الذي تم ضبطه من قبل إلى عدم تنفيذ أي عملية (Idf491، b/177825470). - تضيف Safe-Args الآن تعليقات توضيحية لإيقاف التحذيرات في الطرق المناسبة عند استخدام Java. (I8fbc5، b/179463137)
المساهمات الخارجية
- نشكرك
JvmNameعلى طلب السحب لضمان إمكانية تحليل وسيطاتReferenceTypeبشكل صحيح عند إرسالها كجزء من معرّف الموارد المنتظم (URI) الذي يربط بصفحة معيّنة. (#127، b/179166693) - شكرًا
tatocasterعلى طلب السحب للسماح باستخدامdefaultValueكمعلَمة تتضمّنapp:argType=”float”، أصبح الآن بإمكانك استخدام قيم تلقائية صحيحة. (#117، b/173766247)
الإصدار 2.3.3
الإصدار 2.3.3
27 يناير 2021
تم طرح androidx.navigation:navigation-*:2.3.3. يتضمّن الإصدار 2.3.3 هذه التعديلات.
إصلاح الأخطاء
- لم يعُد يحدث تعطُّل عند إزالة
NavBackStackEntryقبل نقلLifecycleإلىCREATED. (Ie3ba3) - تم إصلاح خطأ الانحدار الناتج عن b/171364502 حيث كان الانتقال إلى نشاط يتضمّن قيمة مورد رسوم متحركة
0يؤدي إلى حدوثResourceNotFoundException. (I7aedb، b/176819931)
الإصدار 2.3.2
الإصدار 2.3.2
2 ديسمبر 2020
تم طرح androidx.navigation:navigation-*:2.3.2. يتضمّن الإصدار 2.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في
NavigationUIحيث كان استخدام وجهة<activity>معonNavDestinationSelectedيؤدي إلى تعذُّر الانتقال إلى "النشاط". (I22e34، b/171364502) - تم إصلاح مشكلة كانت تؤدي إلى الانتقال إلى الوجهة المثبَّتة حديثًا عدة مرات عند استخدام
navigation-dynamic-features-fragment. (aosp/1486056 وb/169636207) - تم إصلاح المشكلة المتمثلة في عدم إرسال الوسيطات التلقائية إلى مثيلات
OnDestinationChangedListenerعند استخدامlaunchSingleTop. (I2c5cb) - تم إصلاح مشكلة عدم إنشاء مثيل جديد للرسم البياني للتنقّل المتداخل في الأنشطة السابقة عند الانتقال إليه. (Ifc831)
- تم إصلاح مشكلة عدم إيقاف الرسم البياني للتنقّل وإزالته فورًا من سجلّ الرجوع عند استخدام
navigate()معpopUpToأزالت آخر وجهة في الرسم البياني للتنقّل. (I910a3) - تستخدم ميزة Navigation SafeArgs الآن الإصدار 1.7.2 من KotlinPoet الذي يتيح استخدام وضع واجهة برمجة التطبيقات الصريح في Kotlin. (I918b5)
- تتحقّق أداة
NavHostFragment.findNavController(Fragment)الآن أيضًا من هيكلية طرق العرض الرئيسية في DialogFragment بالإضافة إلى عمليات التحقّق الحالية من تسلسل Fragment الهرمي وهيكلية طرق العرض لـ Fragment. يتيح لك ذلك اختبار أجزاء مربّعات الحوار التي تستخدم Navigation معFragmentScenarioوNavigation.setViewNavController(). (I69e0d)
الإصدار 2.3.1
الإصدار 2.3.1
14 أكتوبر 2020
تم طرح androidx.navigation:navigation-*:2.3.1. يتضمّن الإصدار 2.3.1 هذه التعديلات.
الميزات الجديدة
- تمت إضافة موارد Animator التلقائية إلى Navigation UI، ويُنصح باستخدامها بدلاً من موارد الحركة التلقائية. (b/167430145)
- تتجاوز NavOptions الآن طريقتَي hashcode وequals (b/161586466)
- تتضمّن ميزة "التنقّل" الآن الوجهة الحالية في IllegalArgumentException "لم يتم العثور على وجهة تحمل المعرّف"، ما من شأنه أن يحسّن تجربة تصحيح الأخطاء للمطوّرين. (b/168311416)
إصلاح الأخطاء
- لن تعمل Safe Args على تضمين سطر الإرجاع، حتى إذا كان اسم فئة الوسيطة التي تم إنشاؤها أطول من 100 حرف. (b/168584987)
التغييرات في الاعتمادية
- يعتمد
navigation-uiالآن على DrawerLayout 1.1.1، ما يضمن إمكانيةNavigationUIفتح الدرج حتى عند استخدامLOCK_MODE_LOCKED_CLOSEDأوLOCK_MODE_LOCKED_OPEN. (b/162253907) - تعتمد Safe Args الآن على الإصدار 1.6.0 من KotlinPoet (aosp/1435911)
- يعتمد Safe Args الآن على الإصدار 4.0.1 من "مكوّن Android الإضافي لبرنامج Gradle" (aosp/1442337).
الإصدار 2.3.0
الإصدار 2.3.0
24 يونيو 2020
تم طرح androidx.navigation:navigation-*:2.3.0. يتضمّن الإصدار 2.3.0 هذه التعديلات.
التغييرات الرئيسية منذ الإصدار 2.2.0
- دمج وحدة الميزات: يتيح لك العنصران
navigation-dynamic-features-runtimeوnavigation-dynamic-features-fragmentالانتقال إلى وجهات محدّدة في وحدات الميزات، مع التعامل تلقائيًا مع عملية تثبيت وحدات الميزات حسب الحاجة. لمزيد من المعلومات، اطّلِع على التنقّل باستخدام وحدات الميزات. - اختبار التنقّل: يوفّر العنصر
navigation-testingأداةTestNavHostControllerتتيح لك ضبط الوجهة الحالية والتحقّق من سجلّ الرجوع بعد عمليات التنقّل. لمزيد من المعلومات، يُرجى الاطّلاع على اختبار التنقّل. - عرض نتيجة: يتيح لك
NavBackStackEntryالمرتبط بكل وجهة في سجلّ التنقّل الخلفي الوصول الآن إلىSavedStateHandleالمناسب لتخزين كميات صغيرة من الحالة المحفوظة التي يجب ربطها بإدخال معيّن في سجلّ التنقّل الخلفي. يمكنك الاطّلاع على الرجوع إلى نتيجة الوجهة السابقة لمزيد من المعلومات. - إتاحة
NavigationUIلـOpenable: تم استبدال جميع استخداماتDrawerLayoutفيNavigationUIبواجهةOpenableالأكثر عمومية التي تمت إضافتها في CustomView1.1.0وتم تنفيذها بواسطةDrawerLayoutفي DrawerLayout1.1.0. - إتاحة استخدام الإجراء ونوع MIME في الروابط لصفحات معيّنة: تم توسيع نطاق ميزة "الربط بصفحات معيّنة" لتتيح استخدام
app:actionوapp:mimeTypeبالإضافة إلىapp:uriالمتاح سابقًا. تتيحNavControllerالآن التنقّل حسب أي مجموعة من هذه الحقول من خلال فئةNavDeepLinkRequestالجديدة. لمزيد من المعلومات، اطّلِع على التنقّل باستخدام NavDeepLinkRequest.
المشاكل المعروفة
- لا تتوفّر بعد إمكانية استخدام إجراءات الروابط لصفحات معيّنة وأنواع MIME في Manifest Merger. إلى أن يكتمل هذا العمل، لن تتضمّن أي عناصر
<intent-filter>تم إنشاؤها من العنصر<nav-graph>في بيانك نوع MIME في العنصر<data>أو<action>المخصّص. يجب إضافة<intent-filter>مناسب إلى ملف البيان يدويًا.
الإصدار 2.3.0-rc01
10 يونيو 2020
تم طرح androidx.navigation:navigation-*:2.3.0-rc01. يتضمّن الإصدار 2.3.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح
NullPointerExceptionعند استبدال مثيل لوجهة بدون وسيطات بمثيل آخر مع وسيطات باستخدامsingleTop. (b/158006669) - تحتوي جميع استثناءات
destination is unknownالتي يتم طرحها بواسطةNavControllerالآن على معلومات إضافية لتصحيح الأخطاء للمساعدة في تحديد حالةNavController. (b/157764916)
الإصدار 2.3.0-beta01
20 أيار (مايو) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-beta01. يتضمّن الإصدار 2.3.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تعديل
LifecycleNavBackStackEntryبشكلٍ صحيح بعد إيقاف العملية. (b/155218371) - يتم الآن إرسال الوجهة التي تمت استعادتها بشكل صحيح إلى
OnDestinationChangedListenerمن مثيلات التي تم تسجيلها قبل استدعاءsetGraph()بعد إيقاف العملية. (b/155218371) - عند استخدام
singleTop، يتم الآن تعديل وسيطاتNavBackStackEntryبشكلٍ صحيح، ويتم إرسال الوسيطات المعدَّلة إلى جميع مثيلاتOnDestinationChangeListener. (b/156545508)
تحديثات الاعتماديات
- يعتمد العنصر
NavigationUIالآن على CustomView1.1.0-rc01وDrawerLayout1.1.0-rc01. (aosp/1309696)
الإصدار 2.3.0-alpha06
29 نيسان (أبريل) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha06. (يتضمّن الإصدار 2.3.0-alpha06 هذه التعديلات.)
الميزات الجديدة
- تم توسيع نطاق الربط لصفحات في التطبيق ليشمل
app:actionوapp:mimeTypeبالإضافة إلىapp:uriالمتوفّرة سابقًا. يتيح NavController الآن التنقّل باستخدام أي مجموعة من هذه الحقول من خلال فئةNavDeepLinkRequestالجديدة. (b/136573074 وb/135334841)
تغييرات واجهة برمجة التطبيقات
- تم توسيع نطاق توافق Kotlin DSL مع وجهات التنقّل الديناميكي بشكل كبير. (b/148969800)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في تجاهل أغراض الروابط لصفحات معيّنة في التطبيق عند استخدام وجهة بدء متداخلة. (b/154532067)
الإصدار 2.3.0-alpha05
نيسان (أبريل) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha05. يتضمّن الإصدار 2.3.0-alpha05 هذه التعديلات.
الميزات الجديدة
- بالنسبة إلى عمليات تضمين الرسومات البيانية الديناميكية باستخدام
<include-dynamic>، لم يعُد عليك تحديدapp:graphPackageوسيتم استخدام قيمة تلقائية من خلال إضافة اللاحقةmoduleNameإلىapplicationIdبعد نقطة. إذا كنت بحاجة إلى تخصيصgraphPackage، يمكنك الآن استخدام عنصر نائب${applicationId}. (b/152696768) - تتيح الآن لغة Kotlin DSL الخاصة بمخطط التنقّل عرض
defaultArgumentsMapللإجراءات، ما يتيح إمكانية ضبط القيم التلقائية على عناصر<action>في ملفات XML الخاصة بالتنقل. (b/150345605)
إصلاح الأخطاء
- من Navigation 2.2.2: تم إصلاح الخطأ
IllegalStateExceptionعند الربط لصفحة معيّنة في الوجهة الأولى للرسم البياني عندما يكون لديك عدة مثيلاتNavHostFragmentفي النشاط. (b/147378752)
تحديثات الاعتماديات
- يعتمد التنقّل الآن على Fragment
1.2.4. (aosp/1277325) - تعتمد ميزة "شريط التنقّل الديناميكي" الآن على Play Core
1.7.2. (aosp/1282257)
الإصدار 2.3.0-alpha04
18 مارس 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha04. يتضمّن الإصدار 2.3.0-alpha04 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إمكانية استخدام وجهات الأنشطة والتقسيمات في وحدات الميزات في Navigation Kotlin DSL. (b/148969800)
تغييرات واجهة برمجة التطبيقات
- لم تعُد الفئة
DynamicExtrasتستخدم نمط أداة الإنشاء، ويمكن الآن إنشاؤها مباشرةً. (aosp/1253671) - تتلقّى السمة
DynamicActivityNavigatorالآنContextفي أداة الإنشاء بدلاً منActivity. (aosp/1250252)
إصلاح الأخطاء
- لم يعُد
NavigationUIيتجاهل التصنيفات الفارغة (أي الوجهة التي تتضمّنandroid:label=””)، وأصبح الآن يضبط العنوان بشكل صحيح على سلسلة فارغة. (b/148679860)
تحديثات الاعتماديات
- تعتمد عناصر Navigation Dynamic Features الآن على مكتبة Play الأساسية
1.6.5. (b/149556401)
الإصدار 2.3.0-alpha03
4 مارس 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha03. يتضمّن الإصدار 2.3.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- بدلاً من الاعتماد على الفئة المحدّدة
DrawerLayout، تستخدمAppBarConfigurationالآن الواجهةOpenableالتي تم تقديمها في CustomView1.1.0-alpha02(التي تنفّذهاDrawerLayoutاعتبارًا من DrawerLayout1.1.0-alpha04)، ما يتيح لك استخدام عمليات تنفيذ مخصّصة للواجهةOpenableمعNavigationUI. (b/129030452)
إصلاح الأخطاء
- لا تحتفظ قواعد
navigation-common-ktxProGuard الآن بشكل صحيح إلا بفئاتNavArgsالمستخدَمة بدلاً من جميع مثيلاتNavArgs. (b/150213558)
التغييرات في الاعتماديات
- تمت إعادة اعتماد Navigation على Core
1.2.0، وأصبح يعتمد الآن على Core1.1.0لتجنُّب إجبار المطوّرين على الانتقال إلى إصدار أحدث من الاعتمادية عندما لا يعتمد Navigation على أي واجهات برمجة تطبيقات جديدة في Core1.2.0.
الإصدار 2.3.0-alpha02
19 شباط (فبراير) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha02. يتضمّن الإصدار 2.3.0-alpha02 هذه التعديلات.
الميزات الجديدة
- يتيح لك
NavBackStackEntryالآن الوصول إلىSavedStateHandleمناسب لتخزين كميات صغيرة من الحالة المحفوظة التي يجب ربطها بإدخال معيّن في سجلّ الأنشطة السابقة. يمكنك الاطّلاع على عرض نتيجة لمعرفة مثال على حالة الاستخدام. (b/79672220)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقتَي
getCurrentBackStackEntry()وgetPreviousBackStackEntry()لتسهيل استردادNavBackStackEntryللوجهات الحالية والسابقة. (b/79672220)
إصلاح الأخطاء
- تعمل السمة
navigateUp()الآن على تمرير وسيطات الوجهة الحالية وKEY_DEEP_LINK_INTENTإلى الوجهة السابقة عند تشغيل تطبيقك على حزمة المهام الخاصة بك. (b/147456890)
التغييرات في الاعتماديات
- أصبحت عملية التنقّل تعتمد الآن على Core
1.2.0.
الإصدار 2.3.0-alpha01
5 شباط (فبراير) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha01. يتضمّن الإصدار 2.3.0-alpha01 هذه التعديلات.
الميزات الجديدة
- يوفر عنصر
navigation-testingالجديد فئةTestNavHostController. يوفّر هذا الصف بديلاً لاستخدام عنصر وهميNavControllerعند اختبار التنقّل، ما يتيح لك ضبط الوجهة الحالية والتحقّق من الأنشطة السابقة بعد عمليات التنقّل. (b/140884273) - تتيح لك السمة الجديدة
navigation-dynamic-features-fragment(والاعتمادية المتعدية لهاnavigation-dynamic-features-runtime) تضمين وجهات أو رسومات بيانية كاملة للتنقّل (من خلال<include-dynamic>) من وحدات الميزات، ما يوفّر عملية تثبيت سلسة لوحدات الميزات عند الطلب عند الانتقال إلى تلك الوجهات. لمزيد من المعلومات، اطّلِع على التنقّل باستخدام وحدات الميزات. (b/132170186)
إصلاح الأخطاء
- من التنقّل
2.2.1: تتجاهل الروابط لصفحات معيّنة التي لا تتضمّن مَعلمات طلب البحث الآن بشكلٍ صحيح أي مَعلمات طلب بحث بدلاً من إلحاقها بعناصر{argument}اللاحقة أو عدم مطابقة الرابط لصفحة معيّنة. (b/147447512) - من شريط التنقّل
2.2.1: تم تعديل قواعدnavigation-uiProGuard الخاصة بـDrawerArrowDrawableلضمان عدم الحاجة إلىandroid.enableJetifier=true. (b/147610424) - من التنقل
2.2.1: يحتوي الآن الوحدةnavigation-common-ktxعلى اسم حزمة بيان فريد بدلاً من مشاركة اسم حزمة البيان نفسه معnavigation-runtime-ktx. (aosp/1141947)
تحديثات الاعتماديات
- من Navigation
2.2.1: يعتمد التنقّل2.2.1الآن على Lifecycle ViewModel SavedState2.2.0وFragment1.2.1.
الإصدار 2.2.2
الإصدار 2.2.2
نيسان (أبريل) 2020
تم طرح androidx.navigation:navigation-*:2.2.2. يتضمّن الإصدار 2.2.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ
IllegalStateExceptionعند الربط بصفحة في التطبيق تؤدي إلى وجهة البدء في الرسم البياني عندما يكون لديك عدة مثيلاتNavHostFragmentفي النشاط. (b/147378752) - لم يعُد
NavigationUIيتجاهل التصنيفات الفارغة (أي الوجهة التي تتضمّنandroid:label=””)، وأصبح الآن يضبط العنوان بشكل صحيح على سلسلة فارغة. تم إصدار هذه الميزة سابقًا في Navigation 2.3.0-alpha04. (b/148679860) - لا تحتفظ قواعد
navigation-common-ktxProGuard الآن بشكل صحيح إلا بفئاتNavArgsالمستخدَمة بدلاً من جميع مثيلاتNavArgs. تم إصدار هذه الميزة سابقًا في Navigation 2.3.0-alpha03. (b/150213558
تحديثات الاعتماديات
- أصبحت عملية التنقّل تعتمد الآن على Fragment
1.2.4. (aosp/1277325)
الإصدار 2.2.1
الإصدار 2.2.1
5 شباط (فبراير) 2020
تم طرح androidx.navigation:navigation-*:2.2.1. يتضمّن الإصدار 2.2.1 هذه التعديلات.
إصلاح الأخطاء
- تتجاهل الروابط لصفحات معيّنة التي لا تتضمّن مَعلمات طلب البحث الآن أي مَعلمات طلب بحث بشكلٍ صحيح بدلاً من إلحاقها بعناصر
{argument}اللاحقة أو عدم مطابقة الرابط لصفحة معيّنة. (b/147447512) - تم تعديل
navigation-uiقواعد ProGuard الخاصة بـDrawerArrowDrawableلضمان عدم الحاجة إلىandroid.enableJetifier=true. (b/147610424) - يحتوي الوحدة
navigation-common-ktxالآن على اسم حزمة بيان فريد بدلاً من مشاركة اسم حزمة البيان نفسه معnavigation-runtime-ktx. (aosp/1141947)
تحديثات الاعتماديات
- يعتمد التنقّل
2.2.1الآن على Lifecycle ViewModel SavedState2.2.0وFragment1.2.1.
الإصدار 2.2.0
الإصدار 2.2.0
22 يناير 2020
تم طرح androidx.navigation:navigation-*:2.2.0. يتضمّن الإصدار 2.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.1.0
- NavBackStackEntry: يمكنك الآن استدعاء
NavController.getBackStackEntry()، مع تمرير معرّف وجهة أو رسم بياني للتنقّل في سجلّ الرجوع. تعرض السمةNavBackStackEntryالتي تم إرجاعهاLifecycleOwnerوViewModelStoreOwner(وهي السمة نفسها التي تعرضهاNavController.getViewModelStoreOwner()) وSavedStateRegistryOwnerالمستندة إلى Navigation، بالإضافة إلى توفير الوسيطات المستخدَمة لبدء هذه الوجهة. - دمج SavedState مع Lifecycle ViewModel: أصبح
SavedStateViewModelFactoryهو المصنع التلقائي المستخدَم عند استخدامby navGraphViewModels()أو الدالة الإنشائيةViewModelProviderمعViewModelStoreOwnerالتي تعرضها الدالتانNavController.getBackStackEntry()أوNavController.getViewModelStoreOwner(). - إتاحة مَعلمات طلب البحث للروابط لصفحات في التطبيق: تتيح الروابط لصفحات في التطبيق التي تتضمّن مَعلمات طلب البحث الآن إعادة ترتيب مَعلمات طلب البحث، كما أنّ الوسيطات التي تتضمّن قيمة تلقائية أو يمكن أن تكون فارغة أصبحت اختيارية عند مطابقة الروابط لصفحات في التطبيق.
- تحسين إمكانية استخدام الصور المتحركة: يستخدم الإصدار
NavHostFragmentالآنFragmentContainerViewمن Fragment 1.2.0، ما يؤدي إلى إصلاح مشاكل ترتيب الصور المتحركة حسب المحور z وإرسال هوامش النافذة إلى "اللقطات".
الإصدار 2.2.0-rc04
18 كانون الأول (ديسمبر) 2019
تم طرح androidx.navigation:navigation-*:2.2.0-rc04. يتضمّن الإصدار 2.2.0-rc04 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل الرسوم المتحركة التلقائية للتلاشي التي تستخدمها
navigation-uiلتتطابق مع الرسوم المتحركة المعدَّلة للتلاشي في Fragment1.2.0-rc04. (b/145769814)
الإصدار 2.2.0-rc03
4 كانون الأول (ديسمبر) 2019
تم طرح androidx.navigation:navigation-*:2.2.0-rc03. يتضمّن الإصدار 2.2.0-rc03 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في تحليل الروابط لصفحات معيّنة عند استخدام مَعلمات طلب البحث ووسيطة كالجزء الأخير من المسار الذي منع تحليل أكثر من حرف واحد من وسيطة المسار النهائي. (b/144554689)
- تم إصلاح مشكلة في تحليل الروابط لصفحات معيّنة في التطبيق، حيث كانت المَعلمات الاختيارية تتلقّى القيمة
"@null"بدلاً منnull. (b/141613546) - تعمل الدالة
NavHostFragmentالآن على استعادة الرسم البياني بشكلٍ صحيح بعد تغيير الإعدادات عند استخدامها معFragmentContainerView. (b/143752103)
التغييرات في الاعتماديات
- تعتمد ميزة "التنقّل" الآن على
2.2.0-rc03Lifecycle و1.0.0-rc03Lifecycle ViewModel SavedState و1.1.0-rc03Activity و1.2.0-rc03Fragment عند الاقتضاء.
الإصدار 2.2.0-rc02
7 نوفمبر 2019
تم طرح androidx.navigation:navigation-*:2.2.0-rc02. يتضمّن الإصدار 2.2.0-rc02 هذه التعديلات.
التغييرات في الاعتماديات
- يعتمد التنقّل الآن على androidx.lifecycle
2.2.0-rc02.
الإصدار 2.2.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.navigation:navigation-*:2.2.0-rc01 بدون أي تغييرات منذ 2.2.0-beta01. يتضمّن الإصدار 2.2.0-rc01 هذه التعديلات.
الإصدار 2.2.0-beta01
9 أكتوبر 2019
تم طرح androidx.navigation:navigation-*:2.2.0-beta01. يتضمّن الإصدار 2.2.0-beta01 هذه التعديلات.
الميزات الجديدة
- تتجاوز الفئة
NavDestinationوفئاتها الفرعية الآنtoString()لتقديم معلومات أكثر فائدة عند تصحيح الأخطاء. (b/141264986)
تغييرات السلوك
- يتم الآن تجاهل مَعلمات طلب البحث الإضافية عند مطابقة الروابط لصفحات في التطبيق بدلاً من التسبّب في تعذُّر المطابقة. (b/141482822)
إصلاح الأخطاء
- تم إصلاح مشكلة تجاهل الوسيطات في مسار رابط لصفحة معيّنة إذا تم تحديد مَعلمات طلب البحث أيضًا. (b/141505755)
- تتضمّن إضافة
navArgs()Kotlin فيActivityالآن رسالة خطأ أفضل عندما لا تتوفّر أي بيانات إضافية. (b/141408999) - تحتوي فئات Java التي تم إنشاؤها باستخدام Safe Args
Directionsالآن على قيم تلقائية. (b/141099045) - تحتوي فئات Java التي تم إنشاؤها باستخدام Safe Args
Argsالآن على قيم تلقائية. (b/140123727) - عند استخدام
Toolbar،NavigationUIلن يتم تحريك تغيير النص عند الانتقال بين وجهتَين من المستوى الأعلى. (b/140848160)
الإصدار 2.2.0-alpha03
18 أيلول (سبتمبر) 2019
تم طرح androidx.navigation:navigation-*:2.2.0-alpha03. يتضمّن الإصدار 2.2.0-alpha03 هذه التعديلات.
تغييرات السلوك
- عند الاتصال بالرقم
setViewModelStore()بعد الاتصال بالرقمsetGraph، سيظهر لك الآنIllegalStateException. يجب أن يتم ضبط هذا الإعداد دائمًا من خلالNavHostكجزء من عملية الإعداد الأوّلية لضمان توفّر مساحة تخزين متّسقة لجميع مثيلاتNavBackStackEntryViewModel. (aosp/1111821)
إصلاح الأخطاء
- تم إصلاح
ConcurrentModificationExceptionعند استخدام مثيلاتViewModelمرتبطة بمثيلاتViewModelStoreمختلفة متعددة ذات نطاق رسم بياني للتنقّل. (aosp/1112257)
الإصدار 2.2.0-alpha02
5 أيلول (سبتمبر) 2019
تم طرح androidx.navigation:navigation-*:2.2.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- تتيح الروابط لصفحات في التطبيق التي تتضمّن مَعلمات طلب بحث الآن إعادة ترتيب مَعلمات طلب البحث، كما أنّ الوسيطات التي تتضمّن قيمة تلقائية أو يمكن أن تكون فارغة أصبحت اختيارية عند مطابقة الروابط لصفحات في التطبيق. (b/133273839)
- يمكنك الآن استدعاء
NavController.getBackStackEntry()، مع تمرير رقم تعريف وجهة أو رسم بياني للتنقّل في الأنشطة السابقة. تعرض السمةNavBackStackEntryالتي تم إرجاعهاLifecycleOwnerوViewModelStoreOwner(وهي السمة نفسها التي تعرضهاNavController.getViewModelStoreOwner()) وSavedStateRegistryOwnerالمستندة إلى Navigation، بالإضافة إلى توفير الوسيطات المستخدَمة لبدء هذه الوجهة. (aosp/1101691 وaosp/1101710)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثّلة في تعذُّر إضافة
NavHostFragmentإلىViewPager2وظهور الخطأIllegalArgumentException. (b/133640271) - تتجنّب السمة
NavInflaterالآن استدعاء السمةgetResourceName()بدون داعٍ، ما يؤدي إلى تسريع وقت التضخّم بنسبة تصل إلى %40. (b/139213740)
الإصدار 2.2.0-alpha01
7 آب (أغسطس) 2019
تم طرح androidx.navigation:navigation-*:2.2.0-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- أصبحت
SavedStateViewModelFactoryهي المصنع التلقائي المستخدَم عند استخدامby navGraphViewModels()أو طريقة وضع تصميمViewModelProviderمعViewModelStoreOwnerتم إرجاعها بواسطةNavController.getViewModelStoreOwner(). (b/135716331)
تغييرات واجهة برمجة التطبيقات
- من Navigation
2.1.0-rc01: تمت إزالة واجهة برمجة التطبيقاتgetViewModelStore()المتوقّفة نهائيًا فيNavControllerوالتي تم طرحها في2.1.0-alpha02. (aosp/1091021)
إصلاح الأخطاء
- يستخدم
NavHostFragmentالآنFragmentContainerView، ما يؤدي إلى حلّ المشاكل المتعلّقة بترتيب العناصر حسب المحور Z في الرسوم المتحركة وإرسال هوامش النافذة إلى "اللقطات". (b/137310379)
الإصدار 2.1.0
الإصدار 2.1.0
5 أيلول (سبتمبر) 2019
تم طرح androidx.navigation:navigation-*:2.1.0. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
التغييرات المهمة منذ الإصدار 2.0.0
- تحديد نطاق ViewModels في الرسم البياني للتنقّل: يمكنك الآن إنشاء ViewModels يتم تحديد نطاقها على مستوى الرسم البياني للتنقّل باستخدام تفويض السمة
by navGraphViewModels()لمستخدمي Kotlin الذين يستخدمون مكتبات-ktxأو باستخدام واجهة برمجة التطبيقاتgetViewModelStoreOwner()التي تمت إضافتها إلىNavController. اطّلِع على مشاركة البيانات ذات الصلة بواجهة المستخدم بين الوجهات للحصول على مزيد من المعلومات. - وجهات مربّعات الحوار: يمكنك الآن إنشاء وجهات
<dialog>ستعرضDialogFragmentعندnavigateإليها. يتوافقNavHostFragmentمع وجهات الحوار تلقائيًا. راجِع مقالة إنشاء وجهة من DialogFragment للحصول على مزيد من المعلومات. - التنقّل باستخدام معرّف الموارد المنتظم (URI): يمكنك الآن
navigateباستخدامUri، الذي يستخدِم<deepLink>الذي أضفته إلى وجهة معيّنة للانتقال إليها. لمزيد من المعلومات، يُرجى الاطّلاع على التنقّل باستخدام Uri. - NavHostController: تم نقل واجهات برمجة التطبيقات المستخدَمة خصيصًا لإنشاء
NavHostمخصّص إلىNavHostController، ما يتيح عمليات التنفيذ ربطNavControllerبـLifecycleOwnerوOnBackPressedDispatcherوViewModelStore.
الإصدار 2.1.0-rc01
7 آب (أغسطس) 2019
تم طرح androidx.navigation:navigation-*:2.1.0-rc01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات
getViewModelStore()المتوقفة نهائيًا فيNavControllerوالتي تم طرحها في2.1.0-alpha02. (aosp/1091021)
الإصدار 2.1.0-beta02
19 يوليو 2019
تم طرح androidx.navigation:*:2.1.0-beta02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة تبعية jacoco غير المقصودة التي تم تقديمها في
2.1.0-beta01. (b/137782950)
الإصدار 2.1.0-beta01
17 يوليو 2019
تم طرح androidx.navigation:*:2.1.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- تعرض
NavigationUIالآن رسومًا متحركة لإزالة زر "أعلى الصفحة" عند استخدامsetupWithNavController()معToolbarأوCollapsingToolbarLayout. (b/131403621)
إصلاح الأخطاء
- تم إصلاح مشكلة توقيت عند استخدام عدّة عناصر NavHostFragment مع الحاوية نفسها باستخدام
findNavController(). (b/136021571)
الإصدار 2.1.0-alpha06
2 تموز (يوليو) 2019
تم طرح androidx.navigation:*:2.1.0-alpha06. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- تم الآن نقل السمة
app:navGraphالتي يستخدمها NavHostFragment إلى العنصرnavigation-runtime. يجب أن تستخدم أدوات التنقّل المخصّصة التي يمكن إضافتها عبر XML هذه السمة للاستفادة من الدمج مع لوحة "المضيف" في "أداة تعديل التنقّل". (b/133880955)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف واجهة برمجة التطبيقات
getViewModelStore()علىNavControllerنهائيًا لصالح الطريقة الجديدةgetViewModelStoreOwner()التي تعرضViewModelStoreOwner. (aosp/987010) - تم تعميم تنفيذ وجهات النوافذ العائمة، مثل وجهات
<dialog>، في واجهة علامات،FloatingWindow، تنفّذها الآن جميع وجهات<dialog>. تتجاهل الآن طرق NavigationUI للتفاعل مع شريط التطبيق العلوي الوجهاتFloatingWindow. (b/133600763)
تغييرات السلوك
- تتزامن عناصر التنقّل الآن بشكل صحيح مع المحتوى الظاهر على الشاشة عند استخدام وجهة
<dialog>. نتيجةً لذلك، تعرض ميزة "التنقّل" الآن تلقائيًا<dialog>الوجهات عند الانتقال إلى وجهة غير حوارية وغير نشطة، مثل وجهة<fragment>. (b/134089818)
إصلاح الأخطاء
- تتجاهل ميزة "التنقّل" الآن الصورة المتحركة التي تظهر عند إعادة إنشاء النشاط عند التعامل مع رابط لصفحة في التطبيق، ما يؤدي إلى إصلاح مشكلة ظهور وميض مرئي. (b/130362979)
- تم إصلاح الخطأ الذي كان يتسبب في عدم مزامنة سجلّ التصفّح السابق في Navigation عند إزالة Fragment أثناء إضافة Fragment الأوّلي. (b/133832218)
الإصدار 2.1.0-alpha05
5 يونيو 2019
تم طرح androidx.navigation:*:2.1.0-alpha05. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهات برمجة التطبيقات ذات الصلة بالمضيف على
NavControllerونقلها إلى فئة فرعية جديدة منNavController، وهيNavHostController. (aosp/966091) - تم استبدال الطريقة
NavControllersetHostOnBackPressedDispatcherOwner()بالطريقةsetOnBackPressedDispatcher()الخاصة بـNavHostController، ويجب الآن استدعاءsetLifecycleOwner()قبل استدعائها. (aosp/965409) - يحتوي
NavHostControllerالآن على طريقةenableOnBackPressed(boolean)تحلّ محل الفئةNavHostOnBackPressedManagerالتي كانت تعرضها الدالةsetHostOnBackPressedDispatcherOwner()سابقًا. (aosp/966091)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم صحة سجلّ التصفّح السابق بعد الانتقال باستخدام معرّف الموارد المنتظم (URI). (b/132509387)
- يتم الآن تشغيل الروابط لصفحات معيّنة التي يتعامل معها NavController تلقائيًا مرة واحدة فقط. (b/132754763)
الإصدار 2.1.0-alpha04
16 أيار (مايو) 2019
تم طرح androidx.navigation:*:2.1.0-alpha04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تتعامل السمة
NavHostFragmentبشكل صحيح مع السمةapp:defaultNavHostعند اعتراض أحداث زر الرجوع في النظام، ما يؤدي إلى إصلاح مشكلة في الإصدارات السابقة من مكتبة Navigation2.1.0-alpha03. b/132077777 - تعالج
DialogFragmentNavigatorالآن عملياتpopBackStack()وnavigateUp()بشكل صحيح. b/132576764 - تم إصلاح مشكلة
IllegalStateException: unknown destination during restoreعند التنقّل بشكل متكرّر بين الرسومات البيانية المتداخلة. b/131733658
الإصدار 2.1.0-alpha03
7 أيار (مايو) 2019
تم طرح androidx.navigation:*:2.1.0-alpha03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
المشاكل المعروفة
- يواصل NavHostFragment اعتراض زر الرجوع في النظام على الرغم من استخدام
app:defaultNavHost="false"b/132077777
الميزات الجديدة
- يمكنك الآن إنشاء وجهات
<dialog>ستعرضDialogFragmentعندnavigateإليها. يتوافقNavHostFragmentمع وجهات مربّعات الحوار تلقائيًا. b/80267254 - بالإضافة إلى استدعاء
navigateباستخدام معرّف مورد أو مثيلNavDirections، يمكنك الآن التنقّل من خلالUri، الذي يستخدم<deepLink>الذي أضفته إلى وجهة للتنقّل إلى الوجهة الصحيحة. b/110412864
تغييرات السلوك
- تمت زيادة سرعة الصور المتحركة التلقائية التي توفّرها NavigationUI من 400 مللي ثانية إلى 220 مللي ثانية لتتطابق مع سرعة الصور المتحركة التلقائية للأنشطة واللقطات. b/130055522
تغييرات واجهة برمجة التطبيقات
- تم إيقاف الطريقة
createFragmentNavigator()فيNavHostFragmentنهائيًا ونقل وظائفها إلى الطريقة الجديدةonCreateNavController()لتوضيح أنّ هذه هي نقطة الدخول الصحيحة لإضافة أدوات التنقّل المخصّصة عند إنشاء فئة فرعية منNavHostFragment. b/122802849 - تمت إضافة طريقة
hasDeepLink()إلىNavDestinationللسماح لك بالتحقّق مما إذا كان يمكن التعامل معUriمعيّن من خلال هذه الوجهة أو، في حالةNavGraph، أي وجهة في الرسم البياني للتنقّل. b/117437718
إصلاح الأخطاء
- يتم الآن تمرير الوسيطات التلقائية بشكل صحيح إلى مثيلات
OnDestinationChangedListener. b/130630686 - تعترض السمة
NavHostFragmentالآن أحداث "الرجوع" في النظام باستخدامOnBackPressedDispatcher، ما يحلّ مشكلة عند إجراء تنقّل شرطي في طرق مراحل نشاط Fragment عند الرجوع إلى Fragment. b/111598096 - بالنسبة إلى Safe Args، يتم الآن استنتاج
android:defaultValue=”@null”بدونapp:argTypeغير محدّد بشكل صحيح على أنّه وسيطةstring. b/129629192
الإصدار 2.1.0-alpha02
3 أبريل 2019
تم طرح androidx.navigation:*:2.1.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- يمكنك الآن إنشاء ViewModels بنطاق على مستوى الرسم البياني للتنقّل من خلال أداة تفويض السمات
by navGraphViewModels()لمستخدمي Kotlin أو باستخدام واجهة برمجة التطبيقاتgetViewModelStore()المضافة إلىNavController. b/111614463
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إضافة
app:targetPackageإلى وجهة<activity>للحدّ من اسم الحزمة المطابق. يتوافق معapp:targetPackage="${applicationId}"لحصر الحزمة على معرّف تطبيقك. b/110975456
إصلاح الأخطاء
- لم يعُد يتم تحليل
android:nameلوجهات<activity>إلى فئة في وقت التضخّم، ما يمنع حدوث أخطاء ClassNotFoundExceptions عند استخدام الميزات الديناميكية. b/124538597
الإصدار 2.1.0-alpha01
19 آذار (مارس) 2019
هذا هو الإصدار الأوّلي الأول من Navigation 2.1.0.
التغييرات في الاعتماديات
- تعتمد عملية التنقّل الآن على
androidx.core:core:1.0.1وandroidx.fragment:fragment:1.1.0-alpha05. يزيل هذا الإصدار أيضًا التبعية علىandroidx.legacy:legacy-support-core-utils:1.0.0. b/128632612
تغييرات واجهة برمجة التطبيقات
- تمت إضافة طريقة
Navigation.createNavigateOnClickListener(NavDirections)جديدة كبديل لإنشاء متتبِّع النقرات باستخدام معرّف مورد وحزمة. b/127631752 - تم إيقاف
FragmentNavigator.instantiateFragmentنهائيًا. يستخدم التنفيذ التلقائي الآنFragmentFactoryلإنشاء مثيل من الفئة Fragment. b/119054429
إصلاح الأخطاء
- لم يعُد التنقّل يرسل قيمة فارغة
Bundleعند إرفاق وسيطات بوجهة، ما يؤدي إلى حلّ مشكلة عند استخدامandroid:defaultValue="@null". b/128531879 - تعتمد Safe Args الآن على الإصدار 1.1.0 من KotlinPoet، ما يحلّ مشكلة تتعلّق بأسماء الحِزم الطويلة جدًا. b/123654948
الإصدار 2.0.0
الإصدار 2.0.0
14 آذار (مارس) 2019
تم إصدار الإصدار 2.0.0 من ميزة "التنقّل" بدون أي تغييرات منذ الإصدار 2.0.0-rc02.
الإصدار 2.0.0-rc02
6 مارس 2019
يوفر الإصدار 2.0.0-rc02 من Navigation عناصر جديدة مع معرّف المجموعة androidx.navigation ويغيّر التبعيات إلى ما يعادلها في AndroidX.
يتطابق سلوك الإصدار 2.0.0-rc02 مع سلوك الإصدار 1.0.0-rc02 من Navigation، ولن تحتاج إلى إجراء أي تغييرات على الرمز البرمجي لتحديث الإصدار 1.0.0-rc02، باستثناء تعديل التبعيات لتتوافق مع التبعيات الجديدة.
يجب أن يكون مشروعك قد تم نقله إلى AndroidX لاستخدام الإصدارات 2.X من Navigation. سيكون الإصدار الثابت 1.0 من Navigation هو آخر إصدار يستخدم تبعيات Support Library، وسيستند كل التطوير المستقبلي بعد الإصدار 1.0 إلى AndroidX وسيتم إنشاؤه استنادًا إلى الإصدار الثابت 2.0.
المهام التابعة قبل AndroidX
بالنسبة إلى إصدارات Navigation السابقة لإصدار AndroidX، أدرِج التبعيات التالية:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
بالنسبة إلى Safe args، أضِف مسار الفئة التالي في ملف build.gradle المستوى الأعلى.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
الإصدار 1.0.0
الإصدار 1.0.0
14 آذار (مارس) 2019
تم إصدار الإصدار 1.0.0 من ميزة "التنقّل" بدون أي تغييرات منذ الإصدار 1.0.0-rc02.
الإصدار 1.0.0-rc02
26 شباط (فبراير) 2019
هذا هو الإصدار الثاني المحتمَل للإصدار الثابت 1.0.0 من Navigation. يتضمّن هذا الإصدار عددًا من إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح مشكلة تجاهل
popBackStack()في حال عدم توفّر رقم تعريف في الرسم البياني الأساسي b/126251695 - يتعامل
navigateUp()الآن بشكل صحيح مع الرجوع إلى مهمة تطبيقك عندما يتم استدعاؤه بعد معالجة رابط لصفحة في التطبيق بدونFLAG_ACTIVITY_NEW_TASKb/126082008 - تم إصلاح مشكلة عدم تطبيق
ActivityNavigator.applyPopAnimationsToPendingTransitionالحركة الصحيحة عند الخروج من النافذة المنبثقة b/126237567 - تعمل ميزة Safe Args الآن على إزالة الأحرف الخاصة من الكلمات الرئيسية في Kotlin،
مثل
inوfun، في اسم الحزمة المرتبط بالفئةR. b/126020455
الإصدار 1.0.0-rc01
21 شباط (فبراير) 2019
هذا إصدار محتمَل للإصدار الثابت 1.0.0 من Navigation. يتضمّن هذا الإصدار إصلاحًا لأحد الأخطاء.
إصلاح الأخطاء
- تم إصلاح مشكلة عند استخدام "التقسيمات" وعمليات التنقّل
singleTopb/124294805
الإصدار 1.0.0-beta02
12 شباط (فبراير) 2019
يتضمّن هذا الإصدار عددًا من التحسينات البسيطة وإصلاحات مهمة للأخطاء.
الميزات الجديدة
- يمكنك الآن استخدام
0كـandroid:defaultValueلوسيطاتreference. b/124248602
تغييرات السلوك
- تتم الآن إعطاء الأولوية لمطابقات الروابط لصفحات معيّنة التامة على الروابط لصفحات معيّنة التي تتضمّن
.*أو مطابقات الوسيطات. b/123969518
إصلاح الأخطاء
- تعرض الدالتان
popBackStack()وnavigateUpالآن القيمةfalseبشكل صحيح عند إزالة آخر وجهة من الأنشطة السابقة، ما يؤدي إلى إصلاح مشكلة تم رصدها في الإصدار1.0.0-beta01. b/123933201 - تضبط مكوّن التنقّل الآن
ClassLoaderبشكل صحيح أثناء استعادة حالة المثيل المحفوظة، ما يمنع حدوث مشاكل عند استخدام فئات مخصّصة في حالةNavigatorالمحفوظة أو في الوسيطات المُرسَلة إلىNavDestination. b/123893858 - لم تعُد فئات NavArgs التي تم إنشاؤها باستخدام Safe Args تتسبّب في حدوث أعطال عند استعادة وسيطة
Parcelable[]من حالة المثيل المحفوظة. b/123963545 - تعمل Safe Args الآن على إزالة فئات Kotlin غير الضرورية التي تم إنشاؤها بشكل صحيح. b/124120883
الإصدار 1.0.0-beta01
4 شباط (فبراير) 2019
هذا هو الإصدار التجريبي الأول من Navigation، ومن المتوقّع أن يبقى واجهة برمجة التطبيقات Navigation ثابتة حتى الإصدار التالي، ما لم تحدث مشكلة خطيرة. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء وتغييرات في السلوك.
تغييرات السلوك
- يضمن Navigation الآن أنّه يتم التعامل مع القيم التلقائية للوسيطة بشكل مماثل في وقت التشغيل ومن خلال Safe Args. نتيجةً لذلك، يمكن أن تشير الوسيطات التي تتضمّن
app:argType="reference"إلى قيمة تلقائية لمورد آخر (على سبيل المثال،@color/colorPrimary). ستؤدي محاولة استخدام قيمة تلقائية مرجعية معapp:argTypeمختلفة إلى حدوث استثناء عند تحليل XML الخاص بالتنقّل. b/123551990 - يعتمد Safe Args الآن على الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android aosp/888413
- تعتمد Safe Args الآن على الإصدار 1.3.20 من Kotlin aosp/888414
إصلاح الأخطاء
- يمكن الآن استخدام Safe Args في وحدات المكتبة ووحدات الميزات على جميع إصدارات المكوّن الإضافي لنظام Gradle المتوافق مع Android. b/121304903
- تم إصلاح خطأ برمجي كان يؤدي إلى إزالة جميع نُسخ وجهة من أعلى سجلّ الرجوع عند تنفيذ عملية
popBackStack()واحدة، بدلاً من إزالة وجهة واحدة فقط في كل مرة. b/123552990 - تم إصلاح مشكلة عدم مزامنة الحالة
FragmentNavigatorمع حالةNavController، ما يؤدي إلى حدوثIllegalStateExceptionعند محاولة استعادة سجلّ الرجوع. b/123803044 - تم إصلاح مشكلة عدم ظهور سهم الرجوع الذي يتعامل معه
NavigationUIعند استخدام ProGuard مع التشويش. b/123449431 - يتعامل الرمز الذي تم إنشاؤه بواسطة Safe Args الآن بشكل صحيح مع استخدام
app:argTypeالذي يشير إلى فئة داخلية ثابتة بالتنسيق.OuterClass$InnerClass. b/123736741 - يتعامل رمز Java الذي تم إنشاؤه بواسطة Safe Args الآن بشكل صحيح مع الإجراءات العامة والوجهات المتداخلة بشكل كبير. b/123347762
الإصدار 1.0.0-alpha11
23 يناير 2019
هذا إصدار تصحيحي من 1.0.0-alpha10 يعمل على إصلاح مشكلة في Safe Args.
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر استيراد Safe Args لفئة Directions المرتبطة بالإجراءات العامة. b/123307342
الإصدار 1.0.0-alpha10
23 يناير 2019
المشاكل المعروفة
- يتعذّر على Safe Args استيراد فئة Directions المرتبطة بالإجراءات العامة. b/123307342
يتضمّن هذا الإصدار تغييرات في واجهة برمجة التطبيقات قد تؤدي إلى أعطال؛ يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى أعطال أدناه.
الميزات الجديدة
- يمكن لمستخدمي Kotlin الآن استخدام أداة تفويض السمة
by navArgs()للحصول بشكل غير مباشر على مرجع إلى فئةNavArgsتم إنشاؤها باستخدام Safe Args فيActivityأوFragment. b/122603367 - تتيح Safe Args الآن إنشاء رمز Kotlin البرمجي من خلال تطبيق المكوّن الإضافي
androidx.navigation.safeargs.kotlin. يتم إنشاء رمز Kotlin خصيصًا للوحدات التي تستخدم Kotlin فقط، وذلك باستخدام الوسيطات التلقائية والفئات غير القابلة للتغيير بدلاً من نمط الإنشاء الذي لا يزال متاحًا من خلال المكوّن الإضافيandroidx.navigation.safeargsالسابق. b/110263087
التغييرات في السلوك
- أصبحت الروابط المطابقة لصفحات معيّنة في التطبيق تميل الآن إلى الرابط الذي يتضمّن أكبر عدد من الوسيطات المطابقة. b/118393029
- عند الاتصال بـ
setGraph()على جهازNavController، ستتم الآن إعادة ضبط سجلّ الرجوع. b/111450672 - لم يعُد يتم طرح الخطأ
IllegalStateExceptionعند استخدام روابط عميقة غير معروفة، بل يتم تجاهلها، ما يؤدي إلى حلّ المشاكل المتعلّقة بعلاماتNavHostFragmentالمتداخلة أو المتعدّدة. b/121340440
التغييرات التي قد تؤدي إلى أعطال
- تم نقل الطريقة
NavOptions.applyPopAnimationsToPendingTransition()لتطبيق الرسوم المتحركة المنبثقة على أحد الأنشطة إلىActivityNavigator. b/122413117 - تتجنّب Safe Args الآن تكرار الفئات المتطابقة للإجراءات التي لا تتضمّن وسيطات. أصبح نوع القيمة التي تم إرجاعها لطُرق عدم توفّر وسيطات في فئات NavDirections التي تم إنشاؤها هو
NavDirections. b/123233147 - لم تعُد فئات Directions التي تم إنشاؤها باستخدام Safe Args تتضمّن دالة إنشاء عامة، بل يجب التفاعل فقط مع الطرق الثابتة التي تم إنشاؤها. b/123031660
- لم تعُد فئات
NavDirectionsالتي تم إنشاؤها باستخدام Safe Args تتضمّن دالة إنشاء عامة، بل يجب إنشاؤها فقط من خلال الطرق الثابتة في فئات Directions التي تم إنشاؤها. b/122963206 - تمت الآن الإشارة إلى
Bundleالمعروضة منNavDirections'getArguments()على أنّها@NonNullبدلاً من@Nullable. b/123243957
إصلاح الأخطاء
- تعالج السمة
NavDeepLinkBuilderالآن بشكل صحيح عملياتPendingIntentالمتزامنة المتعددة إلى الوجهة نفسها باستخدام الوسيطات التي تمرّرها لتحديد التفرد. b/120042732 - يتعامل
NavControllerالآن بشكل صحيح مع عملياتpopBackStack()عند استخدامNavHostFragmentمتداخل أو أجزاء فرعية أخرى مع سجلّ الخلف.b/122770335 - تعمل السمة
NavigationUIالآن على ضبط وصف محتوى زر "أعلى" بشكل صحيح. b/120395362 - تتعامل فئات Directions التي تم إنشاؤها باستخدام Safe Args الآن بشكل صحيح مع الإجراءات العامة التي لها المعرّف نفسه كإجراء في وجهة.b/122962504
- أصبحت فئات
NavDirectionsالتي تم إنشاؤها باستخدام Safe Args تتضمّن الآن قيمًا متساويةhashCode()بشكل صحيح عندما تعرضequals()القيمة true. b/123043662 - تعرض الدالة
FragmentNavigatorالآن رسالة خطأ أفضل في حال محاولة تنفيذFragmentTransactionsمخصّص علىNavHostFragmentFragmentManager. يجب استخدامgetChildFragmentManager()دائمًا. b/112927148
الإصدار 1.0.0-alpha09
18 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار تغييرات في واجهة برمجة التطبيقات قد تؤدي إلى أعطال؛ يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى أعطال أدناه.
لقد اخترنا عدم مواصلة تطوير العنصر android.arch.navigation:navigation-testing. على الرغم من أنّ هذه الطريقة أثبتت فعاليتها في الاختبار الداخلي لـ NavController، ننصح بشدة باستخدام استراتيجيات اختبار بديلة، مثل محاكاة مثيل NavController، وذلك للتحقّق من تنفيذ طلبات navigate() الصحيحة. تمت مناقشة هذا الأسلوب بالتفصيل في
محاضرة Single Activity في مؤتمر AndroidDevSummit 2018،
وسنعمل على توفير مستندات إضافية حول الاختبار
باستخدام Navigation.
الميزات الجديدة
- لن تؤدي
MenuItemالتي تتضمّنmenuCategory="secondary"إلى إيقاف عملية الرجوع إلى الخلف عند استخدامها مع طرقNavigationUI. b/120104424 - تتيح لك السمة
AppBarConfigurationالآن ضبط مثيل احتياطيOnNavigateUpListenerسيتم استدعاؤه عندما تعرض السمةnavController.navigateUp()القيمةfalse. b/79993862 b/120690961
التغييرات التي قد تؤدي إلى أعطال
- عند استخدام
<argument>معargType="reference"، لن يحلّل Navigation المرجع بعد الآن، بل سيقدّم رقم تعريف المورد الأولي نفسه. b/111736515 - تعود
onNavDestinationSelected()الآن تلقائيًا إلى وجهة البدء في الرسم البياني للتنقّل، ما يجعلها متوافقة مع طرقsetup. أضِفmenuCategory="secondary"إلىMenuItemلتجنُّب إظهار الأنشطة السابقة. aosp/852869 - تتلقّى الآن طرق
fromBundle()لفئاتArgsالتي تم إنشاؤها قيمةBundleغير فارغة بدلاً من قيمةBundleقابلة للتصغير aosp/845616
إصلاح الأخطاء
- يتم الآن تحليل الوسيطات بشكلٍ صحيح من الروابط لصفحات في التطبيق على أنّها
argTypeبدلاً من تحليلها دائمًا على أنّها سلاسل b/110273284 - أصبح بإمكان أداة التنقّل الآن تصدير الموارد العامة بشكل صحيح b/121059552
- أصبح Safe Args متوافقًا الآن مع الإصدار 3.4 Canary 4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث b/119662045
الإصدار 1.0.0-alpha08
6 كانون الأول (ديسمبر) 2018
يتضمّن هذا الإصدار تغييرات في واجهة برمجة التطبيقات قد تؤدي إلى أعطال؛ يُرجى الاطّلاع على قسم التغييرات التي قد تؤدي إلى أعطال أدناه.
الميزات الجديدة
- عند استخدام تصنيفات الوجهات مع طرق
NavigationUI، سيتم الآن تلقائيًا استبدال مثيلات{argName}فيandroid:labelبالوسيطة الصحيحة b/80267266 - أصبح التنقّل يعتمد الآن على الإصدار 28.0.0 من "مكتبة الدعم" b/120293333
التغييرات التي قد تؤدي إلى أعطال
- تمت إعادة تسمية "
OnNavigatedListener" إلى "OnDestinationChangedListener" b/118670572 - تعرض
OnDestinationChangedListenerالآن أيضًاBundleمن الوسيطات aosp/837142 - تمت إزالة السمتَين
app:clearTaskوapp:launchDocumentوالطُرق المرتبطة بهما. استخدِمapp:popUpToمع جذر الرسم البياني لإزالة جميع الوجهات من سجلّ الرجوع. b/119628354 - تستخدم
ActivityNavigator.Extrasالآن نمطBuilderوتتيح إمكانية ضبط أي علاماتIntent.FLAG_ACTIVITY_aosp/828140 - تم تغيير اسم "
NavController.onHandleDeepLink" إلى "handleDeepLink" aosp/836063 - تم تعديل العديد من الفئات والطرق غير المخصّصة لإنشاء فئات فرعية، مثل
NavOptionsوNavInflaterوNavDeepLinkBuilderوAppBarConfiguration، لتصبحfinalaosp/835681 - تمت إزالة الطريقة المتوقّفة نهائيًا
NavHostFragment.setGraph()aosp/835684 - تمت إزالة الطريقة المتوقّفة نهائيًا
NavigationUI.navigateUp(DrawerLayout, NavController). aosp/835684 - تم نقل عملية إنشاء الأجزاء إلى
FragmentNavigator، ما يسهّل تفويض عملية إنشاء الأجزاء إلىFragmentFactory. b/119054429 - لم يعُد منشئ
NavGraphNavigatorيقبلContextaosp/835340 - أصبح NavigatorProvider الآن فئة بدلاً من واجهة. لم تتغيّر وظيفة
NavigatorProviderالتي تعرضهاgetNavigatorProvider(). aosp/830660 - تمّت إزالة
NavDestination.navigate(). يُرجى الاتصال بالرقمnavigate()علىNavigatorبدلاً من ذلك. aosp/830663 - إعادة تصميم
Navigatorبشكل كبير، ما أدى إلى إزالة الحاجة إلىOnNavigatorNavigatedListenerواستبدالها بجعلnavigateتعرضNavDestinationالتي تم الانتقال إليها - لم يعُد بإمكان مثيلات
Navigatorإرسال أحداث منبثقة إلىNavController. ننصحك باستخدامOnBackPressedCallbackلاعتراض الضغطات على زر الرجوع واستدعاءnavController.popBackStack(). aosp/833716
إصلاح الأخطاء
- تعمل السمة
popUpToالآن بشكل متّسق عندما تكون الوجهة عنصر<navigation>b/116831650 - تم إصلاح عدد من الأخطاء التي أدّت إلى حدوث
IllegalArgumentExceptionعند استخدام الرسوم البيانية المتداخلة b/118713731 b/113611083 b/113346925 b/113305559 - ستملأ السمة
dataPatternللوجهات<activity>الآن وسيطات من وسيطات غير السلسلة عن طريق استدعاءtoString()b/120161365
Safe Args
- تتيح Safe Args استخدام عناصر قابلة للتسلسل، بما في ذلك قيم Enum. يمكن لأنواع التعداد
تحديد قيمة تلقائية باستخدام قيمة التعداد الحرفية بدون اسم الفئة
(مثلاً
app:defaultValue="READ") b/111316353 - تتيح Safe Args استخدام مصفوفات من جميع الأنواع المتوافقة b/111487504
- يتجاهل Safe Args الآن المجلدات الفرعية لأدلة الموارد b/117893516
- تضيف Safe Args التعليقات التوضيحية
@Overrideفي المواضع المناسبة b/117145301
الإصدار 1.0.0-alpha07
29 أكتوبر 2018
الميزات الجديدة
- يتيح لك صف AppBarConfiguration الجديد تخصيص الوجهات التي تُعدّ وجهات مستوى أعلى. يمكنك الاطّلاع على المستندات المعدَّلة للحصول على التفاصيل. b/117333663
- يمكنك الآن تمرير وسيطات إلى وجهة البدء في الرسم البياني b/110300470
- تتيح الروابط لصفحات في التطبيق الآن استخدام المخططات المخصّصة التي تتضمّن نقاطًا وفواصل وشرطات وعلامات زائد. b/112806402
التغييرات التي قد تؤدي إلى أعطال
- تم دمج الوحدة
navigation-testing-ktxفيnavigation-testing artifactولن يتم نشرها بعد الآن. - يحتوي العنصر
navigation-testingالآن على تبعية لمكتبة Kotlin العادية. تم تغيير واجهة برمجة التطبيقات لتكون أكثر اتساقًا مع اصطلاحات Kotlin، ولكن يمكنك مواصلة استخدامها للاختبارات المكتوبة بلغة Java. - لم يعُد متاحًا استخدام بيانات وصفية لرسومات التنقّل المسجّلة في ملف البيان. b/118355937
- لم يعُد بالإمكان ربط الإجراءات بوجهات <activity>. aosp/785539
إصلاح الأخطاء
- تعمل الروابط لصفحات في التطبيقات الآن على تحليل معلَمات طلب البحث بشكلٍ صحيح. b/110057514
- تطبِّق وجهات الأنشطة الآن بشكلٍ صحيح جميع حركات الدخول والخروج. b/117145284
- تم إصلاح عُطل يحدث بعد تغييرات الإعدادات عند استخدام أدوات التنقّل المخصّصة. b/110763345
Safe Args
- أصبحت الآن وسيطات Safe تعتمد بشكل ثابت على الإصدار 3.2.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. b/113167627
- يمكن الآن إنشاء توجيهات للصفوف الداخلية. b/117407555
- تم إصلاح مشكلة في إنشاء "اتجاهات" إلى رسم بياني <include>. b/116542123
الإصدار 1.0.0-alpha06
20 سبتمبر 2018
الميزات الجديدة
- أصبحت عمليات الانتقال بين العناصر المشترَكة لوجهات Fragment وActivity متاحة الآن b/79665225. لمزيد من المعلومات، يُرجى الاطّلاع على تنفيذ التنقّل باستخدام "مكوّن بنية التنقّل".
- سيؤدي اختيار عنصر في
NavigationViewالآن إلى إغلاق أي ورقة سفلية تحتوي على b/112158843
تغييرات واجهة برمجة التطبيقات
- تغيير غير متوافق: تتلقّى الدالة
navigate()في Navigator الآن المَعلمةNavigator.Extras. - أصبحت طريقة
getGraph()في NavController الآنNonNullb/112243286
إصلاح الأخطاء
NavigationUI.setupWithNavController()لم يعُد يؤدي إلى تسرُّب المشاهدات إذا تم استخدامه مع مشاهدات من وجهات فردية b/111961977- يتم الآن استدعاء Navigator
onSaveState()مرة واحدة فقط b/112627079
Safe Args
- توسّع فئات "الاتجاهات" الخاصة بوجهة التنقّل الآن فئة "الاتجاهات" الرئيسية إذا كانت متوفّرة b/79871405
- تتضمّن فئتَا Directions وArgs الآن
toString()عملية تنفيذ مفيدة b/111843389
الإصدار 1.0.0-alpha05
10 أغسطس 2018
إصلاح الأخطاء
- تم إصلاح الخطأ الذي تسبَّب في حدوث سلوك غير صحيح في سجلّ الرجوع. b/111907708
- تم إصلاح خطأ في
equals()من فئات Generated Args. b/111450897 - إصلاح خطأ في عملية الإنشاء في Safe Args b/109409713
- إصلاح تحويل من معرّفات الموارد إلى أسماء Java b/111602491
- إصلاح رسائل الخطأ المتعلّقة بقيمة Null في المكوّن الإضافي Safe Args
- إضافة تعليقات توضيحية بشأن إمكانية قبول القيم الخالية
الإصدار 1.0.0-alpha04
19 يوليو 2018
يتضمّن مكوّن Navigation 1.0.0-alpha04 الإضافي في Gradle المرتبط بـ Safe Args عددًا من التغييرات في واجهة برمجة التطبيقات وتغييرات في السلوك وعمليات إصلاح للأخطاء.
التغييرات في واجهة برمجة التطبيقات / السلوك
- سيضبط NavHostFragment دائمًا الجزء الحالي على أنّه جزء التنقّل الأساسي، ما يضمن إيقاف مديري الأجزاء الفرعية قبل إيقاف NavController الخارجي b/111345778
Safe Args
- تغيير قد يؤدي إلى أعطال: تم تغيير
app:typeإلىapp:argTypeلتجنُّب التعارض مع مكتبات أخرى، مثل ConstraintLayout 2.0.0-alpha1 b/111110548 - أصبحت رسائل الخطأ من Safe Args قابلة للنقر الآن b/111534438
- تتأكّد فئات Args الآن من أنّ سمات
NonNullليست فارغة فعلاً b/111451769 - تمت إضافة تعليقات توضيحية إضافية
NonNullإلى الفئتَين NavDirections وArgs اللتين تم إنشاؤهما b/111455455 b/111455456
إصلاح الأخطاء
- تم إصلاح مشكلة في زر الرجوع في النظام بعد الربط العميق بمكان جزء b/111515685
الإصدار 1.0.0-alpha03
12 يوليو 2018
يتضمّن مكوّن Navigation 1.0.0-alpha03 الإضافي في Gradle المرتبط بـ Safe Args عددًا من التغييرات في واجهة برمجة التطبيقات وتغييرات في السلوك وعمليات إصلاح للأخطاء.
التغييرات في واجهة برمجة التطبيقات / السلوك
- تمت إضافة طريقة NavigationUI.setupWithNavController إلى شريط الأدوات b/109868820
- تمت إضافة طريقة NavigationUI.setupWithNavController إلى CollapsingToolbarLayout b/110887183
- تعرض الدالة popBackStack() الآن القيمة "خطأ" عندما تكون قائمة الأنشطة السابقة فارغة أو عندما لا يكون معرّف الوجهة المحدّد في قائمة الأنشطة السابقة b/110893637
- يتجاهل FragmentNavigator الآن عمليات التنقّل بعد أن يحفظ FragmentManager الحالة، ما يؤدي إلى تجنُّب استثناءات "لا يمكن تنفيذ هذا الإجراء بعد onSaveInstanceState" b/110987825
Safe Args
- تغيير غير متوافق مع الإصدارات السابقة: سيتم استبدال الأحرف غير الأبجدية الرقمية في أسماء الإجراءات والوسيطات بنمط Camel Case في أسماء طرق NavDirections المعنية
- على سبيل المثال، سيصبح
DemoController.indexهوsetDemoControllerIndexb/79995048 - على سبيل المثال، سيصبح
action_show_settingsactionShowSettingsb/79642240
- على سبيل المثال، سيصبح
- تغيير غير متوافق: أصبحت الوسيطات الآن غير فارغة تلقائيًا. للسماح بالقيم الفارغة في وسيطات السلسلة والقابلة للتجزئة، أضِف
app:nullable="true"b/79642307 - يمكنك الآن استخدام
app:type="long"مع defaultValues بالتنسيق "123L" b/79563966 - أصبحت وسيطات Parcelable متاحة الآن، وذلك باستخدام اسم فئة مؤهَّل بالكامل لـ
app:type. القيمة التلقائية الوحيدة المتاحة هي"@null"b/79563966 - تتضمّن فئات Args الآن الرمزين
equals()وhashCode()b/79642246 - يمكن الآن تطبيق مكوّن Safe Args الإضافي على مشاريع المكتبة b/80036553
- يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع الميزات b/110011752
إصلاح الأخطاء
- تم إصلاح المشاكل التي تحدث عند التنقّل أثناء طرق دورة حياة Fragment b/109916080
- تم إصلاح المشاكل التي تحدث عند التنقّل في الرسومات البيانية المتداخلة عدة مرات b/110178671
- تم إصلاح المشاكل عند استخدام
setPopUpToمع الوجهة الأولى في الرسم البياني b/109909461 - تم إصلاح المشكلة التي كانت تؤدي إلى تمرير جميع قيم
app:defaultValueكسلاسل b/110710788 - تضيف أداة تجميع الموارد في Android (AAPT2) المضمّنة مع مكوّن إضافي لنظام Gradle المتوافق مع Android 3.2 Beta 01 الآن قواعد الاحتفاظ لكل سمة
android:nameفي ملفات XML الخاصة بميزة "التنقّل" b/79874119 - تم إصلاح تسرب الذاكرة عند استبدال FragmentNavigator التلقائي b/110900142
الإصدار 1.0.0-alpha02
7 يونيو 2018
التغييرات في السلوك
يستخدم
FragmentNavigatorالآنsetReorderingAllowed(true). b/109826220تعمل ميزة "التنقّل" الآن على فك ترميز وسيطات URL التي تم تحليلها من عناوين URL للروابط لصفحات معيّنة في التطبيق. b/79982454
إصلاح الأخطاء
تم إصلاح
IllegalStateExceptionعند طلب التنقّل من طرق دورة حياة Fragment. b/79632233تعتمد ميزة "التنقّل" الآن على الإصدار 27.1.1 من "مكتبة الدعم" لإصلاح مشكلة الوميض عند استخدام الصور المتحركة. b/80160903
تم إصلاح
IllegalArgumentExceptionعند استخدام defaultNavHost="true" كجزء ثانوي. b/79656847تم إصلاح
StackOverflowErrorعند استخدام NavDeepLinkBuilder. b/109653065تم إصلاح
IllegalArgumentExceptionعند الرجوع إلى رسم بياني متداخل. b/80453447تم إصلاح مشكلة تداخل الأجزاء عند استخدام
launchSingleTop. b/79407969تنشئ ميزة "التنقّل" الآن حزمة الخلف الاصطناعية الصحيحة للرسومات البيانية المتداخلة. b/79734195
ستعمل NavigationUI الآن على تمييز العنصر الصحيح عند استخدام رسم بياني متداخل كـ
MenuItem. b/109675998
تغييرات واجهة برمجة التطبيقات
تم إيقاف السمة
clearTaskللإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptionsنهائيًا. b/80338878تم إيقاف السمة
launchDocumentللإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptionsنهائيًا. b/109806636
الإصدار 1.0.0-alpha01
8 مايو 2018
توفّر ميزة التنقّل إطار عمل لإنشاء ميزة التنقّل داخل التطبيق. هذا الإصدار الأوّلي هو 1.0.0-alpha01.