我遇到了一个奇怪的问题。当用户按下按钮时,我正在尝试显示带有列表的AlertDialog
。当我在设备或模拟器上执行应用程序时,以下代码非常有效。但是,如果我在设备或模拟器上的调试器下运行应用程序,代码会导致异常,我们会在builder.show();
上进入调试器。
这是一个问题,因为我正在尝试调试从列表中选择内容后出现的分支。调试器在出现故障时会显示ViewGroup.class
,但我无法告诉您具体的行,因为我不认为我相当拥有正确的android源。
有关为什么在调试中崩溃的任何想法?
回调:
public View.OnClickListener selectCategoryClick = new View.OnClickListener() {
final String[] categories = new String [] {"A","B","C"};
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MyApp.this);
builder.setTitle("Select a category");
builder.setItems(categories, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Do something with which
}
});
builder.show();
}
};
答案 0 :(得分:0)
我终于获得了正确的源代码以与我使用的SDK版本保持一致(感谢http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html?showComment=1299971635442#c3854025611409009224)。一旦我找到引起问题的线路,原因立即变得清晰:
public View getChildAt(int index) {
try {
return mChildren[index]; <---- Crash line
} catch (IndexOutOfBoundsException ex) {
return null;
}
}
我在所有ArrayIndexOutOfBoundsException
上设置了一个断点并忘记删除它。现在代码运行正常。
我的愚蠢错误,谢谢你们的评论。