नेविगेशन

नेविगेशन से उन इंटरैक्शन का पता चलता है जिनकी मदद से उपयोगकर्ता, आपके ऐप्लिकेशन में मौजूद अलग-अलग कॉन्टेंट पर नेविगेट कर पाते हैं.

Android Jetpack के नेविगेशन कॉम्पोनेंट में नेविगेशन लाइब्रेरी, Safe Args Gradle प्लग-इन, और टूल शामिल हैं. इनकी मदद से, ऐप्लिकेशन नेविगेशन को लागू किया जा सकता है. नेविगेशन कॉम्पोनेंट, नेविगेशन के अलग-अलग इस्तेमाल के उदाहरणों को मैनेज करता है. इनमें, बटन पर सीधे क्लिक करने से लेकर, ऐप्लिकेशन बार और नेविगेशन पैनल जैसे ज़्यादा जटिल पैटर्न शामिल हैं.

खास कॉन्सेप्ट

यहां दी गई टेबल में, नेविगेशन के मुख्य कॉन्सेप्ट और उन्हें लागू करने के लिए इस्तेमाल किए जाने वाले मुख्य टाइप के बारे में खास जानकारी दी गई है.

कॉन्सेप्ट

मकसद

टाइप

होस्ट

यूज़र इंटरफ़ेस (यूआई) एलिमेंट, जिसमें मौजूदा नेविगेशन डेस्टिनेशन शामिल होता है. इसका मतलब है कि जब कोई उपयोगकर्ता किसी ऐप्लिकेशन में नेविगेट करता है, तो ऐप्लिकेशन नेविगेशन होस्ट में डेस्टिनेशन को अंदर और बाहर स्वैप करता है.

ग्राफ़

एक डेटा स्ट्रक्चर, जो ऐप्लिकेशन में मौजूद सभी नेविगेशन डेस्टिनेशन के बारे में बताता है. साथ ही, यह भी बताता है कि वे एक-दूसरे से कैसे जुड़े हैं.

NavGraph

कंट्रोलर

डेस्टिनेशन के बीच नेविगेशन को मैनेज करने के लिए, मुख्य कोऑर्डिनेटर. कंट्रोलर से, डेस्टिनेशन के बीच नेविगेट करने, डीप लिंक मैनेज करने, बैक स्टैक मैनेज करने वगैरह के तरीके मिलते हैं.

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 और अन्य यूज़र इंटरफ़ेस (यूआई) फ़्रेमवर्क के साथ कैसे इंटरैक्ट करते हैं, इन गाइड को देखें:

कोडलैब

वीडियो

सैंपल