2010-01-14 16 views
16

बस एक जल्दी में एक xml संसाधन से एक पूर्णांक सरणी जाओ,एंड्रॉयड कार्यक्रम

मैं

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer-array name="UserBases"> 
      <item>2</item> 
      <item>8</item> 
      <item>10</item> 
      <item>16</item> 
    </integer-array> 
</resources> 

और Ive इसे उपयोग करने में कई बातें करने की कोशिश की में res/values ​​/ integers.xml एक xml संसाधन है :

int[] bases = R.array.UserBases; 

यह सिर्फ वापस आती है और UserBases को पूर्णांक संदर्भ नहीं सरणी ही

int[] bases = Resources.getSystem().getIntArray(R.array.UserBases); 

और यह मुझे कुछ भी नहीं करने के लिए पूर्णांक संदर्भ R.array.UserBases अंक कह वापस एक अपवाद फेंकता है मुझ पर

इस सरणी तक पहुँचने के लिए, एक अच्छा आधार प्रकार int में धक्का [] सबसे अच्छा तरीका है क्या और फिर संभावित रूप से xml संसाधन में किसी भी संशोधन को धक्का दें।

मैंने एंड्रॉइड दस्तावेज की जांच की है लेकिन मुझे कुछ भी उपयोगी नहीं मिला है।

उत्तर

55

आपको int सरणी प्राप्त करने के लिए संसाधनों का उपयोग करने की आवश्यकता है; हालांकि आप सिस्टम संसाधनों का उपयोग कर रहे हैं, जिसमें केवल मानक एंड्रॉइड संसाधन शामिल हैं (उदाहरण के लिए, android.R.array.* के माध्यम से पहुंच योग्य)। अपने संसाधन प्राप्त करने के लिए, आपको अपने संदर्भों में से किसी एक के माध्यम से संसाधनों तक पहुंचने की आवश्यकता है।

उदाहरण के लिए, सभी क्रियाएँ संदर्भ, तो एक गतिविधि में आप यह कर सकते हैं कर रहे हैं:

Resources r = getResources(); 
int[] bases = r.getIntArray(R.array.UserBases); 

यही कारण है कि यह प्रसंग के आसपास पारित करने के लिए अक्सर उपयोगी होता है है, आपको अपने आवेदन के संसाधनों को पकड़ने के लिए इसकी आवश्यकता होगी।

+0

कूल बीन्स! बहुत बहुत धन्यवाद। सरणी से आइटम जोड़ने और निकालने का सबसे अच्छा तरीका क्या है (कच्चे एक्सएमएल को संपादित करना) - अनिवार्य रूप से int [] से xml तक किसी भी परिवर्तन को अपडेट करना। – JERiv

+0

मुझे यकीन नहीं है कि कोड से एक्सएमएल अपडेट करना संभव है; जब आप एपीके बनाते हैं तो सभी संसाधनों को एक्सएमएल बाइनरी में संकलित किया जाता है। आपको इस पर एक नया सवाल बनाना चाहिए, शायद कोई और जानता है। –

+3

डैनियल सही है, आप ऐसा नहीं कर सकते। – James