I’m creating a simple DatePickerDialog with a neutral button, by clicking on which I just want to set the current date in the calendar, without dismiss the dialog. But the dialog dismissed anyway. What am I doing wrong?
<code>internal class CustomDatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
private var _skipDismiss = false
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val dialog = DatePickerDialog(requireContext(), this, year, month, day)
val datePicker = dialog.datePicker
datePicker.maxDate = MaterialDatePicker.todayInUtcMilliseconds()
dialog.setButton(BUTTON_NEUTRAL, "Today") { _, _ ->
_skipDismiss = true
c.toInstant()
datePicker.updateDate(c[Calendar.YEAR], c[Calendar.MONTH], c[Calendar.DAY_OF_MONTH])
}
return dialog
}
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
}
override fun onDismiss(dialog: DialogInterface) {
if (!_skipDismiss) {
super.onDismiss(dialog)
} else {
_skipDismiss = false
}
}
}
</code>
<code>internal class CustomDatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
private var _skipDismiss = false
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val dialog = DatePickerDialog(requireContext(), this, year, month, day)
val datePicker = dialog.datePicker
datePicker.maxDate = MaterialDatePicker.todayInUtcMilliseconds()
dialog.setButton(BUTTON_NEUTRAL, "Today") { _, _ ->
_skipDismiss = true
c.toInstant()
datePicker.updateDate(c[Calendar.YEAR], c[Calendar.MONTH], c[Calendar.DAY_OF_MONTH])
}
return dialog
}
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
}
override fun onDismiss(dialog: DialogInterface) {
if (!_skipDismiss) {
super.onDismiss(dialog)
} else {
_skipDismiss = false
}
}
}
</code>
internal class CustomDatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
private var _skipDismiss = false
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val dialog = DatePickerDialog(requireContext(), this, year, month, day)
val datePicker = dialog.datePicker
datePicker.maxDate = MaterialDatePicker.todayInUtcMilliseconds()
dialog.setButton(BUTTON_NEUTRAL, "Today") { _, _ ->
_skipDismiss = true
c.toInstant()
datePicker.updateDate(c[Calendar.YEAR], c[Calendar.MONTH], c[Calendar.DAY_OF_MONTH])
}
return dialog
}
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
}
override fun onDismiss(dialog: DialogInterface) {
if (!_skipDismiss) {
super.onDismiss(dialog)
} else {
_skipDismiss = false
}
}
}