Android Studio में एक जीयूआई होता है. इसकी मदद से, नेविगेशन ग्राफ़ बनाया और उसमें बदलाव किया जा सकता है. यह असल में, एक्सएमएल रिसॉर्स फ़ाइल के लिए एक एडिटर है.
खास जानकारी
अपने ऐप्लिकेशन में एक्सएमएल ग्राफ़ जोड़ने के बाद, Android Studio, ग्राफ़ को नेविगेशन एडिटर में खोलता है. नेविगेशन एडिटर में, नेविगेशन ग्राफ़ में बदलाव किया जा सकता है. इसके अलावा, सीधे तौर पर एक्सएमएल में भी बदलाव किया जा सकता है.
- डेस्टिनेशन पैनल: इसमें नेविगेशन होस्ट और ग्राफ़ एडिटर में मौजूद सभी डेस्टिनेशन की सूची होती है.
- ग्राफ़ एडिटर: इसमें आपके नेविगेशन ग्राफ़ को विज़ुअल के तौर पर दिखाया जाता है. टेक्स्ट व्यू में, डिज़ाइन व्यू और उससे जुड़े एक्सएमएल के बीच स्विच किया जा सकता है.
- एट्रिब्यूट: नेविगेशन ग्राफ़ में चुने गए आइटम के लिए एट्रिब्यूट दिखाता है.
इससे जुड़ा एक्सएमएल देखने के लिए, टेक्स्ट टैब पर क्लिक करें. यह स्निपेट कुछ ऐसा दिखना चाहिए:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph">
</navigation>
<navigation> एलिमेंट, नेविगेशन ग्राफ़ का रूट एलिमेंट होता है. अपने ग्राफ़ में डेस्टिनेशन और कनेक्ट करने की कार्रवाइयां जोड़ने पर, आपको यहां उनसे जुड़े <destination> और <action> एलिमेंट, चाइल्ड एलिमेंट के तौर पर दिख सकते हैं. अगर आपके पास [नेस्ट किए गए ग्राफ़][2] हैं, तो वे चाइल्ड <navigation> एलिमेंट के तौर पर दिखते हैं.
डेस्टिनेशन जोड़ना
किसी मौजूदा फ़्रैगमेंट या गतिविधि से डेस्टिनेशन बनाया जा सकता है. नेविगेशन एडिटर का इस्तेमाल करके, नया डेस्टिनेशन बनाया जा सकता है. इसके अलावा, एक प्लेसहोल्डर बनाया जा सकता है, जिसे बाद में फ़्रैगमेंट या गतिविधि से बदला जा सकता है.
इस उदाहरण में, नया डेस्टिनेशन बनाने का तरीका दिखाया गया है. नेविगेशन एडिटर का इस्तेमाल करके, नया डेस्टिनेशन जोड़ने के लिए यह तरीका अपनाएं:
- नेविगेशन एडिटर में, नया डेस्टिनेशन आइकॉन
पर क्लिक करें. इसके बाद, नया डेस्टिनेशन बनाएं पर क्लिक करें. - दिखने वाले नया Android कॉम्पोनेंट डायलॉग में, अपना फ़्रैगमेंट बनाएं. फ़्रैगमेंट के बारे में ज़्यादा जानकारी के लिए, [फ़्रैगमेंट की खास जानकारी][3] देखें.
नेविगेशन एडिटर में वापस जाएं और देखें कि Android Studio ने इस डेस्टिनेशन को ग्राफ़ में जोड़ दिया है.
दूसरी इमेज में, डेस्टिनेशन और [प्लेसहोल्डर डेस्टिनेशन][4] का उदाहरण दिखाया गया है.
अपने नेविगेशन ग्राफ़ में डेस्टिनेशन जोड़ने के अन्य तरीकों के बारे में जानने के लिए, [अतिरिक्त डेस्टिनेशन][5] लेख पढ़ें.
किसी मौजूदा फ़्रैगमेंट या गतिविधि से डेस्टिनेशन बनाना
अगर आपको नेविगेशन एडिटर में, किसी मौजूदा डेस्टिनेशन टाइप को अपने नेविगेशन ग्राफ़ में जोड़ना है, तो नया डेस्टिनेशन
पर क्लिक करें.
इसके बाद, दिखने वाले ड्रॉप-डाउन में, उससे जुड़ा डेस्टिनेशन चुनें. अब आपको नेविगेशन ग्राफ़ के टेक्स्ट व्यू में, डेस्टिनेशन के लिए एक्सएमएल के साथ-साथ डिज़ाइन व्यू में डेस्टिनेशन की झलक दिखेगी.
नया फ़्रैगमेंट डेस्टिनेशन बनाना
नेविगेशन एडिटर का इस्तेमाल करके, डेस्टिनेशन का नया टाइप जोड़ने के लिए यह तरीका अपनाएं:
नेविगेशन एडिटर में, नया डेस्टिनेशन आइकॉन
पर क्लिक करें.इसके बाद, नई डेस्टिनेशन बनाएं पर क्लिक करें.
दिखने वाले नया Android कॉम्पोनेंट डायलॉग में, अपना फ़्रैगमेंट बनाएं.
नेविगेशन एडिटर में वापस जाएं और देखें कि Android Studio ने इस डेस्टिनेशन को ग्राफ़ में जोड़ दिया है.
तीसरी इमेज में, डेस्टिनेशन और [placeholder destination][2] का उदाहरण दिखाया गया है.
डेस्टिनेशन की बनावट
किसी डेस्टिनेशन को चुनने के लिए उस पर क्लिक करें. इसके बाद, एट्रिब्यूट पैनल में मौजूद इन एट्रिब्यूट को नोट करें:
- टाइप फ़ील्ड से पता चलता है कि डेस्टिनेशन को आपके सोर्स कोड में फ़्रैगमेंट, गतिविधि या अन्य कस्टम क्लास के तौर पर लागू किया गया है या नहीं.
- लेबल फ़ील्ड में, डेस्टिनेशन का ऐसा नाम होता है जिसे उपयोगकर्ता आसानी से पढ़ सके. यह जानकारी यूज़र इंटरफ़ेस (यूआई) पर दिख सकती है. उदाहरण के लिए, अगर आपने [
setupWithNavController()][11] का इस्तेमाल करके, [NavGraph][10] कोToolbarसे कनेक्ट किया है. इसलिए, इस वैल्यू के लिए संसाधन स्ट्रिंग का इस्तेमाल करें. - आईडी फ़ील्ड में डेस्टिनेशन आईडी होता है. इसका इस्तेमाल कोड में डेस्टिनेशन को रेफ़र करने के लिए किया जाता है.
- क्लास ड्रॉप-डाउन में, उस क्लास का नाम दिखता है जो डेस्टिनेशन से जुड़ी है. इस ड्रॉप-डाउन पर क्लिक करके, इससे जुड़ी क्लास को किसी दूसरे डेस्टिनेशन टाइप में बदलें.
अपने नेविगेशन ग्राफ़ का एक्सएमएल व्यू दिखाने के लिए, टेक्स्ट टैब पर क्लिक करें. एक्सएमएल में, डेस्टिनेशन के लिए वही id, name, label, और layout एट्रिब्यूट मौजूद हैं जो इस स्निपेट में दिए गए हैं:
<?xml version="1.0" encoding="utf-8"?> <navigation xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" app:startDestination="@id/blankFragment"> <fragment android:id="@+id/blankFragment" android:name="com.example.cashdog.cashdog.BlankFragment" android:label="@string/label_blank" tools:layout="@layout/fragment_blank" /> </navigation>
NavHostFragment
[लेआउट एडिटर][1] का इस्तेमाल करके भी किसी गतिविधि में NavHostFragment जोड़ा जा सकता है. इसके लिए, यह तरीका अपनाएं:
- प्रोजेक्ट फ़ाइलों की सूची में, अपनी ऐक्टिविटी की लेआउट एक्सएमएल फ़ाइल पर दो बार क्लिक करें. इससे, वह लेआउट एडिटर में खुल जाएगी.
- पैलेट पैनल में, कंटेनर कैटगरी चुनें; इसके अलावा, "NavHostFragment" खोजें.
NavHostFragmentव्यू को अपनी गतिविधि पर खींचें.- इसके बाद, आपको नेविगेशन ग्राफ़ डायलॉग दिखेगा. इसमें, इस
NavHostFragmentसे जोड़ने के लिए, इससे जुड़ा नेविगेशन ग्राफ़ चुनें. इसके बाद, ठीक है पर क्लिक करें.
डेस्टिनेशन कनेक्ट करना
ऐक्शन, डेस्टिनेशन के बीच लॉजिकल कनेक्शन होता है. नेविगेशन ग्राफ़ में ऐक्शन को ऐरो के तौर पर दिखाया जाता है. कार्रवाइयों की मदद से, आम तौर पर एक डेस्टिनेशन को दूसरे डेस्टिनेशन से कनेक्ट किया जाता है. हालांकि, [ग्लोबल ऐक्शन][6] भी बनाए जा सकते हैं. इनकी मदद से, ऐप्लिकेशन में कहीं से भी किसी खास डेस्टिनेशन पर जाया जा सकता है.
कार्रवाइयों की मदद से, उन अलग-अलग पाथ को दिखाया जाता है जिनका इस्तेमाल करके लोग आपके ऐप्लिकेशन पर जा सकते हैं. ध्यान दें कि डेस्टिनेशन पर जाने के लिए, आपको नेविगेशन की सुविधा देने वाला कोड लिखना होगा.
नेविगेशन एडिटर का इस्तेमाल करके, दो डेस्टिनेशन को कनेक्ट किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
डिज़ाइन टैब में, उस डेस्टिनेशन की दाईं ओर पॉइंटर को घुमाएं जहां से आपको उपयोगकर्ताओं को नेविगेट करना है. डेस्टिनेशन की दाईं ओर एक सर्कल दिखता है, जैसा कि चौथी इमेज में दिखाया गया है.
चौथी इमेज. कार्रवाई से जुड़े कनेक्शन वाले डेस्टिनेशन का सर्कल अपने कर्सर को उस डेस्टिनेशन पर खींचें और छोड़ें जहां आपको उपयोगकर्ताओं को नेविगेट करना है. दो डेस्टिनेशन के बीच की लाइन, कार्रवाई को दिखाती है. जैसा कि पांचवें फ़िगर में दिखाया गया है.
पांचवीं इमेज. किसी कार्रवाई के साथ डेस्टिनेशन कनेक्ट करना कार्रवाई को हाइलाइट करने के लिए, ऐरो पर क्लिक करें. ये एट्रिब्यूट, एट्रिब्यूट पैनल में दिखते हैं:
- टाइप फ़ील्ड में "कार्रवाई" शामिल है.
- आईडी फ़ील्ड में कार्रवाई का आईडी होता है.
- डेस्टिनेशन फ़ील्ड में, डेस्टिनेशन फ़्रैगमेंट या गतिविधि का आईडी होता है.
XML व्यू पर टॉगल करने के लिए, टेक्स्ट टैब पर क्लिक करें. सोर्स डेस्टिनेशन में अब एक ऐक्शन एलिमेंट जोड़ दिया गया है. कार्रवाई में एक आईडी और डेस्टिनेशन <code>[destination]</code> एट्रिब्यूट होता है. इसमें अगले डेस्टिनेशन का आईडी होता है. इसे यहां दिए गए उदाहरण में दिखाया गया है:
<?xml version="1.0" encoding="utf-8"?> <navigation xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" app:startDestination="@id/blankFragment"> <fragment android:id="@+id/blankFragment" android:name="com.example.cashdog.cashdog.BlankFragment" android:label="@string/label_blank" tools:layout="@layout/fragment_blank" > <action android:id="@+id/action_blankFragment_to_blankFragment2" app:destination="@id/blankFragment2" /> </fragment> <fragment android:id="@+id/blankFragment2" android:name="com.example.cashdog.cashdog.BlankFragment2" android:label="@string/label_blank_2" tools:layout="@layout/fragment_blank_fragment2" /> </navigation>
आपके नेविगेशन ग्राफ़ में, ऐक्शन को <action> एलिमेंट से दिखाया जाता है. कम से कम, किसी कार्रवाई में उसका अपना आईडी और उस डेस्टिनेशन का आईडी होता है जहां उपयोगकर्ता को ले जाया जाना चाहिए.
प्लेसहोल्डर डेस्टिनेशन
लागू नहीं किए गए डेस्टिनेशन को दिखाने के लिए, प्लेसहोल्डर का इस्तेमाल किया जा सकता है. प्लेसहोल्डर, डेस्टिनेशन को विज़ुअल के तौर पर दिखाता है. नेविगेशन एडिटर में, प्लेसहोल्डर का इस्तेमाल किसी अन्य डेस्टिनेशन की तरह ही किया जा सकता है.
[1]: /studio/write/layout-editor [2]: /guide/navigation/navigation-nested-graphs [3]: /guide/components/fragments [4]: /guide/navigation/navigation-create-destinations#placeholders [5]: /guide/navigation/navigation-create-destinations [6]: /guide/navigation/navigation-global-action [10]: /reference/androidx/navigation/NavGraph [11]: /reference/androidx/navigation/ui/NavigationUI#setupWithNavController(androidx.appcompat.widget.Toolbar,%20androidx.navigation.NavController)