【发布时间】:2021-12-17 16:01:59
【问题描述】:
对于我的 Android 应用,我最近尝试实现 Google 建议的 ViewBinding:
https://developer.android.com/topic/libraries/view-binding
但是,我在所有教程中都看到了这种绑定方法:
binding = ResultProfileBinding.inflate(layoutInflater)
但是当我像这样将它应用到我的 Activity 时,这不起作用:
binding = ActivityMainBinding.inflate(layoutInflater)
它需要parent:ViewGroup 的另一个参数,我的活动中没有该参数。我也不能像这样将其设置为 null:
binding = ActivityMainBinding.inflate(layoutInflater, null)
因为这是一个 NonNull 参数。
我也尝试过有人这样建议的东西
private lateinit var binding2: ViewDataBinding
...
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
但这也因错误而失败:
NoClassDefFoundError: Failed resolution of: Landroidx/databinding/DataBinderMapperImpl;
那么我错过了什么?如何获取我的 Activity 的 ViewBinding?
---- 编辑----
所以要清楚。
-
我在 gradle.properties 中添加了 android.useAndroidX=true
-
build.gradle 文件已经包含
机器人{ 编译SDK 31
buildFeatures { viewBinding true } -
Activity的代码如下:
导入 ...databinding.ActivityMainBinding
类 MainActivity: AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
}
}
【问题讨论】:
-
binding = ActivityMainBinding.inflate(layoutInflater)是正确的方法。你遇到了什么错误? -
我添加了一个屏幕截图,但它说:“没有为参数'父'传递值”。那么这是不是打错电话了??
标签: android kotlin android-viewbinding