التنقّل

يشير التنقل إلى التفاعلات التي تتيح للمستخدمين التنقل عبر أجزاء مختلفة من المحتوى داخل تطبيقك والدخول إليها والعودة منها.

يشتمل مكوِّن التنقل في Android Jetpack على مكتبة التنقل، والمكوّن الإضافي Safe Args Gradle، وأدوات تساعدك في تنفيذ التنقل في التطبيق. يتعامل مكوِّن التنقل مع حالات استخدام متنوعة للتنقل، من النقرات المباشرة على الأزرار إلى الأنماط الأكثر تعقيدًا، مثل أشرطة التطبيقات ودرج التنقل.

المفاهيم الرئيسية

يقدم الجدول التالي نظرة عامة على المفاهيم الأساسية في التنقل والأنواع الرئيسية التي تستخدمها لتنفيذها.

الفكرة

الغرض

Type

المضيف

عنصر في واجهة مستخدم يحتوي على وجهة التنقّل الحالية أي، عندما يتنقل المستخدم عبر أحد التطبيقات، يبدّل التطبيق الوجهات من داخل مضيف التنقل وخارجه.

رسم بياني

هيكل بيانات يحدد جميع وجهات التنقل داخل التطبيق وكيفية اتصالها معًا.

NavGraph

وحدة التحكّم

المنسق المركزي لإدارة التنقل بين الوجهات تقدم وحدة التحكم طرقًا للتنقل بين الوجهات والتعامل مع الروابط المؤدية إلى صفحات في التطبيق وإدارة الحزمة الخلفية والمزيد.

NavController

الوجهة

عقدة في الرسم البياني للتنقل. عندما ينتقل المستخدم إلى هذه العقدة، يعرض المضيف محتواها.

NavDestination

يتم إنشاؤها عادةً عند إنشاء الرسم البياني للتنقل.

مسار الجولة

تحديد الوجهة وأي بيانات مطلوبة بشكل فريد.

يمكنك التنقّل باستخدام المسارات. تنقلك المسارات إلى الوجهات.

أي نوع بيانات تسلسلية.

المزايا والميزات

يوفر مكوِّن التنقل عددًا من الفوائد والميزات الأخرى، بما في ذلك ما يلي:

  • الصور المتحركة والانتقالات: توفر موارد موحدة للصور المتحركة والانتقالات.
  • الربط بصفحة معيّنة:يؤدي هذا الخيار إلى تنفيذ الروابط لصفحات في التطبيق التي تنقل المستخدم مباشرةً إلى وجهة معيّنة والتعامل معها.
  • أنماط واجهة المستخدم: تتيح استخدام أنماط مثل أدراج التنقل والتنقل السفلي مع الحد الأدنى من العمل الإضافي.
  • أمان النوع: يتضمّن الدعم لتمرير البيانات بين الوجهات باستخدام type Safety.
  • دعم ViewModel: يفعِّل هذا الخيار تحديد نطاق ViewModel إلى رسم بياني للتنقّل لمشاركة البيانات المتعلقة بواجهة المستخدم بين وجهات الرسم البياني.
  • المعاملات المجزّأة: تتيح هذه الميزة المعاملات المجزّأة وتعالجها بالكامل.
  • الاحتفاظ بنسخة احتياطية والاحتفاظ بنسخة احتياطية: لمعالجة إجراءات الاحتفاظ بنسخة احتياطية والنسخ الاحتياطية بشكل صحيح بشكل تلقائي

إعداد البيئة

لتضمين دعم التنقل في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle في تطبيقك:

Groovy

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")
}

للحصول على معلومات حول إضافة مكونات بنية أخرى إلى مشروعك، يمكنك الاطّلاع على إضافة مكونات إلى مشروعك.

الخطوات التالية

لمزيد من الوثائق والموارد المتعلقة بمكون التنقل، راجع الموارد التالية.

الأدلة التفصيلية

للحصول على مزيد من المعلومات حول كيفية تنفيذ مضيف التنقل وNavController، بالإضافة إلى تفاصيل حول كيفية تفاعله مع Compose وإطارات عمل واجهة المستخدم الأخرى، يُرجى الاطّلاع على الأدلة التالية:

الدروس التطبيقية حول الترميز

الفيديوهات الطويلة

العيّنات