我正在尝试在我的应用中编写一个对话框。问题是,当我单击OK(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();
我将在这里解释我的代码
在该应用程序崩溃后,对话框活动的正面按钮单击,它可以正常工作..任何人都可以帮我解决这个问题???
先谢谢!!
答案 0 :(得分:1)
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
答案 1 :(得分:0)
这个问题似乎与您的按钮的代码无关,只是简单地在点击时运行的代码。这段代码:
String[] items = getResources().getStringArray(R.array.extras);
value = items[which];
Log.v("this",String.valueOf(which)+items[which]);
似乎问题是你的String数组在位置which
没有值。
打印出您的值和整数(名为which
)以验证该位置中的值是否不存在。然后根据您想要的结果修改您的代码。