Kotlin使用kizitonwose/CalendarView库时calendarView变量类型如何定义
解决方案
正确类型填写
你遇到找不到dayBinder属性的问题,是因为默认导入了Android系统原生的android.widget.CalendarView,而非你引入的三方库提供的CalendarView类。<WHAT SHOULD BE HERE?> 位置填写三方库的全类名即可,完整声明代码如下:
val calendarView: com.kizitonwose.calendarview.CalendarView = findViewById(R.id.calendarView)
你也可以在代码文件头部导入三方库的CalendarView类,后续直接使用短类名声明即可,注意不要导入系统原生的android.widget.CalendarView:
// 文件头部导入 import com.kizitonwose.calendarview.CalendarView // 变量声明 val calendarView: CalendarView = findViewById(R.id.calendarView)
你提供的可选类型截图中,直接选择com.kizitonwose.calendarview.CalendarView对应的选项即可。
其他推荐的声明方式
Kotlin开发中还有两种更简便的视图获取方式,可避免手动导包和写findViewById的错误:
- 开启View Binding:开启后系统会自动生成布局对应的绑定类,直接通过绑定类实例获取控件,自动匹配正确类型,不会出现类导入错误
- 兼容Kotlin Android Extensions(已官方废弃,仅适用于老项目):可直接使用XML中定义的控件id
calendarView调用相关属性,无需额外声明变量
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

