我是 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( );
}
}
我不知道为什么应用程序崩溃,但该数组在 value/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( );
}
}
那么,为什么当我首先将长度调用到变量中,然后再像我想要的那样调用长度时它会起作用呢? 安卓级别是8/2.2 这对我来说没有意义,所以也许你们中的一个人有线索。
最佳答案
您传递的是数字(int)而不是字符串作为文本,这是一种解决方案:
String.valueOf(getResources( ).getStringArray( R.array.test_array ).length)
编辑: 您的第二个示例的工作原理是,通过将数字附加到字符串“数组的长度为”,将数字转换为字符串。
关于java - Android/Java 中奇怪的字符串数组行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232691/