Android 时间间隔为30分钟的计时器不工作
我正在开发一个android应用程序,我想将计时器间隔设置为30分钟,而不是默认的1分钟。这是我的代码:Android 时间间隔为30分钟的计时器不工作,android,intervals,timepicker,numberpicker,Android,Intervals,Timepicker,Numberpicker,我正在开发一个android应用程序,我想将计时器间隔设置为30分钟,而不是默认的1分钟。这是我的代码: private void setTimePickerIntervalZeroThirtyMinutes(TimePicker timePicker) { int TIME_PICKER_INTERVAL = 30; NumberPicker minutePicker = timePicker.findViewById(Resources.getSystem()
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]));
}
我需要指出的是,我想将最小值设置为0,最大值设置为30,因为否则应用程序将无法将数据正确保存到数据库中。当我这样做时,它会给我显示给你的错误。我做错了什么?提前谢谢你 发现您的问题在循环构造中
- 循环构造:
i=0
- 第一个循环:i+=30
(i=30)
- 第二个循环:i+=30
(i=60)
- 60<60=false
(退出循环)
因此,您的数组只有2个索引,您试图访问一些不存在的内容。这就是为什么会出现
ArrayIndexOutOfBoundsException
。愉快的编码。您可能想检查这个@homerun,我已经尝试了您的解决方案,但它不起作用。这给了我一个类似的错误,我在问题中也说过。谢谢你的回答。现在,根据您上次提供的答案,我知道问题出在哪里了。但是,我不知道如何将条件放入for循环中,以获得要在数字选择器中显示的“00”和“30”值。你能帮我吗?我已经设法解决了这个问题。再次感谢您对@homerun的帮助!
java.lang.ArrayIndexOutOfBoundsException: length=2; index=30
at android.widget.NumberPicker.updateInputTextView(NumberPicker.java:1990)
at android.widget.NumberPicker.setDisplayedValues(NumberPicker.java:1554)