Android Kotlin viewBinding类型不匹配:推断为DrawerLayout期望ConstraintLayout如何解决
问题原因
- 你误用了其他页面的绑定类:当前代码里用到的
ActivityMainBinding对应的是项目中activity_main.xml布局,该布局的根节点为DrawerLayout,和你当前AskProfileImage页面的布局没有关联 - ViewBinding生成的绑定类名称和布局文件名一一对应:你写的根节点为
ConstraintLayout的布局如果命名为activity_ask_profile_image.xml,对应的绑定类就是ActivityAskProfileImageBinding,你需要用这个类来做绑定才会匹配布局类型
解决方法
- 替换绑定类的相关代码,修改后如下:
// 替换为AskProfileImage页面对应的绑定类 private lateinit var binding: ActivityAskProfileImageBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 调用对应绑定类的inflate方法 binding = ActivityAskProfileImageBinding.inflate(layoutInflater) // 不需要手动声明view类型,直接传入binding.root即可 setContentView(binding.root) }
如果你的布局文件名不是activity_ask_profile_image.xml,绑定类名对应布局文件名的大驼峰格式加Binding后缀即可,比如布局名为ask_profile_image.xml的话,绑定类就是AskProfileImageBinding。
- 如果修改后仍有报错,触发绑定类重新生成即可:点击Android Studio顶部菜单栏
Build -> Clean Project,执行完成后再点击Build -> Rebuild Project。
内容的提问来源于stack exchange,提问作者TheGreatCornholio
相关产品推荐
相关产品推荐

