日历视图在一个月前显示

时间:2018-10-20 07:45:39

标签: android calendar android-calendar

我正在使用gitHub的“材料日历”视图。现在,我在日历视图中执行按月更改监听器。当我更改月份时,它将显示上个月。例如,11月显示10月,而2月显示1月。此外,当我更改为一月或十二月时,将出现以下错误:

  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 :(得分:1)

Zahoor Saleem和TheWanderer的评论中已经提到了它,但是它应该是一个答案:您从CalendarDay获得的月份数字是“基于0的”,即1月份为0。等等,直到12月11日为止。因此,例如,如果您选择10月的某个日期,您将得到9,Month很自然地理解为9月。如您所见,一个月前。

简单的解决方案是添加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()];