簡體   English   中英

如何禁止用戶關閉觸摸它外面的警報對話框?

[英]How to forbid user to close alert dialog touching outside it?

我有這個對話框片段類:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM