间隔 30 分钟的 TimePicker 不起作用
TimePicker with 30 minute interval not working
我正在开发一个 android 应用程序,我想将时间选择器间隔设置为 30 分钟而不是默认的 1 分钟。这是我的代码:
private void setTimePickerIntervalZeroThirtyMinutes(TimePicker timePicker) {
int TIME_PICKER_INTERVAL = 30;
NumberPicker minutePicker = timePicker.findViewById(Resources.getSystem().getIdentifier("minute", "id", "android"));
minutePicker.setMinValue(0);
minutePicker.setMaxValue((60 / TIME_PICKER_INTERVAL) + 28);
List<String> displayedValues = new ArrayList<>();
for(int i = 0; i < 60; i += TIME_PICKER_INTERVAL) {
displayedValues.add(String.format("%02d", i));
}
minutePicker.setDisplayedValues(displayedValues.toArray(new String[0]));
}
如果我运行上面的函数,会显示如下错误:
java.lang.ArrayIndexOutOfBoundsException: length=2; index=30
at android.widget.NumberPicker.updateInputTextView(NumberPicker.java:1990)
at android.widget.NumberPicker.setDisplayedValues(NumberPicker.java:1554)
我需要说明一下,我想将最小值设置为 0,将最大值设置为 30,否则应用程序将无法将数据正确保存到数据库中。 Bot 当我这样做时,它会给我显示给您的错误。我在这里做错了什么?提前致谢!
发现你的问题出在循环构造上。
- 循环构造:
i = 0
- 第一个循环:i += 30
(i = 30)
- 第二个循环:i += 30
(i = 60)
- 60 < 60 = 假
(exit loop)
因此您的数组只有 2 个索引,而您试图访问不存在的内容。这就是为什么你得到 ArrayIndexOutOfBoundsException
。编码愉快。
我正在开发一个 android 应用程序,我想将时间选择器间隔设置为 30 分钟而不是默认的 1 分钟。这是我的代码:
private void setTimePickerIntervalZeroThirtyMinutes(TimePicker timePicker) {
int TIME_PICKER_INTERVAL = 30;
NumberPicker minutePicker = timePicker.findViewById(Resources.getSystem().getIdentifier("minute", "id", "android"));
minutePicker.setMinValue(0);
minutePicker.setMaxValue((60 / TIME_PICKER_INTERVAL) + 28);
List<String> displayedValues = new ArrayList<>();
for(int i = 0; i < 60; i += TIME_PICKER_INTERVAL) {
displayedValues.add(String.format("%02d", i));
}
minutePicker.setDisplayedValues(displayedValues.toArray(new String[0]));
}
如果我运行上面的函数,会显示如下错误:
java.lang.ArrayIndexOutOfBoundsException: length=2; index=30
at android.widget.NumberPicker.updateInputTextView(NumberPicker.java:1990)
at android.widget.NumberPicker.setDisplayedValues(NumberPicker.java:1554)
我需要说明一下,我想将最小值设置为 0,将最大值设置为 30,否则应用程序将无法将数据正确保存到数据库中。 Bot 当我这样做时,它会给我显示给您的错误。我在这里做错了什么?提前致谢!
发现你的问题出在循环构造上。
- 循环构造:
i = 0
- 第一个循环:i += 30
(i = 30)
- 第二个循环:i += 30
(i = 60)
- 60 < 60 = 假
(exit loop)
因此您的数组只有 2 个索引,而您试图访问不存在的内容。这就是为什么你得到 ArrayIndexOutOfBoundsException
。编码愉快。