arrays.xml 파일에서 문자열 배열을 얻는 방법


116

내 .NET Core에있는 배열의 목록을 표시하려고합니다 arrays.xml. 에뮬레이터에서 실행하려고하면 강제 종료 메시지가 표시됩니다.

Java 파일에 배열을 정의하면

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

작동하지만 사용할 때

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

작동하지 않습니다.

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


}

여기 내 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);
    }
}

또한 "-"는 배열 이름에 허용되지 않는다고 추가합니다. Eclipse는 경고하지 않았고 xml 파일은 괜찮아 보였으며 이것이 문제를 일으키는 것을 깨닫는 데 시간이 걸렸습니다. "_"가 잘 작동합니다.
Lesik2008 2014-06-07

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>

활동 컨텍스트 및 리소스가 초기화되기 전에이 필드가 초기화되는 문제를 해결할 수 없습니다.
Lubos Horacek

2

XML이 완전히 명확하지는 않지만 배열 XML은 숫자를 만들거나 정의에 공백을 넣으면 강제 종료를 유발할 수 있습니다.

선행 또는 후행 공백 없음과 같이 정의되어 있는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.