2011-08-30 68 views
1

彈出對話框是否有可能有打開一個對話框窗口的選項菜單項? 這裏就是我的了:安卓:打開自定義從選項菜單

public class main extends Activity { 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int score; 

    SharedPreferences stats = getSharedPreferences("TRHprefs", MODE_WORLD_READABLE); 

    score = stats.getInt("score", 0); 

    switch (item.getItemId()) { 

     case R.id.score: 

      Context mContext = getApplicationContext(); 
      Dialog dialog = new Dialog(mContext); 

      dialog.setContentView(R.layout.options_menu); 
      dialog.setTitle("Hero Stats"); 

      TextView b10 = (TextView) dialog.findViewById(R.id.tolevel); 
      b10.setText("Score: " + score); 

      dialog.setCancelable(true); 
      dialog.show(); 

          break; 
     case R.id.options:  
      //Options 

          break; 
     case R.id.quit: 
      //Quit 
          break; 
    } 
    return true; 
} 
} 

當我選擇了比分選項按鈕,該應用程序強制關閉。有任何想法嗎?

+0

可否請您提供logcat的輸出,它只是猜測,沒有它。 – EpicOfChaos

回答

1

您應該包括logcat的輸出,使其更容易確定究竟是哪裏錯了,但在代碼盯着我的期望是,要麼:

  1. 有一個在佈局文件options_menu.xml和錯誤行TextView b10 = (TextView) dialog.findViewById(R.id.tolevel);正在爲b10返回空值。如果發生這種情況,下一行將導致NullPointerException,並且應用程序將強制關閉。
  2. Dialog dialog = new Dialog(mContext);失敗,因爲你是在一個ApplicationContext傳球,而不是一個活動。嘗試使用Dialog dialog = new Dialog(this);