Android 关于使用DialogFragment的DatePickerDialog的几个问题
我需要设置一个Android 关于使用DialogFragment的DatePickerDialog的几个问题,android,kotlin,datepicker,datepickerdialog,Android,Kotlin,Datepicker,Datepickerdialog,我需要设置一个日期选择器对话框,并禁用所有未来日期和一个月前的所有日期, 例如:如果今天是2020年5月4日,我需要从2020年4月4日到2020年5月4日的范围 我如何设置它?我尝试了最小/最大方法,但问题是我使用了不同的片段来扩展DialogFragment 这是我的代码: class DatePickerFragmentDialog : DialogFragment(), DatePickerDialog.OnDateSetListener { override fun onCr
日期选择器对话框
,并禁用所有未来日期和一个月前的所有日期,
例如:如果今天是2020年5月4日,我需要从2020年4月4日到2020年5月4日的范围
我如何设置它?我尝试了最小/最大方法,但问题是我使用了不同的片段来扩展DialogFragment
这是我的代码:
class DatePickerFragmentDialog : DialogFragment(), DatePickerDialog.OnDateSetListener {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use the current date as the default date in the picker
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
// Create a new instance of DatePickerDialog and return it
return DatePickerDialog(requireActivity(), this, year, month, day)
}
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
}
}
我从这里的主要片段中称之为:
DatePickerFragmentDialog().show(parentFragmentManager, "datePicker" )
同样-由于getSupportFragment已被弃用,我在这里调用parentFragmentManager
,这是正确的选择吗
和最后一个问题-我可以从
onDateSet
函数中获取用户选择,但问题是此函数位于DatePickerFragmentDialog
中,我如何将此函数中的变量传递给我的主片段和视图?对于第一个问题,您可以在创建对话框中设置最小日期和最大日期:
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 d = DatePickerDialog(requireActivity(), this , year, month, day)
val dp = d.datePicker
dp.maxDate = //Do your calculation
dp.min= //Do your calculation
return d
}
对于您的另一个问题,您可以在主片段中实现DatePickerDialog.OnDateSetListener
,然后从那里调用onDateSet