Вот код, который определяет мой пользовательский диалог. Когда я показываю это диалоговое окно, он выдает исключение 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(), он отлично работает! Моя кнопка повтора также работает без заминки. Почему я не могу добавить несколько кнопок? Почему это генерирует исключение?
Похоже, что dialog.findViewById (R.id.ReturnToMenu);
возвращает null. Можете ли вы проверить, что на самом деле у вас есть кнопка с правильным идентификатором? Я бы предположил, что в вашем идентификаторе кнопки "вернуться к меню" есть опечатка.