[android] एंड्रॉइड: मैं अपने नाम का उपयोग कर संसाधनों से स्ट्रिंग कैसे प्राप्त करूं?


Answers

मेरी भी यही समस्या है। लेकिन नीचे यह कोड मेरे लिए काम करता है: सत्यापित करें कि आपका पैकेज नाम सही है या नहीं। आपको अपने एंड्रॉइड एप्लिकेशन के रूट पैकेज का संदर्भ लेना होगा।

private String getStringResourceByName(String aString) {
      String packageName = getPackageName();
      int resId = getResources().getIdentifier(aString, "string", packageName);
      return getString(resId);
    }
Question

मैं यूआई के लिए 2 भाषाओं और उनके संसाधन फ़ाइल res\values\strings.xml में उनके लिए अलग स्ट्रिंग मान रखना चाहता हूं:

<string name="tab_Books_en">Books</string>
<string name="tab_Quotes_en">Quotes</string>
<string name="tab_Questions_en">Questions</string>
<string name="tab_Notes_en">Notes</string>
<string name="tab_Bookmarks_en">Bookmarks</string>

<string name="tab_Books_ru">Книги</string>
<string name="tab_Quotes_ru">Цитаты</string>
<string name="tab_Questions_ru">Вопросы</string>
<string name="tab_Notes_ru">Заметки</string>
<string name="tab_Bookmarks_ru">Закладки</string>

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

spec.setContent(R.id.tabPage1);
String pack = getPackageName();
String id = "tab_Books_" + Central.lang;
int i = Central.Res.getIdentifier(id, "string", pack);
String str = Central.Res.getString(i);

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

यह मेरे मामले में क्यों काम नहीं करता है?




स्ट्रिंग myString = getString (R.string.mystring);

आसान तरीका




पूर्वनिर्धारित एंड्रॉइड स्ट्रिंग्स का एक सेट भी है जैसे "ओके", "रद्द करें" और कई अन्य - इसलिए आपको सभी को घोषित करने की आवश्यकता नहीं है। वे बस द्वारा उपलब्ध हैं:

getString(android.R.string.ok)

(इस मामले में, "ठीक है" स्ट्रिंग)। बीटीडब्ल्यू अन्य एंड्रॉइड संसाधन भी उपलब्ध हैं जैसे कि उदाहरण छवियों इत्यादि।




getResources().getString(getResources().getIdentifier("propertyName", "string", getPackageName()))



गतिविधि के भीतर getString() फ़ंक्शन का उपयोग करना आसान तरीका है।

String myString = getString(R.string.mystring);

संदर्भ: http://developer.android.com/guide/topics/resources/string-resource.html

मुझे लगता है कि यह सुविधा हाल के एंड्रॉइड संस्करण में जोड़ा गया है, जो इतिहास को जानता है, वह इस पर टिप्पणी कर सकता है।




Links