java - Android 出现不兼容的类型。必需的 java.lang.String 找到 int

标签 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.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
                }
                .......
            }

仍然面临如下所示的问题,仅供引用我没有使用英语作为字符串

日志说:

Caused by: java.lang.NullPointerException at android.content.ContextWrapper.getResources(ContextWrapper.java:81) at com.lingual.game.MainActivity.<init>(MainActivity.java:46)

最佳答案

R.string.name_1 是一个 int 标识符,引用 String 资源,因此您无法将其与 进行比较>字符串。要获取它所指的String,您需要编写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 = {R.string.name_1, R.string.name_2};

应该是

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

编辑:

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

关于java - Android 出现不兼容的类型。必需的 java.lang.String 找到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588733/

相关文章:

java - 解码 IBM/360 列二进制格式的十六进制数

java - 使用 .png 作为标签图标

Java 列和行

android - 我的用户报告我的应用程序崩溃了——我从来没有在模拟器中看到过这个

java - AndEngine加载图形: Where Do I put my assets folder and my resources?

java - 如何将 setAccessible 限制为仅 "legitimate"使用?

java - 快捷键值 java.awt.event.KeyEvent

Android: AudioRecord a wave, mono 文件

android - 如何在 Android 设备的根目录中创建/写入文件?

android - 来自可绘制资源 ID #0x7f0601d8 的异常 android.content.res.Resources$NotFoundException : File res/color/selector_tab_blue_white. xml