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))”