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

ViewBinding与FragmentContainerView配合使用时出现初始化异常的问题

ViewBinding结合FragmentContainerView报错的原因与解决办法

你遇到的Error inflating class androidx.fragment.app.FragmentContainerView错误,核心原因是ViewBinding的初始化时机错误——你把ActivityMainBinding.inflate(layoutInflater)写在了super.onCreate(savedInstanceState)之前,违反了Activity的生命周期规则。

为什么两种写法差异这么大?

  • 直接调用setContentView(R.layout.activity_main)时,该方法内部会先依赖super.onCreate完成的Activity基础初始化(包括FragmentManager等系统服务的就绪),再加载解析布局,FragmentContainerView能正常获取所需的系统资源。
  • 而ActivityMainBinding.inflate(layoutInflater)会立即触发布局解析与视图创建,此时super.onCreate还未执行,Activity的Fragment相关服务尚未初始化,FragmentContainerView无法完成Inflate流程,因此抛出异常。

正确的代码写法

修改MainActivity.kt的onCreate方法,将ViewBinding的初始化移到super.onCreate之后:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState) 
    binding = ActivityMainBinding.inflate(layoutInflater) // 移到super.onCreate之后执行
    setContentView(binding.root) // 现在可正常使用ViewBinding的root视图
    viewModel = ViewModelProvider(this)[MainViewModel::class.java]
    viewModel.fetchCoins()
}

额外验证点

确认你已在模块级build.gradle(或build.gradle.kts)中正确启用ViewBinding:

android {
    buildFeatures {
        viewBinding true
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:14:57