Android 使用菜单关闭警报对话框
我有一个带有一些项目的警报对话框。我需要在用户单击菜单按钮时关闭对话框,而不提供任何关闭选项。我该怎么做 这是我的密码Android 使用菜单关闭警报对话框,android,android-dialog,android-dialogfragment,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 Aler
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;
}
在主机活动中,您需要检查用户是否已进入菜单并关闭其中的对话框:
@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);
}
}
因为OP希望关闭当前随菜单按钮显示的对话框。我相信以下是他想要的。解决方案在模拟器中进行了测试
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();
}