2010-09-15 15 views
17

मैं अपने ऐप्स में "आईडी प्रदूषण" कहने के तरीकों को कम करने के तरीकों की तलाश में हूं। मैं जो कह सकता हूं, R.id एप्लिकेशन के लिए वैश्विक है, इसलिए प्रत्येक गतिविधि में मैं आमतौर पर तत्वों के लिए अद्वितीय संसाधन आईडी मान बनाता हूं, भले ही मेरे पास एक ही चीज़ हो। उदाहरण के लिए, अगर मैं एक बचाने के लिए और रद्द बटन के साथ तीन गतिविधि वर्गों, प्रत्येक है, मैं छह विशिष्ट आईडी के R.id तरह के लिए निर्धारित करना होगा:आरआईड मानों का दायरा

R.id.actOne_save 
R.id.actOne_cancel 
R.id.actTwo_save 
R.id.actTwo_cancel 
R.id.actThree_save 
R.id.actThree_cancel 

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

उत्तर

20

आप एक ही आईडी को कई तत्वों में उपयोग करने के लिए ठीक हैं, जब तक वे एक ही दृश्य में नहीं हैं। इसलिए, आपके सभी सहेजे गए बटनों में btn_save की आईडी हो सकती है और जब तक उनमें से दो एक ही लेआउट फ़ाइल में नहीं हैं, या संलग्न लेआउट हैं, तो आप ठीक हैं।

+2

धन्यवाद, यह समझ में आता है कि खोजने के लिए ViewById() को गतिविधि या दृश्य से कहा जाता है। चीयर्स! – Devunwired

+1

इस समय यह केवल 50% सत्य है क्योंकि आप विदेशी गतिविधियों से संपादक आर.आईड्स में देख सकते हैं ताकि आप सोच सकें कि उनमें से एक आपकी है, भले ही यह आपकी गतिविधि में मौजूद न हो। – user250343

+0

@ मार्टिन, "एक ही दृश्य में" आपका क्या मतलब है? यदि मेरे पास एक गतिविधि लेआउट है जिसमें 2 खंड लेआउट शामिल हैं, तो प्रत्येक टुकड़ा जिसमें 'id = "@ + id/button_ok" शामिल है, क्या यह एक समस्या होगी क्योंकि वे वही मूल दृश्य साझा करते हैं? – bcorso

4

मैं का उपयोग करें:

R.id.activityName_type_action

जहां प्रकार हो सकता है [btn | txtview | edittext | सूचीदृश्य ...]

और कार्रवाई की तरह कुछ है [बचाने | डेल | स्वीकार | नाम | पिन ...]

यह सुंदर वर्बोज़ है, लेकिन इस तरह मैं गतिविधि से पहचानकर्ता नाम को निरंतर जांचने के बिना अनुमान लगा सकता हूं एक्सएमएल लेआउट।

उदाहरण के लिए:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

1

अन्य उत्तर काम करेंगे, लेकिन आप भी अपने लेआउट फ़ोल्डर में एक save_button.xml कर सकता है, रूट टैग के रूप में <Button>। फिर उस स्थान पर उस लड़के की आईडी का संदर्भ लें जिसकी आपको आवश्यकता है। इसका मतलब है कि आपको केवल एक "सेव" बटन को परिभाषित करने की आवश्यकता है, और इसे हर जगह इस्तेमाल करें।

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