TimePicker с 30-минутным интервалом не работает - PullRequest
0 голосов
/ 18 февраля 2020

Я работаю над приложением 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, поскольку в противном случае приложение не сможет правильно сохранить данные в базе данных. Бот, когда я это делаю, это дает мне ошибку, которую я тебе показал. Что я здесь не так делаю? Заранее спасибо!

1 Ответ

0 голосов
/ 19 февраля 2020

Ваша проблема в конструкции l oop.

  • l oop конструкция: i = 0
  • first l oop: i + = 30 (i = 30)
  • второй л oop: i + = 30 (i = 60)
  • 60 <60 = <strong>false (exit loop)

поэтому ваш массив имеет только 2 индекса, и вы пытаетесь получить доступ к чему-то, что не существует. вот почему вы получаете ArrayIndexOutOfBoundsException. Удачного кодирования.

...