التنقّل
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
10 يوليو 2024 | 2.7.7 | - | 2.8.0-beta05 | - |
إعلان التبعيات
لإضافة تبعية على ميزة "التنقل"، يجب إضافة مستودع 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
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle
文件中包含以下 classpath
:
Groovy
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 混合模块的 Java 语言代码,请将以下行添加到应用或模块的 build.gradle
文件中:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
根据迁移到 AndroidX 文档,您的 gradle.properties
文件中必须具有 android.useAndroidX=true
。
لمزيد من المعلومات حول استخدام إضافات Kotlin، يُرجى الاطّلاع على وثائق ktx.
لمزيد من المعلومات عن العناصر التابعة، يُرجى الاطّلاع على إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. أخبرنا إذا اكتشفت مشكلات جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
راجِع مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات.
الإصدار 2.8
الإصدار 2.8.0-beta05
10 يوليو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta05
. يحتوي الإصدار 2.8.0-beta05 على عمليات الالتزام هذه.
إصلاح الأخطاء
- إصلاح عُطل التنقّل في "
singleTop
" عند مشاركةNavGraphs
مسارstartDestination
نفسه (I17b94، b/294408596)
الإصدار 2.8.0-beta04
26 يونيو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta04
. يحتوي الإصدار 2.8.0-beta04 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- يتيح التنقّل الآن التنقّل باستخدام سلاسل فارغة في وسيطات المسار. (Ic5dbd، b/339481310)
- يمكنك تحسين رسالة الخطأ للمتسلسلات المخصّصة التي تم تعريفها مباشرةً في حقول الصف من خلال
@Serializable(with =...)
لتوضيح أنّ هذه الميزة غير متاحة حاليًا. (I052b0، b/341319151) - يمكن الآن استخدام واجهة برمجة تطبيقات الاختبار "
SavedStateHandleFactory
" في الاختبارات التي لا تعمل بنظام التشغيل Android، ولكن يجب الاستعانة بأداة Robolectric لإتاحة تحليل الوسيطات باستخدام الحِزم. (I76cdc، b/340966212) - تم إصلاح التعطُّل الناتج عن استعادة الحالة عند استئناف التطبيق بعد وفاة المعالجة في حال استخدام "التنقل الآمن من النوع" في Compose. (Ia8f38، b/341801005)
- تم إصلاح مشكلة في ميزة "إنشاء أثناء التنقل" كانت تظهر فيها
NavBackStackEntry
التي يعود المستخدم إليها بعد إلغاء "إيماءة الرجوع القائمة على التوقعات" لعدم العودة إلى "حالة مراحل النشاط"RESUMED
. ويضمن ذلك أيضًا تحرك الوجهة العائدة بشكل صحيح بدلاً من وضعها في مكانها بعد قذف الكرة. (I97a0c، b/346608857) - عند استخدام ميزة "التوقّعات" مرة أخرى مع ميزة "إنشاء التنقل"، ستحصل الوجهة التي يتم تمييزها الآن على الترتيب z المناسب، مع تحريكها بشكل صحيح أعلى الوجهة الواردة. (I2077b، b/345993681)
الإصدار 2.8.0-beta03
12 يونيو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta03
. يحتوي الإصدار 2.8.0-beta03 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- يستخدم
CollectionNavType
طريقةemptyCollection()
مجرّدة جديدة. يمكنك تجاوز هذا الإجراء للتعامل مع مجموعة فارغة يتم تمريرها كوسيطة. (Ie4d84، وb/341723133)
إصلاح الأخطاء
- تمت إضافة مستندات حول
NavType.serializeAsValue
وserializeAsValues
لتوضيح أنّ النتائج النهائية يجب أن تكون بترميز Uri. (Ida6bd، b/344943214) - تم إصلاح التعطُّل عند استدعاء
toRoute<T>
مع استخدام وسيطةCollectionNavType
فارغة. عند التنقّل باستخدام قيمةCollectionNavType
فارغة، ستكون وسيطة الإخراج هي القيمة التلقائية المُعلَنة في الفئة القابلة للتسلسل، أو القيمة المعروضةemptyCollection()
إذا لم تتوفّر قيمة تلقائية. (I84158، وId630f، وb/342672856)
الإصدار 2.8.0-beta02
29 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta02
. يحتوي الإصدار 2.8.0-beta02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح عطل
ClassCastException
عند استخدامNavBackStackEntry.toRoute
معNavType
مخصص قابل للقيم الفارغة. (I1c29b، b/342239473) - تم إصلاح مشاكل استعادة حالة حزمة الرجوع في "التنقل" التي حدثت عند محاولة استعادة إدخال حزمة خلفية لا يمكن الوصول إليها عبر رقم التعريف من الوجهة الحالية. بما أنّ المسارات مزوّدة بأرقام تعريف، تأثّرت أيضًا الوجهات التي تم إنشاؤها باستخدام مسارات. يؤدي هذا الإجراء أيضًا إلى إصلاح العطل الذي تسبب فيه الاتصال برقم
clearBackStack()
الذي حدثت به المشكلة الأساسية نفسها. (I423c3، b/339908057)
الإصدار 2.8.0-beta01
14 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-beta01
. يحتوي الإصدار 2.8.0-beta01 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- يمكن لـ
SavedStateHandle.toRoute()
الآن استخدام المَعلمةtypeMap
لأنواع الوسيطات المخصّصة. (Ie39fb، b/339026523) - تمت إضافة واجهة برمجة تطبيقات تجريبية إلى
navigation-testing
لإنشاءSavedStateHandle
من كائن Kotlin Serial. (Id4867، b/339080702)
إصلاح الأخطاء
- تمت إضافة مستندات المعلمات المفقودة لدوال التنقل Kotlin DSL. (I26a36)
الإصدار 2.8.0-alpha08
1 مايو 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha08
. تحتوي الإصدار 2.8.0-alpha08 على عمليات التنفيذ هذه.
الوسيطات الآمنة في ميزة "إنشاء التنقل"
- لقد اكتمل العمل على توفير الأمان من نوع وقت التجميع في ميزة Navigation Compose ومستخدمي Navigation Kotlin DSL المستنِد إلى تسلسل Kotlin، وأصبحت واجهات برمجة التطبيقات التجريبية في السابق مستقرة. (Iea94d وI0eb0d وI873b7 وI3a64b وI6c3a2 وI11f0b وIc3032 وI873b7 وI8d394 I1875}
تستخدم هذه الوظيفة تسلسل Kotlin للسماح لك بتحديد الوجهات في الرسم البياني للتنقّل من خلال الكائنات الآمنة وفئات البيانات:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
يُرجى الاطّلاع على مشاركة مدونة أمان الكتابة أثناء التنقل للحصول على مزيد من المعلومات.
الميزات الجديدة
- توفّر العناصر
navigation-fragment-compose
الآن مقطوعةLocalFragment
محلية في الطرق القابلة للإنشاء داخلComposableFragment
. (If35e5) - يتوافق تطبيق "
NavType
" الآن مع قوائم Int وString وBoolean وFloat وlong. (I4b6dd وIa914c وb/188693139)
الإصدار 2.8.0-alpha07
17 أبريل 2024
تم طرح androidx.navigation:navigation-*:2.8.0-alpha07
. يحتوي الإصدار 2.8.0-alpha07 على عمليات التنفيذ هذه.
الميزات الجديدة
تتم إضافة عنصر
navigation-fragment-compose
جديد يشتمل على بديلComposableNavHostFragment
عنNavHostFragment
، ما يسمح لك بإضافة وجهاتcomposable
إلى ملفات XML الخاصة بميزة التنقّل. يجب التعبير عن كل وجهةcomposable
باعتبارها طريقة من المستوى الأعلى، بدون وسيطة@Composable
، ويتم استخدام اسمها المؤهّل بالكامل كسمةandroid:name
في كل وجهة. عند الانتقال إلى إحدى هذه الوجهات، يتم إنشاء جزء يحتوي على المحتوى القابل للإنشاء. (I0ef2e، b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
التغييرات في واجهة برمجة التطبيقات
- تابعنا دعم الوسيطات الآمنة في ميزة "إنشاء التنقل" باستخدام منهج يستند إلى تسلسل Kotlin. لم يتم الانتهاء من واجهات برمجة التطبيقات هذه وتم وضع علامة عليها بالتعليق التوضيحي
ExperimentalSafeArgsApi
. ستتم إزالة هذا التعليق التوضيحي عند اكتمال مساحة عرض واجهة برمجة التطبيقات بالكامل في إصدار مستقبلي. (Iefd95 وI409c8 و I5b5ac وI7e753 وI960f8 وI3eabd وI8ed5a وIed2c9 وI17b}95} وI17b}73
الإصدار 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 وI24e41 إذا}17}
إصلاح الأخطاء
- يستخدم
NavHost
الآنAlignment.TopStart
كوسيطة contentAlignment التلقائية. وهذا يجعله متوافقًا مع الإعداد التلقائي لـ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
" في ميزة "التنقُّل في الإنشاء" عند استخدام "رجوع النظام" بدون إيماءة. (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)
تعديل بشأن التبعية
- تعتمد ميزة إنشاء التنقل الآن على Compose 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) - تم إصلاح مشكلة تسبّبت في عدم تلقّي معاودة الاتصال خلال مراحل نشاط
RESUMED
مع وجهة النافذة العائمة (مثلDialogs
وBottomsheets
وما إلى ذلك). (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 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مشاكل التنقل باستخدام ميزة Compose التي كان من الممكن فيها ظهور خطأ عند محاولة الوصول إلى
ViewModel
Lifecycle.State.DESTROYED
عند استخدامScaffold
. (I1dc11، b/268422136)
الإصدار
الإصدار
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 الآن في ميزة "إنشاء التنقل" بشكل صحيح طلبات الرد على النظام حتى بعد "إيقاف النشاط" و"استئنافه". (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)
المشاكل المعروفة
- هناك مشكلة في الإصدار 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
.
الإصدار
الإصدار
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 إلى ظهور تحذير Lint يشير إلى أنّ الرابط لصفحة في التطبيق يحتاج إلى معرّف موارد منتظم (URI) و/أو إجراء و/أو نوع MIME ليكون صالحًا.
تغييرات مهمة على ميزة "التنقل" منذ الإصدار 2.5.0
- لم يعُد
NavHostFragment
يعترض زر الرجوع في النظام نفسه. يسمح هذا الإجراء لملفFragmentManager
الأساسي باستعادة النظام. يتيح ذلك لميزة Fragment1.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 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح مشكلة في ميزة التنقّل تتضمّن أجزاءً تؤدي إلى حدوث
IllegalStateException
في حال إزالة جزء من خلال التنقّل باستخدامpopUpTo
في عملية معاودة الاتصال فيonResume()
. (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
بدون حفظ الحالة في سياسة ComposeAllowed. يؤدي ذلك أيضًا إلى إصلاح الخطأ الذي يؤدي فيه الانتقال إلى الوجهات المرتبطة بإصدار الرسم البياني الجذري وحزمة الخلفية غير الصحيحة. (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) - إنّ إضافة أجزاء إلى
FragmentManager
فيFragmentNavigator
بدون استخدام التنقّل لن تتسبب بعد الآن في حدوث عطل. (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
إلى حالة "تم الاستئناف" عند استخدام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)
التغييرات في واجهة برمجة التطبيقات
- تتم الآن إضافة تعليقات توضيحية إلى كل عمليات التحميل الزائدة لـ
NavController
navigate
باستخدام@MainThread
لضمان استدعائها في سلسلة المحادثات الرئيسية. (I2c0b0، b/263427111)
إصلاح الأخطاء
- تم إصلاح تعطُّل عند محاولة التنقل أثناء استخدام ميزة "التنقل بين الأجزاء الديناميكية". (I3ee29، b/268360479)
- تم إصلاح خطأ حيث لا يؤدي الانتقال إلى جزء آخر عبر زر الرجوع في النظام إلى تحديث الشريط السفلي إلى العنصر المحدد الصحيح (If559f وb/269044426)
المشاكل المعروفة
- عند استخدام ميزة "التنقل" مع "الأجزاء"، يتعذّر الوصول إلى "مراحل نشاط
NavBackStackEntry
" فيRESUMED
عند استخدام واجهات برمجة تطبيقاتAnimation
. (b/269646882) - عند استخدام ميزة التنقل باستخدام أجزاء، والتنقل باستخدام
BottomNavigation
، إذا حاولت استعادة حزمة خلفية تحتوي على إدخالات متعددة، لا يتم تحديثBottomMenuItem
بشكلٍ صحيح. (b/270447657) - عند استخدام ميزة "التنقل" مع "الأجزاء"، بعد استعادة الحالة، لن يحصل
Lifecycle
NavBackStackEntry
على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
للسياق عند تضخيم البيانات. (إيابدي، b/234223561) - ستؤدي محاولة إنشاء
NavDeepLink
فارغة باستخدامnavDeepLink
Kotlin DSL إلى ظهور تحذير Lint يشير إلى أنّ الرابط لصفحة في التطبيق يحتاج إلى معرّف موارد منتظم (URI) و/أو إجراء و/أو نوع MIME ليكون صالحًا. (I08d2f، b/154038883)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة دالة الإضافة
NavDestination
الجديدة لتحليل التصنيفات الديناميكية باستخدام الوسيطات على شكلandroid:label="{arg}"
إلى سلسلة. توفّر هذه السياسةReferenceType
وسيطات من خلال تحليل قيمR.string
إلى قيم السلسلة. (I07d89، b/236269380)
تغييرات السلوك
- إنّ
arguments
و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) - تم إصلاح مشكلة عدم حذف حالة Compose المحفوظة (على سبيل المثال، استخدامات
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
.
السجلات الآمنة أثناء التنقّل
- تمت ترقية الاعتمادية "
Android Gradle Plugin
" من قِبل "Navigation Safe Args
" للاعتماد على "7.0.4
"، ما أدّى إلى انخفاض التوافق مع إصدارات AGP قبل7.0
. - تمت إضافة معلومات عن سمة مساحة الاسم Builder.gradle التي سيتم استخدامها بدلاً من applicationId.
تغييرات أخرى
- لم تعد واجهة برمجة التطبيقات
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 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة قاعدة Lint جديدة للتحذير من وضع عناصر
<deeplink>
داخل عناصر<activity>
في ملفnavigation.xml
.(Ic15a5، b/178403185)
إصلاح الأخطاء
- يتم الآن التخلص من النطاقات القابلة للإنشاء في
NavHost
وDialogHost
بالترتيب المتوقَّع، أي أنّه يتم التخلص من العناصر الداخلية القابلة للإنشاء قبل العناصر الخارجية القابلة للإنشاء. (I157e6) - تستخدم ميزة التنقّل SafeArgs الآن
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
إلى أقل من STARTED، ستظل قائمة العناصر المرئية بالكامل كما هي. (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
s الوسيطات بدون داعٍ بعد الآن، ما يعني أنّه يتم الآن إرسال الوسيطات المناسبة إلى وجهتك النهائية. (I31b0a، b/210711399)
الوسيطات الآمنة
- تعتمد ميزة "الوسيطات الآمنة" الآن على الإصدار 7.0.4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. ويعني هذا أنّ ميزة "التنقّل الآمن" لن تكون متوافقة بعد الآن مع إصدارات "استوديو 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
: تم إصلاح مشكلة تعذُّر الوصول إلى نموذج عرض تم إنشاؤه عبرby navGraphViewModels()
منonCreate()
للجزء باستخدامIllegalStateException
. (I8a14d) - تم الرجوع من صفحة التنقّل
2.5.0-alpha01
: لم يعُد فك ترميزNavDeepLink
الوسيط غير ضروري مرتَين، ما يعني أنّه يتم الآن تمرير الوسيطات التي تم فك ترميزها بشكل صحيح إلى وجهتك النهائية. (I31b0a، b/210711399) - تم الرجوع إلى إصدار سابق من التنقّل
2.5.0-alpha01
: تعتمد الوسيطات الآمنة الآن على الإصدار 7.0.4 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. ويعني هذا أنّ منصات التنقّل الآمنة لن تكون متوافقة بعد الآن مع إصدارات "استوديو Android" التي تسبق الإصدار 7.0، ولكنّها متوافقة الآن مع المكوّن الإضافي "7.1.0" لنظام Gradle المتوافق مع Android والإصدارات الأحدث. (I41c88، b/213086135، b/207670704)
الإصدار
الإصدار
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 مخصّصة. لا تتوفّر الأنواع المخصَّصة إلا عند إنشاء الرسم البياني للتنقّل آليًا، مثلاً من خلال Navigation Graph Kotlin DSL. توفّر ميزة التنقّل الآن واجهتَي برمجة تطبيقات
findStartDestination()
وgetHierarchy()
يمكن استخدامهما للمساعدة في تنفيذ واجهة NavigationUI المخصّصة.findStartDestination()
هي دالة إضافة علىNavGraph
تحدّد وجهة البدء الفعلية التي سيتم عرضها عند الانتقال إلى الرسم البياني، حتى إذا كانتstartDestination
في حد ذاتهاNavGraph
مدمجة.getHierarchy()
هي دالة فيNavDestination
يمكن استخدامها للتحقق مما إذا كانت وجهة معينة ضمن التسلسل الهرمي لجهة أخرى.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
تم تعديل
NavigationUI
طريقة لاستخدامBottomNavigationView
لتستخدم درجتها الفائقة ضِمن المادة1.4.0
NavigationBarView
. ويتيح ذلك استخدام هذه الطرق معNavigationRailView
.عند تضخيم عنصر
<action>
عبر XML، يمكن أن تستخدم سمات الصور المتحركة سمات تم استخلاصها من المظهر باستخدام بنيةapp:enterAnim="?attr/transitionEnter"
.تُنشئ أداة "الوسيطات الآمنة" الآن طريقة
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
، بالإضافة إلى إتاحة استخدام برامج التنقّل الاختيارية، مثل مواد التنقّل المصاحبة. - دعم إلزامي للتداخل بين الوجهات يمكن استخدام حركة التنقل المصاحب للتحكم في انتقالات الدخول والخروج باستخدام واجهات برمجة تطبيقات Compose التجريبية.
- نطاق
Lifecycle
لكل وجهة قابلة للإنشاء لا تصل كل وجهة إلى الحالةRESUMED
إلا عند انتهاء أي انتقالات دخول وتنخفض فورًا إلىSTARTED
عند بدء أي عمليات انتقال تؤدّي إلى الخروج، ما يسمح لك بتجنُّب جميع مشاكلIllegalStateException
واللمس المتعدد من خلال بدء استدعاءnavigate
فقط عندما يكونLifecycle
هوRESUMED
. - نطاق
ViewModel
(عبر واجهة برمجة تطبيقاتviewModel()
لـ Lifecycle ViewModel Compose2.4.0
أوhiltViewModel()
من ميزة إنشاء التنقّل في Hilt1.0.0
على مستوى الوجهة، ما يوفّر نطاقًا يبقى يحافظ على التغييرات في الإعدادات ويظهر في الحزمة الخلفية (عندما يتم التخلص من المحتوى القابل للإنشاء بطريقة أخرى) وإشارة في نموذج ViewonCleared()
تشير إلى التخلص الدائم وتنظيف الحالة المرتبطة بهذا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 الذي تم إنشاؤه من "الوسيطات الآمنة" الآن الوسيطات بدون قيم تلقائية قبل تلك التي تحتوي على القيم التلقائية كمعلمات.
- عند إنشاء وسيطات، تضع الوسيطات الآمنة الآن معلمات بدون قيم افتراضية قبل تلك التي تحتوي على قيم افتراضية.
- تعتمد ميزة "المتوسطات الآمنة" الآن على الإصدار 4.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. هذا يعني أنّه من المفترض ألا يصلك تحذير
applicationIdTextResource
باستخدام هذا التحذير.
المشاكل المعروفة
- تم الإصلاح في التنقل
2.5.0-alpha01
: سيتعذر الوصول إلىViewModel
الذي تم إنشاؤه عبرby navGraphViewModels()
منonCreate()
للجزء عند استخدامIllegalStateException
. (b/213504272) - تم الإصلاح في التنقل
2.5.0-alpha01
: الإصدار 2.4.0 من الوسيطات الآمنة غير متوافق مع المكوّن الإضافي لنظام Gradle المتوافق مع Android 7.1.0 والإصدارات الأحدث. (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)
إصلاح أخطاء الوسيطات الآمنة
- لم يعد
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
في مرحلة تجريبية. (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
التي تم إرجاعها للتوافق بشكل أفضل مع المستكشفين الاختياريين، مثل الذين يستخدمون Accompanist Navigation Material. (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 مخصّصة. لا تتوفّر الأنواع المخصَّصة إلا عند إنشاء الرسم البياني للتنقّل آليًا، مثلاً من خلال Navigation Graph Kotlin DSL. (I78440، b/196871885)
تغييرات السلوك
- عند إنشاء الإجراءات، يضع رمز Kotlin الذي تم إنشاؤه من "الوسيطات الآمنة" الآن الوسيطات بدون قيم تلقائية قبل تلك التي تحتوي على القيم التلقائية كمعلمات. (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) - من المفترض ألا يتسبب منشئ جافا SafeArgs بعد الآن في ظهور تحذيرات int عند إنشاء فئات 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
في ميزة "إنشاء التنقل" الآن الرسم البياني كجزء من المقطوعة الأولى. (Ieb7be)
إصلاح الأخطاء
- لم يعد دفع الوجهة الأخيرة من الرسم البياني للتنقل يؤدي إلى ظهور
ClassCastException
. (If0543 وb/172112072 وb/194301889) - تم إصلاح
NullPointerException
الذي يحدث عند إضافة رابط لصفحة في التطبيق بدونUri
والتنقل عبر مسار أو رابط لصفحة في التطبيق. (938a0c، b/193805425) - تم إصلاح مشكلة في ميزة "إنشاء التنقل" حيث لا يصل
NavBackStackEntry
المرتبط بصفحات في التطبيق إلى حالةRESUMED
. (I192c5) - تم إصلاح المشكلة المتمثلة في عدم ازدياد ظهور وجهة مربّع الحوار في طريقة التعامل مع زر الرجوع في نظام NavController، ما قد يتسبّب في اعتراض NavController لزر الرجوع على الرغم من عدم احتوائه على أي حزمة خلفية ليظهر. (aosp/1782668)
الإصدار 2.4.0-alpha05
21 يوليو 2021
تم طرح androidx.navigation:navigation-*:2.4.0-alpha05
. يحتوي الإصدار 2.4.0-alpha05 على هذه عمليات التنفيذ.
تغييرات السلوك
- دائمًا ما تستخدم ميزة
NavHost
في ميزة "إنشاء التنقّل" ميزة التلاشي المتقاطع عند التنقّل في الوجهات. (I07049، b/172112072) - يمكنك الآن إجراء تغييرات على الرسم البياني لـ NavHost. سيتم اعتبار الرسوم البيانية التي لها نفس الوجهات و startDestination (الوجهة) في الرسم البياني متساوين ولن تُحذف حزم
NavController
للخلف. (I0b8db، b/175392262)
إصلاح الأخطاء
- تم إصلاح
NoSuchElementException
عند استدعاءpopBackStack()
من داخلLifecycleObserver
مرفق معNavBackStackEntry
ناجمة عن تعديلات الدخول إلى حالة NavController. (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 على هذه عمليات التنفيذ.
الميزات الجديدة
- أصبحت المسارات متاحة الآن لوجهات "النشاط" و"الجزء" و"مربّع الحوار"، وكذلك في جميع صفحات Dynamic Navigation Kotlin DSL. (Ib5544 وIa617b وI22f96 وb/188914648 وb/188901565)
- تمت إضافة واجهات برمجة تطبيقات تجريبية في
NavigationUI
مؤقتًا للسماح بإيقاف حفظ حالتك. على الرغم من أنّ حفظ الحالة هو السلوك الصحيح، لا تزال هناك استخدامات للمكتبات المتوقّفة نهائيًا (أي الأجزاء التي تم الاحتفاظ بها)، والتي لا يمكن دعمها عند حفظ الحالة، ما يمنح التطبيقات فرصة للتحوّل ببطء من أي واجهات برمجة تطبيقات غير متوافقة. (Idf93c) توفّر ميزة التنقّل الآن واجهتَي برمجة تطبيقات
findDestination()
وgetHierarchy()
يمكن استخدامهما للمساعدة في تنفيذ واجهة NavigationUI المخصّصة.findDestination()
هي دالة الإضافة فيNavGraph
التي ستحدد وجهة ضمن الرسم البياني.getHierarchy()
هي دالة فيNavDestination
يمكن استخدامها للتحقق مما إذا كانت وجهة معينة ضمن التسلسل الهرمي لجهة أخرى.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
تم تعديل طرق NavigationUI التي تتطلّب
BottomNavigationView
لاستخدام فئتها الفائقة التي تم تقديمها في المادة1.4.0
NavigationBarView
بدلاً من ذلك. ويتيح ذلك استخدام هذه الطرق معNavigationRailView
. (Ib0b36، b/182938895)عند تضخيم عنصر
<action>
عبر XML، يمكن أن تستخدم سمات الصور المتحركة سمات تم سحبها من المظهر باستخدام بنيةapp:enterAnim="?attr/transitionEnter"
. (I07bc1، b/178291654)
التغييرات في واجهة برمجة التطبيقات
- تم نهائيًا إيقاف أدوات إنشاء DSL بلغة Kotlin التي تستخدم معرّفًا، ويجب استبدالها بمنصات إنشاء تستخدم المسارات (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 في 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>
في ميزة "التنقل باستخدام أجزاء" لاستخدام واجهات برمجة تطبيقات Navigator الجديدة وتوفير حالة الحفظ والاستعادة.
مسارات التنقل
المسار عبارة عن String
يعرِّف الوجهة بشكل فريد. وعلى الرغم من استخدامه سابقًا في ميزة إنشاء التنقل فقط، فقد تطوَّر هذا المفهوم الآن ليصبح جزءًا من واجهات برمجة التطبيقات الأساسية للتنقل. ويوفر ذلك بديلاً لاستخدام معرّفات الأعداد الصحيحة عند إنشاء الرسم البياني من خلال Navigation Kotlin DSL. (b/172823546)
تضم جميع واجهات برمجة التطبيقات التي كانت تستقبل معرّفًا فقط الآن حملاً زائدًا يتطلب المسار String
. ويشمل ذلك navigate()
وpopBackStack()
وpopUpTo()
وgetBackStackEntry()
.
وينتج عن ذلك بعض الآثار المترتبة على واجهة برمجة التطبيقات:
- تم إيقاف موقع kotlin
popUpTo
على 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)
الوسيطات الآمنة
تُنشئ أداة "الوسيطات الآمنة" الآن طريقة
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
" فقط مع الإصدار1.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 على تحليل وسيطات Enum من الروابط لصفحات في التطبيق بشكل غير حساس لحالة الأحرف. (#152، b/135857840)
- شكرًا لك osipxd على إصلاح المشكلة المتمثلة في أن تكون العناصر النائبة للوسيطات اللاحقة الأولوية على الروابط لصفحات في التطبيق التي لها لاحقة مطابقة تامة. (#153، b/184072811)
- نشكرك tatocaster على تعديل Safe Args لاعتماده على KotlinPoet
1.8.0
. (#172، b/183990444) - نشكرك jossiwolf على إتاحة الحقلين
name
وargument
وتدمير وظيفتَيNamedNavArgument
بشكل علني. (#174، b/181320559) - نتوجّه بالشكر إلى jossiwolf على تقديم إضافة
NavBackStackEntry#provideToCompositionLocals
جديدة توفّرNavBackStackEntry
للمقطوعات الموسيقية المحلية ذات الصلة. (#175، b/187229439) - نشكرك jossiwolf على تحسين سلوك
NavigatorProvider#addNavigator
لضمان عدم حدوث مشاكل عند استدعائه بشكل متكرّر بالمثيل نفسه. (#176، b/187443146)
الإصدار 1.0.0 من ميزة إنشاء التنقل
الإصدار 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
SubscriptionLocal بالعنوانNavBackStackEntry
لهذه الوجهة، ما يضمن حفظ أي ولاية محفوظة مباشرةً فيSavedStateRegistry
واستعادتها إلى جانب الوجهة. (I435d7، b/179469431)
الإصدار 1.0.0-alpha07
10 شباط (فبراير) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.
التحديثات المتعلقة بالاعتمادية
- تعتمد ميزة "إنشاء التنقل" الآن على Lifecycle ViewModel Compose 1.0.0-alpha01 لإتاحة
viewModel()
لوجهاتcomposable
. (I7a374) - يستخدم "
NavHost
" الآن علامةLocalOnBackPressedDispatcherOwner
الجديدة من Activity-Compose 1.3.0-alpha01 للحصول على رمزOnBackPressedDispatcher
الذي يتم ضبطه علىNavController
. (I65b12)
الإصدار 1.0.0-alpha06
28 يناير 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طريقة الإضافة
getBackStackEntry(route: String)
فيNavController
والتي تعرض طريقةNavBackStackEntry
المرتبطة. (If8931)
الإصدار 1.0.0-alpha05
13 كانون الثاني (يناير) 2021
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.
تم التعديل لكي يعتمد على الإصدار 1.0.0-alpha10 من Compose.
الإصدار 1.0.0-alpha04
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.navigation:navigation-compose:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على عمليات التنفيذ هذه.
- تم التحديث للتوافق مع ميزة "إنشاء"
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 لاستخدام العمليات المنبثقة وLaunchsingleTop (If96c3 وb/171468994)
- تمت إضافة دالة تنقل تأخذ مسارًا بدلاً من معرف تتيح لك إنشاء رسوم بيانية متداخلة في لغة الاستعلامات البنيوية (DSL) الخاصة بميزة "إنشاء التنقل". (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
لأنّ مالك النشاطSTOPPED
STARTED
- أصبح تحليل نطاقات الروابط المؤدية إلى صفحات في التطبيق غير حسّاس لحالة الأحرف، ما يضمن تطابق
www.example.com
مع كلٍّ منwww.example.com
وwww.Example.com
. يُرجى العلم أنّ أسماء مَعلمات طلب البحث لا تزال حسّاسة لحالة الأحرف. (#144، b/153829033) - تم إصلاح
NullPointerException
الذي قد يحدث عندما تحتوي الوجهة على عدة وسيطات تلقائية غير قابلة للقيم الفارغة ويتم الانتقال إلى تلك الوجهة مع إلغاء مجموعة فرعية فقط من هذه الوسيطات. (aosp/1644827)
التحديثات المتعلقة بالاعتمادية
- يعتمد المكوّن الإضافي "التنقل الآمن" لـ Gradle المتوافق مع نظام Gradle المتوافق مع Kotlin على الإصدار 1.4.31 من المكوّن الإضافي Kotlin Gradle. (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
باستخدام الكائن نفسه الذي تم ضبطه من قبل أمر No-op (Idf491، b/177825470) - تضيف أداة Safe-Args الآن تعليقات توضيحية لإيقاف التعليقات التوضيحية بالطرق الصحيحة عند استخدام JavaScript. (I8fbc5، وb/179463137)
المساهمات الخارجية
- نشكرك
JvmName
على طلب السحب للتأكّد من أنّه يمكن الآن تحليل وسيطاتReferenceType
بشكل صحيح عند إرسالها كجزء من معرّف موارد منتظم (URI) لرابط لصفحة معيّنة. (#127، b/179166693) - نشكرك
tatocaster
على طلب السحب للسماح للوسيطةdefaultValue
للوسيطة معapp:argType=”float”
بأن تتيح الآن القيم التلقائية للأعداد الصحيحة. (#117، b/173766247)
الإصدار 2.3.3
الإصدار 2.3.3
27 كانون الثاني (يناير) 2021
تم طرح androidx.navigation:navigation-*:2.3.3
. يحتوي الإصدار 2.3.3 على هذه الالتزامات.
إصلاح الأخطاء
- لم يعد هناك عطل عند فتح
NavBackStackEntry
قبل نقلLifecycle
إلىCREATED
. (Ie3ba3) - تم إصلاح الانحدار الناتج عن b/171364502 حيث تسبّب الانتقال إلى
نشاط بقيمة مورد الصور المتحركة
0
في حدوثResourceNotFoundException
. (I7aedb، b/176819931)
الإصدار 2.3.2
الإصدار 2.3.2
2 كانون الأول (ديسمبر) 2020
تم طرح androidx.navigation:navigation-*:2.3.2
. يحتوي الإصدار 2.3.2 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الانحدار في
NavigationUI
حيث يؤدي استخدام وجهة<activity>
معonNavDestinationSelected
إلى تعذّر الانتقال إلى النشاط. (I22e34، b/171364502) - تم إصلاح المشكلة المتمثلة في أن
navigation-dynamic-features-fragment
قد يؤدي إلى الانتقال إلى الوجهة التي تم تثبيتها حديثًا عدة مرات. (aosp/1486056 وb/169636207) - تم إصلاح مشكلة عدم إرسال الوسيطات التلقائية إلى مثيلات عددها
OnDestinationChangedListener
عند استخدامlaunchSingleTop
. (I2c5cb) - تم إصلاح مشكلة عدم أن يؤدي الانتقال إلى رسم بياني للتنقّل المتداخل إلى إنشاء مثيل رسم بياني جديد على الحزمة الخلفية. (Ifc831)
- تم إصلاح مشكلة عدم تدمير الرسم البياني للتنقّل نفسه من الحزمة الخلفية عند استخدام
navigate()
معpopUpTo
الذي أزال الوجهة الأخيرة في الرسم البياني للتنقّل. (I910a3) - تستخدم ميزة Navigation SafeArgs الآن الإصدار 1.7.2 من KotlinPoet الذي يتيح استخدام وضع واجهة برمجة التطبيقات الصريح في Kotlin. (I918b5)
- يتحقّق
NavHostFragment.findNavController(Fragment)
الآن أيضًا من عرض الديكور الجذري لـ DialogFragment بالإضافة إلى عمليات التحقق الحالية للتسلسل الهرمي للأجزاء والمخطط الهرمي لعرض الجزء. ويسمح لك هذا باختبار أجزاء مربّعات الحوار التي تستخدم ميزة التنقّل معFragmentScenario
وNavigation.setViewNavController()
. (I69e0d)
الإصدار 2.3.1
الإصدار 2.3.1
14 تشرين الأول (أكتوبر) 2020
تم طرح androidx.navigation:navigation-*:2.3.1
. يحتوي الإصدار 2.3.1 على هذه الالتزامات.
الميزات الجديدة
- تمت إضافة موارد Animator التلقائية إلى واجهة مستخدم التنقّل ويُنصَح باستخدامها على موارد الصور المتحركة التلقائية. (b/167430145)
- يلغي NavOptions الآن طريقتي رمز التجزئة ويساوي (b/161586466)
- تتضمّن عملية التنقّل الآن الوجهة الحالية في الحقل "No Destination with ID" (لا توجد وجهة ذات رقم التعريف) UnknownArgumentException، مما من شأنه تحسين تجربة تصحيح أخطاء مطوّري البرامج. (b/168311416)
إصلاح الأخطاء
- لن تؤدي الوسيطات الآمنة إلى التفاف سطر الإرجاع بعد الآن، حتى إذا كان اسم فئة الوسيطة الذي تم إنشاؤه أطول من 100 حرف. (b/168584987)
التغييرات في التبعية
- يعتمد
navigation-ui
الآن على DrawerLayout 1.1.1، لضمان قدرة "NavigationUI
" على فتح الدرج حتى عند استخدامLOCK_MODE_LOCKED_CLOSED
أوLOCK_MODE_LOCKED_OPEN
. (b/162253907) - تعتمد ميزة "الوسيطات الآمنة" الآن على الإصدار 1.6.0 من KotlinPoet بتنسيق aosp/1435911.
- تعتمد الوسيطات الآمنة الآن على AGP 4.0.1 (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
في تنسيق الدرج1.1.0
. - إتاحة الإجراءات ونوع Mime في الروابط المؤدية إلى صفحات في التطبيق: تم توسيع نطاق الروابط المؤدية إلى صفحات في التطبيق لتشمل
app:action
وapp:mimeType
بالإضافة إلىapp:uri
التي كانت متوفّرة سابقًا. تتيح ميزة "NavController
" الآن التنقّل باستخدام أي مجموعة من هذه الحقول عبر فئةNavDeepLinkRequest
الجديدة. راجِع التنقّل باستخدام NavDeepLinkRequest للحصول على مزيد من المعلومات.
المشاكل المعروفة
- لا يمكن تنفيذ إجراءات الروابط المؤدية إلى صفحات في التطبيق وأنواع Mime بعد في دمج البيان. وإلى حين اكتمال هذا الإجراء، لن يتم تضمين نوع mime في عنصر
<data>
أو<action>
المخصّص في أي عناصر<intent-filter>
يتم إنشاؤها من العنصر<nav-graph>
في ملف البيان. عليك إضافة سمة<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
وتنسيق الدرج1.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)
إصلاح الأخطاء
- تم إصلاح مشكلة تجاهل عناصر Intent لرابط صفحة معيّنة في التطبيق عند استخدام وجهة بدء مدمجة. (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) - تعرض أداة Navigation Graph 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
بدءًا من تخطيط الدرج1.1.0-alpha04
)، ما يسمح لك باستخدام عمليات تنفيذ مخصّصة لـOpenable
معNavigationUI
. (b/129030452)
إصلاح الأخطاء
- تحتفظ قواعد ProGuard
navigation-common-ktx
الآن بشكل صحيح بفئاتNavArgs
المستخدمة فقط بدلاً من جميع مثيلاتNavArgs
. (b/150213558)
التغييرات في التبعية
- أعاد التنقّل اعتماده على Core
1.2.0
وأصبح يعتمد الآن على Core1.1.0
لتجنُّب إجبار المطوّرين على الانتقال إلى استخدام تبعية أحدث عندما لا يعتمد التنقّل على أيّ واجهات برمجة تطبيقات جديدة في Core1.2.0
.
الإصدار 2.3.0-alpha02
19 شباط (فبراير) 2020
تم طرح androidx.navigation:navigation-*:2.3.0-alpha02
. يحتوي الإصدار 2.3.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
- يتيح لك
NavBackStackEntry
الآن الوصول إلىSavedStateHandle
مناسب لتخزين كميات صغيرة من الحالات المحفوظة التي يجب ربطها بإدخال محدّد في الحزمة الخلفية. راجِع عرض نتيجة للاطّلاع على مثال عن حالة استخدام. (b/79672220)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طرق ملائمة لـ
getCurrentBackStackEntry()
وgetPreviousBackStackEntry()
لتسهيل استردادNavBackStackEntry
للوجهات الحالية والسابقة. (b/79672220)
إصلاح الأخطاء
- يمرّر
navigateUp()
الآن وسيطات الوجهة الحالية وKEY_DEEP_LINK_INTENT
إلى الوجهة السابقة عند تشغيل تطبيقك في حزمة المهام الخاصة بك. (b/147456890)
التغييرات في التبعية
- يعتمد التنقّل الآن على
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
: تم تعديل قواعد ProGuardnavigation-ui
فيDrawerArrowDrawable
لضمان أنandroid.enableJetifier=true
ليس مطلوبًا. (b/147610424) - من التنقل
2.2.1
: تحتوي وحدةnavigation-common-ktx
الآن على اسم فريد لحزمة البيان بدلاً من مشاركة اسم حزمة البيان نفسه مثلnavigation-runtime-ktx
. (aosp/1141947)
التعديلات المتعلقة بالاعتمادية
- من التنقّل
2.2.1
: يعتمد التنقّل2.2.1
الآن على حالة حفظ نموذج عرض دورة الحياة2.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
الآن على Lifecycle ViewModelState2.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:
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
و"حفظ النموذج على مراحل النشاط"1.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) - يتم الآن تجنُّب طلب
getResourceName()
بدون داعٍ من قِبلNavInflater
، ما يؤدي إلى تسريع وقت التضخم بنسبة تصل إلى %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)
الإصدار
الإصدار
5 أيلول (سبتمبر) 2019
تم طرح androidx.navigation:navigation-*:2.1.0
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
تغييرات مهمة منذ الإصدار 2.0.0
- تحديد نطاق ViewModels إلى رسم بياني للتنقّل: يمكنك الآن إنشاء ViewModels على مستوى الرسم البياني للتنقّل باستخدام سمة
by navGraphViewModels()
المفوَّضة لمستخدمي Kotlin الذين يستخدمون مكتبات-ktx
أو باستخدام واجهة برمجة التطبيقاتgetViewModelStoreOwner()
المُضافة إلىNavController
. يُرجى الاطّلاع على مشاركة البيانات المتعلقة بواجهة المستخدم بين الوجهات للحصول على مزيد من المعلومات. - وجهات مربّع الحوار: يمكنك الآن إنشاء وجهات
<dialog>
تعرضDialogFragment
عندnavigate
لها. يتيحNavHostFragment
وجهات مربّعات الحوار تلقائيًا. راجِع المقالة إنشاء وجهة من DialogFragment للحصول على مزيد من المعلومات. - التنقل عبر Uri: يمكنك الآن
navigate
باستخدامUri
، الذي يستخدم<deepLink>
الذي أضفته إلى وجهة للانتقال إلى هناك. راجع التنقل باستخدام معرف المستخدم للحصول على مزيد من المعلومات. - NavHostController: تم نقل واجهات برمجة التطبيقات المستخدمة تحديدًا لإنشاء
NavHost
مخصَّص إلىNavHostController
، ما يسمح بعمليات التنفيذ بربطNavController
بالمضيفLifecycleOwner
وOnBackPressedDispatcher
وViewModelStore
.
الإصدار 2.1.0-rc01
7 آب (أغسطس) 2019
تم طرح androidx.navigation:navigation-*:2.1.0-rc01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة تطبيقات
getViewModelStore()
المتوقفة نهائيًا فيNavController
والتي تم تقديمها في2.1.0-alpha02
. (aosp/1091021)
الإصدار 2.1.0-beta02
19 تموز (يوليو) 2019
تم طرح androidx.navigation:*:2.1.0-beta02
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة الاعتمادية غير المقصودة التي تم إجراؤها في
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
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهات برمجة التطبيقات المرتبطة بالمضيف على
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()
المُضافة إلى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 - تعتمد أداة Safe Args الآن على الإصدار 1.1.0 من KotlinPoet، ما يتيح إصلاح المشكلة التي تتعلّق بأسماء الحِزم الطويلة جدًا. b/123654948
الإصدار 2.0.0
الإصدار 2.0.0
14 آذار (مارس) 2019
تم إصدار ميزة التنقل 2.0.0
بدون أي تغييرات من 2.0.0-rc02
.
الإصدار 2.0.0-rc02
6 آذار (مارس) 2019
يوفّر الإصدار 2.0.0-rc02 من ميزة التنقّل 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 - تعتمد ميزة "الوسيطات الآمنة" الآن على الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android aosp/888413
- تعتمد ميزة "الوسيطات الآمنة" الآن على الإصدار 1.3.20 من لغة Kotlin aosp/888414.
إصلاح الأخطاء
- يمكن الآن استخدام Safe Args في المكتبة ووحدات الميزات على جميع إصدارات مكوّن Android Gradle الإضافي. b/121304903
- تم إصلاح الانحدار الذي قد يتسبب في ظهور جميع نُسخ الوجهة من أعلى الحزمة الخلفية بدلاً من طرح وجهة واحدة في كل مرة بسبب إجراء
popBackStack()
واحد. b/123552990 - تم إصلاح مشكلة عدم مزامنة حالة
FragmentNavigator
مع حالةNavController
، ما أدى إلى ظهورIllegalStateException
عند محاولة استعادة حزمة الخلفية. b/123803044 - تم إصلاح مشكلة عدم ظهور سهم الرجوع الذي تمت معالجته لـ
NavigationUI
عند استخدام ProGuard مع إخفاء مفاتيح فك التشفير. b/123449431 - يتعامل الرمز الذي تنشئه أداة "الوسيطات الآمنة" الآن بشكل صحيح مع
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
المشاكل المعروفة
- يتعذّر على "الوسيطات الآمنة" استيراد فئة الاتجاهات المرتبطة بالإجراءات العامة. 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
التي تم إنشاؤها باستخدام أداة Safe Args التي تم إنشاؤها ذات بنية إنشاء عامة، ويجب أن يتم إنشاؤها فقط من خلال الطرق الثابتة في فئات "الاتجاهات" التي تم إنشاؤها. b/122963206 - تم الآن وضع علامة على
Bundle
المعروضة منNavDirections
getArguments()
على أنّها@NonNull
بدلاً من@Nullable
. b/123243957
إصلاح الأخطاء
- يتعامل
NavDeepLinkBuilder
الآن بشكل صحيح مع العديد من علاماتPendingIntent
متزامنة بشكل صحيح إلى الوجهة نفسها، وذلك باستخدام الوسيطات التي تُدخلها لتحديد مدى التفرّد. b/120042732 - يعالج
NavController
الآن عملياتpopBackStack()
بشكل صحيح عند استخدامNavHostFragment
مدمج أو أجزاء فرعية أخرى مع حزمة خلفية. b/122770335 - تضبط ميزة "
NavigationUI
" الآن وصف المحتوى للزر للأعلى بشكل صحيح. b/120395362 - تتعامل الآن فئات الاتجاهات التي أنشأتها أداة "الوسيطات الآمنة" بشكل صحيح مع الإجراءات العامة التي لها رقم التعريف نفسه كإجراء في وجهة. 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
التي تتضمّن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 متوافقة الآن مع المكوّن الإضافي Android Gradle Plugin 3.4 Canary 4 والإصدارات الأحدث 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 - تم إنشاء العديد من الفئات والطرق التي لا تهدف إلى التصنيف الفرعي، مثل
NavOptions
وNavInflater
وNavDeepLinkBuilder
وAppBarConfiguration
،final
aosp/835681 - تمت إزالة طريقة
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.
- تتجاهل "الوسيطات الآمنة" الآن المجلدات الفرعية لأدلة الموارد 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 - إصلاح تعذُّر الإصدار في "الوسيطات الآمنة" b/109409713
- إصلاح إحالة ناجحة من معرّفات الموارد إلى أسماء JavaScript b/111602491
- إصلاح رسائل الخطأ الخاصة بقابلية القيم الفارغة في المكوّن الإضافي "الوسيطات الآمنة"
- أضِف التعليقات التوضيحية التي لا تشير إلى إمكانية قبول القيم الفارغة.
الإصدار 1.0.0-alpha04
July 19, 2018
يحتوي قسم التنقّل 1.0.0-alpha04
والمكوّن الإضافي Safe Args gradle المرتبط على عدد من التغييرات في واجهة برمجة التطبيقات وتغييرات السلوك وإصلاحات الأخطاء.
تغييرات واجهة برمجة التطبيقات / السلوك
- يضبط NavHostFragment الجزء الحالي دائمًا كجزء التنقّل الأساسي، مع ضمان تمييز مدراء الأجزاء الفرعية قبل ظهور NavHostFragment b/111345778
الوسيطات الآمنة
- تغيير قد يؤدي إلى عطل: تم تغيير
app:type
إلىapp:argType
لتجنُّب التضارب مع المكتبات الأخرى مثل ConstraintLayout 2.0.0-alpha1 b/111110548 - يمكن الآن النقر على رسائل الخطأ الواردة من "الوسيطات الآمنة" b/111534438.
- تؤكد فئات الوسيطات الآن أن سمات
NonNull
ليست فارغة في الواقع b/111451769 - تمت إضافة تعليقات
NonNull
توضيحية إضافية إلى الفئات التي تم إنشاؤها بواسطة NavDirections وArgs 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"
مع defaultValues على شكل "123L" b/79563966. - أصبحت الوسيطات القابلة للتعديل متاحة الآن باستخدام اسم فئة مؤهل بالكامل للسمة
app:type
. إنّ القيمة التلقائية الوحيدة المسموح بها هي"@null"
b/79563966. - تنفِّذ فئات الوسيطات الآن
equals()
وhashCode()
b/79642246 - يمكن الآن تطبيق المكوّن الإضافي Safe Args على مشاريع المكتبة b/80036553.
- يمكن الآن تطبيق المكوّن الإضافي Safe Args على المشاريع المميّزة b/110011752.
إصلاح الأخطاء
- تم إصلاح المشاكل عند التنقل أثناء طرق مراحل نشاط الأجزاء b/109916080.
- تم إصلاح المشكلات عند التنقل عبر الرسوم البيانية المدمجة عدة مرات b/110178671
- تم إصلاح المشاكل عند استخدام
setPopUpTo
مع الوجهة الأولى في الرسم البياني b/109909461. - تم إصلاح المشكلة المتمثلة في تمرير جميع قيم
app:defaultValue
على أنها سلاسل b/110710788 - تضيف أداة aapt2 المضمّنة مع الإصدار 3.2 التجريبي من المكوّن الإضافي لنظام Gradle المتوافق مع Android 01 الآن قواعد الاحتفاظ لكل سمة
android:name
في ملفات XML الخاصة بالتنقل b/79874119. - تم إصلاح تسرُّب الذاكرة عند استبدال برنامج FragmentNavigator التلقائي b/110900142.
الإصدار 1.0.0-alpha02
7 حزيران (يونيو) 2018
تغييرات السلوك
يستخدم تطبيق "
FragmentNavigator
" اشتراك "setReorderingAllowed(true)
" الآن. b/109826220انتقِل الآن إلى الوسيطات URLDecodes التي تم تحليلها من عناوين URL للروابط المؤدية إلى صفحات في التطبيق. b/79982454
إصلاح الأخطاء
تم إصلاح
IllegalStateException
عند استدعاء الانتقال من طرق مراحل نشاط التجزئة. b/79632233يعتمد التنقّل الآن على الإصدار 27.1.1 من مكتبة الدعم لإصلاح الوميض عند استخدام الصور المتحركة. 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
.