लेआउट में लेआउट <लेआउट> बेस लेआउट फ़ोल्डर में कोई घोषणा नहीं है [त्रुटि]


102

एंड्रॉइड स्टूडियो 3.2, एपीआई 28 पर माइग्रेट करने के बाद, मुझे अपने ऐप के लेआउट पर निम्न त्रुटि मिल रही है:

बेस लेआउट फ़ोल्डर में लेआउट में कोई घोषणा नहीं है; जब संसाधन इस क्वालीफायर से मेल नहीं खाता है, तो यह क्रैश हो सकता है

उन लेआउटों में से एक जो मुझे यह त्रुटि मिल रही है:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@null" >

      <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_top" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_bottom" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/hello_world"
            android:background="@color/white"
            android:layout_marginBottom="5dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:src="@drawable/loading_logo" />

        <ImageView
            android:id="@+id/loading"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp"
            android:contentDescription="@string/hello_world"
            android:scaleType="fitXY"
            android:src="@null" />
    </FrameLayout>
</LinearLayout>

मुझे पहली LinearLayout की पहली पंक्ति पर त्रुटि मिलती है।

क्या किसी को पता है कि इस त्रुटि को कैसे हल किया जाए?

धन्यवाद

अद्यतन: मेरे प्रश्न का उत्तर दिया कि मेरे लिए क्या समस्या है


@ एल केम्प ने एक बार मुझे उर लॉगकैट दिखाया
विजया वर्मा लंके

@ वर्मा वास्तव में ऐप बिना किसी त्रुटि के चलता है। मैं सिर्फ एक बार xml फ़ाइल खोलने पर त्रुटि देख सकता हूं, लेकिन इस xml फ़ाइल का लेआउट सामान्य रूप से चलता है
L Kemp

fill_parent को API 8 के बाद से हटा दिया गया है और इसे मैच_परेंट व्यूग्रुप.लेयआउटपराम के साथ बदल दिया गया है
Mahdi Javaheri

@MahdiJavaheri आपकी सलाह के लिए धन्यवाद, हालाँकि, मुझे पहले से ही पता है कि, मैं उस पदावनत कोड को कम से कम हटा रहा हूँ।
एल केम्प

मेरे मामले में यह फ़ाइल नाम से संबंधित मुद्दा था, आप अपनी फाइल को छोटे कैप में बदलकर भी देख सकते हैं
आकाश कुमार

जवाबों:


145

मेरे मामले में एंड्रॉइड स्टूडियो को बंद करने और फिर से खोलने से समस्या हल हो गई। प्रोजेक्ट का पुनर्निर्माण या कैश को साफ़ करने में मदद नहीं मिली।


3
मैं इसे हर बार देख रहा हूं जब मैं एक नई लेआउट फ़ाइल जोड़ता हूं। पुनः आरंभ / पुनर्निर्माण इसे ठीक करता है लेकिन क्या किसी ने इसका मूल कारण पाया है?
HBB20

1
ध्यान दें कि बिल्ड> क्लीन प्रोजेक्ट ने मेरे लिए समस्या का समाधान किया।
विविड क्रैग

57

आप यह भी आज़मा सकते हैं:

फ़ाइल => अमान्य कैश / पुनः आरंभ करें => अमान्य और पुनः प्रारंभ करें।

स्क्रीनशॉट


2
हां, यह मदद करता है, लेकिन अजीब है, कि पिछले संस्करणों में बिल्ड> पुनर्निर्माण परियोजना ने मदद की। उन्होंने कुछ दुर्घटनाग्रस्त कर दिया।
कूलमाइंड

मैंने आपके साथ एक प्लस जोड़ा, जैसा कि आपके समाधान 3.2 के लिए काम करता है (मेरे मामले में ग्रहण के बिना)।
कूलमाइंड

15

मेरे मामले में यह फ़ाइल नाम में बड़े अक्षरों का उपयोग था। मैंने सब कुछ लोअरकेस में छोड़ दिया और यह तय हो गया।


यह मेरा मुद्दा था। क्या अजीब बग है। बस इसे लोअरकेस किया और सब अच्छा था।
पनामा जैक

10

यदि आप अपने लेआउट को तैयार करते हैं: लेआउट- sw320dp लेआउट- sw480dp लेआउट- sw600dp लेआउट- sw4dp लेआउट…।

आपको इस तरह से डिफ़ॉल्ट रूप से लेआउट जोड़ना चाहिए:

यहां छवि विवरण दर्ज करें


7

ग्रैडल मॉड्यूल के बीच लेआउट फ़ाइलों को स्थानांतरित करते समय मुझे यह त्रुटि मिली । मैं अब तक के रूप में जाने के लिए नहीं था अमान्य कैश के रूप में यह अपने आप हल हो गई है जब मैं पुन: प्रारंभ करने Android Studioऔर परियोजना साफ । यह एक आईडीई बग होने की संभावना है ।


5

मेरे मामले में मैंने इस के साथ हल किया :

एंड्रॉइड ने मुझे इस आईडी-एरर के बारे में बताया : MissingDefaultResource जैसा कि दस्तावेज़ कहते हैं:

यदि किसी संसाधन को केवल क्वालिफायर जैसे -land या -en वाले फ़ोल्डरों में परिभाषित किया गया है, और आधार फ़ोल्डर (लेआउट या मान आदि) में कोई डिफ़ॉल्ट घोषणा नहीं है, तो यदि डिवाइस किसी डिवाइस पर उस संसाधन तक पहुँच जाता है तो ऐप क्रैश हो जाएगा किसी कॉन्फ़िगरेशन में दिए गए क्वालीफायर को याद कर रहा है।

एक विशेष मामले के रूप में, ड्रॉ बेस बेस फ़ोल्डर में निर्दिष्ट करने की आवश्यकता नहीं है; यदि एक घनत्व फ़ोल्डर (जैसे कि ड्रॉबल-एमडीपीआई) में एक मैच होता है, तो उस छवि का उपयोग और स्केल किया जाएगा। ध्यान दें कि यदि आप केवल ड्रॉबल-एन-एचडीपीआई जैसे फ़ोल्डर में एक ड्रॉबल निर्दिष्ट करते हैं, तो एप्लिकेशन गैर-अंग्रेजी स्थानों में क्रैश हो जाएगा।

ऐसे परिदृश्य हो सकते हैं जहां आपके पास एक संसाधन है, जैसे कि -fr ड्रा करने योग्य, जो केवल उसी क्वालिफायर वाले कुछ अन्य संसाधन से संदर्भित किया जाता है (जैसे कि -fr शैली), जिसमें स्वयं सुरक्षित कमियां हैं। हालांकि, यह अभी भी किसी को गलती से ड्रॉबल और क्रैश का संदर्भ देने के लिए संभव बनाता है, इसलिए यह बेस फ़ोल्डर में डिफ़ॉल्ट डमी कमबैक बनाने के लिए सुरक्षित है। वैकल्पिक रूप से, आप उपकरण को जोड़कर समस्या को दबा सकते हैं: तत्व पर = "MissingDefaultResource" पर ध्यान न दें।

(यह परिदृश्य अक्सर स्ट्रिंग अनुवादों के साथ होता है, जहां आप कोड और संबंधित संसाधनों को हटा सकते हैं, लेकिन अनुवाद को हटाना भूल जाते हैं। आईडी एक्स्ट्राट्रांसलेशन के साथ उस परिदृश्य के लिए एक समर्पित मुद्दा आईडी है।)

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:ignore="MissingDefaultResource" <!--this-->
      android:layout_width="match_parent"
      android:layout_height="match_parent">

लेकिन यह आसान उपाय है, क्योंकि आप एंड्रॉइड में रिसोर्स को गायब कर सकते हैं।

मैं इसे फ़ाइल सिस्टम के साथ हल करता हूं विकल्प के । अगर Android आपको लापता रिजर्शन के बारे में बताता है जिसका अर्थ है कि कोई चीज गायब है और आपको इसे फिर से भरना चाहिए।

आपको \ app \ src \ main \ res पर जाना चाहिए

हो सकता है: फ़ाइल के लापता फ़ोल्डर में राइट क्लिक करें, एक्सोपर में दिखाएं, और वापस \ app \ src \ main \ res पर जाएं

आपको ढूंढना चाहिए

/layout

/layout-normal

/layout-large

/some more folders

आपको पता होना चाहिए कि फाइलें कहां गायब हैं। मेरे मामले में / लेआउट में गायब है



3

मेरे मामले में, यह मुद्दा अपरकेस पत्र के कारण था। "-" जैसे गलत वर्ण भी समस्या का कारण बन सकते हैं। मैंने नाम बदलकर और तय किए गए मुद्दे Activity_disease.xmlको बदल दिया activity_disease.xml


2

मेरे लिए इस परियोजना के पुनर्निर्माण या कैश को अमान्य करने जैसे कुछ भी नहीं हुआ। मेरे मामले में एंड्रॉइड स्टूडियो को बंद करने और फिर से खोलने से समस्या हल हो गई


1

मेरे मामले में ऐसा लगता है कि Google विभिन्न लेआउट के बीच अलग-अलग नामों की अपेक्षा (या कम से कम स्वीकार) करता था; मेरे पास एक time_dialog.xmlऔर एक था time_dialog_landscape.xmltime_dialog.xmlसमस्या को ठीक करने के लिए बाद का नाम बदलना ।


1

मैंने इस मुद्दे को केवल सिंक के साथ प्रोजेक्ट को सिंक करके हल किया


1

मेरे लिए निम्न चरणों ने काम किया:

  1. पृष्ठ के सभी कोड काटें ( ctrl+ A+)X Windows के लिए)
  2. कोड वापस पेस्ट करें।

मैंने भी इसी तरह की समस्या के लिए कुछ किया था strings.xml, मैं इससे सहमत हूं
केविन मुर्वे

0

यह समस्या इसलिए हो रही है क्योंकि स्टूडियो या कंपाइलर बेस लेआउट फ़ोल्डर के अंदर संसाधन फ़ाइल को खोजने में सक्षम नहीं है। समस्या को हल करने के लिए आपको फ़ाइल को विभिन्न लेआउट फ़ोल्डर में बनाने की आवश्यकता हो सकती है। यदि आप लेआउट फ़ोल्डर v21, v25 आदि फ़ोल्डरों को अलग-अलग लक्ष्य उपकरणों के लिए डिज़ाइन करने के लिए उपयोग कर रहे हैं तो आपको अपनी संसाधन फ़ाइलों को भी रखने की आवश्यकता होगी।


0

मेरे मामले में यह चेतावनी "गलत" चरित्र (डॉट) के कारण दिखाई दी जिसका उपयोग मूल्य नाम में किया गया है:

<dimen name="dp.divider.xlarge">24dp</dimen>

डॉट्स को हटाना (एक नाम पर राइट क्लिक करें, फिर एंड्रॉइड स्टूडियो में रिफैक्टर-नाम बदलें) ने समस्या को हल किया।


0

पार्टी में देर से ही सही लेकिन मेरा मामला ऊपर से अलग है।

मैंने सिर्फ संसाधन का नाम बदला और यह काम करने लगा।

वास्तव में मेरे संसाधन का नाम ic_menu_black_24dp.xml था, इसलिए यह Android के मेनू संसाधन के साथ विरोध कर रहा था।


यह संघर्ष नहीं होना चाहिए, क्योंकि सिस्टम संसाधन एक अलग नामस्थान में हैं, और यहां तक ​​कि अगर वे थे, तो आपकी स्थानीय कॉपी के साथ ओवरराइड करना ठीक होना चाहिए।
ब्रिल पप्पिन

1
वास्तव में मुझे ओपी के रूप में एक ही त्रुटि मिली क्योंकि यह ऊपर सूचीबद्ध अन्य कारणों के कारण था, इसलिए मैंने इसे ऊपर दिए गए कदम से हल किया था। मैंने इस घटना को पोस्ट किया था कि किसी को मेरे जैसे चेहरे की मदद मिल सकती है।
आशीष शुक्ला


0

क्या यह मेरे लिए हल:

एंड्रॉइड स्टूडियो में, लेआउट डायरेक्टरी में फ़ाइलनाम पर राइट-क्लिक करें, और रिफॉर्मैट कोड चुनें , जिसमें अगली स्क्रीन पर कोई विशेष टिकबॉक्स नहीं है।

यकीन नहीं है कि वास्तव में यहाँ हुड के नीचे क्या होता है, लेकिन यह काम किया।


0

एक्सएमएल लेआउट फ़ाइल में कोड को कॉपी / पेस्ट करने के बाद मेरे पास एक समस्या थी, लेकिन मैंने इसे केवल मैन्युअल रूप से फ़ाइल बनाकर तय किया। बहुत अजीब है, क्योंकि कोड बिल्कुल समान था, लेकिन किसी तरह इस मुद्दे को तय किया। मैंने "फ़ाइल => अमान्य कैश / पुनरारंभ करें => अमान्य और पुनः प्रारंभ करें" ठीक करने का प्रयास किया, लेकिन समस्या केवल फ़ाइल को मैन्युअल रूप से पुन: क्रमबद्ध करके निर्धारित की गई थी।


0

ध्यान दें कि जब आप लेआउट के विभिन्न संस्करणों का उपयोग कर रहे होते हैं जैसे ( लार्ज / स्मॉल / नॉर्नल ) तो उस स्थिति में आपको मुख्य लेआउट फ़ोल्डर में होना चाहिए। इस तरह

यहां छवि विवरण दर्ज करें



0

मेरे मामले में वही त्रुटि दिखाई दे रही थी क्योंकि लेआउट-लैंड फ़ाइल और लेआउट फ़ाइल नाम अलग था।

मेरा मामला: लेआउट-भूमि -> my_layout_land लेआउट -> my_layout

मैंने इसे दोनों फ़ाइलनामों को एक ही बनाकर हल किया। क्योंकि अगर आप लेआउट-लैंड का इस्तेमाल कर रहे हैं और आपके पास लेआउट-लैंड में फाइल है तो आपके पास लेआउट फोल्डर में भी फाइल होनी चाहिए।


0

मैंने Windows Explorer का उपयोग करके फ़ोल्डर में xml फ़ाइलों की प्रतिलिपि बनाई थी। ऐसा लगता है कि एन्कोडिंग समस्या का कारण बना है। फ़ाइलों को हटाने और उन्हें एंड्रॉइड स्टूडियो के अंदर कॉपी करने के बाद, समस्या हल हो गई थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.