web-dev-qa-db-fra.com

Comment obtenir String Array à partir du fichier arrays.xml

J'essaye juste d'afficher une liste d'un tableau que j'ai dans mon arrays.xml. Lorsque j'essaie de l'exécuter dans l'émulateur, un message de fermeture forcée est envoyé.

Si je définis le tableau dans le fichier Java

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

ça marche, mais quand j'utilise

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

ça ne marche pas.

Voici mon fichier Java:

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);
 }


}

Voici mon fichier 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>
107
Soren

Vous ne pouvez pas initialiser votre champ testArray de cette façon, car les ressources de l'application ne sont toujours pas prêtes.

Il suffit de changer le code en:

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);
    }
}
200
Dimitar Dimitrov

Votre tableau.xml n'est pas correct. le changer pour aimer ceci

Voici le fichier 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>
30
Muhammad Aamir Ali

Votre XML n'est pas tout à fait clair, mais les tableaux XML peuvent provoquer la fermeture forcée si vous leur attribuez des nombres et/ou mettez des espaces dans leur définition.

Assurez-vous qu'ils sont définis comme Aucun espace de début ou de fin

2
HaMMeReD