नेविगेशन कंट्रोलर बनाना

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

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

अपने NavController में नेविगेशन ग्राफ़ जोड़ने के तरीके के बारे में जानने के लिए, नेविगेशन ग्राफ़ डिज़ाइन करना लेख पढ़ें. NavController, अपने ग्राफ़ में मौजूद डेस्टिनेशन पर जाने के लिए कुछ अलग-अलग तरीके उपलब्ध कराता है. ज़्यादा जानकारी के लिए, किसी जगह पर नेविगेट करना लेख पढ़ें.

लिखें

Jetpack Compose का इस्तेमाल करते समय NavController बनाने के लिए, rememberNavController() को कॉल करें:

val navController = rememberNavController()

आपको कंपोज़ेबल हैरारकी में NavController को सबसे ऊपर रखना चाहिए. यह इतना बड़ा होना चाहिए कि इसे रेफ़रंस करने वाले सभी कंपोज़ेबल ऐसा कर सकें.

ऐसा करने से, आपको अपनी स्क्रीन के बाहर कंपोज़ेबल अपडेट करने के लिए, NavController को सोर्स ऑफ़ ट्रुथ के तौर पर इस्तेमाल करने की सुविधा मिलती है. यह स्टेट होइस्टिंग के सिद्धांतों के मुताबिक काम करता है.

व्यू

अगर Views UI फ़्रेमवर्क का इस्तेमाल किया जा रहा है, तो कॉन्टेक्स्ट के हिसाब से, इनमें से किसी एक तरीके का इस्तेमाल करके अपना NavController वापस पाया जा सकता है:

Kotlin:

Java:

आम तौर पर, आपको सबसे पहले NavHostFragment मिलता है. इसके बाद, फ़्रैगमेंट से NavController वापस मिलता है. इस स्निपेट में इसे दिखाया गया है:

Kotlin

val navHostFragment =
    supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

Java

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();

इस बारे में और पढ़ें