2011-01-07 4 views
1

私のカスタムダイアログを定義するコードは次のとおりです。このダイアログを表示すると、コメント行に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()メソッドを削除すると、正常に動作します。私のリトライボタンも、問題なく動作します。なぜ複数のボタンを追加できないのですか?なぜそれは例外をスローしますか?

+0

リソースファイルが表示されていないとわかりにくいですが、複数の子オブジェクトをサポートしていないビューまたはレイアウトに直接2つのボタンを追加しようとしていますか? –

+0

ダイアログのレイアウトファイルを投稿すると助けになります –

答えて

5

dialog.findViewById (R.id.ReturnToMenu);がnullを返すようです。実際に正しいIDのボタンがあることを確認できますか?私はあなたの "メニューに戻る"ボタンIDのどこかにタイプミスがあると思います。

+0

はい、タイプミスがありました。最も簡単なもの....助けてくれてありがとう! –

+1

うれしい私は助けることができます。感謝の言葉を自由に記入してください:) –

関連する問題