Android/Java中奇怪的字符串数组行为
我不熟悉Android和Java,但我有一些编程经验 当我想在Android中启动以下操作时,它将崩溃:Android/Java中奇怪的字符串数组行为,java,android,arrays,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. */
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
这对我来说没有意义,所以也许你们中的一个有线索。你们传递的是一个数字(int)而不是字符串作为文本,这是一个解决方案:
String.valueOf(getResources( ).getStringArray( R.array.test_array ).length)
编辑:
第二个示例的工作原理是,通过将数字附加到字符串“array has a length of.”来将数字转换为字符串。对于所有Java开发人员来说,这是一个由来已久的问题。每个人都有过这样或那样的问题。啊,是的。当你寻找那些看起来非常复杂的问题时,你忽略了最简单的可能性……非常感谢。@DaysShadow不要忘记将答案标记为已接受。如果这还不可能,我深表歉意。