Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Java中奇怪的字符串数组行为_Java_Android_Arrays - Fatal编程技术网

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

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. */

我不熟悉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 这对我来说没有意义,所以也许你们中的一个有线索。

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

String.valueOf(getResources( ).getStringArray( R.array.test_array ).length)
编辑:
第二个示例的工作原理是,通过将数字附加到字符串“array has a length of.”来将数字转换为字符串。对于所有Java开发人员来说,这是一个由来已久的问题。每个人都有过这样或那样的问题。啊,是的。当你寻找那些看起来非常复杂的问题时,你忽略了最简单的可能性……非常感谢。@DaysShadow不要忘记将答案标记为已接受。如果这还不可能,我深表歉意。