【问题标题】:Trying to open a Dialog Menu with an Options Menu Item尝试使用选项菜单项打开对话框菜单
【发布时间】:2013-04-23 00:30:23
【问题描述】:

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

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() 方法,我之前认为这是问题,但是当单击菜单项时,什么也没有出现。任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: android list menu dialog alert


    【解决方案1】:

    简单的家伙...没有人认为你是愚蠢的。我不知道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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多