I am working on a android application and i want to set the timepicker interval to 30 minutes instead of 1 minute by default. This is my code:
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]));
}
If I run the above function, it displays the following error:
java.lang.ArrayIndexOutOfBoundsException: length=2; index=30
at android.widget.NumberPicker.updateInputTextView(NumberPicker.java:1990)
at android.widget.NumberPicker.setDisplayedValues(NumberPicker.java:1554)
I need to mention that I want to set the min value to 0 and the max value to 30, because otherwise the app won't save the data correctly to the database. Bot when I do that, it gives me the error that i have shown to you. What am I doing wrong here? Thank you in advance!
Your problem is found to be in the loop construction.
i = 0
(i = 30)
(i = 60)
(exit loop)
therefore your array has only 2 indexes and you trying to access something that does not exist. that is why you get the ArrayIndexOutOfBoundsException
. Happy coding.