ניווט

'ניווט' מתייחס לאינטראקציות שמאפשרות למשתמשים לנווט בין קטעי התוכן השונים באפליקציה, להיכנס אליהם ולצאת מהם.

רכיב הניווט של Android Jetpack כולל את ספריית הניווט, את הפלאגין Safe Args Gradle וכלים שיעזרו לכם להטמיע ניווט באפליקציה. רכיב הניווט מטפל בתרחישי שימוש שונים של ניווט, החל מלחיצות פשוטות על לחצנים ועד לדפוסים מורכבים יותר, כמו סרגי אפליקציות ותיבות הניווט.

מושגים מרכזיים

בטבלה הבאה מוצגת סקירה כללית של מושגי המפתח בתכונת הניווט והסוגים העיקריים שבהם משתמשים כדי להטמיע אותם.

קונספט

המטרה

סוג

מארח

רכיב בממשק המשתמש שמכיל את יעד הניווט הנוכחי. כלומר, כשמשתמש מנווט באפליקציה, האפליקציה למעשה מחליפה יעדים ממארח הניווט וממארח הניווט החוצה.

תרשים

מבנה נתונים שמגדיר את כל יעדי הניווט באפליקציה ואת האופן שבו הם מחוברים זה לזה.

NavGraph

שלט רחוק

הארגון המרכזי שמנהל את הניווט בין היעדים. ב-Controller יש שיטות לניווט בין יעדים, לטיפול בקישורי עומק, לניהול סטאק החזרה אחורה ועוד.

NavController

יעד

צומת בתרשים הניווט. כשהמשתמש מנווט לצומת הזה, המארח מציג את התוכן שלו.

NavDestination

בדרך כלל נוצרים במהלך היצירה של תרשים הניווט.

מסלול

מזהה ייחודי של יעד ושל כל הנתונים הנדרשים לו.

אפשר לנווט באמצעות מסלולים. מסלולים מאפשרים לכם להגיע ליעדים.

כל סוג נתונים שניתן לסדר בסדרה.

יתרונות ותכונות

לרכיב הניווט יש כמה יתרונות ותכונות נוספות, כולל:

  • אנימציות ומעברים: משאבים סטנדרטיים לאנימציות ולמעברים.
  • קישורי עומק: הטמעה וטיפול בקישורי עומק שמעבירים את המשתמש ישירות ליעד.
  • תבניות של ממשק משתמש: תמיכה בתבניות כמו תיבות ניווט ותפריט ניווט בתחתית המסך, עם עבודה נוספת מינימלית.
  • בטיחות סוגים: כולל תמיכה בהעברת נתונים בין יעדים עם בטיחות סוגים.
  • תמיכה ב-ViewModel: מאפשרת להגדיר את ההיקף של ViewModel לתרשים ניווט כדי לשתף נתונים שקשורים לממשק המשתמש בין היעדים בתרשים.
  • עסקאות מנותקות: תמיכה מלאה בעסקאות מנותקות וטיפול בהן.
  • חזרה אחורה וחזרה למעלה: המערכת מטפלת בפעולות 'חזרה אחורה' ו'חזרה למעלה' בצורה תקינה כברירת מחדל.

הגדרת הסביבה

כדי לכלול תמיכה בניווט בפרויקט, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של האפליקציה:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.6"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.6"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

במאמר הוספת רכיבים לפרויקט מוסבר איך מוסיפים רכיבי ארכיטקטורה אחרים לפרויקט.

השלבים הבאים

למידע נוסף על רכיב הניווט ומקורות מידע נוספים, אפשר לעיין במקורות המידע הבאים.

מדריכים מפורטים

למידע נוסף על הטמעת מארח ניווט ו-NavController, ועל האינטראקציה שלהם עם Compose ומראות UI אחרים, תוכלו לעיין במדריכים הבאים:

Codelabs

סרטונים

דוגמיות