Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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.lang.String int_Java_Android - Fatal编程技术网

Android正在获取不兼容的类型。找到必需的java.lang.String int

Android正在获取不兼容的类型。找到必需的java.lang.String int,java,android,Java,Android,我越来越 Incompatible Types. Required java.lang.String Found int 以下是我正在使用的: private String[] items = {R.string.name_1, R.string.name_2}; 然后我想做这样的事情: AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIt

我越来越

Incompatible Types. Required java.lang.String Found int
以下是我正在使用的:

private String[] items = {R.string.name_1, R.string.name_2};
然后我想做这样的事情:

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setItems(items, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                strName = items[which];

                if(strName.equalsIgnoreCase(R.string.name_1))
                {
                    // call activity
                }
                ....
          }
根据@Eran的建议更新了

          private String[] items = {
            getResources().getString(R.string.name_1),
            getResources().getString(R.string.name_2)
          };

          builder.setItems(items, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                strName = items[which];             
                if(strName.equalsIgnoreCase(getResources().getString(R.string.name_1)))
                {
                    // call activity
                }
                .......
            }
仍然面临如下所示的问题,仅供参考我没有使用英语作为字符串

日志说:


由com.langual.game.MainActivity.(MainActivity.java:46)上的android.content.ContextWrapper.getResources(ContextWrapper.java:81)上的java.lang.NullPointerException引起。
R.string.name\u 1
是一个
int
标识符,指的是
字符串
资源,您无法将其与
字符串
进行比较。要获取
字符串
它指的是您需要编写
getResources().getString(R.String.name_1)

所以

if(strName.equalsIgnoreCase(R.string.name_1))
应该是

if(strName.equalsIgnoreCase(getResources().getString(R.string.name_1)))
private String[] items = {getResources().getString(R.string.name_1), getResources().getString(R.string.name_2)};
同样地

private String[] items = {R.string.name_1, R.string.name_2};
应该是

if(strName.equalsIgnoreCase(getResources().getString(R.string.name_1)))
private String[] items = {getResources().getString(R.string.name_1), getResources().getString(R.string.name_2)};
编辑:


根据您得到的以下异常,当活动尚未初始化时,此代码似乎出现在活动类的构造函数中。您应该将其移动到
onCreate(Bundle savedInstanceState)

R都是整数值。你需要使用

getResources().getString(R.string.value);
如果您想存储整数并动态检索字符串,请使用

private int[] items = {R.string.x ..., R.string.z);
和使用

getResources().getString(items[i])

使用R.string.key返回给定键的资源id

你应该使用

private String[] items = {getResources().getString(R.string.name_1), getResources().getString(R.string.name_2)};

对于字符串数组,请在
strings.xml
中创建字符串数组,例如:

<string-array name="my_string_array">
    <item>Name1</item>
    <item>Name2</item>
    <item>Name3</item>        
</string-array>

获取:由:com.langual.game.MainActivity.(MainActivity.java:46)上的android.content.ContextWrapper.getResources(ContextWrapper.java:81)上的java.lang.NullPointerException引起。请按照您的建议检查更新的代码,我没有使用英语作为字符串…是的,我正在使用see更新的代码。。但仍然面临issue@Sun第46行是哪一行?是if语句吗?@Sun当活动尚未初始化时,该代码似乎出现在类的构造函数中。您应该将其移动到onCreate()。这是MainActivity中的第46行??是否为“if(strName.equalsIgnoreCase(getResources().getString(R.string.name_1))”