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

Android Activity使用ViewBinding提示需传入ViewGroup参数该如何解决?

问题根因

  • 你遇到的inflate方法缺失单参数重载的核心原因是:你的activity_main.xml根布局使用了<merge>标签。用<merge>作为根节点的布局生成的ViewBinding类,不会生成仅接收LayoutInflater参数的重载方法,因为<merge>标签的特性要求布局必须依附到一个父ViewGroup中,所以必须传入parent参数。
  • 你尝试DataBinding报错的原因是仅开启了ViewBinding配置,没有开启DataBinding,不需要混用这两个功能,纯ViewBinding场景不需要调用DataBinding相关API。

解决方案

情况1:你确实需要使用作为根布局

使用Activity内置的contentView作为parent参数即可,写法如下:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 第三个参数attachToRoot传true,会自动将布局挂载到content父容器下,不需要额外调用setContentView
    binding = ActivityMainBinding.inflate(layoutInflater, findViewById(android.R.id.content), true)
}

情况2:你没有使用标签,属于构建缓存异常

直接清理项目构建缓存后重新构建即可:

  1. 点击Android Studio菜单栏 Build -> Clean Project
  2. 再点击 Build -> Rebuild Project
    重新构建后就会生成带单参数inflate重载的Binding类,之后用标准写法即可:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    // 注意必须将绑定类的根View设置到Activity
    setContentView(binding.root)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:09