Android 时间间隔为30分钟的计时器不工作

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()

我正在开发一个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]));
    }

我需要指出的是,我想将最小值设置为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)