使用菜单关闭警报对话框

时间:2013-07-11 06:32:18

标签: android android-dialog android-dialogfragment

我有一些包含某些项目的警告对话框。我需要在用户单击菜单按钮时关闭对话框,而不提供任何关闭选项。我怎么能这样做?

这是我的代码

CharSequence[] cs = ques_cat.toArray(new CharSequence[ques_cat.size()]);
finalCharSequence[]css=ques_catidtoArray(newCharSequence[ques_catid.size()]);

AlertDialog.Builder builder = new AlertDialog.Builder(Gropinion_Questions.this);
builder.setTitle("Choose Category");
builder.setItems(cs, new DialogInterface.OnClickListener()  {
    public void onClick(DialogInterface dialog, int item) {
        String ss = css[item].toString();
        getSubCat(ss);
    }
});
AlertDialog alert = builder.create();
alert.show();

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater=getMenuInflater();
    menuInflater.inflate(R.menu.activity_main, menu);
    if(alert !=null && alert.isShowing())
        alert.dismiss();
    return true;
}

2 个答案:

答案 0 :(得分:0)

在您的主持人活动中,您需要检查用户是否已进入菜单并关闭其中的对话框:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    yourDialog.dismiss();
    return true;
}

或者您可以通过将菜单键按下事件添加到您的主要活动来拦截它:

public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        if (yourDialog != null && yourDialog.isVisible()) {
            yourDialog.dismiss();
        }
        return true;
    } else {
        return super.onKeyUp(keyCode, event);
    }
}

答案 1 :(得分:0)

由于OP想要关闭当前使用MENU按钮显示的对话框。我相信以下是他想要的。解决方案在模拟器中进行测试。

void buildDialog(){
    AlertDialog alert = new AlertDialog.Builder(getActivity()).create();  
    alert.setCancelable(false);
    alert.setTitle("Close with menu button");  

        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_MENU) { 
                dialog.dismiss();
                return true;
            }
            return false;
        }
    });
    alert.show();
}