间隔30分钟的TimePicker不工作



我正在开发一个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,因为否则应用程序将无法将数据正确保存到数据库中。当我这样做的时候,它会给我一个错误,我已经向你展示了。我在这里做错了什么?提前谢谢!

您的问题出现在循环构造中。

  • 循环构造:i = 0
  • 第一个循环:i+=30(i = 30)
  • 第二个循环:i+=30(i = 60)
  • 60<60=错误(exit loop)

因此,您的数组只有2个索引,并且您试图访问不存在的内容。这就是为什么你得到ArrayIndexOutOfBoundsException。快乐的编码。

最新更新