【发布时间】:2021-01-29 15:39:13
【问题描述】:
从项目中删除现有的DataBinding 后,我还想摆脱kotlinx.android.synthetic 并用ViewBinding 替换它。
但是,在我的项目中启用ViewBinding 后,我仍然无法进行正确的设置。
尝试将ViewBinding 调用到我的MainActivity 或我的一个片段中,我在inflate 方法中收到以下错误:
Cannot access 'no_name_in_PSI_...' which is a supertype of 'com.example.projectname.databinding.ActivityMainBinding'. Check your module classpath for missing or conflicting dependencies
例如:
MainActivity.kt
class MainActivity : BaseActivity<SharedViewModel>() {
private lateinit var binding: ActivityMainBinding
...
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
我的build.gradle (:app) 设置正确:
build.gradle (:app)
android {
...
buildFeatures {
viewBinding true
}
}
我在我的另一个项目中使用了ViewBinding,它开箱即用。请帮忙。非常感谢。
【问题讨论】:
-
你的activity_main.xml 文件的根标签中是否有这个
tools:viewBindingIgnore="true"? -
@JeelVankhede 非常感谢您的快速回复。我已将此标签添加到
activity_main.xml文件中。错误消失了,但在我实际需要使用ViewBinding的片段中,我仍然面临同样的问题。 -
这很奇怪,因为这个标签基本上告诉视图绑定扩展是否为特定文件生成绑定。可能是清洁重建项目有帮助..
-
我已经清理、重建、使缓存失效、重新启动、删除了
idea文件夹,几乎做了所有事情,但仍然无法正常工作。 -
几天前我遇到了同样的问题,尝试使用 DataBindingUtil 类来进行通货膨胀,这对我有用。
标签: android kotlin android-viewbinding