Android - Пользовательский диалог генерирует исключение NullPointerException, когда определено более одной кнопки

1

Вот код, который определяет мой пользовательский диалог. Когда я показываю это диалоговое окно, он выдает исключение NullPointerException в прокомментированной строке.

    protected Dialog onCreateDialog (int id) {
    Dialog dialog = null;
        switch (id) {
        case DIALOG_SUCCESS_ID:

            Context thisContext = this;

            dialog = new Dialog(thisContext);

            dialog.setContentView(R.layout.win_dialog);
            dialog.setTitle("Stage One");

            TextView timeScore = (TextView) dialog.findViewById(R.id.TimeScore);
            timeScore.setText (elapsedTimeSec + "s");
            TextView bestScore = (TextView) dialog.findViewById(R.id.BestScore);
            bestScore.setText ("Best Score: (n/a)");

            Button retry = (Button) dialog.findViewById(R.id.Retry);
            retry.setOnClickListener(new View.OnClickListener() {
                public void onClick (View v) {
                    Intent retry = new Intent(v.getContext(), LevelOne.class);
                    startActivityForResult(retry, 0);
                    finish();
                }
            });

            Button menu = (Button) dialog.findViewById (R.id.ReturnToMenu);

            //Throws NullPointerException at this line
            menu.setOnClickListener(new View.OnClickListener() {
                public void onClick (View v) {
                    Intent menu = new Intent(v.getContext(), Menu.class);
                    startActivityForResult(menu, 0);
                    finish();
                }
            });
            break;
        case DIALOG_GAMEOVER_ID:
            break;
        default:
            dialog = null;
        }
        return dialog;
}

Но когда я удаляю свою кнопку меню и метод menu.SetOnClickListener(), он отлично работает! Моя кнопка повтора также работает без заминки. Почему я не могу добавить несколько кнопок? Почему это генерирует исключение?

  • 0
    Трудно сказать, не видя ваши файлы ресурсов, но вы пытаетесь добавить две кнопки непосредственно в представление или в макет, который не поддерживает несколько дочерних объектов?
  • 0
    Это поможет, если вы также разместите свой файл макета для диалога
Теги:
exception
mobile
nullpointerexception

1 ответ

5
Лучший ответ

Похоже, что dialog.findViewById (R.id.ReturnToMenu); возвращает null. Можете ли вы проверить, что на самом деле у вас есть кнопка с правильным идентификатором? Я бы предположил, что в вашем идентификаторе кнопки "вернуться к меню" есть опечатка.

  • 0
    Да, там была опечатка. Самые простые вещи .... черт возьми. Спасибо за помощь!
  • 1
    Рад, что смог помочь. Не стесняйтесь отмечать ответ принятым :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню