单击后退关闭对话框并关闭活动

时间:2015-12-31 10:22:33

标签: android

我在活动开始时显示对话框:

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);
    }

6 个答案:

答案 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();
}