私のカスタムダイアログを定義するコードは次のとおりです。このダイアログを表示すると、コメント行にNullPointerExceptionがスローされます。複数のボタンが定義されている場合、カスタムダイアログで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()メソッドを削除すると、正常に動作します。私のリトライボタンも、問題なく動作します。なぜ複数のボタンを追加できないのですか?なぜそれは例外をスローしますか?
リソースファイルが表示されていないとわかりにくいですが、複数の子オブジェクトをサポートしていないビューまたはレイアウトに直接2つのボタンを追加しようとしていますか? –
ダイアログのレイアウトファイルを投稿すると助けになります –