Kotlin Multiplatform应用启动崩溃,替换synthetic为ViewBinding后如何修复
问题原因与修复方案
直接崩溃原因
你修改后的代码存在ViewBinding用法错误:已经通过ActivitySignInBinding.inflate(layoutInflater)生成了绑定实例,但setContentView仍然传入布局IDR.layout.activity_sign_in,导致生成的binding实例和当前Activity加载的布局没有关联,后续调用binding.etSignInEmail等控件时会触发空指针异常,直接引发崩溃。
修复步骤
- 修正
onCreate中的setContentView代码
把原有代码:
setContentView(R.layout.activity_sign_in)
替换为:
setContentView(binding.root)
该操作会将binding绑定的布局视图设置为Activity的内容视图,确保后续通过binding访问的控件和当前页面的控件为同一实例。
- 检查ViewBinding功能开关
确认Android端module的build.gradle文件中已经开启ViewBinding支持,在android代码块中添加如下配置:
android { // 保留原有其他配置 buildFeatures { viewBinding true } }
修改完成后重新同步项目,再编译运行即可。
其他注意事项
如果你有多个页面同步切换了ViewBinding方案,所有页面都需要按照上述逻辑修改,避免同类错误重复出现。
内容的提问来源于stack exchange,提问作者Christopher Mathews
相关产品推荐
相关产品推荐

