नेविगेशन

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

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

मुख्य सिद्धांत

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

कॉन्सेप्ट

मकसद

प्रकार

होस्ट

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

ग्राफ़

यह एक डेटा स्ट्रक्चर है. इसमें ऐप्लिकेशन में मौजूद सभी नेविगेशन डेस्टिनेशन और उनके बीच कनेक्शन के बारे में बताया जाता है.

NavGraph

कंट्रोलर

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

NavController

मंज़िल

नेविगेशन ग्राफ़ में मौजूद नोड. जब उपयोगकर्ता इस नोड पर जाता है, तो होस्ट अपना कॉन्टेंट दिखाती है.

NavDestination

आम तौर पर, नेविगेशन ग्राफ़ बनाते समय इसे बनाया जाता है.

देश के हिसाब से डेटा

यह कुकी, किसी डेस्टिनेशन और उसके लिए ज़रूरी डेटा की यूनीक तरीके से पहचान करती है.

रास्तों का इस्तेमाल करके नेविगेट किया जा सकता है. रास्तों की मदद से, मंज़िल तक पहुंचा जा सकता है.

सीरियल किया जा सकने वाला कोई भी डेटा टाइप.

फ़ायदे और सुविधाएं

नेविगेशन कॉम्पोनेंट से कई अन्य फ़ायदे और सुविधाएं मिलती हैं. इनमें ये भी शामिल हैं:

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

फ़्रेमवर्क के विकल्प

नेविगेशन कॉम्पोनेंट, आपके नेविगेशन ग्राफ़ को लागू करने के लिए दो मुख्य फ़्रेमवर्क के साथ काम करता है. यह आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) आर्किटेक्चर पर निर्भर करता है:

  • Compose: अगर आपका ऐप्लिकेशन पूरी तरह से Jetpack Compose की मदद से बनाया गया है, तो Navigation Compose का इस्तेमाल करें. आपके ग्राफ़ में मौजूद डेस्टिनेशन, कंपोज़ेबल होने चाहिए.
  • फ़्रैगमेंट: अगर आपका ऐप्लिकेशन व्यू या व्यू और Compose, दोनों का इस्तेमाल करता है, तो फ़्रैगमेंट पर आधारित नेविगेशन कॉम्पोनेंट का इस्तेमाल करें. आपके ग्राफ़ में मौजूद डेस्टिनेशन ऐसे फ़्रैगमेंट होते हैं जो स्टैंडर्ड व्यू, कॉन्टेंट कंपोज़ करने या दोनों को एक साथ होस्ट कर सकते हैं.

व्यू से कंपोज़ पर माइग्रेट करने वाले ऐप्लिकेशन के लिए, हमारा सुझाव है कि वे फ़्रैगमेंट पर आधारित नेविगेशन कॉम्पोनेंट का इस्तेमाल जारी रखें. साथ ही, अलग-अलग स्क्रीन को कंपोज़ में बदलें. सभी फ़्रैगमेंट को कंपोज़ेबल से बदलने के बाद, नेविगेशन ग्राफ़ को Navigation Compose पर माइग्रेट किया जा सकता है.

अपना एनवायरमेंट सेट अप करना

अपने प्रोजेक्ट में नेविगेशन की सुविधा शामिल करने के लिए, अपने ऐप्लिकेशन की 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.9.8"

  // 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.9.8"

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

कोडलैब

वीडियो

सैंपल