Android AlertDialog列表在调试模式下崩溃,但没有发布

时间:2011-08-07 23:57:32

标签: java android alertdialog

我遇到了一个奇怪的问题。当用户按下按钮时,我正在尝试显示带有列表的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();
    }
};

1 个答案:

答案 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上设置了一个断点并忘记删除它。现在代码运行正常。

我的愚蠢错误,谢谢你们的评论。