2010-03-16 2 views
86

ich nur eine Liste aus einem Array anzuzeigen versuchen, die ich in meinem arrays.xml habe. Wenn ich versuche, es in dem Emulator zu laufen, erhalte ich eine Kraft schließen Nachricht.Hilfe in immer String Array aus arrays.xml Datei

Wenn ich das Array in der Datei java definieren

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

es funktioniert, aber wenn ich

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

es funktioniert nicht.

Hier ist meine Java-Datei:

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


} 

Hier ist meine arrays.xml Datei

<?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> 

Antwort

171

Sie können Ihre testArray Feld auf diese Weise nicht initialisiert werden, da die Anwendungsressourcen sind noch nicht bereit.

Ändern Sie einfach den Code:

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

Das tat es! Vielen Dank für Ihre Hilfe und Ihre Erklärung. Als Anfänger brauche ich die Erklärungen! – Soren

+0

rettete meinen Tag! Vielen Dank! : D – borislemke

+0

würde ich auch hinzufügen, dass „-“ sind in Arrays Namen nicht erlaubt. Eklipse nicht gewarnt mich nicht, schienen die XML-Datei in Ordnung, und es dauerte eine Weile, zu erkennen, dass dies das Problem verursacht. "_" funktioniert gut. – Lesik2008

2

Ihre XML ist nicht ganz klar, aber Arrays XML kann dazu führen, Kraft schließt, wenn man sie Zahlen machen und/oder weißen Raum setzen in ihrer Definition.

Stellen Sie sicher, sie wie ohne führende oder nachgestellte Leerzeichen definiert sind

24

Ihr array.xml ist nicht richtig. es ändern, um diese hier

zu mögen array.xml Datei

<?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> 
+0

Wäre das nicht lösen, dass dieses Feld vor Aktivität Kontext initialisiert und Ressourcen initialisiert werden. –