التنقّل
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
17 نيسان (أبريل) 2024 | 2.7.7 | - | - | 2.8.0-alpha07 |
إعلان التبعيات
لإضافة تبعية على التنقل، يجب عليك إضافة مستودع Google Maven إلى مشروعك. لمزيد من المعلومات، يمكنك الاطّلاع على مستودع Maven من Google.
أضف التبعيات للعناصر التي تحتاجها في ملف build.gradle
لتطبيقك أو الوحدة الخاصة بك:
رائع
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
لإضافة الوسيطات الآمنة إلى مشروعك، ضمِّن classpath
التالي في ملف build.gradle
ذي المستوى الأعلى:
رائع
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
يجب أيضًا تطبيق أحد المكوّنَين الإضافيَين المتاحَين.
لإنشاء رمز لغة Java مناسب لوحدات Java وKotlin المختلطة، يمكنك إضافة
هذا السطر إلى ملف build.gradle
في التطبيق أو الوحدة:
رائع
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
وبدلاً من ذلك، لإنشاء رمز Kotlin المناسب للوحدات الخاصة بلغة Kotlin فقط، أضِف ما يلي:
رائع
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
يجب أن يكون لديك android.useAndroidX=true
في ملف gradle.properties
وفقًا لنقل البيانات إلى AndroidX.
للحصول على معلومات عن استخدام إضافات Kotlin، يُرجى الاطّلاع على مستندات ktx.
لمزيد من المعلومات حول التبعيات، يُرجى الاطّلاع على مقالة إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجِع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.
الإصدار 2.8
الإصدار 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)
تغييرات واجهة برمجة التطبيقات
- استمر توفير الوسيطات الآمنة في ميزة "إنشاء التنقل" باستخدام منهج يستند إلى تسلسل Kotlin. لم تكتمل واجهات برمجة التطبيقات هذه ويتم تمييزها بالتعليق التوضيحي
ExperimentalSafeArgsApi
. ستتم إزالة هذا التعليق التوضيحي بعد اكتمال عرض واجهة برمجة التطبيقات بالكامل في إصدار مستقبلي. (Iefd95، وI409c8، وI5b5ac، وI7e753، وI960f8، وI3eabd، وI8ed5a، وIed2c9، وIed2c9، وI9b73، وI9b73،19b73.
الإصدار 2.8.0-alpha06
3 نيسان (أبريل) 2024
تم طرح "androidx.navigation:navigation-*:2.8.0-alpha06
". يحتوي الإصدار 2.8.0-alpha06 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تم بدء دعم الوسيطات الآمنة في ميزة "الكتابة للتنقل" باستخدام أسلوب يستند إلى تسلسل Kotlin. لم تكتمل واجهات برمجة التطبيقات هذه ويتم تمييزها بالتعليق التوضيحي
ExperimentalSafeArgsApi
. ستتم إزالة هذا التعليق التوضيحي بعد اكتمال عرض واجهة برمجة التطبيقات بالكامل في إصدار مستقبلي. (I644e7 وI98896 وI2a1c5 وI43a51 وI836a1 وIc5eec وI39407 وI24e41 وIf19e وIf19e
إصلاح الأخطاء
- تم استخدام
Alignment.TopStart
الآن كوسيطة محاذاة المحتوى التلقائية لدىNavHost
. يضمن ذلك توافقها مع الإعدادات التلقائية لـAnimatedContent
وتُصلح بعض حالات تدرّج غير متوقّع من الانتقال المركزي. (I09e72، b/330111602) - عند تحريك إيماءة الرجوع إلى الخلف التنبؤية أثناء استخدام ميزة "كتابة التنقل"، سيؤدي الآن
NavHost
إلى إكمال عملية الانتقال المخصصة بشكل صحيح بدلاً من الانتهاء على الفور. (I99017، b/327292110)
الإصدار 2.8.0-alpha05
20 آذار (مارس) 2024
تم طرح "androidx.navigation:navigation-*:2.8.0-alpha05
". يحتوي الإصدار 2.8.0-alpha05 على هذه الالتزامات.
الميزات الجديدة
- يمكنك الآن تمرير الوسيطات إلى
startDestination
لـNavGraph
مباشرةً في مسارstartDestination
بدون الاعتماد علىdefaultValue
. ينطبق ذلك أيضًا علىNavGraph
startDestinations
المدمجة. (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
مطابقة المسارات المعبّأة بوسيطات المصفوفةNavTypes
بشكل صحيح. (Iea805، b/327229511)
الإصدار 2.8.0-alpha04
6 مارس 2024
تم طرح "androidx.navigation:navigation-*:2.8.0-alpha04
". يحتوي الإصدار 2.8.0-alpha04 على هذه الالتزامات.
الميزات الجديدة
- يمكنك الآن تحديد
SizeTranform
لانتقالاتك في "إنشاء التنقل" عن طريق تعريفها كجزء من تهيئة الدالتينcomposable
و/أوnavigation
. (I91062، b/296912651)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في تعذُّر عرض العنصر
NavHost
في التنقل في ComposeAllowed بشكل صحيح عند استخدام الرجوع إلى النظام بدون إيماءة. (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)
إصلاح الأخطاء
- تم إصلاح مشكلة في التنقّل تسبّبت في ظهور نماذج
NavGraph
ViewModels في وقت مبكر جدًاDESTROYED
، لأنّ إدخالViewModel
للإدخال المرتبط لم يكن جزءًا من الحالة المحفوظة. (Ib6bb7، b/317581849)
تعديل التبعية
- تعتمد ميزة "إنشاء التنقل" الآن على إنشاء 1.7.0-alpha03.
الإصدار 2.8.0-alpha02
7 شباط (فبراير) 2024
تم طرح "androidx.navigation:navigation-*:2.8.0-alpha02
". يحتوي الإصدار 2.8.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- توفّر ميزة "إنشاء التنقل" الآن إمكانية استخدام ميزة "التوقّع" مرة أخرى داخل التطبيق عبر واجهات برمجة التطبيقات
SeekableTransitionState
الجديدة من إنشاء الصور المتحركة. يتيح لك ذلك استخدام إيماءة الرجوع للاطّلاع على الوجهة السابقة من خلال خيار الانتقال المخصّص، وذلك قبل اتخاذ قرار بتنفيذ المعاملة أو إكمال المعاملة أو إلغاء العملية. (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)
تعديل التبعية
- تعتمد ميزة "إنشاء أثناء التنقل" الآن على ميزة الإنشاء
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 هذه الالتزامات.
إصلاح الأخطاء
- تمت العودة من صفحة التنقل
2.8.0-alpha01
: تسرّبBackStackState
الثابت حيث تؤدي طلباتsaveState()
المتعددة علىNavBackStackEntry
واحد إلى حفظ حالات متعددة، ولكن لا يمكن استعادة سوى الحالة المحفوظة الأولى. (I598b0، b/309559751) - تمت الرجوع إلى الصفحة السابقة من التنقل
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 هذه الالتزامات.
إصلاح الأخطاء
- تنظر الآن الدالة
equals()
لبرامجNavGraph
بشكل صحيح مع عُقد الرسم البياني الآخر بدلاً من الرسم البياني الاستدعاء فقط. سيضمن ذلك أن الرسوم البيانية التي تحتوي على عُقد بأرقام تعريف مختلفة لن تُعتبر بعد الآن متساوية (I401cb، b/311414915)
الإصدار 2.7.5
الإصدار 2.7.5
1 تشرين الثاني (نوفمبر) 2023
تم طرح "androidx.navigation:navigation-*:2.7.5
". يتضمّن الإصدار 2.7.5 هذه الالتزامات.
تحسينات الأداء
- حسّن الأداء بشكل كبير (من حيث الوقت وعدد التخصيصات) لمقارنة رسمين بيانيين. ويعني ذلك أنّ طلبات مثل
setGraph
التي تقارن داخليًا الرسم البياني الجديد بالرسم البياني الحالي تكون أسرع بكثير وتؤدي إلى تخطّي عدد أقل من اللقطات. شكرًا لك مايكل زي على التحليل الشامل الذي أدّى إلى هذا التحسين. (I6ad62) - ستعرض خدمة
NavHost
الآن وجهة البداية في البطاقة الأولى للمقطوعة الموسيقية بدلاً من الانتظار إلى أن تتم قراءة الحالة المعدّلة في البطاقة الثانية. (I439a7، b/304852206)
إصلاح الأخطاء
- تم إصلاح مشكلة ظهور الحزمة الخلفية عند استدعاء
setGraph
أكثر من مرة باستخدام الرسم البياني نفسه بالضبط فقط في حال وجود وجهة في الرسم البياني تتضمّن إجراءً يربط وجهتين. (Ieaed7) - لن يتم تسريب مربّعات الحوار التي تم الانتقال إليها وإغلاقها في تتابع سريع إلى قائمة
NavController.visibleEntries
بعد الآن. (I67586، b/287969970) - عندما يتم عرض إدخال متبوعًا بتغيير في الإعدادات، سيتم الآن محو
ViewModel
للإدخال بشكل صحيح إذا كانsaveState
خطأ. (Idf242، b/298164648) - تم إصلاح مشكلة تمكّن
NavController
من التعامل مع الرابط لصفحة في التطبيق نفسه أكثر من مرة إذا كانت حزمة الخلفية فارغة تمامًا قبل تغيير الإعدادات أو عند استدعاء الإجراءsetGraph
فقط عندما يتم ضبط علامةFLAG_ACTIVITY_NEW_TASK
على Intent الوارد. (I73c7f)
التعديلات على المهام التابعة للتبعية
- يعتمد التنقّل باستخدام الأجزاء الآن على Fragment 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)
إصلاح الأخطاء
- عليك حل المشكلة التي تؤدي فيها مقاطعة عملية تنقّل أخرى باستخدام
popUpTo
إلى تعطُّلFragmentNavigator
. (I3c848، b/301887045) - تم إصلاح المشكلة التي كانت تؤدي فيها الضغط مرة أخرى على النظام إلى عدم تحديث
currentDestination
بشكل صحيح لمطابقة الجزء المعروض. (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 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة في ميزة التنقل باستخدام أجزاء تسببت في احتواء قائمة
visibleEntries
على إدخالات غير صحيحة. (I5caa9، b/288520638) - تم إصلاح مشكلة تسبّبت في عدم تلقّي وجهة النافذة العائمة مطلقًا (مثل
Dialogs
وBottomsheets
وما إلى ذلك) عدم تلقّي معاودة الاتصال خلال مراحل نشاطRESUMED
. (I3b866، b/287505132)
الإصدار 2.7.2
الإصدار 2.7.2
6 أيلول (سبتمبر) 2023
تم طرح "androidx.navigation:navigation-*:2.7.2
". يتضمّن الإصدار 2.7.2 هذه الالتزامات.
إصلاح الأخطاء
- يعتمد التنقّل الآن على دورة الحياة
2.6.2
، وهو إصلاح التفاعل بينrememberSaveable
والرمزNavHost
الخاص بسمة "التنقل" والذي سيؤدي إلى استعادة حالة الوجهاتrememberSaveable
وأي مثيلاتSavedStateHandle
تملكهاViewModel
بشكلٍ صحيح بعد إيقاف العملية وإعادة إنشائها. (b/298059596، b/289436035) - تم إصلاح مشكلة عند عرض مربّعات حوار متعددة في "إنشاء أثناء التنقل" في الوقت نفسه، حيث تكون مربّعات الحوار المحجوبة جزئيًا (على سبيل المثال، ليست أعلى مربّع الحوار) في حالة دورة حياة
CREATED
بدلاً من حالةSTARTED
. (aosp/2728520، b/289257213) - تم إصلاح مشكلة عند عرض مربّعات حوار متعددة في "إنشاء أثناء التنقل" في آنٍ واحد، حيث يؤدي إغلاق مربّع الحوار العلوي في الوقت نفسه إلى توقُّف مربّع الحوار الجديد في أعلى الصفحة في حالة دورة حياة
STARTED
بدلاً من الانتقال بشكل صحيح إلىRESUMED
. (aosp/2629401، b/286371387) - لم تعد ميزة "التنقل الآمن" تعمل على إنشاء مثيل لمهمتها في حال لم يتم تنفيذها في الواقع. (I0e385، b/260322841)
تعديل التبعية
- تعتمد ميزة "إنشاء أثناء التنقل" الآن على الإصدار 1.5.1 من "إنشاء".
الإصدار 2.7.1
الإصدار 2.7.1
23 آب (أغسطس) 2023
تم طرح "androidx.navigation:navigation-*:2.7.1
". يتضمّن الإصدار 2.7.1 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشاكل في التنقّل باستخدام ميزة "الإنشاء" والتي كانت تؤدي إلى حدوث خطأ عند استخدام
Scaffold
عند محاولة الوصول إلىViewModel
علىLifecycle.State.DESTROYED
. (I1dc11، b/268422136)
الإصدار 2.7.0
الإصدار 2.7.0
9 آب (أغسطس) 2023
تم طرح "androidx.navigation:navigation-*:2.7.0
". يتضمّن الإصدار 2.7.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 2.6.0
صور متحركة من Accompanist
بما أنّ AnimatedContent
أصبح ثابتًا، استطعنا نقل الرمز من Accompanist Navigation Animation مرة أخرى إلى 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
من1.1.0
.
الإصدار 2.7.0-rc01
26 تموز (يوليو) 2023
تم طرح "androidx.navigation:navigation-*:2.7.0-rc01
". يتضمّن الإصدار 2.7.0-rc01 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة التي تتمثل في إمكانية الاحتفاظ بلامدا
EnterTransition
وExitTransition
اللتين تم إنشاؤهما كجزء منNavHost
في الذاكرة حتى بعد إزالةNavHost
من التراكيب. (I893d0)
المشاكل المعروفة
- هناك مشكلة في Navigation 2.6.x تؤدي إلى حدوث
IllegalArgumentException
عند التنقّل باستخدام PopUpTo. من الممكن تجنُّب هذا الاستثناء من خلال إعادة هيكلة الرسم البياني، على غرار النصيحة المقترَحة هنا. (b/287133013)
الإصدار 2.7.0-beta02
28 حزيران (يونيو) 2023
تم طرح "androidx.navigation:navigation-*:2.7.0-beta02
". يتضمّن الإصدار 2.7.0-beta02 هذه الالتزامات.
إصلاح الأخطاء
- تشتمل ميزة "إنشاء التنقل" الآن على الترتيب z الصحيح لعمليات الانتقال المخصصة التي تستخدم التنقل مع الخيار
popUpTo
.(/Ib1c3a، b/285153947)
الإصدار 2.7.0-beta01
7 حزيران (يونيو) 2023
تم طرح "androidx.navigation:navigation-*:2.7.0-beta01
". يتضمّن الإصدار 2.7.0-beta01 هذه الالتزامات.
إصلاح الأخطاء
- إنّ ميزة "
NavHost
" في ميزة "إنشاء أثناء التنقل" يعترض الآن بشكل صحيح استدعاءات النظام مرة أخرى حتى بعد تغيير قيمةActivity
إلىSTOPPED
وRESUMED
. (Icb6de، b/279118447)
الإصدار 2.7.0-alpha01
24 أيار (مايو) 2023
تم طرح "androidx.navigation:navigation-*:2.7.0-alpha01
". يحتوي الإصدار 2.7.0-alpha01 على هذه الالتزامات.
صور متحركة من Accompanist
بما أنّ AnimatedContent
أصبح ثابتًا، استطعنا نقل الرمز من Accompanist Navigation Animation مرة أخرى إلى Navigation Compose نفسه.
وهذا يعني أنّ جميع ميزات ضبط الانتقالات المخصّصة التي كانت متوفّرة في AnimatedNavHost
تتوفر بشكل مباشر في NavHost
.
لن يتم إجراء أي تغييرات إضافية على Accompanist Navigation Animation وسيتم إيقافها رسميًا قريبًا قريبًا، بالإضافة إلى إرشادات حول كيفية إعادة النقل إلى Navigation Compose نفسه، ولكن ستكون هذه التغييرات عكس دليل نقل البيانات بدون الحاجة إلى أي تغييرات أخرى في واجهة برمجة التطبيقات إذا كنت تستخدم الإصدار الأولي من Accompanist (0.31.2-alpha
). (b/197140101)
إصلاح الأخطاء
- من التنقّل
2.6.0-rc02
: تم إصلاح مشكلة تتعلّق بميزة "التنقل في الأجزاء" حيث يؤدي التنقّل باستخدامpopUpTo
وتمييز جزء من الحزمة الخلفية بدون إعادة إنشاء العرض إلى توقُّف النظام عن العمل. (Ieb8d4، b/281726455)
التعديلات على المهام التابعة للتبعية
- يعتمد التنقّل الآن على إنشاء
1.5.0-beta01
.
الإصدار 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
المحدد.
تغييرات مهمة على ميزة "إنشاء ميزة التنقّل" منذ الإصدار 2.5.0
- عند معاينة عنصر قابل للإنشاء باستخدام
NavHost
، سيتم الآن عرضstartDestination
في NavGraph تلقائيًا. - يمكن الآن استخدام المسارات
NavController.popBackStack(route)
وNavController.getBackStackEntry(route)
وNavController.clearBackStack(route)
مع ملء الوسيطات جزئيًا أو كليًا. تجدر الإشارة إلى أنّ الوسيطات يجب أن تتطابق تمامًا مع وسيطات الإدخال. - عند محاولة إنشاء
NavDeepLink
فارغ باستخدامnavDeepLink
Kotlin DSL، ستظهر لك الآن تحذير من الوبر يشير إلى أنّ رابط الصفحة في التطبيق يحتاج إلى معرّف موارد منتظم (URI) و/أو إجراء و/أو نوع mimetype ليكون صالحًا.
تغييرات مهمة في ميزة "التنقّل باستخدام أجزاء" منذ الإصدار 2.5.0
- لم يعُد
NavHostFragment
يعترض زر الرجوع في النظام نفسه. يسمح هذا الإجراء للسمةFragmentManager
الأساسية بمعالجة النظام مرّة أخرى. يتيح هذا الإجراء للجزء1.7.0-alpha01
والإصدارات الأحدث توفير صورة متحركة "خلفية توقّعية" داخل التطبيق على أجهزة Android U. - عند استخدام التنقّل مع أجزاء، ستؤدي محاولة إجراء
FragmentTransaction
يدويًا لإضافة جزء إلى الحزمة الخلفية فيFragmentManager
إلى عرضIllegalArgumentException
. عليك دائمًا إضافة الأجزاء من خلال واجهة برمجة تطبيقاتnavigate()
. - عند استخدام السلسلة
${applicationId}
نفسها كعنصر نائب في السمتَينapp:data
وapp:dataPattern
في عنصر النشاط ضمن ملف XML للتنقّل، سيتم ملء العنصر النائب تلقائيًا بـpackageName
للسياق عند استخدام محتوى كبير. - يستخدم
FragmentNavigator
الآن واجهات برمجة التطبيقات الخاصة بالنقل عند التنقل والنقر علىNavBackStackEntries
. وبالتالي، سينتظرLifecycle
NavBackStackEntry
الآن إلى أن تكتمل التأثيرات الخاصة للدخول والخروج قبل نقلLifecycle.State
الأخير. - يستخدم
DialogFragmentNavigator
الآن واجهات برمجة التطبيقات الخاصة بالنقل عند التنقل والنقر علىNavBackStackEntries
. وهذا يعني أنّLifecycle
NavBackStackEntry
ستنتظر الآن حتى يتم نقلLifecycle
DialogFragment
إلىDESTROYED
قبل الانتقال إلىDESTROYED
نفسه. - يتيح لك "
NavHostFragment
" الآن استردادNavController
فور إرفاقNavHostFragment
بـFragmentManager
، وليس بعدonCreate()
فقط. - يعتمد دعم التنقّل لوحدات الميزات الديناميكية الآن على "مكتبة عرض الميزات" الدقيقة في Play.
- تعتمد ميزة "التنقل الآمن" الآن على الإصدار 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 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة في ميزة "التنقل" التي تتضمن أجزاءً، حيث تؤدي إزالة جزء من خلال التنقّل باستخدام
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)
إصلاح الأخطاء
- عند استخدام التنقّل مع أجزاء، ستؤدي محاولة إجراء
FragmentTransaction
يدويًا لإضافة جزء إلى الحزمة الخلفية فيFragmentManager
إلى عرضIllegalArgumentException
. عليك دائمًا إضافة الأجزاء من خلال واجهة برمجة تطبيقاتnavigate()
. (I6d38e) - عند وجود
navigate
يضيف إدخال وpopBackStack
يؤدي إلى إزالته في الإطار نفسه، فإن الإدخال العلوي الناتج في الحزمة الخلفية سيؤدي الآن إلى إعادته باستمرار إلىRESUMED
Lifecycle.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
بدون حفظ الحالة في "إنشاء التنقل". يؤدي ذلك أيضًا إلى إصلاح الخطأ الذي يحدث عند الانتقال إلى الوجهات المرتبطة ببنية الرسم البياني الجذري وحزمة الخلفية غير الصحيحة. (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) - إضافة أجزاء إلى
FragmentNavigator
"FragmentManager
" بدون استخدام التنقّل لن تؤدي إلى تعطُّل. (b17204، b/274167493)
التعديلات على المهام التابعة للتبعية
- يعتمد التنقّل الآن على دورة الحياة
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
s إلى حالة "الاستئناف" عند استخدام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)
تغييرات واجهة برمجة التطبيقات
- تتم الآن إضافة تعليقات توضيحية إلى كل عمليات حِمل
navigate
الزائدة البالغ عددهاNavController
باستخدام السمة@MainThread
لضمان طلبها في سلسلة المحادثات الرئيسية. (I2c0b0، b/263427111)
إصلاح الأخطاء
- تم إصلاح عطل عند محاولة التنقل أثناء استخدام التنقل في جزء ديناميكي. (I3ee29، b/268360479)
- خطأ تم إصلاحه لا يؤدي الانتقال إلى جزء آخر من خلال زر الرجوع في النظام إلى تعديل الشريط السفلي إلى العنصر المحدد الصحيح (If559f، b/269044426)
المشاكل المعروفة
- عند استخدام التنقّل باستخدام أجزاء، يتعذّر الوصول إلى
RESUMED
خلال مراحل نشاطNavBackStackEntry
عند استخدام واجهات برمجة تطبيقاتAnimation
. (b/269646882) - عند استخدام التنقل باستخدام أجزاء والتنقل باستخدام
BottomNavigation
، إذا حاولت استعادة حزمة خلفية مع إدخالات متعددة، لن يتم تحديثBottomMenuItem
بشكل صحيح. (b/270447657) - عند استخدام التنقل مع أجزاء، بعد استعادة الحالة، لن يحصل
NavBackStackEntry
Lifecycle
علىDESTROYED
عندما يكون الجزء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
. وبالتالي، سينتظرLifecycle
NavBackStackEntry
الآن إلى أن تكتمل التأثيرات الخاصة للدخول والخروج قبل نقلLifecycle.State
الأخير. (I3cb19، b/238686802) - يستخدم
DialogFragmentNavigator
الآن واجهات برمجة التطبيقات الخاصة بالنقل عند التنقل والنقر علىNavBackStackEntries
. وهذا يعني أنّLifecycle
NavBackStackEntry
ستنتظر الآن حتى يتم نقلLifecycle
DialogFragment
إلى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)
إصلاح الأخطاء
- لن تعمل حالة المستكشف الآن عند استخدام واجهات برمجة التطبيقات
push/popWithTransition
ويكون الإدخال قيد المعالجة. (Iadbfa، b/261213893) - عند استخدام
launchSingleTop
معNavGraph
مُدمَجة، ستتم إضافة جميع الوجهات بدءًا من وجهتها الأصلية إلىstartDestination
بشكلٍ صحيح إلى أعلى مجموعة الخلايا الخلفية. (Id4bea، b/253256629) - ستستبدل ميزة التنقّل الآن مثيل
DialogFragment
بشكل صحيح عند الانتقال إلى الوجهة نفسها مع ضبط علامةlaunchSingleTop
على "صحيح". (I45b5a، b/149572817) - لن يتسبّب التنقل 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)
- تعتمد ميزة "التنقل الآمن" الآن على الإصدار 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
: تم إصلاح المشكلة المتمثلة في عدم حذف حالة الإنشاء المحفوظة (على سبيل المثال، استخداماتrememberSaveable
) وإزالتها عندما ظهرت وجهة في الحزمة الخلفية. (I64949)
التعديلات على المهام التابعة للتبعية
- يعتمد التنقّل الآن على الجزء
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
. (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
فارغ باستخدامnavDeepLink
Kotlin DSL، ستظهر لك الآن تحذير من الوبر يشير إلى أنّ رابط الصفحة في التطبيق يحتاج إلى معرّف موارد منتظم (URI) و/أو إجراء و/أو نوع mimetype ليكون صالحًا. (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) - من التنقل
2.5.2
: سيحل التنقّل الآن محل مثيل "الجزء" بشكل صحيح عند الانتقال إلى الوجهة نفسها وضبط علامة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) - تم إصلاح المشكلة المتمثلة في عدم حذف حالة الإنشاء المحفوظة (على سبيل المثال، استخدامات
rememberSaveable
) وإزالتها عندما ظهرت وجهة في الحزمة الخلفية. (I64949)
الإصدار 2.5.2
7 أيلول (سبتمبر) 2022
تم طرح "androidx.navigation:navigation-*:2.5.2
". يتضمّن الإصدار 2.5.2 هذه الالتزامات.
إصلاح الأخطاء
- يحاول الانتقال الديناميكي الآن تثبيت وجهات النشاط بشكل صحيح من الوحدات الأخرى قبل الانتقال إليها. (Ia2c16، b/240292838)
- سيحل التنقل الآن محل مثيل "الجزء" بشكل صحيح عند الانتقال إلى نفس الوجهة وضبط علامة
launchSingleTop
على "صحيح". (I5a2f1، b/237374580) - تم إصلاح
IllegalStateException
بسبب الانتقال إلى رسم بياني مزدوج متداخل يشارك عنصر رئيسي مع وجهة بداية جديدة بارزة. (I9f7cb، b/243778589)
تعديل التبعية
- يعتمد التنقل
2.5.2
الآن على الجزء1.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)
التعديلات على المهام التابعة للتبعية
- تعتمد مكتبة التنقّل الآن على دورة الحياة
2.5.1
. (Ib4451) - تعتمد مكتبة التنقل الآن على النشاط
1.5.1
. (I3efe8) - تعتمد مكتبة التنقّل الآن على الجزء
1.5.1
. (I56177)
الإصدار 2.5.0
29 حزيران (يونيو) 2022
تم طرح "androidx.navigation:navigation-*:2.5.0
". يتضمّن الإصدار 2.5.0 هذه الالتزامات.
التغييرات المهمة منذ الإصدار 2.4.0
- CreationExtras Integration: بإمكان "
Navigation
" الآن توفير إذنViewModelProvider.Factory
بدون حالة من خلال الإضافةCreationExtras
إلى رحلة المستخدم2.5.0
في دورة الحياة2.5.0
.
التنقل الآمن
- تمت ترقية تبعية
Android Gradle Plugin
من قِبلNavigation Safe Args
للاعتماد على7.0.4
، ما أدّى إلى إلغاء التوافق مع إصدارات AGP قبل7.0
. - تمت إضافة توافق سمة مساحة الاسم Build.gradle التي سيتم استخدامها بدلاً من appId.
التغييرات الأخرى
- لم تعُد واجهة برمجة التطبيقات
visibleEntries
تجريبية، حيث توفّر دالة لاسترداد جميع الإدخالات التي تظهر وجهتها حاليًا وفقًا لـNavController
.
الإصدار 2.5.0-rc02
15 حزيران (يونيو) 2022
تم طرح "androidx.navigation:navigation-*:2.5.0-rc02
". يحتوي الإصدار 2.5.0-rc02 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح عطل ناتج عن التبديل السريع بين الوجهات السفلية عند استخدام "إنشاء التنقل"
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 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة قاعدة Lit جديدة للتحذير من وضع عناصر
<deeplink>
داخل عناصر<activity>
في الملفnavigation.xml
.(Ic15a5، b/178403185)
إصلاح الأخطاء
- تم الآن التخلص من النطاقات القابلة للإنشاء في
NavHost
وDialogHost
بالترتيب المتوقع، أي يتم التخلص من العناصر الداخلية القابلة للإنشاء قبل العنصر الخارجي. (I157e6) - تستخدم ميزة الملاحة الآمنة الآن
PathSensitivity.RELATIVE
فيArgumentsGenerationTask
للسماح بإعادة تحديد موقع ذاكرة التخزين المؤقت. وهذا يعني أنّه يمكن الآن إعادة استخدام إدخال ذاكرة التخزين المؤقت من إصدار CI إلى إصدار محلي. (I5f67c، b/173420454) - تم تعديل قاعدة Lint في
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)
التعديلات على المهام التابعة للتبعية
- يعتمد التنقّل الآن على دورة الحياة
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) - يستند عمود "
StateFlow
" في "visibleEntries
" المقدَّم من "NavController
" الآن إلى حالة دورة الحياة القصوى للإدخال بدلاً من حالة دورة الحياة الحالية. وهذا يعني أنّه حتى إذا انخفضت دورة حياة المضيف لـnavController
عن "بدء"، ستظل قائمة الكليات المرئية كما هي. (I9e2a8، b/225394514) - يتيح
SavedStateViewFactory
الآن استخدامCreationExtras
حتى عند إعداده باستخدامSavedStateRegistryOwner
. وفي حال توفير ميزات إضافية، يتم تجاهل الوسيطات التي تم إعدادها. (I6c43b، b/224844583) - بإمكان "
NavDeepLink
" الآن تحليل Uris باستخدام مَعلمة طلب بحث واحدة بدون قيمة. (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) - أصبحت ميزة "التنقل الآمن" متوافقة الآن مع استخدام مساحة الاسم المحدّدة في
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
بشكل صحيح عند استخدام ربط العرض مع الرسوم البيانية المدمجة. (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، التي تم تقديمها كجزء من دورة الحياة2.5.0-alpha01
. (Ib9fe2، b/207012490)
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم إمكانية الوصول إلى
ViewModel
تم إنشاؤها عبرby navGraphViewModels()
منonCreate()
للجزء عند استخدامIllegalStateException
. (I8a14d) - لن تحتاج
NavDeepLink
بعد الآن إلى فك ترميز الوسيطات مرتين، ما يعني أنّه يتم الآن تمرير الوسيطات الصحيحة إلى وجهتك النهائية. (I31b0a، b/210711399)
الوسيطات الآمنة
- تعتمد Safe Args الآن على الإصدار 7.0.4 من مكوّن Android Gradle الإضافي. ويعني هذا أنّ وسيط التنقل الآمن لن تكون متوافقة بعد الآن مع إصدارات "استوديو 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 هذه الالتزامات.
إصلاح الأخطاء
- تمت العودة إلى الإصدار السابق من ميزة التنقل
2.5.0-alpha03
: يتيحNavDeepLinks
الآن استخدام أحرف الأسطر الجديدة المشفرة بشكل صحيح والمضمّنة في معرّفات الموارد المنتظمة (URI) للمسارات/الروابط لصفحات في التطبيق. (I513d1، b/217815060) - تمت إتاحة هذه الميزة في ميزة التنقل
2.5.0-alpha03
: تتيح ميزة Navigation SafeArgs الآن استخدام مساحة الاسم المحدّدة فيbuild.gradle
بدلاً من الحزمة في AndroidManifest. (I659ef، b/217414933) - تمت العودة إلى الإصدار السابق من ميزة التنقل
2.5.0-alpha04
: لن يتعطلNavigation Safe Args
بعد ذلك عند استخدام مساحات الأسماء ولا يتوفّرAndroidManifest.xml
بعد ذلك. (I17ccf، b/227229815) - تمت العودة إلى الصفحة السابقة من التنقل
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
بشكلٍ صحيح عند استخدام ربط العرض بالرسوم البيانية المدمجة. (Ifbb51، b/214577959) - عند الربط بصفحة معيّنة من خلال
NavGraph
مدمَجة متعددة، ستتضمّن الحزمة الخلفية الآن وجهات بدء وسيطة بشكلٍ صحيح. (I504c0، b/214383060) - تمت العودة من صفحة التنقّل
2.5.0-alpha01
: تم إصلاح مشكلة تتعلّق بعدم إمكانية الوصول إلى ViewModel التي تم إنشاؤها عبرby navGraphViewModels()
منonCreate()
لجزء ضمن جزء معيّن، وذلك عند استخدامIllegalStateException
. (I8a14d) - تمت إزالة الترميز من صفحة التنقل
2.5.0-alpha01
: لم يعُدNavDeepLink
فك ترميز الوسيطات غير الضرورية مرتين، ما يعني أنّ الوسيطات التي تم فك ترميزها بشكل صحيح يتم تمريرها الآن إلى وجهتك النهائية. (I31b0a، b/210711399) - الرجوع من صفحة التنقّل
2.5.0-alpha01
: تعتمد 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
- تمت إعادة كتابة جميع عناصر التنقّل باستخدام لغة البرمجة Kotlin. أدّى ذلك إلى تحسين إمكانية إلغاء القيم الفارغة للصفوف التي تستخدم فئات عامة (مثل الفئات الفرعية
NavType
). تم نقل جميع دوال إضافات Kotlin التي كانت في السابق جزءًا من عناصر-ktx
إلى العناصر الرئيسية الخاصة بها. سيستمر نشر عناصر-ktx
، ولكنها فارغة تمامًا. - يحتوي عنصر
navigation-fragment
الآن على تنفيذ مُعدّ مسبقًا لتنسيق من جزأين من خلالAbstractListDetailFragment
الجديد. يستخدم هذا الجزءSlidingPaneLayout
لإدارة لوحة القائمة (التي توفّرها فئتك الفرعية) وجزء التفاصيل الذي يستخدمNavHostFragment
كتنفيذ، كما هو موضّح في مثال التنفيذ. - توفّر طريقة
currentBackStackEntryAsFlow()
فيNavController
قيمةFlow
تصدر كلما تغيّرتNavBackStackEntry
الحالية. ويمكن استخدام هذا المسار كبديل لإدارةOnDestinationChangedListener
يدويًا. - توفّر NavController الآن إمكانية استرداد قائمة بجميع مثيلات
NavBackStackEntry
المرئية على أنهاStateFlow
عبر خاصيةvisibleEntries
التجريبية. - يمكن الآن توسيع الفئة
NavType
لإنشاء NavTypes مخصّصة. لا تتم إتاحة الأنواع المخصّصة إلا عند إنشاء الرسم البياني للتنقّل بطريقة آلية، مثل رسم بياني للتنقُّل في Kotlin DSL. يوفر التنقل الآن واجهات برمجة تطبيقات
findStartDestination()
وgetHierarchy()
التي يمكن استخدامها للمساعدة في تنفيذ واجهة برمجة تطبيقات التنقل المخصصة.findStartDestination()
هي دالة إضافة فيNavGraph
ستحدد وجهة البدء الفعلية التي سيتم عرضها عند الانتقال إلى الرسم البياني، حتى إذا كانتstartDestination
نفسها عبارة عنNavGraph
متداخلة.getHierarchy()
هي دالة علىNavDestination
يمكن استخدامها للتحقق مما إذا كانت وجهة معيّنة ضمن التدرج الهرمي لجهة أخرى.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
تم تعديل طُرق
NavigationUI
التي استخدمتBottomNavigationView
لتخضع فئتها الفائقة في المادة1.4.0
رقم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 DSL
اعتمدت الإصدارات السابقة من التنقّل على كل وجهة تحتوي على رقم تعريف عدد صحيح ثابت يحدّدها بشكلٍ فريد من الوجهات التابعة لها ويسمح لك بالانتقال إلى navigate()
إلى تلك الوجهة إما مباشرةً أو من خلال إجراء. لا يزال ذلك صالحًا ومفيدًا، خصوصًا في الحالات التي تحدّد فيها الرسم البياني للتنقّل باستخدام ملف XML ويمكنك استخدام الثوابت R.id
التي يتم إنشاؤها تلقائيًا أو الوسيطات الآمنة (التي تستخدم تلك الثوابت لإنشاء الرموز في وقت الإنشاء)، إلا أنّ نظام الأعداد الصحيحة الفريدة لم يلتقط المعنى الدلالي والتعبير عن النفس اللازم لإتاحة الرسومات البيانية الديناميكية بالكامل التي تم إنشاؤها آليًا في وقت التشغيل من خلال التنقل Kotlin DSL.
يقدّم هذا الإصدار خيارًا جديدًا لتحديد الوجهة بشكل فريد في رسم بياني للتنقل من خلال مساره. المسار هو String
الذي يحدد المسار الفريد إلى وجهة ما. جميع طرق Kotlin DSL التي تستخدم رقم تعريف وجهة تم إيقافها نهائيًا واستبدالها بواجهة برمجة تطبيقات مكافئة تتخذ مسارًا.
يجب التعامل مع كل مسار باعتباره جزء "المسار" في Uri
الذي يحدد هذه الوجهة، على سبيل المثال، home
وprofile/{userId}
وprofile/{userId}/friends
وما إلى ذلك. عندما تكون هوية وجهة مرتبطة بجزء معيّن من المحتوى، يجب أن تكون هذه الوسيطات الديناميكية جزءًا من المسار، وتتّبع القواعد نفسها المتّبعة في الروابط الضمنية لصفحات في التطبيق.
جميع واجهات برمجة التطبيقات NavController
التي كانت تستخدم رقم تعريف فقط لديها الآن حمل زائد يأخذ مسار String
. يشمل ذلك navigate()
وpopBackStack()
وpopUpTo()
وgetBackStackEntry()
.
وقد ينتج عن ذلك بعض الآثار الناتجة عن واجهة برمجة التطبيقات:
- تم إيقاف سمة
popUpTo
Kotlin على Kotlin DSL لصالحpopUpToId
. - تم إيقاف واجهة برمجة التطبيقات
getStartDestination()
API لصالحgetStartDestinationId()
.
على عكس التنقل باستخدام رقم التعريف، يتّبع التنقّل حسب المسار القواعد نفسها المتّبعة في الروابط الضمنية لصفحات في التطبيق، حيث يمكنك الانتقال مباشرةً إلى أي وجهة في أي رسم بياني مدمج، ما يضمن إمكانية استخدام هذه المسارات في المشاريع المتعددة الوحدات بدون إضافة رابط لموضع معيّن مرئي خارجيًا لكل وجهة.
إنشاء التنقل
يوفر عنصر navigation-compose
التكامل بين مكوِّن التنقل وJetpack Compose. وتستخدم وظائف @Composable
كوجهات في تطبيقك.
يوفّر هذا الإصدار ما يلي:
NavHost
قابل للإنشاء يتيح لك إنشاء رسم بياني للتنقّل عبر Kotlin DSL، باستخدام الوجهتينcomposable
وdialog
، بالإضافة إلى أجهزة الملاحة الاختيارية مثل تلك من مواد التنقل من Accompanist.- توفير الدعم الإلزامي لتقاطع الوجهات بين الوجهات يمكن استخدام Accompanist Navigation Animation للتحكم في انتقالات الدخول والخروج باستخدام واجهات Compose API التجريبية.
- تحديد نطاق
Lifecycle
لكل وجهة قابلة للإنشاء لا تصل كل وجهة إلى حالةRESUMED
إلا عند انتهاء أي انتقالات دخول، وتنخفض على الفور إلىSTARTED
عند بدء أي عمليات انتقال خروج، ما يسمح لك بتجنُّب جميع مشاكلIllegalStateException
واللمس المتعدد من خلال بدء طلبnavigate
فقط عندما تكونLifecycle
RESUMED
. - تحديد نطاق
ViewModel
(من خلال واجهة برمجة التطبيقاتviewModel()
إنشاء نموذج عرض دورة الحياة2.4.0
أوhiltViewModel()
من إنشاء التنقّل بالتنقّل1.0.0
على مستوى الوجهة، ما يوفّر نطاقًا لا يتضمّن تغييرات الإعدادات ويكون على الحزمة الخلفية (عند التخلص من المحتوى القابل للإنشاء) وإشارة في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()
}
}
}
راجع دليل إنشاء التنقل للحصول على مزيد من المعلومات.
حزم خلفيات متعددة
تكون NavController مسؤولة عن إدارة الحزمة الخلفية من الوجهات، وإضافة الوجهات إلى الحزمة الخلفية عند navigate()
إليها وإزالتها عند طلب popBackStack()
أو تشغيل زر الرجوع في النظام. تم توسيع فئة NavOptions
الحالية والدمج مع عناصر <action>
في ملف XML الخاص بالرسم البياني للتنقّل لإتاحة حفظ الحزمة الخلفية واستعادتها.
في إطار هذا التغيير، يتم الآن تلقائيًا حفظ حالة الوجهات المنبثقة في طُرق العرض المعروضة واستعادتها باستخدام طُرق NavigationUI
، وهي onNavDestinationSelected()
وBottomNavigationView.setupWithNavController()
وNavigationView.setupWithNavController()
، ما يتيح استخدام حزم بيانات سابقة متعددة بدون أي تغيير في الرمز. عند استخدام التنقل باستخدام أجزاء، هذه هي الطريقة الموصى بها للتكامل مع العديد من الحزم الخلفية.
يتم عرض واجهات برمجة التطبيقات الأساسية لحفظ الحالة واستعادتها من خلال عدد من مساحات العرض:
في ملف 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” />
في
navOptions
Kotlin 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()
، ما يضمن عمل واجهة برمجة التطبيقات هذه على النحو المتوقّع عند استهداف الإصدار 12 من نظام التشغيل Android. - يعتمد التنقّل الآن على
دورة الحياة
2.3.1
وأصبح يمثّل الآنsetGraph()
وpopBackStack()
وnavigateUp()
وnavigate()
، وهي الطرق التي تُعدِّلNavBackStackEntry
Lifecycle
باسم@MainThread
، ما يجعل التنقّل متوافقًا مع عملية تنفيذ سلسلة الإجراءات الرئيسية التي تم تقديمها في دورة الحياة2.3.0
. - تتحقق الروابط المؤدية إلى صفحات في التطبيق الآن من أنّ جميع الوسيطات المطلوبة (التي لا تتضمن قيمًا تلقائية) متوفّرة في
Uri
. NavDeepLink
تعتبر الوسيطات التي تم تحليلها الآن علامات الجنيه نفسها مثل علامات الاستفهام كفاصل بين قطاعات المسار، ما يمنع وسيطة من الامتداد عبر علامة الجنيه.- عند إنشاء الإجراءات، يضع رمز Kotlin الذي تم إنشاؤه من Safe Args الآن الوسيطات بدون القيم التلقائية قبل تلك التي تتضمّن قيمًا تلقائية كمَعلمات.
- عند إنشاء الوسيطات، تضع الوسيطات الآمنة الآن المعلمات بدون قيم افتراضية قبل تلك ذات القيم الافتراضية.
- تعتمد "نظام التشغيل الآمن" الآن على الإصدار 4.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. وهذا يعني أنّه من المفترض ألّا يظهر لك تحذير استخدام
applicationIdTextResource
بعد الآن.
المشاكل المعروفة
- تم إصلاحه في التنقل
2.5.0-alpha01
: سيتعذر الوصول إلىViewModel
تم إنشاؤه عبرby navGraphViewModels()
منonCreate()
للجزء باستخدامIllegalStateException
. (b/213504272) - إصلاح المشكلة في التنقّل
2.5.0-alpha01
: لا يتوافق الإصدار Safe Args 2.4.0 مع الإصدار 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)
إصلاح أخطاء إنشاء التنقل
- تم إصلاح العطل المحتمل الذي نتج عن التبديل السريع بين وجهة البدء ووجهة أخرى باستخدام عناصر قائمة التنقل السفلي. (Ic8976، b/208887901)
- تتم الآن استعادة وجهة مربّع الحوار بشكل صحيح أعلى الشاشة بعد تغيير الإعدادات أو إيقاف المعالجة. (I4c0dc، b/207386169)
- تم إصلاح المشكلة التي كانت تؤدي إلى تعذُّر محاولة استرداد
ViewModel
منNavBackStackEntry
لمربّع حوار عند إغلاق مربّع الحوار. (I6b96d، b/206465487) - تم إصلاح مشكلة عند استخدام وجهات
activity
معNavHost
في ميزة "التنقل" والتي قد تؤدي إلى عمليات إعادة تركيب لامتناهية. (I8f64c) - تم إصلاح تسرُّب في ميزة "إنشاء ميزة التنقّل" حيث كان يتم الاحتفاظ بمرجع من النشاط القديم بعد تغيير في الإعدادات أو إيقاف العملية. (I4efcb، b/204905432)
إصلاحات أخطاء 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
على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
API في مرحلة تجريبية. (I93f6f)
إصلاح الأخطاء
- لن يتم إتلاف ViewModels بعد الآن عند مقاطعة الانتقالات من خلال التنقل ذهابًا وإيابًا بين الشاشات نفسها (Id52d8، b/200817333)
- لم تعد وسيطات
NavDeepLink
غير الصالحة تتطلب قيمة تلقائية عند إضافة روابط لصفحات في التطبيق إلىNavDestination
. (I5aad4، b/201320030) - لا تُعد NavBackStackEntries الآن ذات دورات حياة مختلفة متساوية. وهذا يعني أن NavHost سيعيد إنشاء جميع الوجهات بشكلٍ صحيح عند إجراء التنقل باستخدام oneTop وعند إعادة تحديد عناصر القائمة السفلية. (I1b351، b/196997433)
- تم إصلاح مشكلة في
AbstractListDetailFragment
تسبّبت في معالجة أو تجاهل السمتينlayout_width
وlayout_weight
في جزء القائمة الذي يعرضهonCreateListPaneView()
. (f5fbf3) - وتتزامن الحالة المرئية لوجهات مربّعات الحوار الآن
بشكل صحيح مع حالة
DialogFragmentNavigator
. وهذا يعني أنّ استدعاء واجهة برمجة التطبيقاتdismiss()
غير المتزامن لـ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
المرئية عبرvisibleEntries
StateFlow (Ia964e) - تأخذ ميزة "
rememberNavController()
" الآن مجموعة اختيارية من مثيلاتNavigator
التي ستتم إضافتها إلىNavController
التي تم إرجاعها لتوفير دعم أفضل لبرامج التنقّل الاختيارية، مثل تلك الواردة من مواد التنقّل المتوافقة مع الأجهزة الجوّالة. (I4619e)
إصلاح الأخطاء
- لن يتعطل الانتقال الديناميكي عند إعادة إنشاء النشاط بعد ذلك. (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)
تغييرات واجهة برمجة التطبيقات
- أصبحت دالة
navArgument
Kotlin DSL الآن جزءًا منnavigation-common
بدلاً منnavigation-compose
. سيتطلب ذلك تحديث عمليات الاستيراد لمواصلة استخدام هذه الدالة. (I1d095)
التغييرات في السلوك
- عند إنشاء الوسيطات، تضع الوسيطات الآمنة الآن المعلمات بدون قيم افتراضية قبل تلك ذات القيم الافتراضية. (I89709، b/198493585)
إصلاح الأخطاء
- عند استخدام ميزة "إنشاء التنقل"، سيتم ضبط رموز NavGraphs على
DESTROYED
بعد بلوغ جميع الأطفالDESTROYED
القيم الثانوية. (I86552، b/198741720) - لم تعُد وسيطات
NavDeepLink
غير الصحيحة تتطلب قيمة تلقائية. (Ia14ef، b/198689811) - سيؤدي استدعاء
setGraph()
باستخدام رسم بياني جديد الآن أيضًا إلى محو أي حزم خلفية محفوظة، بالإضافة إلى سلوكها السابق المتمثل في إبراز الحزمة الخلفية. (I97f96) - تم إصلاح المشكلة المتمثلة في عدم إشعار
OnDestinationChangedListener
مثيل وcurrentBackStackEntryFlow
عند استخدامlaunchSingleTop
. (Iaaebc)
التعديلات على المهام التابعة للتبعية
- تعتمد ميزة "إنشاء التنقل" الآن على إنشاء النشاط 1.3.1. (I05829)
- تعتمد ميزة "إنشاء التنقل" الآن على
إنشاء نموذج عرض دورة الحياة
2.4.0-beta01
. (Ib86a3)
الإصدار 2.4.0-alpha08
1 أيلول (سبتمبر) 2021
تم طرح "androidx.navigation:navigation-*:2.4.0-alpha08
". يحتوي الإصدار 2.4.0-alpha08 على هذه الالتزامات.
الميزات الجديدة
- يمكن الآن توسيع الفئة
NavType
لإنشاء NavTypes مخصّصة. لا تتم إتاحة الأنواع المخصّصة إلا عند إنشاء الرسم البياني للتنقّل بطريقة آلية، مثل رسم بياني للتنقُّل في Kotlin DSL. (I78440، b/196871885)
التغييرات في السلوك
- عند إنشاء الإجراءات، يضع رمز Kotlin الذي تم إنشاؤه من Safe Args الآن الوسيطات بدون القيم التلقائية قبل تلك التي تتضمّن قيمًا تلقائية كمَعلمات. (Idb697، b/188855904)
- تتحقق الروابط المؤدية إلى صفحات في التطبيق الآن من أنّ جميع الوسيطات المطلوبة (التي لا تتضمن قيمًا تلقائية) متوفّرة في
Uri
. (#204، b/185527157)
إصلاح الأخطاء
- عند استخدام الترميزَين
getBackStackEntry
وpreviousBackStackEntry
داخل composable() ، بالتزامن معremember()
، لن يؤدي ذلك إلى استثناء عدم توفّر وجهة في الحزمة الخلفية بعد ذلك. (I75138، b/194313238) - تتم الآن إعادة إنشاء وسائط "إنشاء التنقل" بشكل صحيح عند تغيير وسيطات المكدس
الخلفي واستخدام
launchSingleTop=true
. (Iebd69، b/186392337) - لن يبقى هناك رمز
ArrayIndexOutOfBoundsException
عند استدعاءsetGraph
باستخدام رسم بياني يتضمن 13 أو 29 وجهة. (I1a9f1، b/195171984) - يجب ألا يتسبب منشئ JavaScript SafeArgs في إصدار تحذيرات من الوبر عند إنشاء فئات 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 على هذه الالتزامات.
إصلاح الأخطاء
- تحفظ ميزة "إنشاء التنقل" الآن الحالة بشكل صحيح بعد تغييرات الضبط وعند تغيير الرسوم البيانية أثناء استخدام ميزة "تكديس العودة" المتعدد. (If5a3d، b/195141957)
- لن تؤدي إعادة تحديد علامة التبويب نفسها عند استخدام ميزة التنقل في نافذة إنشاء باستخدام حزم خلفية متعددة إلى ظهور شاشة فارغة بعد الآن. (I860dc, b/194925622)
- يلاحظ
NavHost
الآن التغييرات فيLifecycle.State
منNavBackStackEntry
، ما يعني أنّ استخدامNavHost
في أي جزء ستتم إعادة بنائه الآن بشكل صحيح مع تغيُّر مراحل النشاط بدلاً من ظهور شاشة فارغة. (I4eb85، b/195864489) - تم إصلاح المشكلة المتمثلة في أن إغلاق
DialogFragment
لا يؤدي إلى تعديل حالةNavController
بشكل صحيح بعد إعادة إنشاء نشاطك (أي بعد تغيير الإعدادات). (Icd72b) - تم إصلاح المشكلة المتمثلة في أن فرقعة وجهة مربع لا يؤدي إلى تحديث معالجة زر الرجوع في نظام NavController، مما قد يتسبب في اعتراض NavController لزر الرجوع على الرغم من عدم وجود أي مكدس خلفي ينبثق. (If3b34)
- تنشئ الوسيطات الآمنة الآن تلقائيًا طريقة
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) - يضبط
NavHost
في ميزة "التنقل" في Compose الآن الرسم البياني كجزء من المقطوعة الأولى. (Ieb7be)
إصلاح الأخطاء
- لم يعد دفع الوجهة الأخيرة في الرسم البياني للتنقُّل إلى عرض علامة
ClassCastException
. (If0543 وb/172112072 وb/194301889) - تم إصلاح
NullPointerException
يحدث عند إضافة رابط لصفحة في التطبيق بدونUri
والتنقّل من خلال مسار أو رابط لصفحة في التطبيق. (938a0c، b/193805425) - تم إصلاح مشكلة في ميزة "إنشاء التنقل" حيث لا يصل
NavBackStackEntry
المرتبط بصفحة معيّنة في التطبيق إلى حالةRESUMED
. (I192c5) - تم إصلاح المشكلة المتمثلة في ظهور وجهة مربع حوار لا يؤدي إلى تحديث معالجة زر الرجوع في نظام NavController، مما قد يؤدي إلى اعتراض وحدة التحكم في التنقل لزر الرجوع على الرغم من عدم وجود أي مكدس خلفي للانبثاق. (aosp/1782668)
الإصدار 2.4.0-alpha05
21 تموز (يوليو) 2021
تم طرح "androidx.navigation:navigation-*:2.4.0-alpha05
". يحتوي الإصدار 2.4.0-alpha05 على هذه الالتزامات.
التغييرات في السلوك
- تستخدم ميزة "
NavHost
" في ميزة "إنشاء التنقل" الآن دائمًا ميزة "التلاشي المتقاطع" عند التنقل عبر الوجهات. (I07049، b/172112072) - يمكنك الآن إجراء تغييرات على الرسم البياني لـ NavHost. سيتم اعتبار الرسومات البيانية التي لها نفس الوجهة والوجهة في الرسم البياني على قدم المساواة ولن يتم محو المكدس الخلفي في
NavController
. (I0b8db، b/175392262)
إصلاح الأخطاء
- تم إصلاح
NoSuchElementException
عند استدعاءpopBackStack()
من داخلLifecycleObserver
مرفقًا بـNavBackStackEntry
بسبب التحديثات التي أجراها المستخدم بشأن حالة "وحدة التحكّم في التنقل". (I64621) - تتيح ميزة "
AbstractListDetailFragment
" الآن إزالةSlidingPaneLayout
تمامًا من حزمة APK عند عدم استخدامAbstractListDetailFragment
. (I611ad) - يلغي
NavGraph
وNavDestination
الآن طريقة يساوي لذا سيتم اعتبار كائنين لهما نفس القيم متساويتين. (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
. سيتم عرض كل وجهة من وجهات مربّعات الحوار هذه ضمنDialog
قابل للإنشاء، عائمًا فوق وجهة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()
، ما يضمن عمل واجهة برمجة التطبيقات هذه على النحو المتوقّع عند استهداف الإصدار 12 من نظام التشغيل Android. (If8c52)
إصلاح الأخطاء
- تم إصلاح مشكلة في
<include-dynamic>
تتمثل في عدم تمرير الوسيطات التي يتم تمريرها إلى الرسم البياني بشكل صحيح إلى الرسم البياني المضمن ديناميكيًا. (I3e115) - تم إصلاح
NullPointerException
عند الانتقال إلى وجهة باستخدام وسيطةstring[]
مع قيمة تلقائية تبلغ@null
. (I1fbe8) - يمكنك إضافة قواعد ProGuard لـ
@Navigator.Name
، مع إصلاح المشاكل عند استخدام الوضع الكامل R8 3.1. (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) - تم إصلاح انحدار تم تقديمه في
التنقل
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 تتعطل عند استخدامها مع وحدات الميزات الديناميكية وAGP 7.0 أو أحدث. (I69518، b/189966576)
مشكلة معروفة
- لن تنجح الوسيطات الآمنة مع ظهور خطأ
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
عند استخدام Gradle6.7.0
بسبب الاعتماد على إصدار قديم من Kotlin. ويمكن التغلب على ذلك من خلال التحديث لاستخدام Gradle 7.0. (b/190739257)
الإصدار 2.4.0-alpha02
2 حزيران (يونيو) 2021
تم طرح "androidx.navigation:navigation-*:2.4.0-alpha02
". يحتوي الإصدار 2.4.0-alpha02 على هذه الالتزامات.
الميزات الجديدة
- أصبحت المسارات الآن متوافقة مع وجهات الأنشطة والأجزاء ومربع الحوار، فضلاً عن التنقل الديناميكي في Kotlin DSL. (Ib5544 وIa617b وI22f96 وb/188914648 وb/188901565)
- أضاف
NavigationUI
واجهات برمجة التطبيقات التجريبية مؤقتًا للسماح بإيقاف حفظ حالتك. وعلى الرغم من أنّ حفظ الحالة دائمًا هو السلوك الصحيح، لا تزال هناك استخدامات للمكتبات المتوقّفة نهائيًا (أي الأجزاء التي تم الاحتفاظ بها) والتي لا يمكن اعتمادها عند حفظ الحالة، ما يتيح للتطبيقات فرصة التحوّل ببطء من أي واجهات برمجة تطبيقات غير متوافقة. (Idf93c) يوفر التنقل الآن واجهات برمجة تطبيقات
findDestination()
وgetHierarchy()
التي يمكن استخدامها للمساعدة في تنفيذ واجهة برمجة تطبيقات التنقل المخصصة.findDestination()
هي دالة امتداد علىNavGraph
ستحدّد وجهة ضمن الرسم البياني.getHierarchy()
هي دالة علىNavDestination
يمكن استخدامها للتحقّق مما إذا كانت وجهة معيّنة ضمن التدرج الهرمي لجهة أخرى.(I2932f، b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
تم تعديل طُرق الروابط في واجهة المستخدم التي تستخدم
BottomNavigationView
بدلاً من ذلك لتأخذ فئتها الفائقة التي تم تقديمها في المادة1.4.0
رقمNavigationBarView
. يسمح ذلك باستخدام هذه الطرق معNavigationRailView
. (Ib0b36، b/182938895)عند تضخيم عنصر
<action>
عبر XML، يمكن لسمات الصور المتحركة استخدام سمات تم استخراجها من المظهر باستخدام بنيةapp:enterAnim="?attr/transitionEnter"
. (I07bc1، b/178291654)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف أدوات إنشاء Kotlin DSL التي تستخدم معرّفًا نهائيًا، ويجب استبدالها بأدوات إنشاء تستخدم المسارات (I85b42، b/188816479) (I9f58f، b/188816479).
إصلاح الأخطاء
- يستخدم "
DialogFragmentNavigator
" الآنNavigatorState.pop()
API لإبلاغNavController
عند إغلاق مربّع حوار عن طريق الضغط على زر الرجوع في النظام أو النقر خارجه، ما يضمن مزامنة الحالةNavController
دائمًا مع حالة "المستكشف". (I2ead9) لم يعُد التنقّل يعطي
ConcurrentModificationException
عند استخدام قائمةOnDestinationChangedListeners
من خلال معاودة الاتصالonDestinationChanged
. (Ib1707، b/188860458)لم تعد Safe Args تتعطل عند محاولة إنشاء خصائص الاتجاه في Kotlin. (Id2416، b/188564435)
تمت الآن إضافة تعليقات توضيحية بشكل صحيح إلى طريقة setId على NavDestination باستخدام
@IdRes
، وبالتالي تقبل أرقام تعريف الموارد فقط. (I69b80)أصبحت معلَمة int للسمة
findNode
الآنresId
بدلاً منresid
. (I7711d)
تعديل التبعية
- تعتمد "نظام التشغيل الآمن" الآن على الإصدار 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()
فيNavController
قيمةFlow
تصدر كلما تغيّرتNavBackStackEntry
الحالية. ويمكن استخدام هذا المسار كبديل لإدارةOnDestinationChangedListener
يدويًا. (I19c4a و#89 وb/163947280)
حزم خلفيات متعددة
تكون NavController مسؤولة عن إدارة الحزمة الخلفية من الوجهات، وإضافة الوجهات إلى الحزمة الخلفية عند navigate()
إليها وإزالتها عند طلب popBackStack()
أو تشغيل زر الرجوع في النظام. تم توسيع فئة NavOptions
الحالية والدمج في إدخالات <action>
في ملف XML الخاص بالرسم البياني للتنقّل لإتاحة حفظ الحزمة الخلفية واستعادتها. (b/80029773)
في إطار هذا التغيير، يتم الآن تلقائيًا حفظ حالة الوجهات المنبثقة في طُرق العرض المعروضة واستعادتها باستخدام طُرق NavigationUI
، وهي onNavDestinationSelected()
وBottomNavigationView.setupWithNavController()
وNavigationView.setupWithNavController()
، ما يتيح استخدام حزم بيانات سابقة متعددة بدون أي تغيير في الرمز. عند استخدام التنقل باستخدام أجزاء، هذه هي الطريقة الموصى بها للتكامل مع العديد من الحزم الخلفية. (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” />
في
navOptions
Kotlin 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
في "إنشاء التنقل" وFragmentNavigator
وDynamicFragmentNavigator
المستخدمة للوجهات <fragment>
في "التنقل باستخدام الأجزاء" لاستخدام واجهات برمجة تطبيقات المستكشف الجديدة ودعم حالة الحفظ والاستعادة.
مسارات التنقل
المسار هو عبارة عن وسيلة String
تُحدِّد وجهة معيّنة بشكلٍ فريد. على الرغم من أن هذا المفهوم كان يُستخدم سابقًا في ميزة إنشاء التنقل فقط، فقد تطوَّر الآن ليصبح جزءًا من واجهات برمجة التطبيقات الأساسية للتنقُّل. يوفر هذا بديلاً لاستخدام أرقام تعريف الأعداد الصحيحة عند إنشاء الرسم البياني من خلال ميزة التنقل Kotlin DSL. (b/172823546)
جميع واجهات برمجة التطبيقات التي كانت تحصل على معرّف فقط لديها حمل زائد الآن يأخذ مسار String
. يشمل ذلك navigate()
وpopBackStack()
وpopUpTo()
وgetBackStackEntry()
.
وقد ينتج عن ذلك بعض الآثار الناتجة عن واجهة برمجة التطبيقات:
- تم إيقاف سمة
popUpTo
kotlin على Kotlin DSL لصالحpopUpToId
. (I59c73، b/172823546) - تم إيقاف واجهة برمجة التطبيقات
getStartDestination()
API لصالحgetStartDestinationId()
. (I0887f، b/172823546)
بالنسبة إلى المطوِّرين الذين يختارون الترقية من الإصدارات السابقة من ميزة "إنشاء التنقل" إلى "إنشاء التنقل" 2.4.0-alpha01
، يعني هذا أنّ عمليات الاستيراد التالية باستخدام طرق الإضافات لم تعُد ضرورية ويجب إزالتها:
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
مباشرةً.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة كتابة جميع عناصر التنقّل باستخدام لغة البرمجة 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 الآن طريقة
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) }
تم تحديث وسيطات الأمان ليكون بإمكانك الاعتماد على
1.8.0
KotlinPoet. (#172، b/183990444)
التغييرات في السلوك
- يعتمد التنقّل الآن على
دورة الحياة
2.3.1
وأصبح يمثّل الآنsetGraph()
وpopBackStack()
وnavigateUp()
وnavigate()
، وهي الطرق التي تُعدِّلNavBackStackEntry
Lifecycle
باسم@MainThread
، ما يجعل التنقّل متوافقًا مع عملية تنفيذ سلسلة الإجراءات الرئيسية التي تم تقديمها في دورة الحياة2.3.0
. (b/171125856) - أصبح تحليل وسيطات التعداد من الروابط لصفحات في التطبيق غير حساس لحالة الأحرف، ما يسمح لرابط لصفحة في التطبيق مثل
http://www.example.com/red
بمطابقة رابط لصفحة في التطبيقwww.example.com/{color}
حتى عندما يحتوي التعداد على القيمةRED
. (#152، b/135857840)
التوافق مع الكتابة
- لا يتوافق
androidx.navigation:navigation-compose:2.4.0-alpha01
إلا مع إصدار Compose1.0.0-beta07
والإصدارات الأحدث.
إصلاح الأخطاء
- تم إصلاح مشكلة تكون فيها العناصر النائبة للوسيطات اللاحقة لها الأولوية على الروابط لصفحات في التطبيق التي تحتوي على لاحقة تامة مطابقة. (#153، b/184072811)
- يتوافق "
NavHostFragment
" الآن مع برامج التنقّل المخصّصة التي تستخدم رقم@Navigator.Name("dialog")
نفسه المستخدَم في السمةDialogFragmentNavigator
التلقائية. (Ib1c2c، b/175979140) - تم تحسين سلوك
NavigatorProvider#addNavigator
للتأكّد من أنّ طلبه بشكل متكرّر بالمثيل نفسه لا يسبب أي مشاكل. (#176، b/187443146)
المساهمات الخارجية
- نشكرك على استخدام simonschiller لتقديم الدعم الخاص بوسيطات Safe Args من خلال إنشاء طريقة
fromSavedStateHandle()
لكل صف فيNavArgs
. (#122، b/136967621) - نشكرك على Bradleycorn لجعل تحليل وسيطات التعداد من الروابط لصفحات في التطبيق غير حساس لحالة الأحرف. (#152، b/135857840)
- نشكرك على osipxd لإصلاح مشكلة يكون فيها العناصر النائبة للوسيطات اللاحقة لها الأولوية على الروابط لصفحات في التطبيق التي لها لاحقة تامة مطابقة. (#153، b/184072811)
- نشكرك tatocaster على تعديل السمة الآمنة Args للاعتماد على
1.8.0
KotlinPoet. (#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 من "إنشاء التنقل"
الإصدار 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) - تعتمد ميزة إنشاء التنقل الآن على التنقل
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)
إصلاح الأخطاء
- تعتمد إنشاء التنقل الآن على التنقل 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
الآن تعبئةLocalSavedStateRegistryOwner
VolumeLocal باستخدامNavBackStackEntry
الخاصة بهذه الوجهة، ما يضمن حفظ أي ولاية محفوظة مباشرةً فيSavedStateRegistry
واستعادتها بجانب الوجهة. (I435d7، b/179469431)
الإصدار 1.0.0-alpha07
10 شباط (فبراير) 2021
تم طرح "androidx.navigation:navigation-compose:1.0.0-alpha07
". يحتوي الإصدار 1.0.0-alpha07 على هذه الالتزامات.
التعديلات على المهام التابعة للتبعية
- تعتمد ميزة "إنشاء أثناء التنقل" الآن على مراحل الحياة 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 على هذه الالتزامات.
تم تحديثه للاعتماد على Compose 1.0.0-alpha10.
الإصدار 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)
- تمت إضافة دالة تنقل تأخذ مسارًا بدلاً من معرّف يسمح لك بإنشاء رسوم بيانية متداخلة في مكتبة توليف البيانات الرقمية. (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
قابل للإنشاء يتيح لك إنشاء الرسم البياني للتنقّل عبر Kotlin DSL.- نطاق دورة الحياة و
ViewModel
والحالة المحفوظة على مستوى الوجهة - دمج تلقائي مع زر الرجوع في النظام
- إتاحة تمرير الوسيطات وإرفاق روابط لصفحات في التطبيق بالوجهات وعرض نتيجة إلى الوجهات السابقة
- يمكنك إنشاء أدوات مساعدة محدّدة في
rememberNavController()
وcurrentBackStackEntryAsState()
للسماح بحالة الرفع وتوصيلNavController
بالعناصر القابلة للإنشاء خارجNavHost
(مثل شريط التنقّل السفلي).
راجع دليل إنشاء التنقل للحصول على مزيد من المعلومات.
الإصدار 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)
التعديلات على المهام التابعة للتبعية
- يعتمد المكوّن الإضافي Navigation Safe Args Gradle الإضافي الآن على المكوّن الإضافي Kotlin Gradle الإضافي 1.4.31. (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 الآن تعليقات توضيحية لمنعطفات على الطرق المناسبة عند استخدام جافا. (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 الذي تسبب في حدوث
ResourceNotFoundException
نتيجة الانتقال إلى نشاط يتضمّن قيمة مورد رسوم متحركة قدرها0
. (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) - تستخدم ميزة التنقل SafeArgs الآن الإصدار 1.7.2 من KotlinPoet، والذي يضيف دعمًا لوضع واجهة برمجة التطبيقات الصريحة في Kotlin. (I918b5)
- تتحقّق
NavHostFragment.findNavController(Fragment)
الآن أيضًا من طريقة عرض الديكور الجذر في DialogFragment بالإضافة إلى عمليات التحقّق الحالية للتسلسل الهرمي للجزء والتسلسل الهرمي لطريقة العرض للجزء. ويسمح لك هذا باختبار أجزاء مربّعات الحوار التي تستخدم التنقّل معFragmentScenario
وNavigation.setViewNavController()
. (I69e0d)
الإصدار 2.3.1
الإصدار 2.3.1
14 تشرين الأول (أكتوبر) 2020
تم طرح "androidx.navigation:navigation-*:2.3.1
". يتضمّن الإصدار 2.3.1 هذه الالتزامات.
الميزات الجديدة
- تمت إضافة موارد أداة الرسوم المتحركة التلقائية إلى واجهة مستخدم التنقّل ويُنصح باستخدامها على موارد الرسوم المتحركة التلقائية. (b/167430145)
- تلغي NavOptions الآن رمز التجزئة ويساوي الطرق (b/161586466)
- يتضمّن التنقّل الآن الوجهة الحالية في حقل "ليست هناك وجهة تتضمّن رقم التعريف" legalArgumentException، والذي من المفترض أن يحسِّن تجربة تصحيح أخطاء المطوّرين. (b/168311416)
إصلاح الأخطاء
- لن تلتف الوسيطات الآمنة بعد الآن في سطر الرجوع، حتى إذا كان اسم فئة الوسيطة الذي تم إنشاؤه أطول من 100 حرف. (b/168584987)
التغييرات المتعلّقة بالاعتمادية
- يعتمد "
navigation-ui
" الآن على DrawerLayout 1.1.1، وتضمن قدرةNavigationUI
على فتح الدرج حتى عند استخدامLOCK_MODE_LOCKED_CLOSED
أوLOCK_MODE_LOCKED_OPEN
. (b/162253907) - تعتمد Args الآن على KotlinPoet 1.6.0 (aosp/1435911)
- تعتمد Args الآن على الإصدار 4.0.1 من AGP (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 في دمج البيان. إلى حين اكتمال هذا العمل، لن تتضمّن أي عناصر
<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 هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم تعديل
Lifecycle
لـNavBackStackEntry
بشكل صحيح بعد انتهاء العملية. (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 الآن
defaultArguments
Map
للإجراءات، ما يتيح إمكانية ضبط القيم التلقائية على عناصر<action>
في ملفات XML الخاصة بالتنقل. (b/150345605)
إصلاح الأخطاء
- من التنقل 2.2.2: تم إصلاح
IllegalStateException
عند الربط بصفحة بداية الرسم البياني عندما يكون لديك حالاتNavHostFragment
متعددة في نشاطك. (b/147378752)
التعديلات المتعلقة بالاعتمادية
- يعتمد التنقّل الآن على الجزء
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)
التعديلات على المهام التابعة للتبعية
- تعتمد عناصر "الميزات الديناميكية للتنقّل" الآن على الإصدار
1.6.5
الأساسي من Play. (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)
إصلاح الأخطاء
- تحافظ قواعد ProGuard
navigation-common-ktx
الآن بشكل صحيح على فئاتNavArgs
المستخدَمة فقط بدلاً من جميع مثيلاتNavArgs
. (b/150213558)
التغييرات المتعلّقة بالتبعية
- عادت ميزة "التنقّل" إلى اعتمادها على الإصدار الأساسي
1.2.0
وتعتمد الآن على الإصدار الأساسي1.1.0
لتجنّب إجبار المطوّرين على الانتقال إلى تبعية أحدث عندما لا تعتمد ميزة التنقّل على أي واجهات برمجة تطبيقات جديدة في الإصدار الأساسي1.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)
التغييرات المتعلّقة بالتبعية
- يعتمد التنقّل الآن على
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-ui
ProGuard لـDrawerArrowDrawable
للتأكّد من أنّandroid.enableJetifier=true
غير مطلوب. (b/147610424) - من التنقل
2.2.1
: تحتوي وحدةnavigation-common-ktx
الآن على اسم فريد لحزمة البيان بدلاً من مشاركة اسم حزمة البيان نفسه مثلnavigation-runtime-ktx
. (aosp/1141947)
التعديلات المتعلقة بالاعتمادية
- من التنقّل
2.2.1
: يعتمد التنقّل2.2.1
الآن على Webcycle ViewModel savedState2.2.0
والجزء1.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=””
)، والآن تضبط العنوان بشكل صحيح على سلسلة فارغة. وقد تم إصدار هذا الإصدار سابقًا في ميزة التنقل 2.3.0-alpha04. (b/148679860) - تحافظ قواعد ProGuard
navigation-common-ktx
الآن بشكل صحيح على فئاتNavArgs
المستخدَمة فقط بدلاً من جميع مثيلاتNavArgs
. وقد تم طرح هذا الإصدار سابقًا في ميزة التنقل 2.3.0-alpha03. (b/150213558
التعديلات المتعلقة بالاعتمادية
- يعتمد التنقّل الآن على الجزء
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) - تم تعديل قواعد ProGuard
navigation-ui
الخاصة بالنطاقDrawerArrowDrawable
للتأكّد من أنّandroid.enableJetifier=true
غير مطلوبة. (b/147610424) - تحتوي الوحدة
navigation-common-ktx
الآن على اسم فريد لحزمة البيان بدلاً من مشاركة اسم حزمة البيان نفسه مثلnavigation-runtime-ktx
. (aosp/1141947)
التعديلات المتعلقة بالاعتمادية
- يعتمد التنقل
2.2.1
الآن على Webcycle ViewModel SaveState2.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
، بالإضافة إلى توفير الوسيطات المستخدمة لبدء تلك الوجهة. - Lifecycle ViewModel SaveState Integration: يتم الآن استخدام
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
لمطابقة صور التلاشي المعدَّلة في الجزء1.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-rc03
وWebcycle ViewModel SaveState1.0.0-rc03
والنشاط1.1.0-rc03
والجزء1.2.0-rc03
عندما يكون ذلك مناسبًا.
الإصدار 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) - تم إنشاء
Directions
فئات من Java لـ Safe Args تحتوي الآن على قيم تلقائية. (b/141099045) - تم إنشاء
Args
فئات من Java لـ Safe 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
كجزء من الإعداد الأولي لضمان توفُّر مساحة تخزين متسقة في جميع مثيلاتNavBackStackEntry
لمثيلاتViewModel
. (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
، بالإضافة إلى توفير الوسيطات المستخدمة لبدء تلك الوجهة. (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)
التغييرات في واجهة برمجة التطبيقات
- من صفحة التنقّل
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()
API المُضافة إلى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()
API المتوقّفة نهائيًا والمتوفّرة في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)
إصلاح الأخطاء
- تم إصلاح مشكلة التوقيت عند استخدام عدة NavHostFragments مع نفس الحاوية مع
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)
- تم إصلاح خطأ يكون فيه التنقل للخلف غير متزامن عند تمييز جزء أثناء إضافة الجزء الأولي. (b/133832218)
الإصدار 2.1.0-alpha05
5 حزيران (يونيو) 2019
تم طرح "androidx.navigation:*:2.1.0-alpha05
". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهات برمجة التطبيقات (API) ذات الصلة بالمضيف في
NavController
ونقلها إلى فئة فرعية جديدة منNavController
،NavHostController
. (aosp/966091) - تم استبدال طريقة
setHostOnBackPressedDispatcherOwner()
فيNavController
بطريقة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
بشكل صحيح عند اعتراض أحداث زر الرجوع في النظام، ما يؤدي إلى إصلاح تراجع في التنقل2.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
، ما يؤدي إلى إصلاح مشكلة عند إجراء التنقّل المشروط في طرق مراحل نشاط التجزئة عند العودة إلى جزء. b/111598096 - بالنسبة إلى الوسيطات الآمنة، يتم الآن استنتاج
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()
API المُضافة إلىNavController
. b/111614463
التغييرات في واجهة برمجة التطبيقات
- يمكنك الآن إضافة
app:targetPackage
إلى وجهة<activity>
لفرض قيود على اسم الحِزمة المطابقة. وهو يتيح استخدامapp:targetPackage="${applicationId}"
لحصر الحزمة على معرّف التطبيق الخاص بك. b/110975456
إصلاح الأخطاء
- لم يعد يتم تحليل
android:name
لوجهات<activity>
في فئة في وقت التضخم، مما يمنع ClassNotFoundExceptions عند استخدام الميزات الديناميكية. b/124538597
الإصدار 2.1.0-alpha01
19 آذار (مارس) 2019
هذا هو الإصدار الأولي الأول من ميزة "التنقل 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
لإنشاء مثيل للأجزاء. b/119054429
إصلاح الأخطاء
- لم تعُد ميزة التنقّل ترسل قيمة
Bundle
فارغة عند وجود وسيطات مرفقة بوجهة معيّنة، ما يؤدي إلى إصلاح مشكلة عند استخدامandroid:defaultValue="@null"
. b/128531879 - تعتمد الوسيطة الآمنة الآن على KotlinPoet 1.1.0، ما يؤدّي إلى حلّ المشاكل المتعلّقة بأسماء الحِزم الطويلة جدًا. 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 عناصر جديدة بمعرّف مجموعة androidx.navigation
ويغيِّر تبعياته إلى العناصر المكافئة لنظام AndroidX.
إن سلوك 2.0.0-rc02 مماثل لسلوك التنقل 1.0.0-rc02 ولا يلزم إجراء أي تغييرات على الرمز الخاص بك للتحديث من 1.0.0-rc02 إلى جانب تحديث التبعيات لديك لتتوافق مع التبعيات الجديدة.
يجب أن يكون مشروعك قد تم نقله إلى AndroidX لاستخدام إصدارات 2.X من التنقل. وسيكون الإصدار 1.0 الثابت هو الإصدار الأخير الذي يستخدم تبعيات مكتبة الدعم، وسيعتمد كل التطوير المستقبلي الذي بعد الإصدار 1.0 على AndroidX وسيعتمد على الإصدار 2.0 الثابت.
اعتماديات ما قبل AndroidX
بالنسبة لإصدارات التنقل السابقة لنظام 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
}
بالنسبة إلى الوسيطات الآمنة، أضِف مسار الفئة التالي في ملف 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. يحتوي هذا الإصدار على عدد من إصلاحات الأخطاء.
إصلاح الأخطاء
- تم إصلاح مشكلة تجاهل
popBackStack()
إذا لم يكن الرسم البياني الجذر b/126251695 - يتعامل
navigateUp()
الآن بشكل صحيح مع الرجوع إلى مهمة تطبيقك عند الاتصال بعد التعامل مع رابط لصفحة في التطبيق بدونFLAG_ACTIVITY_NEW_TASK
b/126082008 - تم إصلاح المشكلة المتمثلة في عدم تطبيق
ActivityNavigator.applyPopAnimationsToPendingTransition
حركة الخروج من النافذة المنبثقة الصحيحة b/126237567 - إنّ رمز Kotlin الذي تم إنشاؤه من خلال Safe Args يمكن الآن تخطّي الكلمات الرئيسية في Kotlin،
مثل
in
وfun
في اسم الحزمة المرتبط بالفئةR
. b/126020455
الإصدار 1.0.0-rc01
21 شباط (فبراير) 2019
وهو مرشح لإصدار الإصدار الثابت 1.0.0 من نظام التنقل. يحتوي هذا الإصدار على إصلاح خطأ واحد.
إصلاح الأخطاء
- تم إصلاح مشكلة عند استخدام الأجزاء وعملية التنقل في
singleTop
b/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
هذا هو الإصدار التجريبي الأول من ميزة التنقل، ومن الآن فصاعدًا، من المتوقع أن تظل واجهة برمجة تطبيقات التنقل مستقرة حتى الإصدار التالي ما لم تكن هناك مشكلة خطيرة. يتضمّن هذا الإصدار بعض إصلاحات الأخطاء وتغييرات السلوك.
التغييرات في السلوك
- يضمن التنقّل الآن أن يتم التعامل مع القيم التلقائية للوسيطات بشكلٍ متماثل في وقت التشغيل ومن خلال الوسيطات الآمنة. ونتيجةً لذلك، فإن الوسيطات التي تستخدم
app:argType="reference"
فقط يمكن أن تحتوي على نقطة قيمة تلقائية لمورد آخر (على سبيل المثال،@color/colorPrimary
). ستؤدي محاولة استخدام قيمة تلقائية لمراجع معapp:argType
مختلف إلى حدوث استثناء عند تحليل ملف XML للتنقل. b/123551990 - تعتمد Safe Args الآن على الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android aosp/888413
- تعتمد Args الآن على Kotlin 1.3.20 aosp/888414.
إصلاح الأخطاء
- يمكن الآن استخدام Safe Args في المكتبة ووحدات الميزات في جميع إصدارات Android Gradle Plugin. 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
" يعمل على حلّ مشكلة "الوسيطات الآمنة".
إصلاح الأخطاء
- إصلاح مشكلة تعذُّر استيراد الوسيطات الآمنة لفئة الاتجاهات المرتبطة بالإجراءات العامة. b/123307342
الإصدار 1.0.0-alpha10
23 كانون الثاني (يناير) 2019
المشاكل المعروفة
- يتعذّر على Safe Args استيراد فئة الاتجاهات المرتبطة بالإجراءات العامة. 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 - تتجنب الوسيطات الآمنة الآن تكرار الفئات المتطابقة للإجراءات بدون
وسيطات. أصبح نوع النتيجة بدون طرق وسيطات في فئات NavDirections التي تم إنشاؤها الآن
NavDirections
. b/123233147 - لم تعُد فئات الاتجاهات التي تم إنشاؤها من خلال Safe Args تحتوي على أداة إنشاء عامة، ويجب أن تتفاعل فقط مع الطرق الثابتة التي تم إنشاؤها. b/123031660
- لم تعد فئات
NavDirections
الآمنة التي أنشأتها فئاتNavDirections
عامة، ويجب إنشاؤها فقط من خلال الطرق الثابتة في فئات الاتجاهات التي تم إنشاؤها. b/122963206 - تم الآن وضع علامة
@NonNull
بدلاً من@Nullable
على الرسالةBundle
التي تم إرجاعها منgetArguments()
فيNavDirections
. b/123243957
إصلاح الأخطاء
NavDeepLinkBuilder
يعالج الآن بشكل صحيح عدة علاماتPendingIntent
متزامنة إلى الوجهة نفسها من خلال استخدام الوسيطات التي ترسلها لتحديد القيمة الفريدة. b/120042732- تعالج
NavController
الآن عملياتpopBackStack()
بشكل صحيح عند استخدامNavHostFragment
مدمجة أو أجزاء فرعية أخرى مع حزم خلفي. b/122770335 - يضبط
NavigationUI
الآن وصف محتوى الزر للأعلى بشكل صحيح. b/120395362 - تعمل فئات الاتجاهات من إنشاء Safe Args الآن على معالجة الإجراءات العامة التي لها نفس معرّف أحد الإجراءات على الوجهة بشكل صحيح. b/122962504
- أنشأت الوسيطات الآمنة
NavDirections
فئة بشكل صحيح تحتوي الآن بشكل صحيح على قيمhashCode()
مساوية عندما تكون قيمةequals()
صحيحة. b/123043662 - تعرض
FragmentNavigator
الآن رسالة خطأ أفضل إذا حاولت تنفيذFragmentTransactions
مخصص علىFragmentManager
لـNavHostFragment
. عليكَ استخدامgetChildFragmentManager()
دائمًا. b/112927148
الإصدار 1.0.0-alpha09
18 كانون الأول (ديسمبر) 2018
يحتوي هذا الإصدار على تغييرات قد تؤدي إلى حدوث تغييرات في واجهة برمجة التطبيقات. يُرجى الاطّلاع على قسم أعطال التغييرات أدناه.
لقد اخترنا عدم مواصلة تطوير
عنصر android.arch.navigation:navigation-testing
. أثبتت هذه العملية فائدة الاختبار الداخلي لـ NavController
، إلا أنّنا ننصح بشدة باستراتيجيات الاختبار البديلة، مثل محاكاة مثيل NavController
، للتأكّد من تنفيذ طلبات navigate()
الصحيحة. تمت مناقشة هذا
النهج بالتفصيل في
حديث النشاط الفردي في AndroidDevSummit 2018
وسنعمل على مستندات إضافية حول الاختبار باستخدام التنقّل تحديدًا.
الميزات الجديدة
- لن تؤدي
MenuItem
s معmenuCategory="secondary"
إلى إظهار المكدس الخلفي عند استخدامها مع طرقNavigationUI
. b/120104424 - يتيح لك "
AppBarConfiguration
" الآن ضبط مثيلOnNavigateUpListener
احتياطي وسيتم طلبه عند رجوعnavController.navigateUp()
false
. b/79993862 b/120690961
تغييرات قد تؤدي إلى عطل
- عند استخدام
<argument>
معargType="reference"
، يتوقف قسم التنقّل عن تحليل المرجع، بل يوفّر رقم تعريف المورد الأولي نفسه. b/111736515 onNavDestinationSelected()
يعود الآن إلى وجهة البداية للرسم البياني للتنقل افتراضيًا، مما يجعلها متسقة مع طرقsetup
. يمكنك إضافةmenuCategory="secondary"
إلىMenuItem
لتجنُّب إيقاف الحزمة الخلفية. aosp/852869- إنّ طُرق
fromBundle()
لفئاتArgs
التي تم إنشاؤها أصبحت الآن تحمل قيمة غير فارغةBundle
بدلاً منBundle
aosp/845616.
إصلاح الأخطاء
- يتم الآن تحليل الوسيطات بشكلٍ صحيح من الروابط لصفحات في التطبيق على أنّها
argType
الصحيحة بدلاً من استخدامها دائمًا كسلاسل. b/110273284 - تعمل ميزة التنقّل الآن على تصدير مواردها العامة بشكل صحيح. b/121059552
- يتوافق تطبيق Safe Args الآن مع الإصدار 3.4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث. b/119662045
الإصدار 1.0.0-alpha08
6 كانون الأول (ديسمبر) 2018
يحتوي هذا الإصدار على تغييرات قد تؤدي إلى حدوث تغييرات في واجهة برمجة التطبيقات. يُرجى الاطّلاع على قسم أعطال التغييرات أدناه.
الميزات الجديدة
- عند استخدام تصنيفات الوجهات مع طرق
NavigationUI
، سيتم الآن تلقائيًا استبدال مثيلات{argName}
فيandroid:label
بالوسيطة الصحيحة b/80267266 - يعتمد التنقّل الآن على الإصدار 28.0.0 من Support Library 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 - تم
final
aosp/835681 العديد من الفئات والطرق غير المعدّة للفئات الفرعية، مثلNavOptions
وNavInflater
وNavDeepLinkBuilder
وAppBarConfiguration
. - تمت إزالة طريقة
NavHostFragment.setGraph()
المتوقفة نهائيًا aosp/835684 - لقد تمت إزالة طريقة
NavigationUI.navigateUp(DrawerLayout, NavController)
المتوقفة نهائيًا. aosp/835684 - تم نقل إنشاء الأجزاء إلى
FragmentNavigator
، ما يسهِّل تفويض إنشاء الأجزاء إلىFragmentFactory
. b/119054429 - لم تعُد الدالة الإنشائية لـ
NavGraphNavigator
تستخدمContext
aosp/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
الوسيطات الآمنة
- تدعم الوسيطات الآمنة العناصر القابلة للتسلسل، بما في ذلك قيم التعداد. يمكن لأنواع التعداد
ضبط قيمة تلقائية باستخدام التعداد الحرفي بدون اسم الفئة
(مثلاً
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
الوسيطات الآمنة
- تمتلك الوسيطات الآمنة الآن تبعية ثابتة على الإصدار 3.2.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. b/113167627
- يمكن الآن إنشاء الاتجاهات للصفوف الداخلية. b/117407555
- تم إصلاح مشكلة إنشاء الاتجاهات إلى رسم بياني <include>. b/116542123
الإصدار 1.0.0-alpha06
20 أيلول (سبتمبر) 2018
الميزات الجديدة
- تتوفر الآن عمليات نقل العناصر المشتركة لوجهات "الأجزاء" و"النشاط" b/79665225. لمزيد من المعلومات، يُرجى الاطّلاع على تنفيذ التنقّل باستخدام مكوِّن بنية التنقل.
- سيؤدي اختيار عنصر في
NavigationView
إلى إغلاق أي بطاقة تحتوي على بطاقة سفلية b/112158843.
تغييرات واجهة برمجة التطبيقات
- تغيير عاجل: تأخذ طريقة المستكشف
navigate()
الآن المعلَمةNavigator.Extras
. - طريقة
getGraph()
في NavController أصبحت الآنNonNull
b/112243286
إصلاح الأخطاء
- لم يعد بإمكان
NavigationUI.setupWithNavController()
تسريب المشاهدات إذا تم استخدامها مع المشاهدات من وجهات فردية b/111961977 - تم الآن تسمية برنامج المستكشف
onSaveState()
مرة واحدة فقط b/112627079
الوسيطات الآمنة
- تعمل فئات الاتجاهات في وجهة التنقل الآن على توسيع فئة الاتجاهات التابعة للمؤسسة الرئيسية إذا كانت موجودة b/79871405
- تحتوي فئات الاتجاهات والوسيطات الآن على عملية تنفيذ
toString()
مفيدة b/111843389.
الإصدار 1.0.0-alpha05
10 آب (أغسطس) 2018
إصلاح الأخطاء
- إصلاح خطأ يؤدي إلى حدوث سلوك غير صحيح لحزمة الخلفية. b/111907708
- إصلاح خطأ في
equals()
في فئات Args التي تم إنشاؤها. b/111450897 - إصلاح إخفاق الإصدار في Safe Args. b/109409713
- إصلاح إحالة ناجحة من معرّفات الموارد إلى أسماء جافا b/111602491
- إصلاح رسائل الخطأ بشأن قابلية القيم الفارغة في المكوّن الإضافي Safe Args.
- أضِف تعليقات توضيحية غير متوفّرة عن إمكانية القيم الفارغة.
الإصدار 1.0.0-alpha04
July 19, 2018
يحتوي شريط التنقّل 1.0.0-alpha04
والمكوّن الإضافي Safe Args gradle على عدد من التغييرات في واجهة برمجة التطبيقات والتغييرات في السلوك وإصلاحات الأخطاء.
واجهة برمجة التطبيقات / التغييرات في السلوك
- سيضبط NavHostFragment دائمًا الجزء الحالي كجزء التنقل الأساسي، مع ضمان ظهور مديري الأجزاء الفرعية قبل ظهور وحدة التحكم الخارجية b/111345778
الوسيطات الآمنة
- التغيير الذي قد يؤدي إلى عطل: تم تغيير
app:type
إلىapp:argType
لتجنب التعارضات مع المكتبات الأخرى مثل ConstraintLayout 2.0.0-alpha1 b/111110548 - يمكن الآن النقر على رسائل الخطأ الواردة من الوسيطات الآمنة b/111534438.
- تؤكد فئات Args الآن أن سمات
NonNull
ليست فارغة في الواقع b/111451769 - تمت إضافة تعليقات
NonNull
توضيحية إضافية إلى الفئات التي تم إنشاؤها بواسطة NavDirections وAggs b/111455455 b/111455456.
إصلاح الأخطاء
- تم إصلاح مشكلة في زر الرجوع في النظام بعد الربط بصفحة معيّنة بوجهة مجزأة b/111515685
الإصدار 1.0.0-alpha03
12 تموز (يوليو) 2018
يحتوي شريط التنقّل 1.0.0-alpha03
والمكوّن الإضافي Safe Args gradle على عدد من التغييرات في واجهة برمجة التطبيقات والتغييرات في السلوك وإصلاحات الأخطاء.
واجهة برمجة التطبيقات / التغييرات في السلوك
- تمت إضافة طريقة NavigationUI.setupWithNavController لشريط الأدوات b/109868820
- تمت إضافة طريقة NavigationUI.setupWithNavController لـ CollapsingToolbarLayout b/110887183
- تعرض PopBackStack() الآن القيمة false عندما يكون المكدس الخلفي فارغًا أو عندما لا يكون رقم تعريف الوجهة المحدد في الحزمة الخلفية b/110893637.
- يتجاهل FragmentNavigator الآن عمليات التنقل بعد حفظ FragmentManager للحالة، ويتجنب "لا يمكن تنفيذ هذا الإجراء بعد استثناءات onSaveInstanceState" b/110987825
الوسيطات الآمنة
- تغيير عاجل: سيتم استبدال الأحرف التي ليست أبجدية رقمية في الإجراءات وأسماء الوسيطات بحالة الجمل في أسماء طرق NavDirections ذات الصلة.
- على سبيل المثال، سيصبح
DemoController.index
setDemoControllerIndex
b/79995048. - مثلاً، سيصبح
action_show_settings
actionShowSettings
b/79642240.
- على سبيل المثال، سيصبح
- تغيير قد يؤدي إلى عطل: تُعتبر الوسيطات الآن غير فارغة بشكل تلقائي. للسماح بالقيم الفارغة في السلسلة والوسيطات القابلة للدمج، أضِف
app:nullable="true"
b/79642307. - يمكنك الآن استخدام
app:type="long"
مع القيم التلقائية بصيغة "123L" b/79563966. - تتوفّر الآن الوسيطات القابلة للدمج باستخدام اسم فئة مؤهل بالكامل لـ
app:type
. إنّ القيمة التلقائية الوحيدة المتاحة هي"@null"
b/79563966. - تستخدم فئات Args الآن
equals()
وhashCode()
b/79642246 - يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع المكتبة b/80036553
- يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع الميزات b/110011752
إصلاح الأخطاء
- تم إصلاح المشاكل عند التنقل أثناء مراحل نشاط الأجزاء b/109916080
- تم إصلاح المشاكل عند التنقل عبر الرسوم البيانية المتداخلة عدة مرات b/110178671
- تم إصلاح المشاكل عند استخدام
setPopUpTo
مع الوجهة الأولى في الرسم البياني b/109909461 - تم إصلاح المشكلة التي كانت تتسبب في تمرير جميع قيم
app:defaultValue
كسلاسل b/110710788 - يضيف الآن aapt2 المُضمَّنة مع Android Gradle Plugin 3.2 التجريبي 01 قواعد الاحتفاظ لكل سمة
android:name
في ملفات XML الخاصة بالتنقل b/79874119 - تم إصلاح تسرُّب الذاكرة عند استبدال FragmentNavigator التلقائي b/110900142
الإصدار 1.0.0-alpha02
7 حزيران (يونيو) 2018
التغييرات في السلوك
يستخدم تطبيق "
FragmentNavigator
" الآن "setReorderingAllowed(true)
". b/109826220يعمل التنقّل الآن على فك ترميز الوسيطات التي يتم تحليلها من عناوين URL لروابط صفحات معيَّنة. b/79982454
إصلاح الأخطاء
تم إصلاح
IllegalStateException
عند استدعاء التنقل من طرق مراحل نشاط التجزئة. b/79632233يعتمد التنقّل الآن على الإصدار 27.1.1 من Support Library لإصلاح الوميض عند استخدام الصور المتحركة. b/80160903
تم إصلاح
IllegalArgumentException
عند استخدام defaultNavHost="true" كجزء ثانوي. b/79656847تم إصلاح
StackOverflowError
عند استخدام NavDeepLinkBuilder. b/109653065تم إصلاح
IllegalArgumentException
عند الانتقال مرة أخرى إلى رسم بياني متداخل. b/80453447تم إصلاح مشكلة الأجزاء المتداخلة عند استخدام
launchSingleTop
. b/79407969ينشئ التنقّل الآن حزمة خلفية اصطناعية صحيحة للرسومات البيانية المتداخلة. b/79734195
ستميِّز واجهة المستخدم الآن العنصر الصحيح عند استخدام رسم بياني متداخل كـ
MenuItem
. b/109675998
تغييرات واجهة برمجة التطبيقات
تم إيقاف السمة
clearTask
الخاصة بالإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions
. b/80338878تم إيقاف السمة
launchDocument
الخاصة بالإجراءات وواجهة برمجة التطبيقات المرتبطة بها فيNavOptions
. b/109806636
الإصدار 1.0.0-alpha01
8 أيار (مايو) 2018
توفر ميزة التنقل إطار عمل لإنشاء التنقل
داخل التطبيق. هذا الإصدار الأولي هو 1.0.0-alpha01
.