2013-04-23 80 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为你在做什么