You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android实现View Binding时视图引用与绑定类未找到问题

View Binding两类报错解决方案

报错1原因:加tools:viewBindingIgnore="true"找不到绑定类

tools:viewBindingIgnore="true"的作用就是显式告知构建工具不要为当前布局生成View Binding绑定类,属于预期行为,要使用View Binding必须先移除该属性。

报错2原因:移除属性后找不到视图ID

有两个核心问题导致该报错:

  • 布局中使用了XML不支持的//格式注释:XML合法注释格式为<!-- 注释内容 -->,你代码中多处//Layout for Release Date这类非法注释会打断View Binding对布局的解析,导致绑定类控件属性生成不完整
  • Kotlin代码中使用了错误的控件属性名:View Binding会自动把布局中下划线命名的ID转换为小驼峰格式的属性,比如progress_bar对应的属性名为progressBar,text_error对应textError,你直接用下划线命名访问自然找不到属性

修复步骤

  1. 先删除布局根节点的tools:viewBindingIgnore="true"属性
  2. 替换布局中所有//开头的非法注释为XML标准注释,比如:
    把//Layout for Release Date修改为<!-- Layout for Release Date -->
    顺带可以修正营收模块的文案错误:把android:text="Budget: "改成android:text="Revenue: "
  3. 修正Kotlin代码中的控件属性名,所有下划线写法改为小驼峰,示例:
    // 原错误写法
    binding.progress_bar.setVisibility(if (it == NetworkState.LOADING) View.VISIBLE else View.GONE)
    binding.text_error.setVisibility( if(it == NetworkState.ERROR) View.VISIBLE else View.GONE)
    binding.movie_title.setText(it.title)
    
    // 修正后写法
    binding.progressBar.visibility = if (it == NetworkState.LOADING) View.VISIBLE else View.GONE
    binding.textError.visibility = if(it == NetworkState.ERROR) View.VISIBLE else View.GONE
    binding.movieTitle.text = it.title
    
    其余所有控件属性都按照这个规则修改即可
  4. 确认模块级build.gradle中已经开启View Binding配置:
    android {
        // 其他常规配置
        buildFeatures {
            viewBinding true
        }
    }
    
  5. 执行Android Studio顶部菜单栏「Build → Clean Project」→「Rebuild Project」,或者执行「File → Invalidate Caches / Restart」清除缓存重启IDE,确保绑定类重新正确生成即可。

内容的提问来源于stack exchange,提问作者oyeraghib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:06:02