2012-04-12 10 views
6

दोनों काम करते हैं, जाहिर है, अगर आप श्रृंखलाबद्ध आप किसी पूर्णांक प्रदर्शित से बचने के लिए स्ट्रिंग प्राप्त की आवश्यकता होगी शुरू करते हैं।setText (GetString (R.strings.whatever) या setText (R.strings.whatever)?

प्रश्न : सबसे 'सुंदर' या 'सिफारिश' का उपयोग करने के लिए है जो

धन्यवाद

उत्तर

8

दूसरा दृष्टिकोण और अधिक सुरुचिपूर्ण, आंतरिक रूप से के बाद से, TextView (या जो भी View स्तरीय) होने का काम करेगा है? आपके निर्दिष्ट संसाधन के लिए स्ट्रिंग।

घटकों को आंतरिक काम करना हमेशा पसंद किया जाता है। इसके अलावा, यह छोटा और अधिक पठनीय है।


internals मैं के बारे में बात के बारे में: आप Androids स्रोत-कोड पर एक नजर है, तो आप देख सकते हैं कि setText(int) की -method TextViewis implemented like this:

public final void setText(int resid) { 
    setText(getContext().getResources().getText(resid)); 
} 

इसलिए, यह आंतरिक रूप से उपयोग करता है संसाधन-आईडी से स्ट्रिंग प्राप्त करने के लिए Context -class। अब, अगर आप getText() -method (जो भी Context श्रेणी से आता है) को देखो, आप देख सकते हैं कि यह is implemented the same way:

public final String getString(int resId) { 
    return getResources().getString(resId); 
} 

तो प्रदर्शन या विश्वसनीयता कारणों के लिए, यह कोई फर्क नहीं पड़ता। फिर भी, यह छोटा और अधिक पठनीय है।

+0

धन्यवाद, बिल्कुल सही! –

+1

@Shamrflow मैंने एंड्रॉइड स्रोत से दिखाने के लिए कुछ कोड के साथ उत्तर अपडेट किया, यह एक ही तरीके से लागू किया गया है। एक नज़र देख लो। –

+0

लुकास, यहां तक ​​कि बेहतर भी धन्यवाद। मैंने देखा है कि यह सेटटिटल और अलर्टबिल्डर में सेट मैसेज और कुछ अन्य वर्गों के लिए भी सच है। चीयर्स! –

1

ठीक है, क्योंकि एपीआई संसाधन स्ट्रिंग आईडी पास करने के लिए एक विधि प्रदान करता है, ऐसा लगता है कि इसका उपयोग करना पसंद करने के लिए तार्किक प्रतीत होता है। आप वास्तव में हुड के नीचे देखने के लिए setText (resourceid) के काम की जांच कर सकते हैं, लेकिन setText (R.strings.whatever) निश्चित रूप से अनुशंसित है।

0

आप

yourEditText.setText(getResources().getString(R.string.mytext)); 

जोड़ सकते हैं क्योंकि आप के बाद स्ट्रिंग प्राप्त संसाधन संदर्भ पाने की जरूरत है,।

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