使用CalendarView库时出现YearMonth类型不匹配错误求助
解决CalendarView库中YearMonth类型不匹配问题
你遇到的这个报错核心原因很明确:Java原生java.time.YearMonth和CalendarView库依赖的org.threeten.bp.YearMonth是完全不同的类,库的setup和scrollToMonth方法只接受后者作为参数,所以才会抛出类型不匹配的异常。
解决方案:统一使用ThreeTenBP的日期类
只需要把代码中用到的Java原生日期相关类,替换成库依赖的ThreeTenBP对应类即可:
- 先替换导入语句:
// 替换之前的java.time相关导入 import org.threeten.bp.YearMonth import org.threeten.bp.temporal.WeekFields import java.util.Locale
- 修改后的完整代码:
val currentMonth = YearMonth.now() val firstMonth = currentMonth.minusMonths(10) val lastMonth = currentMonth.plusMonths(10) val firstDayOfWeek = WeekFields.of(Locale.getDefault()).firstDayOfWeek calendarViewForPublicHolidays.setup(firstMonth, lastMonth, firstDayOfWeek) calendarViewForPublicHolidays.scrollToMonth(currentMonth)
补充说明
你使用的com.github.kizitonwose:CalendarView:0.3.4是比较早期的版本,它基于ThreeTenBP(一个为Android低版本兼容Java 8日期API的第三方库)实现日期处理,而非Android后来官方支持的原生java.time包。这两个包下的日期类虽然功能相似,但属于完全独立的类型,无法直接兼容,所以必须统一使用库依赖的ThreeTenBP类。
内容的提问来源于stack exchange,提问作者Elif Senyurek
相关产品推荐
相关产品推荐

