Календарь отображается за месяц до - PullRequest
0 голосов
/ 20 октября 2018

Я использую Просмотр календаря материалов gitHub.Теперь я делаю мой слушатель смены месяца в представлении календаря.Когда я меняю месяц, он отображает предыдущий месяц.Например, ноябрь показывает октябрь, а февраль - январь.Более того, при переходе на январь или декабрь появится следующая ошибка:

  org.threeten.bp.DateTimeException: Invalid value for MonthOfYear: 0

мой код

   materialCalendarView.setOnMonthChangedListener(new OnMonthChangedListener() {
        @Override
        public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {


          Month month = Month.of(date.getMonth());


          weekoffs.setText(month.toString());


        }
    });

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 22 октября 2018

Это уже упоминалось в комментариях Захура Салима и TheWanderer, но это заслуживает ответа: номер месяца, который вы получаете от CalendarDay, равен «0», то есть 0 для января и т. Д.., через 11 за декабрь.Так, например, если вы выберете дату в октябре, вы получите 9, что Month вполне естественно понимать как сентябрь.Как вы заметили, за месяц до этого.

Тривиальное решение - добавить 1:

      // getMonth() is 0-based, so add 1
      Month month = Month.of(date.getMonth() + 1);

Это не очень приятно.Если вы предпочитаете, есть альтернатива:

      // getMonth() is 0-based, so use as index into the (0-based) array of Months
      Month month = Month.values()[date.getMonth()];
...