如何禁止用户关闭触摸外部的警报对话框?
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
}
}
我有这个对话片段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
}
}