122 votes

Aide pour obtenir String Array à partir du fichier arrays.xml

J'essaie simplement d'afficher une liste d'un tableau que j'ai dans mon fichier arrays.xml. Lorsque j'essaie de l'exécuter dans l'émulateur, je reçois un message de fermeture forcée.

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>
 

225voto

Dimitar Dimitrov Points 6587

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

31voto

MuhammadAamirALi Points 2555

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>
 

2voto

HaMMeReD Points 1364

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X