कैसे arrays.xml फ़ाइल से स्ट्रिंग एरे प्राप्त करें


116

मैं केवल एक सरणी से एक सूची प्रदर्शित करने का प्रयास कर रहा हूं जो मेरे पास है arrays.xml। जब मैं इसे एमुलेटर में चलाने की कोशिश करता हूं, तो मुझे एक बल करीब संदेश मिलता है।

अगर मैं जावा फाइल में एरे को परिभाषित करता हूं

String[] testArray = new String[] {"one","two","three","etc"};

यह काम करता है, लेकिन जब मैं उपयोग करता हूं

String[] testArray = getResources().getStringArray(R.array.testArray);

यह काम नहीं करता है।

यहाँ मेरी जावा फ़ाइल है:

package com.xtensivearts.episode.seven;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class Episode7 extends ListActivity {
 String[] testArray = getResources().getStringArray(R.array.testArray);

 /** Called when the activity is first created. */
 @Override
 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  // Create an ArrayAdapter that will contain all list items
  ArrayAdapter<String> adapter;

  /* Assign the name array to that adapter and 
     also choose a simple layout for the list items */ 
  adapter = new ArrayAdapter<String>(
    this,
    android.R.layout.simple_list_item_1,
    testArray);

  // Assign the adapter to this ListActivity
  setListAdapter(adapter);
 }


}

यहाँ मेरी arrays.xmlफाइल है

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
  <array name="testArray">  
    <item>first</item>  
    <item>second</item>  
    <item>third</item>  
    <item>fourth</item>  
    <item>fifth</item>  
  </array>
</resources>

जवाबों:


213

आप अपने testArrayफ़ील्ड को इस तरह से इनिशियलाइज़ नहीं कर सकते , क्योंकि एप्लिकेशन रिसोर्स अभी भी तैयार नहीं हैं।

बस कोड बदलें:

package com.xtensivearts.episode.seven;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class Episode7 extends ListActivity {
    String[] mTestArray;

    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create an ArrayAdapter that will contain all list items
        ArrayAdapter<String> adapter;

        mTestArray = getResources().getStringArray(R.array.testArray);    

        /* Assign the name array to that adapter and 
        also choose a simple layout for the list items */ 
        adapter = new ArrayAdapter<String>(
            this,
            android.R.layout.simple_list_item_1,
            mTestArray);

        // Assign the adapter to this ListActivity
        setListAdapter(adapter);
    }
}

मैं यह भी जोड़ूंगा कि सरणियों के नामों में "-" की अनुमति नहीं है। एक्लिप्स ने मुझे चेतावनी नहीं दी, xml फ़ाइल ठीक लग रही थी, और मुझे यह महसूस करने में थोड़ा समय लगा कि इससे समस्या पैदा हो रही है। "_" बढ़िया कार्य करना।
Lesik2008

30

आपकी array.xml सही नहीं है। इसे इस तरह बदलें

यहाँ array.xml फ़ाइल है

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <string-array name="testArray">  
        <item>first</item>  
        <item>second</item>  
        <item>third</item>  
        <item>fourth</item>  
        <item>fifth</item>  
   </string-array>
</resources>

हल नहीं करेगा कि गतिविधि संदर्भ और संसाधनों को आरंभीकृत करने से पहले इस फ़ील्ड को प्रारंभ किया गया है।
लुबोस होर्सेक

2

आपका XML पूरी तरह से स्पष्ट नहीं है, लेकिन सरणियाँ XML को बंद करने का कारण बन सकती हैं यदि आप उन्हें संख्या बनाते हैं, और / या उनकी परिभाषा में सफेद स्थान डालते हैं।

सुनिश्चित करें कि उन्हें नो लीडिंग या ट्रेलिंग व्हाट्सएप की तरह परिभाषित किया गया है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.