[英]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.