I have this dialog fragment 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()
}
}
}
And I cal it this way:
AskDownloadFragment().show(supportFragmentManager, DialogTags.TAG_ASK_DOWNLOAD.toString())
I can see the dialog on the screen, but I'm still able to close it touching outside alertDialog. What can I do?
Just simply use this key
.setCanceledOnTouchOutside(false)
So overall it will be like
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
}
}