Android: How do I get string from resources using its name? -


मुझे UI के लिए 2 भाषाओं और मेरी संसाधन फ़ाइल res \ values \ Strings.xml :

  & lt; स्ट्रिंग नाम = "tab_Books_en" & gt; पुस्तकें & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Quotes_en" & gt; उद्धरण & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Questions_en" & gt; प्रश्न & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Notes_en" & gt; नोट्स & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Bookmarks_en" & gt; बुकमार्क & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Books_ru" & gt; क्नीगे & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Quotes_ru" & gt; चिट्स & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Questions_ru" & gt; वोप्रास & lt; / string & gt; & Lt; स्ट्रिंग नाम = "टैब_ोट्स_आरयू" & gt; Заметки & lt; / string & gt; & Lt; स्ट्रिंग नाम = "tab_Bookmarks_ru" & gt; झलक & lt; / string & gt;  

अब मुझे अपने ऐप में गतिशील रूप से इन मानों को पुनः प्राप्त करने की आवश्यकता है:

  spec.setContent (R.id.tabPage1) ; स्ट्रिंग पैक = getPackageName (); स्ट्रिंग आईडी = "tab_Books_" + Central.lang; इंट I = सेंट्रल.राज़.गेटआईडेंटिफायर (आईडी, "स्ट्रिंग", पैक); स्ट्रिंग str = Central.Res.getString (i);  

मेरी समस्या यह है कि i = 0

<पी > आप जिस लिंक को संदर्भित कर रहे हैं, वह रनटाइम पर उत्पन्न तारों के साथ काम करने लगता है। स्ट्रिंग्स से स्ट्रिंग्स। Xml रनटाइम पर नहीं बनाए जाते हैं। आप उन्हें

  स्ट्रिंग माइस्ट्रिंग = मिलर संसाधनों () के माध्यम से प्राप्त कर सकते हैं। GetString (R.string.mystring);  

getResources () एक संदर्भ वर्ग की एक विधि है। यदि आप गतिविधि या सेवा (जो संदर्भ का विस्तार करते हैं) के अंदर हैं तो आप इसे इस स्निपेट में पसंद कर सकते हैं।

इसके अलावा < मजबूत> ध्यान दें कि एंड्रॉइड फ्रेमवर्क द्वारा संपूर्ण भाषा निर्भरता का ध्यान रखा जा सकता है बस प्रत्येक भाषा के लिए अलग-अलग फ़ोल्डर बनाएं यदि अंग्रेजी आपकी डिफ़ॉल्ट भाषा है, तो बस अंग्रेज़ी स्ट्रिंग को res / values ​​/ strings.xml में डाल दें। फिर एक नया फ़ोल्डर मान-आरयू बनाएं और res / values-ru / strings.xml में समान नामों के साथ रूसी तार डाल दें। एंड्रॉइड पर इस बिंदु से आपके लिए डिवाइस लोकेल के आधार पर सही विकल्प चुनता है, या तो जब आप getString () को कॉल करते हैं या @ string / mystring के माध्यम से XML में तार को संदर्भित करते हैं। यदि लोकलएला को कवर करने वाला कोई फ़ोल्डर नहीं है, तो res / values ​​/ strings.xml से लोग हैं, फ़ॉलबैक हैं, यह एक डिफ़ॉल्ट मान के रूप में उपयोग किया जाएगा।

देखें और अधिक जानकारी के लिए।


Comments

Popular posts from this blog

c# - SignalR: "Protocol error: Unknown transport." when navigating to hub -

Camel ProducerTemplate possible memory leak -

javascript - Adhering to a max length setting with jshint -