2012-07-20 5 views
13

मुझे यकीन नहीं है कि किसी को भी इस मुद्दे से पहले गड़बड़ कर दिया गया था, लेकिन यह मेरे लिए एक बड़ा दर्द है।एंड्रॉइड में एक्सएमएल एलिमेंट की आईडी नाम देने का सबसे अच्छा अभ्यास क्या है?

आप एंड्रॉइड में xml तत्व को आईडी कैसे देते हैं?

अभी, मैं आईडी [गतिविधि/खंड नाम] [तत्व प्रकार] [विशिष्ट नाम] पैटर्न के साथ आईडी सेट करता हूं। उदाहरण के लिए, यदि मेरे पास लॉगिन एक्टिविटी में उपयोग किए जाने वाले ईमेल को रखने के लिए एडिटटेक्स्ट था, तो मैं आईडी 'LoginEditTextEmail' आईडी दूंगा।

मुझे जिस समस्या का सामना करना पड़ रहा है, इस दृष्टिकोण के साथ, आईडी अक्सर बहुत लंबे समय तक समाप्त होती है।

आप आईडी कैसे सेट करते हैं? सबसे अच्छा अभ्यास क्या है?

उत्तर

5

आप चीजों को अधिक जटिल बना रहे हैं। बस इसे याद रखना आपके लिए यादगार है। आईडी केवल प्रति एक्सएमएल अद्वितीय होना चाहिए (यानी आपके पास my_edittext की आईडी के साथ 50 अलग-अलग लेआउट हो सकते हैं) क्योंकि आपको केवल एक दृश्य पदानुक्रम के माध्यम से इसकी आईडी द्वारा एक दृश्य मिलता है।

+0

आह, मैं देखता हूं। @kcoppock धन्यवाद, अगर आईडी को केवल एक दृश्य पदानुक्रम में अद्वितीय होने की आवश्यकता है, तो यह अन्य हिस्सों को छोड़ना स्पष्ट है। ; डी –

+0

@kcoppock, क्या यह टुकड़े टुकड़े टुकड़े, या घोंसले टुकड़ों के लिए एक समस्या बन जाता है? – bcorso

+0

यदि आप गतिविधि से खंडित दृश्यों की तलाश में हैं, लेकिन यदि आप टुकड़े के भीतर अपने सभी दृश्य मैनिपुलेशन कर रहे हैं (जो आपको आमतौर पर करना चाहिए) यह कोई समस्या नहीं होगी। – kcoppock

1

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

12

वर्णनात्मक नाम आदर्श हैं (किसी भी प्रोग्रामिंग भाषा में किसी भी चर के नाम के समान)।

मुझे लगता है कि आप एक अच्छे प्रणाली है पहले से ही मैं अपनी आईडी के आकार को कम करने के लिए इन संभावित तरीकों की पेशकश करेगा

[गतिविधि/टुकड़ा नाम] - व्यक्तिगत तौर पर मैं इस गिरावट आएगी, मैं एक लेआउट का उपयोग करते हैं फाइल प्रति गतिविधि/खंड किसी भी तरह से इसलिए कोई भ्रमित नहीं है कि दृश्य किस गतिविधि में होना है। साथ ही कई बार जब मैं कई गतिविधियों में कुछ दृश्य विजेट का पुन: उपयोग करता हूं और मैं उन्हें उसी आईडी के साथ छोड़ दूंगा ताकि कोड उन्हें ढूंढें और उनसे बातचीत करें सरलीकृत (यानी इसे कॉपी/पेस्ट या गतिविधि के उप-वर्ग में रखा जा सकता है)

[तत्व प्रकार] - मैं विजेट प्रकारों के लिए एक 3 पत्र आशुलिपि का उपयोग करें:

  • Edt = EditText
  • Txt = TextView
  • LBL = TextView कि लेबलिंग कुछ के लिए स्थिर है
  • Btn = बटन
  • Prg = ProgressBar
  • Lyt = लेआउट
  • आदि ...

[विशिष्ट नाम] - यहां कोई वास्तविक सुधार नहीं किया जाना चाहिए, यह तब तक होना चाहिए जब तक यह वर्णन करना होगा कि यह क्या है।

+1

धन्यवाद @ टिम, अगर मैं गतिविधि/खंड नाम छोड़ सकता हूं, तो यह सबसे अच्छा है। मैंने कहा कि मूल रूप से क्योंकि मैं आईडी-लुकअप प्रक्रिया को पर्याप्त रूप से समझ नहीं पाया था। –

+1

आप निश्चित रूप से इसे = में छोड़ सकते हैं), मैं बस इसका उपयोग नहीं करता हूं। – FoamyGuy

0

ड्रॉप टुकड़ा, गतिविधि और प्रकार जब तक आप कोडिंग में इन चुने जाते हैं, तो:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

अन्य प्रतिक्रियाओं में उल्लेख किया एक्सएमएल क्वालीफायर प्रदान करता है के रूप में, अब आप तय करने के लिए है स्थिरता और/या आगे योग्यता आवश्यक है और यदि यह संगठन है। क्या आपको वास्तव में अर्हता प्राप्त करने की आवश्यकता है और यदि आप कोड या किसी और के द्वारा बहुत कठिन होने का समर्थन नहीं कर रहे हैं?

तो strings.xml के बारे में क्या?

आईडी को एक टुकड़े या गतिविधि क्वालीफायर के साथ उपसर्ग करें। तो, उदाहरण के लिए:

<string name="profile_is_logged_in_true">Logged in.</string>

<string name="profile_is_logged_in_false">Not logged in.%</string>

भी है & hellip;

<string name="profile_isloggedin_false">Not logged in.</string>

लेकिन अभी तक आश्वस्त नहीं:

<plurals name="plural_is_logged_in_duration">...

मैं साथ toyed है। यह वास्तव में एक वर्गीकरण समस्या है, अब टैगिंग द्वारा अन्य विषयों में हल होने के बाद से। जावा बिंदीदार नाम स्थान प्रदान करता है और क्वालिफायर टाइप करें, तो

com.example.android.app.profile.State.isLoggedIn

एंड्रॉयड R.string :-) जैसी चीजों का उपयोग करता है तो तुम जावा प्लस एंड्रॉयड से कुछ अतिरिक्त नामस्थान की है। मत भूलना आप एक से अधिक स्ट्रिंग संसाधन फ़ाइल हो सकता है, इसलिए शायद:

res/values/widget_defaults.xml

कहते हैं एक TextView के लिए कुछ मूलभूत मूल्यों हो सकता है। सच्चे और झूठे तारों को बहुवचनों द्वारा संभाला जाना चाहिए - लेकिन उदाहरण की उम्मीद है कि एक टैड के बावजूद उम्मीद है।

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