我正在尝试在我的应用程序中编写一个对话框。问题是当我单击“确定”(SetPositiveButton)时,它显示以下运行时错误
E / AndroidRuntime(702):java.lang.ArrayIndexOutOfBoundsException
如果我尝试执行以下代码中的注释行,但它在onClick上运行良好,但显示了setPositiveButton的某种错误
@Override
protected Dialog onCreateDialog(int id) {
switch(id){
case ONCLICK_EXTRAS:
return new AlertDialog.Builder(AcricklayoutActivity.this)
.setIcon(R.drawable.ic_launcher)
.setTitle("Extras")
.setSingleChoiceItems(R.array.extras, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String[] items = getResources().getStringArray(R.array.extras);
value = items[which];
Log.v("this",String.valueOf(which)+items[which]);
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// String[] items = getResources().getStringArray(R.array.extras);
//text.setText(items[which]);
// Log.v("this",String.valueOf(which)+items[which]);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.create();
我将在这里解释我的代码
我正在尝试使用Resource / values文件中的String数组填充我的AlertDialogbox,
并将其存储到静态字符串变量值中
在该应用程序崩溃后,直到对话框活动的正面按钮单击为止,它都可以正常工作。任何人都可以帮助我解决这个问题吗???
提前致谢 !!
最佳答案
public void onClick(DialogInterface dialog, int which) {
此方法中的此
which
告诉按钮被单击,因此您不应将其用作数组的索引。 which
可以是以下任意一个:Dialog.BUTTON_NEGATIVE; (value=-2)
Dialog.BUTTON_NEUTRAL; (value=-3)
Dialog.BUTTON_POSITIVE (value=-1)
自然地,如果您使用它从数组中获取值,它将为您提供
ArrayIndexOutOfBoundsException