Android xml त्रुटि: RelativeLayout (@ id / LinearLayout_acc, @ id / ProgressBar_statusScreen) के साथ "कोई भी संसाधन दिए गए नाम से मेल नहीं खाता है"


92

ठीक है, इसलिए यह वास्तव में मुझे परेशान करने लगा है। यह त्रुटि बहुत ही विशेष तरीके से नहीं, बल्कि बहुत ही विशेष तरीके से सामने आती है।

मुझे यह कहकर शुरू करें कि मैंने पहले ही इस त्रुटि के बारे में अन्य प्रश्नों पर ध्यान दिया है, Google इसे भी पसंद करेगा। जहाँ तक मैं बता सकता हूँ, अधिकांश समान समस्याएं होती हैं क्योंकि लोग एक Stringसंसाधन या किसी अन्य चीज़ को संदर्भित करते हैं न कि उसी लेआउट फ़ाइल के भीतर, वे '@ आईडी' या कुछ इसी तरह के '+' का दुरुपयोग करते हैं।

मैं एक लेआउट में होने वाली समस्या .xml फ़ाइल के साथ a RelativeLayout। इसमें कुछ TableLayout, दो LinearLayoutऔर कुछ पाठ होते हैं और अंत में एक ProgressBar। मैं जो चाहता हूं प्रगति पट्टी का उपयोग करके सापेक्ष लेआउट के साथ संरेखित किया जाना है android:layout_alignParentBottom="true"और फिर प्रगति पट्टी के ऊपर दो रैखिक लेआउट संरेखित करें (प्रगति पट्टी के नीचे संरेखित रैखिक लेआउट, नीचे रैखिक लेआउट के ऊपर अन्य संरेखित)।

यह काफी सरल होना चाहिए और ऐसा लगता है जैसे यह काम करता है, अर्थात ग्राफिक दृश्य वांछित परिणाम दिखाता है। हालाँकि, और यहाँ समस्या आती है , ग्रहण मुझे दो रैखिक लेआउट पर एक त्रुटि देता है,

"त्रुटि: ऐसा कोई संसाधन नहीं मिला जो दिए गए नाम से मेल खाता हो (मान के साथ 'layout_above' @ id / LinearLayout_acc ')।"

और प्रगति पट्टी के संदर्भ में अन्य रैखिक लेआउट के लिए एक ही त्रुटि। मैंने ट्रिपल से अधिक जाँच की है कि कोई टाइपोस नहीं हैं (आईडी भी packagename.R.java में मौजूद है), और मैंने एक दर्जन बार परियोजना की सफाई करने की कोशिश की है।

जब (और ऑटो बिल्डिंग) बचत करते समय मुझे त्रुटि नहीं मिलती है, तब तक नहीं जब तक कि मैं परियोजना को चलाने का निर्णय नहीं लेता। एक और अजीब बात यह है कि जब मैं शीर्ष रैखिक लेआउट के बजाय प्रगति बार से नीचे के रैखिक लेआउट का उल्लेख करता हूं, तो मुझे कोई त्रुटि नहीं मिलती है!

मेरी लेआउट फ़ाइल:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_activity" >
        <TableLayout
             ... />

        <LinearLayout
            android:id="@+id/LinearLayout_dist"
            android:layout_above="@id/LinearLayout_acc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="10dp" >

            <TextView
                ... />

            <TextView
                ... />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/LinearLayout_acc"
            android:layout_above="@id/ProgressBar_statusScreen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" >

            <TextView
                ... />

            <TextView
                ... />
        </LinearLayout>

        <ProgressBar
            android:id="@+id/ProgressBar_statusScreen"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_margin="16dp" />

</RelativeLayout>

कृपया मदद करें, मुझे नहीं पता कि इस त्रुटि का क्या कारण है!

उत्तरों के साथ संपादित करें

श्रीकांत लेआउट फ़ाइल में उपस्थिति के क्रम को बदलने के समाधान के साथ आए थे ताकि संदर्भ पढ़ने पर तत्व केवल पहले से परिभाषित अन्य तत्वों को संदर्भित करें।
साथ ही, जैसा कि दूसरों ने पोस्ट किया है, एक संदर्भ में भी बदल रहा @id/है @+id/, त्रुटि संदेशों को हटा देता है। जैसा कि मार्को डब्ल्यू ने इस धागे में लिखा है , बात यह है कि आपको @+id/पहली बार प्रत्येक आईडी का उल्लेख करना होगा और उसके @id/बाद उपयोग करना होगा , भले ही पहली बार परिभाषा नहीं हो सकती है।

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

जवाबों:


77

कृपया नीचे दिए गए कोड की जाँच करें

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ic_launcher" >

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<LinearLayout
    android:id="@+id/LinearLayout_dist"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/LinearLayout_acc"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="10dp" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="FIRST" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SECOND" />
   </LinearLayout>

   <LinearLayout
    android:id="@+id/LinearLayout_acc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/ProgressBar_statusScreen"
    android:layout_centerHorizontal="true" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="THIRD" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="FOURTH" />
   </LinearLayout>

   <ProgressBar
    android:id="@+id/ProgressBar_statusScreen"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_margin="16dp" />

 </RelativeLayout>

निम्न लिंक की भी जाँच करें । यह कहता है कि android: layout_below = "@ id / myTextView" आईडी "myTextView" के साथ एक तत्व को नहीं पहचानेगा यदि यह उस तत्व के बाद लिखा गया है जिसमें आप इसका उपयोग कर रहे हैं।


8
इस टिप्पणी के लिए धन्यवाद: Android: layout_below = "@ id / myTextView" आईडी "myTextView" के साथ एक तत्व को नहीं पहचाना जाएगा यदि यह उस तत्व के बाद लिखा गया है जिसमें आप इसका उपयोग कर रहे हैं । यह समस्या तय की, भले ही मुझे लगता है कि यह हास्यास्पद है कि आपको "सही" क्रम में तत्वों को लिखना होगा ... संभवतः एक बग।
18

4
यकीन के लिए यह एक बग है। लेआउट आईडी परिभाषा क्रम से स्वतंत्र होनी चाहिए। विशेष रूप से परेशान है कि एंड्रॉइड स्टूडियो में ऑनस्क्रीन लेआउट डिजाइनर को इससे कोई परेशानी नहीं है।
dodgy_coder

@stemadsen यह बग नहीं है। पार्सर केवल दृश्य बनाता है और यह पहली बार दृश्य तत्व को पूरा करता है। आप एक गैर विज़िट किए गए तत्व का उल्लेख कर रहे हैं। एक परिदृश्य पर विचार करें जो A, B के नीचे स्वयं को परिभाषित करता है और बाद में B स्वयं को नीचे परिभाषित करता है। A. आदेश देने की सीमा तार्किक समस्या को हल करती है
Masoud Dadashi

मुझे यहाँ टिप्पणी करें: यह यूआई तत्व पर संदर्भ बनाने के लिए संभव नहीं है जो आप यूआई तत्वों के लिए काम कर रहे हैं, इसे लिखे (पहले नहीं)।
ivanleoncz

85

परिवर्तन

@id/LinearLayout_acc

सेवा

@+id/LinearLayout_acc

3
वाह, यह वास्तव में काम करता है। मैंने सोचा @id/था कि मौजूदा आईडी को संदर्भित करने के लिए, @+id/नई आईडी बनाने के लिए और इन को आपस में जोड़ा नहीं जा सकता है। यह दृष्टिकोण कैसे कानूनी है? मैं दो बार आईडी को परिभाषित करता हूं?
19

वास्तव में, आईडी के लिए एक लंबा मूल्य, @ + आईडी / कुछ लंबे मूल्य को संदर्भित करता है। और यदि हमने कुछ घटक के लिए कुछ आईडी मान दिया है, तो हम केवल इस आईडी का उपयोग विचारों को संदर्भित करने के लिए कर सकते हैं।
जेएट

यह अजीब लगता है, क्योंकि अन्य सभी लेआउट में मैं अन्य आईडी का आईडी @ आईडी के साथ संदर्भ देता हूं और @ + आईडी / के साथ नहीं। इसके अलावा, जैसा कि श्रीकांत ने नीचे उल्लेख किया है, अगर मैं संदर्भित तत्वों के क्रम को बदलता हूं, तो यह @ आईडी / के साथ काम करता है।
स्टैनेडसेन

1
तत्वों को रिलेटिव लेआउट में रखने का वास्तव में अच्छा तरीका वे स्क्रीन पर दिखाई देंगे, ठीक उसी तरह जो मैं देख रहा था।
18

2
जी श्रीमान! उस आदमी को एक पदक दें। यह वही है जो आपको करना है, अगर यह एक दृश्य को संदर्भित करने के लिए आवश्यक है जो बाद में लेआउट में बनाया गया है।
योरैको गोंजालेस

15

किसी आईडी @idको @+idपरिभाषित या संदर्भित करते समय हर आईडी को बदल दें । इसके साथ, आपको नहीं मिलेगा

Android xml त्रुटि: RelativeLayout (@ id / LinearLayout_acc, @ id / ProgressBar_statusScreen) के साथ "कोई भी संसाधन दिए गए नाम से मेल नहीं खाता है"।


2
 <LinearLayout
        android:id="@+id/LinearLayout_dist"
        android:layout_above="@+id/LinearLayout_acc" <--- here might be a problem you forgot + sign
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp" >
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.