Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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
Java 使用MaterialDateTimePicker选择时间块_Java_Android_Time_Kotlin_Timepicker - Fatal编程技术网

Java 使用MaterialDateTimePicker选择时间块

Java 使用MaterialDateTimePicker选择时间块,java,android,time,kotlin,timepicker,Java,Android,Time,Kotlin,Timepicker,我想显示一个时钟,其中只能选择选定的时间块。例如:我希望时钟只允许我选择从09:00到10:00或从12:00到12:30或从14:00到18:00的时间。这些范围之外的所有小时都不应该是可选择的 使用我可以设置选定时间的数组: val time = TimePickerDialog.newInstance(timeSet, true) time.setSelectableTimes(arrayOf(Timepoint(10), Timepoint(11))) 但这只允许我选择10:00和11

我想显示一个时钟,其中只能选择选定的时间块。例如:我希望时钟只允许我选择从09:00到10:00或从12:00到12:30或从14:00到18:00的时间。这些范围之外的所有小时都不应该是可选择的

使用我可以设置选定时间的数组:

val time = TimePickerDialog.newInstance(timeSet, true)
time.setSelectableTimes(arrayOf(Timepoint(10), Timepoint(11)))
但这只允许我选择10:00和11:00的时间,而不是它们之间的间隔


有可能像我在这个库中解释的那样做吗?

我在类别中做了一些挖掘,事实上就是你链接的那一个,并发现了enableMinutestrue。根据文档,这默认为true,因此我不确定它是如何在代码中被禁用的。如果还想启用选择秒,请使用enableSecondstrue

引用文件:

TimepickerDialog enableSecondsboolean enableSconds和enableMinutesboolean enableMinutes允许您在TimepickerDialog上启用或禁用秒和分钟选择器。启用秒选择器意味着启用分钟选择器。禁用分钟选择器将禁用秒选择器。将使用最后应用的设置。默认情况下,enableSeconds=false,enableMinutes=true


所以我决定创建一个新方法来创建一个时间点数组:

private fun getTimes(array: JSONArray): Array<Timepoint> {
    val times = arrayListOf<Timepoint>()
    for (i in 0..array.length().minus(1)) {
        val format = SimpleDateFormat("HH:mm", Locale.getDefault())

        val start = Calendar.getInstance()
        start.time = format.parse(array.getJSONObject(i).getString("start"))

        val end = Calendar.getInstance()
        end.time = format.parse(array.getJSONObject(i).getString("end"))

        while (!start.after(end)) {
            times.add(Timepoint(start.get(Calendar.HOUR_OF_DAY), start.get(Calendar.MINUTE)))
            start.add(Calendar.MINUTE, 1)
        }
    }

    return times.toArray(arrayOfNulls<Timepoint>(times.size))
}
说明:

通过使用以下方法:

time.setSelectableTimes(arrayOf(Timepoint(10), Timepoint(11)))

我只能分别选择10:00h和11:00h的时间,因此解决方案是找到10:00h和11:00h之间的所有时间,并将它们添加到数组中。只有使用这个新数组,我才能调用上面的方法。

谢谢你的回答,但不幸的是,这并不能解决我的问题。这是默认为true的事实上,问题在于时间。SetSelectableTimeArrayOftimePoint10,Timepoint11仅允许我选择两次,而不选择它们之间的间隔,甚至允许分钟为true。
time.setSelectableTimes(arrayOf(Timepoint(10), Timepoint(11)))