【问题标题】:Android Alert dialog is dismissing on Back press?Android Alert 对话框在 Back press 时消失?
【发布时间】:2018-07-25 05:37:13
【问题描述】:

当我点击系统后退按钮时,我的警报对话框关闭,我不想关闭我的警报,我的代码在这里:-

fun shoWResultPopUp() {
    if (!isFinishing()) {
        val mBuilder = AlertDialog.Builder(this@ExamActivity)
        val mView = layoutInflater.inflate(R.layout.show_result_popup, null)
        val mResult = mView.findViewById(R.id.resultBtn) as Button
        mBuilder.setView(mView)
        val dialog = mBuilder.create()
        dialog.setCanceledOnTouchOutside(false);
        dialog.show()

        mResult.setOnClickListener {
            val intent = Intent(this, ResultActivity::class.java)
            startActivity(intent)
        }
    }
}

override fun onBackPressed() {
    return
}

【问题讨论】:

  • 如果您的活动销毁对话框将关闭
  • 设置 dialog.setCancelable(false) 低于 val dialog = mBuilder.create()

标签: android kotlin android-alertdialog


【解决方案1】:

你需要设置:

dialog.setCancelable(false)

根据此方法的 Android 文档:

设置此对话框是否可以通过 {@link KeyEvent#KEYCODE_BACK BACK} 键。

所以这正是你想要的情况。

注意:

dialog.setCanceledOnTouchOutside 用于防止/允许在弹出窗口外触摸时关闭弹出窗口,而不是后退按钮。文档:

设置在窗口外触摸时是否取消此对话框 界限。如果设置为 true,则对话框设置为可取消,否则 已经设置好了。

【讨论】:

  • 你需要setCancelable(false)
【解决方案2】:

您可以查看此链接 Dismiss Dialog onBackPressAndroid

dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
    @Override
    public void onCancel(DialogInterface dialog)
    {
         MyActivity.this.finish();
    }
});

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 2016-09-03
    • 2023-03-25
    • 2011-09-30
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多