नेविगेशन घटक के साथ FragmentContainerView का उपयोग कर रहे हैं?


38

पिछले संस्करण से नेविगेशन 2.2.0-beta01 में अपडेट करने के बाद , लिंट <fragment>टैग को बदलने के बारे में चेतावनी देता है FragmentContainerView

हालांकि, अकेले टैग की जगह लगता है कि नेविगेशन ग्राफ़ को फुलाया जा रहा है।

2.2.0-अल्फा 01 के अनुसार , FragmentContainerViewआंतरिक रूप से उपयोग किया जाता है। क्या हमें लिंट चेतावनी को अनदेखा करना चाहिए?


activity_main.xml

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Lint warning: "Replace the <fragment> tag with FragmentContainerView. -->
    <fragment
        android:id="@+id/nav_host_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph_main"/>

    <!-- other elements -->

</androidx.constraintlayout.widget.ConstraintLayout>

3
उपयोग करने का क्या फायदा है FragmentContainerView?
इगोरगानापोलस्की

@IgorGanapolsky आधिकारिक दस्तावेज देखें: developer.android.com/reference/androidx/fragment/app/…
Eugen Pechanec

@EugenPechanec हमें Jetpack नेविगेशन करने की आवश्यकता क्यों है?
इगोरगानापोलस्की 16

@IgorGanapolsky अच्छा सवाल, जेटपैक नेविगेशन टुकड़ों के बीच नेविगेट करता है। जब टुकड़े किसी और कंटेनर में होते हैं तो फ्रैगमेंट ट्रांज़िशन (एंटर / एग्जिट एनिमेशन) अलग तरीके से व्यवहार करते हैं FragmentContainerView। ऊपर वर्णित एफसीवी प्रलेखन में अंतर वर्णित हैं। मूल रूप से, FCV संक्रमणों को अधिक काम करने वाला है जैसा कि आप अपेक्षा करते हैं। या, जेटपैक नेविगेशन टुकड़ों पर निर्भर करता है। यदि फ़्रैगमेंट्स टूट गए हैं, तो आपको नई फ़्रेग्मेंट्स लाइब्रेरी मिलती है या नेविगेशन के नए संस्करण की प्रतीक्षा करें जो नए फ़्रेगमेंट्स पर निर्भर करता है।
यूजेन पिसेंक

@EugenPechanec मुझे वही मिल रहा है जो आप कह रहे हैं। हालांकि, मुझे लगता है कि यह डेवलपर्स के लिए दो अलग-अलग एपीआई के साथ बनाए रखने के लिए एक उपद्रव है, जब Google ने जेटपैक नेविगेशन को विशेष रूप से स्पष्ट रूप से वकालत की है ...
इगोरगानपोलस्की

जवाबों:


13

जरूरी! के विभिन्न संस्करणों के साथ ज्ञात समस्याएं हैं FragmentContainerView। उपयोग करने से पहले चैंज देखें । बग फिक्स के माध्यम से पढ़ें और लाइब्रेरी के हाल के संस्करण का उपयोग करें।


अभी के लिए, आपको Fragment 1.2.0-beta02 पर निर्भरता की घोषणा करनी चाहिए क्योंकि इसमें इस उपयोग के मामले के लिए एक फिक्स शामिल है।

implementation "androidx.fragment:fragment:1.2.0-beta02"

संस्करण 1.2.0-beta02

11 अक्टूबर 2019

कंप्यूटर प्रोग्राम या प्रणाली में बग को दूर करना

एक ऐसा मसला तय onInflate()किया जहां फ्रैगमेंट FragmentContainerViewको मामलों को तोड़ना जैसे उचित गुण प्राप्त नहीं हुए NavHostFragment। ( बी / १४२४२१ .३2 ) )

स्रोत: https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0-beta02


6
यह समाधान मेरे लिए काम नहीं किया।
glend

@glend कृपया एक न्यूनतम प्रोजेक्ट तैयार करें जो इस मुद्दे को पुन: पेश करता है और इसे आधिकारिक मुद्दे ट्रैकर पर रिपोर्ट करता है । धन्यवाद!
यूजेन पिंचेक

11

NavigationBasicSample 2.2.0-alpha01 को अद्यतन किया गया है, लेकिन अभी भी उपयोग कर रहा है fragmentटैग। NavigationAdvancedSample के उपयोग से पता चलता FragmentContainerViewहै, लेकिन नव ग्राफ कोड (वे कई अलग अलग रेखांकन) और इसी मेजबान टुकड़ा में हवा भरी जाती है में जोड़ा जाता है FragmentContainerView। इसलिए मैं कहूंगा कि इस समय हमें चेतावनी को अनदेखा कर देना चाहिए अगर हम स्वचालित मुद्रास्फीति चाहते हैं।


मैंने नमूनों में भी इस पर ध्यान दिया। ऐसा लगता है कि नवीनतम Fragmentनिर्भरता जोड़ने के लिए एक प्रकार का वृक्ष चेतावनी का ख्याल रखता है।
लगभग सीन

हमें FragmentContainerView की आवश्यकता क्यों है?
इगोरगानपोलस्की

मैंने AdvancedSample में कोड की जाँच की। यह सिर्फ मुझे उल्टी कर देता है! मुझे नहीं पता कि Google पर टीम को इतने अजीब तरीके से चीजों को क्यों बनाना और तोड़ना है। अब मुझे एक्सटेंशन फ़ंक्शन को कॉपी करना पड़ सकता है, लेकिन यह नेविगेशन लाइब्रेरी में कुछ अपडेट के साथ कल फिर से टूट सकता है। यह सिर्फ बेकार है !!
सूद 7००
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.