2011-08-09 20 views
11

मेरे संसाधन फ़ाइलों में कई स्ट्रिंग एरे हैं, और मैं उपयोगकर्ता इनपुट के आधार पर उन्हें प्रोग्रामेटिक रूप से एक्सेस करना चाहता हूं।प्रोग्राम नाम का प्रोग्रामेटिक रूप से

int c = Getter.getCurrentNumber(); 
String[] info = getResources().getStringArray(R.array.n_<c>); 

तो यदि सी == 12, जानकारी "n_12" नाम के साथ स्ट्रिंग-सरणी होनी चाहिए। क्या ऐसा करने का कोई तरीका है, और सैकड़ों मामलों के साथ स्विच स्टेटमेंट करने से परहेज करना?

धन्यवाद

+0

मैं जवाब अद्यतन किया है। क्या यह अब मदद करता है? –

उत्तर

15

तुम इतनी

int c = Getter.getCurrentNumber(); 
String resource = "n_" + c; 
int id = getResources().getIdentifier(resource, "array", "com.your.project"); 

तो बस कि आईडी

String[] info = getResources().getStringArray(id); 

getResources().getIdentifier() पर एक और उदाहरण के लिए एक नज़र here है का उपयोग की तरह संसाधन आईडी प्राप्त कर सकते हैं।

+0

बहुत बहुत धन्यवाद, यह निर्बाध रूप से काम किया। – leonsas

+0

यह निर्बाध रूप से काम करता है, धन्यवाद, @Xavi गिल – andreimarinescu

2

आप का नाम (प्रोग्राम के रूप में) द्वारा एक संसाधन प्राप्त करना चाहते हैं और आप सुनिश्चित कैसे नाम से संबोधित करने के लिए संसाधन नहीं हैं (लेकिन आप कैसे आर द्वारा इसे उपयोग करने में पता है), तो आप ऐसा कर सकते हैं:

  • पहले प्रिंट सटीक संसाधन का नाम, इस तरह:

Log.d("", context.getResources().getResourceName(R.id.whichYouAlreadyKnow));

(नोट:।। R.id.whichYouAlreadyKnow R.string हो सकता है * R.drawable * आदि ...)
अब आप ई को जानते हैं XACT संसाधन को संबोधित नाम

  • मुद्रित नाम ले लो और इसी रूप में इसका इस्तेमाल करते हैं, इस तरह:

int id = getResources().getIdentifier(resource_name_that_printed_above, null, null);

चीयर्स

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