我在活动开始时显示对话框:
mDialog.setCanceledOnTouchOutside(false);
当用户按下后退按钮时,它首先关闭对话框然后再按下后退按钮关闭活动。我想在单次背压下完成此操作,关闭对话框并关闭活动。 我也试过以下代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
// AppDialogUtils.mDialog.setCancelable(true);
// AppDialogUtils.mDialog.dismiss();
mActivity.finish();
}
return super.onKeyDown(keyCode, event);
}
答案 0 :(得分:12)
设置mDialog.setOnCancelListener(listener)
并关闭该侦听器中的Activity
。
@Override
mDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface interface) {
this.finish();
}
});
或者,您可以OnKeyListener
使用Dialog
。
mDialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface interface, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
this.finish();
}
return true;
}
});
答案 1 :(得分:3)
使用OnCancelListener
alertDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
// finish activity
}
});
答案 2 :(得分:0)
确保已设置mDialog.setCancelable(true)
,然后设置
mDialog.setOnCancelListener {
this.finish()
}
注意:这是setOnCancelListener
的lambda函数。
答案 3 :(得分:-1)
如果对话框已打开,则
dialog.dismiss();
这将取消您的对话框,如果您想按回然后使用此行
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
这对你有用
答案 4 :(得分:-2)
这可能适合你。
首先我不认为这个有用
mDialog.setCanceledOnTouchOutside(false);
你可以使用
dialog.setCancelable(false);
现在它可以按你的需要工作。
答案 5 :(得分:-3)
重载活动的onBackPressed()
事件,并在同一功能中关闭对话框和活动。
@Override
public void onBackPressed() {
dialog.dismiss();
finish();
}