如何禁止用户关闭触摸外部的警报对话框?

How to forbid user to close alert dialog touching outside it?

我有这个对话片段class:

class AskDownloadFragment : DialogFragment() {
private lateinit var navController: NavController
private lateinit var mainActivity: MainActivity

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

    mainActivity = activity as MainActivity

    return activity.let {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder(it).setMessage(R.string.want_to_download)
            .setNegativeButton(R.string.no) { _, _ ->
                dismiss()
            }

            .setPositiveButton(R.string.yes) { _, _ ->
                dismiss()
                mainActivity.showDownloadDialog()
            }
            .setCancelable(false)

            // Create the AlertDialog object and return it
            .create()
    }
}

}
我是这样称呼它的:

AskDownloadFragment().show(supportFragmentManager, DialogTags.TAG_ASK_DOWNLOAD.toString())

我可以在屏幕上看到该对话框,但我仍然能够通过触摸 alertDialog 外部来关闭它。我能做什么?

只需简单地使用这个键

.setCanceledOnTouchOutside(false)

所以总体来说会像

class AskDownloadFragment : DialogFragment() {
private lateinit var navController: NavController
private lateinit var mainActivity: MainActivity

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

    mainActivity = activity as MainActivity

    return activity.let {
            // Use the Builder class for convenient dialog construction
            val dialog = AlertDialog.Builder(it).setMessage(R.string.want_to_download)
                    .setNegativeButton(R.string.no) { _, _ ->
                        dismiss()
                    }

                    .setPositiveButton(R.string.yes) { _, _ ->
                        dismiss()
                        mainActivity.showDownloadDialog()
                    }
                    .setCancelable(false)
                   

                    // Create the AlertDialog object and return it
                    .create()
            dialog.setCanceledOnTouchOutside(false)
            dialog
        }
}