2012-05-23 17 views
12

पर दिए गए नाम से मेल खाता है मेरे पास एक सापेक्ष लेआउट के अंदर निम्न है। layout_alignBottom = "@ आईडी/buttonA" और एंड्रॉयड: layout_toLeftOf = "@ आईडी/buttonA" क्रमशः:(आईडी संदर्भ नहीं मिला) कोई संसाधन

त्रुटि: त्रुटि: कोई संसाधन है कि मिलान नहीं मिला

<TextEdit 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/buttonA" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@id/buttonA" /> 

<Button 
    android:id="@+id/buttonA" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="@string/message" > 
</Button> 

ग्रहण मुझे एंड्रॉयड लाइनों पर इन त्रुटियों को देता है दिए गए नाम (मूल्य '@ id/buttonA' के साथ 'layout_alignBottom' पर)।

त्रुटि: त्रुटि: कोई संसाधन नहीं मिला जो दिए गए नाम से मेल खाता है (मूल्य '@ id/buttonA' के साथ 'लेआउट_toLeftOf' पर)।

@ id/buttonA के साथ @ id/buttonA को प्रतिस्थापित करने से इस ग्रहण त्रुटि संदेश को हटा दिया जाता है। क्या यह सही काम है? यदि हां, तो वह इसके बजाय क्यों काम करेगा? क्या @ + आईडी एक नई आईडी नहीं बनाती है? मुझे एक नई आईडी नहीं चाहिए। मैं बटन ऑब्जेक्ट में संदर्भित एक का उपयोग करना चाहता हूं। इससे निपटने का सबसे अच्छा तरीका क्या है?

धन्यवाद दोस्तों। -जो

उत्तर

31

@+id का उपयोग करने का यह सही तरीका है। @+id एक नई आईडी बनाता है लेकिन केवल तभी अगर उस नाम वाला कोई भी पहले से मौजूद नहीं है।

यदि आप ऐसा नहीं करना चाहते हैं, तो इस विशेष साधारण मामले के लिए Button के नीचे TextEdit को स्थानांतरित करने के लिए पर्याप्त होगा।

+0

हाँ मैं बस यही करूँगा। धन्यवाद। – J50

+2

मैं उन्हें चारों ओर स्वैप कर दूंगा ताकि आईडी संदर्भ अच्छे दिखें। धन्यवाद। हालांकि @ + आईडी क्यों काम करेगा? मैं एक नया आईडी संसाधन बनाने की कोशिश नहीं कर रहा हूं, बल्कि इसके बाद संदर्भित एक संदर्भ। – J50

+0

@ J50: निश्चित रूप से क्योंकि इसकी बाद में परिभाषित किया गया है, उस बिंदु पर आप इसका उपयोग करने का प्रयास करते हैं, इसे अभी तक परिभाषित नहीं किया गया है। और यही कारण है कि @ + आईडी काम का उपयोग करना, क्योंकि यह ऐसी आईडी की परिभाषा को मजबूर करता है। –

0

लेआउट जिसे आप संदर्भ के रूप में उपयोग करने का प्रयास कर रहे हैं उसे संदर्भ के रूप में उपयोग करने से पहले परिभाषित किया जाना चाहिए अर्थात 'layout_toLeftOf' के रूप में उपयोग करें।

ऐसा लगता है कि इसे उपयोग करने से पहले जावा में एक चर घोषित करना होगा। इसके बाद घोषणा करें ...

संबंधित मुद्दे