Android AlertDialog со сбоем списка в режиме отладки, но не в версии - PullRequest
0 голосов
/ 08 августа 2011

У меня возникла странная проблема. Я пытаюсь отобразить 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 голосов
/ 09 августа 2011

I Наконец-то получил правильный исходный код для соответствия используемой мной версии SDK (спасибо http://blog.michael -forster.de / 2008/12 / view-android-source-код-в-eclipse.html? showComment = 1299971635442 # c3854025611409009224 ).Как только я нашел строку, вызывающую проблему, причина сразу стала ясна:

public View getChildAt(int index) {
    try {
        return mChildren[index];                     <---- Crash line
    } catch (IndexOutOfBoundsException ex) {
        return null;
    }
}

Я установил точку останова на всех ArrayIndexOutOfBoundsException с и забыл ее удалить.Теперь код работает нормально.

Моя глупая ошибка, спасибо ребята за комментарии.

...