我正在获取
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/