继承自定义View后通过ViewBinding调用子类方法报错如何解决
问题原因
出现Unresolved reference: startProcess报错的核心原因如下:
- ViewBinding生成的绑定属性类型完全由XML布局中声明的View类型决定,你在布局里给
customView声明的类型是父类BaseCustomView,而非实际使用的子类ACustomView。父类BaseCustomView中没有定义startProcess()方法,因此调用时会提示方法不存在。 - 少数场景下也可能是XML中
ACustomView的全限定名拼写错误、项目未重新构建导致ViewBinding类未更新引发的报错。
解决方案
按照以下步骤操作即可解决:
- 找到对应布局文件中
customView的声明节点,将类名替换为ACustomView的完整全限定路径,示例如下:
<!-- 错误写法:声明为父类类型 --> <com.你的包名.BaseCustomView android:id="@+id/customView" android:layout_width="match_parent" android:layout_height="wrap_content"/> <!-- 正确写法:声明为实际使用的子类类型 --> <com.你的包名.ACustomView android:id="@+id/customView" android:layout_width="match_parent" android:layout_height="wrap_content"/>
注意将上述示例中的com.你的包名替换为ACustomView实际对应的包路径。
2. 修改完成后重新构建项目,触发ViewBinding类重新生成,之后即可正常调用binding.customView.startProcess()方法。
如果修改后仍有报错,可检查以下内容:
ACustomView的包名、类名拼写是否和XML中声明的完全一致- 确认模块已开启ViewBinding开关,没有其他构建错误导致绑定类生成失败
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

