尝试使用选项菜单项打开对话框菜单

时间:2013-04-23 00:30:23

标签: android list menu dialog alert

我正在尝试打开一个警告对话框,其中包含一个列表,供用户选择一些选项,但对话框将从选项菜单项打开。我已经包含了选项和代码菜单的代码。

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()方法,我认为这是以前的问题,但是当点击菜单项时,什么都没有出现。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

轻松的家伙......没有人认为你是愚蠢的。我不知道SECTION是什么,但您应该将其更改为您在菜单中提供id的任何内容xml

<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来做你正在做的事情