Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于使用DialogFragment的DatePickerDialog的几个问题_Android_Kotlin_Datepicker_Datepickerdialog - Fatal编程技术网

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