2012-01-04 10 views
5

में संदर्भ स्ट्रिंग-एरेज़ मैं strings.xml में किसी अन्य स्ट्रिंग-सरणी से स्ट्रिंग-सरणी का संदर्भ देना चाहता हूं। यदि मैं अपनी गतिविधि में स्ट्रिंग-सरणी (नाम "पौधों") को पढ़ने का प्रयास करता हूं तो प्रत्येक आइटम का मान शून्य है।एंड्रॉइड स्ट्रिंग्स.एक्सएमएल

क्या इन मानों को प्राप्त करने की संभावना है?

<string name="Orlaya_grandiflora_1">Orlaya grandiflora</string> 
<string name="Orlaya_grandiflora_2">Large-Flowered Orlaya</string> 
<string name="Orlaya_grandiflora_3">Apiaceae</string> 
<string-array name="Orlaya_grandiflora"> 
    <item>@string/Orlaya_grandiflora_1</item> 
    <item>@string/Orlaya_grandiflora_2</item> 
    <item>@string/Orlaya_grandiflora_3</item> 
</string-array> 
<string-array name="plants"> 
    <item>@array/Ginkgo_biloba</item> 
    <item>@array/Capsicum_frutescens</item> 
    <item>@array/Viscum_album</item> 
    <item>@array/Orlaya_grandiflora</item> 
</string-array> 

मैं उदाहरण के लिए, इस तरह मूल्यों तक पहुँचने का प्रयास:

String[] plantArray = resources.getStringArray(R.array.plants); 

for (String plant : plantArray) { 
     System.out.println("--> " + plant); 
    } 

संयंत्र के मूल्यों हर मामले में है "शून्य

यहाँ strings.xml का हिस्सा है "

कोई भी जानता है कि मूल्यों का उपयोग कैसे करें? Android - String Resources

enter image description here

+0

बेहद "संसाधन" क्या है? वस्तु या अन्य? –

+0

यह गायब था: संसाधन संसाधन = getResources(); – alex3000

उत्तर

6

आप निम्न करना चाहिए:

+0

में स्विच के पक्ष में स्ट्रिंग का उपयोग कर सकते हैं धन्यवाद, यह वही था जो मैं ढूंढ रहा था! – alex3000

+0

ठीक है। यदि यह सही था तो आप जवाब स्वीकार कर सकते हैं। –

21

सीधे उदाहरण दिए गए

//obtain the array that refrences others array 
    TypedArray plantArray=getResources().obtainTypedArray(R.array.plants); 
    //obtain the referenced arrays 
    CharSequence[] ginkoArray=plantArray.getTextArray(0); 
    //... 
    CharSequence[] orlayaArray=plantArray.getTextArray(3); 
+1

यह स्ट्रिंग-एरे के संदर्भों के साथ काम नहीं करता है, क्योंकि मैंने लिखा था – alex3000

+0

स्ट्रिंग सरणी के अंदर स्ट्रिंग एरे क्यों लगाएंगे? क्या यह भी संभव है? मेरे लिए ऐसा लगता है कि आप केवल आइटम के अंदर स्ट्रिंग संसाधन डाल सकते हैं और स्ट्रिंग-एरे नहीं। – eMich

+2

@eMich जहां मैंने स्ट्रिंग सरणी के अंदर स्ट्रिंग सरणी डालने के बारे में उल्लेख किया है? –

1
public class Test extends ListActivity { 
    String[] presidents; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ListView lstView = getListView(); 
    // lstView.setChoiceMode(0); //CHOICE_MODE_NONE 
    // lstView.setChoiceMode(1); //CHOICE_MODE_SINGLE 
    lstView.setChoiceMode(2); // CHOICE_MODE_MULTIPLE 
    lstView.setTextFilterEnabled(true); 

    presidents = getResources().getStringArray(R.array.presidents_array); 

    setListAdapter(new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_checked, presidents)); 
    } 

    public void onListItemClick(ListView parent, View v, int position, long id) { 
    parent.setItemChecked(position, parent.isItemChecked(position)); 

    Toast.makeText(this, "You have selected " + presidents[position], 
     Toast.LENGTH_SHORT).show(); 
    } 
}; 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 



</LinearLayout> 

strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">Hello World, MainActivity!</string> 
    <string name="app_name">BasicViews5</string> 
    <string-array name="presidents_array"> 
     <item>Dwight D. Eisenhower</item> 
     <item>John F. Kennedy</item> 
     <item>Lyndon B. Johnson</item> 
     <item>Richard Nixon</item> 
     <item>Gerald Ford</item> 
     <item>Jimmy Carter</item> 
     <item>Ronald Reagan</item> 
     <item>George H. W. Bush</item> 
     <item>Bill Clinton</item> 
     <item>George W. Bush</item> 
     <item>Barack Obama</item> 
    </string-array> 
</resources> 
+0

+1 अच्छा जवाब :) –

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