Android Studio Kotlin ViewBinding报inflate未解析引用错误
有效解决方案
- 首先删除文件顶部3个完全无关的错误导包语句,这三行全部删掉:
import android.view.View.inflate import androidx.core.content.res.ColorStateListInflaterCompat.inflate import androidx.core.graphics.drawable.DrawableCompat.inflate
- 补全ViewBinding自动生成类的正确导入,在import区域添加对应绑定类的导入语句,注意把包名替换成你项目实际的applicationId:
import 你的项目包名.databinding.ActivityMainBinding
- 补全onCreate生命周期里的setContentView调用,否则视图无法正常挂载,修正后的完整Activity代码如下:
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle // 注意替换为你自己的项目包名,例如com.example.demo import com.example.demo.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) // 必须加这行,否则布局不会显示 setContentView(binding.root) } }
- 上述修改完成后,先点击Android Studio工具栏的Gradle同步按钮(大象图标)同步配置,再依次点击顶部菜单栏的
Build > Clean Project,等待清理完成后执行Build > Rebuild Project,全量构建完成后报错就会消失。
问题根本原因
- 核心原因是IDE自动导包匹配错误:你没有手动导入ViewBinding编译期生成的
ActivityMainBinding类,IDE在代码提示时找不到对应类的inflate方法,就胡乱匹配了Android SDK、AndroidX库里其他同名的无关inflate方法给你导入,这些导入的inflate方法根本不属于ViewBinding生成的绑定类,编译器自然会报Unresolved reference: inflate错误。 - 你配置的
buildFeatures { viewBinding true }本身是正确的,但ViewBinding的绑定类是编译阶段由Android Gradle插件根据布局文件自动生成的,路径固定在当前模块的databinding包下,没有正确导入这个生成类的前提下,IDE无法识别它的任何方法,包括inflate。 - 额外说明:很多开发者接入ViewBinding时都会踩这个导包的坑,IDE的自动导包功能对编译期生成的类识别准确率很低,不要盲目采纳IDE给出的第一个导包提示。
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

