2013-04-23 79 views
0

我想打開一個警報對話框,其中有一個列表供用戶選擇一些選項,但對話框將從選項菜單項打開。我已經包含了選項和對話框菜單的代碼。試圖用選項菜單打開一個對話框菜單項

public void OnOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case SECTION: 
      showDialogMenu(); 
      new DialogInterface.OnClickListener(){ 
       @Override 
       public void onClick(DialogInterface dialog, int item) { 
        showDialogMenu(); 
        Log.d("Dialog used.","here"); 
       } 
      }; break; 
     } 
    } 


public void showDialogMenu(){ 
    Log.d("showDialogMenu()", "Method was called."); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(R.string.dialogueTitle); 
    builder.setPositiveButton("Melee", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=0; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Pistols", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=27; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Shotguns", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=38; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Rifles", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=43; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Sub-Machine Guns", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=58; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Light Machine Guns", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=68; 
      whichImage(num); 
     } 
    }); 
    builder.setPositiveButton("Sniper Rifles", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      num=72; 
      whichImage(num); 
     } 
    }); 
    builder.show(); 
} 

我確信有針對對話框中的show()方法,我認爲在這之前是問題,但被點擊菜單項時,沒有出現。任何幫助將不勝感激,謝謝。

回答

0

簡單的傢伙......沒有人認爲你是愚蠢的。我不知道是什麼SECTION是,但你應該改變這種狀況,無論你在你的菜單XML給了ID

<item android:id="MyItem" 

然後在onOptionsItemSelected()

public void OnOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.MyItem: 
     showDialogMenu(); 
     break; 

移動你showDialog()方法在這裏外,使它可以是可重複的。

public void showDialogMenu(){ 
       Log.d("Dialog used.","here"); 
      } 

其優良的使用switch/case這裏是因爲有機會,你會希望在某些時候

這將有助於你目前的問題添加更多項目。但你會想檢查使用MultiChoice Dialog爲你在做什麼