NavHostFragment के रूप में FragmentContainerView

47
Kurt Acosta 2019-11-05 16:00.

ऐसा लगता FragmentContainerViewहै कि बॉक्स के ठीक बाहर काम नहीं करता है?

<androidx.fragment.app.FragmentContainerView
        class="androidx.navigation.fragment.NavHostFragment"
        android:id="@+id/fragment_nav_host"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_app" />

यहां मेरे कोड का उपयोग किया गया है fragment-ktx:1.2.0-rc01और मुझे हमेशा यह त्रुटि मिल रही है:

Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504

बस <fragment>कार्यों और AFAIK का उपयोग करके , इसे बस द्वारा प्रतिस्थापित किया जाना चाहिए FragmentContainerView

क्या मुझे कुछ याद आ रहा है या कोई FragmentContainerViewएक के रूप में उपयोग करने में सक्षम था NavHostFragment?

बहुत धन्यवाद!

3 answers

66
Ove Stoerholt 2019-11-15 04:28.

इस बग-रिपोर्ट के कारण: https://issuetracker.google.com/issues/142847973

इसका एकमात्र तरीका (वर्तमान में) यह है:

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

(जावा):

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager()
        .findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();
12
Vince 2020-08-28 12:38.

अगस्त 2020 का अपडेट

यहाँ आधिकारिक Android प्रलेखन द्वारा अनुशंसित समाधान है ।

कोटलिन संस्करण:

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

जावा संस्करण:

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

मैं बोली:

जब FragmentContainerView का उपयोग करके या यदि मैन्युअल रूप से अपनी गतिविधि में NavHostFragment जोड़कर एक FragmentTransaction के माध्यम से NavHostFragment का निर्माण करते हैं, तो NavController को onCreate के नेविगेशन (find) के माध्यम से एक गतिविधि की कोशिश करने की कोशिश कर रहा है । आपको इसके बजाय सीधे NavHostFragment से NavController को पुनः प्राप्त करना चाहिए।


Ove Stoerholt द्वारा रिपोर्ट की गई बग-रिपोर्ट निश्चित नहीं होगी। आप यहां "W't Fix (Infeasible)" स्थिति देख सकते हैं ।

3
Pnemonic 2020-04-22 02:53.

मैंने जो किया वह NavHostFragmentइसके दृश्य को बढ़ाने के लिए इंतजार करना था :

Kotlin:

super.onCreate(savedInstanceState)

// Set up the form and list.
setContentView(R.layout.activity_xxx)

// Set up navigation - action bar and sidebar.
/// Let the navigation view check/uncheck the menu items.
nav_view.post { // wait for NavHostFragment to inflate
    val navController = findNavController()
    nav_view.setupWithNavController(navController)
    nav_view.setNavigationItemSelectedListener(this)
}

Java8 (लैम्ब्डा के साथ):

navigationView.post(() -> { // wait for NavHostFragment to inflate
    navController = Navigation.findNavController(activity, R.id.nav_host_fragment);
    NavigationUI.setupWithNavController(navView, navController);
    navView.setNavigationItemSelectedListener(navItemSelectedListener);
});

Related questions

MORE COOL STUFF

जाना दुग्गर: प्यार के बारे में उसने जो कुछ कहा है और 'एक' को खोजने के लिए उसकी 5 साल की अवधि

जाना दुग्गर: प्यार के बारे में उसने जो कुछ कहा है और 'एक' को खोजने के लिए उसकी 5 साल की अवधि

जाना दुग्गर प्यार की तलाश के बारे में खुलकर बात करती रही हैं। यहां वह सब कुछ है जो उसने विषय और शादी के लिए पांच साल की अवधि के बारे में कहा है।

सैम ह्यूगन को ठीक-ठीक पता है कि वह 'आउटलैंडर' सेट से क्या लेंगे - 'जब मैं उन्हें पहनता हूं तो मुझे ऐसा लगता है जैसे मैं जेमी हूं'

सैम ह्यूगन को ठीक-ठीक पता है कि वह 'आउटलैंडर' सेट से क्या लेंगे - 'जब मैं उन्हें पहनता हूं तो मुझे ऐसा लगता है जैसे मैं जेमी हूं'

'आउटलैंडर' स्टार सैम ह्यूगन ने हाल ही में खुलासा किया कि वह सेट से जेमी फ्रेजर को याद करने के लिए क्या लेंगे, जिस भूमिका ने उन्हें स्टार बनाया था।

फैब फोर इनसाइडर के अनुसार, शुरुआती बीटल्स गाना बैंड के 'सबसे रोमांचक प्रदर्शनों' में से एक था।

फैब फोर इनसाइडर के अनुसार, शुरुआती बीटल्स गाना बैंड के 'सबसे रोमांचक प्रदर्शनों' में से एक था।

'शी लव्स यू' एक घंटे में लिखा गया, एक दिन में रिकॉर्ड किया गया और यह द बीटल्स का उनके करियर का सर्वश्रेष्ठ प्रदर्शन वाला गाना था।

डॉली पार्टन ने अपनी 'अमान्य' दादी की मदद की, जब अन्य पोते-पोतियों में से कोई भी ऐसा नहीं करता था—वह उसके साथ मज़ाक भी करती थी

डॉली पार्टन ने अपनी 'अमान्य' दादी की मदद की, जब अन्य पोते-पोतियों में से कोई भी ऐसा नहीं करता था—वह उसके साथ मज़ाक भी करती थी

डॉली पार्टन और उनकी दादी बेसी के बीच एक विशेष रिश्ता था। दादी पार्टन बहुत बीमार थीं, लेकिन उसने डॉली को उनके साथ मज़ाक करने से नहीं रोका।

विश्व की सबसे कठोर लकड़ी कौन सी है?

विश्व की सबसे कठोर लकड़ी कौन सी है?

आप सोच सकते हैं कि ओक या हिकॉरी कठोर होती है, लेकिन जब दुनिया की सबसे कठोर लकड़ी की बात आती है, तो वे उसके आसपास भी नहीं फटकतीं।

समुद्र की गहराई में छिपे 10 सबसे डरावने समुद्री जीव

समुद्र की गहराई में छिपे 10 सबसे डरावने समुद्री जीव

समुद्र खूबसूरती से भरपूर है, लेकिन इसमें धरती के कुछ सबसे डरावने समुद्री जीव भी छिपे हैं। इनमें से कई जीव समुद्र की सतह से बहुत नीचे, गहरे समुद्र की अंधेरी, उच्च दबाव वाली दुनिया में छिपे रहते हैं।

Minecraft में 10 सर्वश्रेष्ठ तलवार जादू

Minecraft में 10 सर्वश्रेष्ठ तलवार जादू

अगर आप दुश्मन भीड़ से लड़ रहे हैं या PvP परिदृश्यों के लिए तैयारी कर रहे हैं, तो Minecraft में उपलब्ध सर्वोत्तम तलवारों के जादू को जानना आपको एक बड़ी बढ़त दिला सकता है। तलवारों पर जादू करने से आप ज़्यादा नुकसान पहुँचा सकते हैं, भीड़ पर पड़ने वाले प्रभाव को बढ़ा सकते हैं और अपनी तलवार की टिकाऊपन बढ़ा सकते हैं।

13 समाजवादी देश जो एक-दूसरे से बिल्कुल अलग दिखते हैं

13 समाजवादी देश जो एक-दूसरे से बिल्कुल अलग दिखते हैं

जब लोग समाजवादी देशों की बात करते हैं, तो अक्सर उनकी कल्पना पूर्ण सरकारी नियंत्रण और निजी स्वामित्व के अभाव की होती है। लेकिन व्यवहार में, समाजवादी अर्थव्यवस्थाएँ व्यापक रूप से भिन्न होती हैं।

द बियर रिकैप: क्या मार्कस शिकागो का सबसे दयालु, सबसे कोमल, सबसे ईमानदार आदमी है?

द बियर रिकैप: क्या मार्कस शिकागो का सबसे दयालु, सबसे कोमल, सबसे ईमानदार आदमी है?

'चिल्ड्रन' में एक बड़े नाम की कैमियो और कुछ विनाशकारी खबरें सामने आईं

क्या आप 9,800 डॉलर में इस सात-सीटर 2008 टोयोटा RAV4 में इसे पैक करेंगे?

क्या आप 9,800 डॉलर में इस सात-सीटर 2008 टोयोटा RAV4 में इसे पैक करेंगे?

दावा किया जाता है कि यह RAV4 उत्कृष्ट स्थिति में है और म्यूजिकल चेयर के खेल के लिए तैयार है।

ह्यूस्टन की गर्मी के दौरान अमेज़न डिलीवरी वैन में भीषण विस्फोट

ह्यूस्टन की गर्मी के दौरान अमेज़न डिलीवरी वैन में भीषण विस्फोट

ड्रोन फुटेज में अग्निशमन कर्मियों को आग बुझाने के लिए संघर्ष करते हुए देखा गया।

मार्वल का ब्लैक पैंथर शो अब तक का सबसे महत्वपूर्ण एनिमेटेड शो होगा

मार्वल का ब्लैक पैंथर शो अब तक का सबसे महत्वपूर्ण एनिमेटेड शो होगा

आइज़ ऑफ वकांडा सीधे तौर पर MCU से जुड़ा हुआ है, साथ ही इसमें एक्स-मेन '97, व्हाट इफ..., डेयरडेविल, आदि पर अपडेट भी शामिल हैं।

जॉन क्लीज़ की पत्नी कौन हैं? जेनिफर वेड के बारे में सब कुछ जानें

जॉन क्लीज़ की पत्नी कौन हैं? जेनिफर वेड के बारे में सब कुछ जानें

जॉन क्लीज़ ने 2012 में अपनी पत्नी जेनिफर वेड से विवाह किया। जॉन क्लीज़ की पत्नी जेनिफर वेड के बारे में जानने योग्य सब कुछ यहां है।

पैटन ओसवाल्ट की पत्नी कौन है? मेरेडिथ सेलेन्गर के बारे में सब कुछ

पैटन ओसवाल्ट की पत्नी कौन है? मेरेडिथ सेलेन्गर के बारे में सब कुछ

पैटन ओसवाल्ट ने 2017 में अपनी पत्नी, साथी अभिनेत्री मेरेडिथ सालेंगर से शादी की। यहां पैटन ओसवाल्ट की पत्नी मेरेडिथ सालेंगर के बारे में जानने योग्य सब कुछ है।

माइकल सी. हॉल की पत्नी कौन है? मॉर्गन मैकग्रेगर के बारे में सब कुछ

माइकल सी. हॉल की पत्नी कौन है? मॉर्गन मैकग्रेगर के बारे में सब कुछ

माइकल सी. हॉल की शादी 2016 से उनकी पत्नी मॉर्गन मैकग्रेगर से हुई है। माइकल सी. हॉल की पत्नी के बारे में जानने के लिए यहां सब कुछ है।

जॉन ओलिवर की पत्नी कौन है? केट नोर्ले के बारे में सब कुछ

जॉन ओलिवर की पत्नी कौन है? केट नोर्ले के बारे में सब कुछ

जॉन ओलिवर और उनकी पत्नी केट नोर्ले की शादी 2011 से हुई है। जॉन ओलिवर की पत्नी के बारे में जानने के लिए यहां सब कुछ है।

सर्वनाम सुपर डरावने हैं

यह मुझ पर अचानक प्रहार करता है जैसा कि यह अक्सर करता है यह फिर से बीच का रास्ता है <नहीं, वह नहीं जो प्रशांत में आप मैरून हैं, जो कार्निवल में है> हर हेडलाइन जोर से… ..

अपने लेखन कौशल में सुधार करने के 3 सिद्ध तरीके

ऐसा करने में आपकी मदद करने के लिए लेखन के लाभ, और रणनीतियाँ

अपने लेखन कौशल में सुधार करने के 3 सिद्ध तरीके

2022 में, GPT-3 के जारी होने के साथ, लेखन कौशल कम महत्वपूर्ण होता जा रहा है। एआई के साथ, खराब लेखन वाले लोग भी गुणवत्तापूर्ण कर्मचारी तैयार कर सकते हैं।

द स्लो इरोसियन: अनवीलिंग द वे तरीके पीपल वेस्ट अवे अवे करियर

द स्लो इरोसियन: अनवीलिंग द वे तरीके पीपल वेस्ट अवे अवे करियर

आज की तेज-तर्रार और प्रतिस्पर्धी दुनिया में, किसी का करियर व्यक्तिगत विकास, वित्तीय स्थिरता और समग्र जीवन संतुष्टि में महत्वपूर्ण भूमिका निभाता है। हालांकि, कई लोग खुद को ठहराव और असंतोष के एक अथक चक्र में फंसा हुआ पाते हैं, धीरे-धीरे अपने पेशेवर जीवन को बर्बाद कर रहे हैं।

क्या एक पॉडकास्ट प्रभावशाली बनाता है?

क्या एक पॉडकास्ट प्रभावशाली बनाता है?

पिछले हफ्ते मैंने एक प्रेस विज्ञप्ति देखी, जिसे PressGazette (एक ब्रिटिश मीडिया समाचार वेबसाइट) के माध्यम से भेजा गया था। लेख ने घोषणा की कि एकास्ट, स्कैंडी पॉडकास्ट होस्टिंग और विज्ञापन कंपनी, पॉडकास्टिंग में "शायद सबसे प्रभावशाली" प्रकाशकों के एक संघ का नेतृत्व करेगी।

Language