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

标签 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( );
    }
}

我不知道为什么应用程序崩溃,但该数组在 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/

相关文章:

Apple PropertyList-1.0.dtd 的 java 库

android - 谷歌地图 api v2 中标记顶部的标签

android - native 崩溃信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR)

将 'space' 连接到数组的末尾

java - 悬挂元字符

java - 在 Java Stream.of() 与 IntStream 与 A​​rrays.stream() 生成的 Stream 上调用 map(Arrays::toString)

java - Ldap searchFilter 字符串不等于 memberOf OU ="Google app user"和 OU ="Contacts"

android - 使用 WindowManager 覆盖布局时,后退按钮不起作用。如何让它发挥作用?

c - 用 C 中的字符串替换整数

c - IO 结果。调整代码