Android / Java中奇怪的字符串数组行为

时间:2011-03-08 12:50:38

标签: java android arrays

我是Android和Java的新手,但我在编程方面有一些经验。

当我想在Android中启动以下内容时,它会崩溃:

package org.ds.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Toast.makeText( this, 
                getResources( ).getStringArray( R.array.test_array ).length, 
                Toast.LENGTH_SHORT ).show( );
    }
}

我不知道应用程序崩溃的原因,但数组在values / arrays.xml中被定义为带有6个项目的字符串数组。 它在R.java中也是正确的,数组在那里定义。

当我执行以下操作时,它可以工作:

package org.ds.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int arr_length = getResources( ).getStringArray( R.array.test_array ).length;

        Toast.makeText( this, 
                "array has a length of " + arr_length + " " + getResources( ).getStringArray( R.array.test_array ).length, 
                Toast.LENGTH_SHORT ).show( );
    }
}

那么为什么当我第一次将长度调用为变量然后另外调用我想要的长度时它是否有效? Android级别为8 / 2.2 这对我来说没有意义,所以也许你们其中一个人有线索。

1 个答案:

答案 0 :(得分:1)

你传递一个数字(int)而不是String作为文本,这是一个解决方案:

String.valueOf(getResources( ).getStringArray( R.array.test_array ).length)

编辑: 您的第二个示例适用于将数字转换为字符串,方法是将其附加到字符串“数组的长度为”。