我有一些包含某些项目的警告对话框。我需要在用户单击菜单按钮时关闭对话框,而不提供任何关闭选项。我怎么能这样做?
这是我的代码
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;
}
答案 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();
}