【问题标题】:Android ViewBinding for Activity requires ViewGroupActivity 的 Android ViewBinding 需要 ViewGroup
【发布时间】: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?

---- 编辑----

所以要清楚。

  1. 我在 gradle.properties 中添加了 android.useAndroidX=true

  2. build.gradle 文件已经包含

    机器人{ 编译SDK 31

     buildFeatures {
         viewBinding true
     }
    
  3. 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


【解决方案1】:

我遇到了同样的问题,但是将 android.useAndroidX=true 添加到 gradle.properties(Project Properties) 可以解决问题。

【讨论】:

  • 谢谢,但我的 gradle.properties 文件已经包含 android.useAndroidX=true。你有什么改变吗?
  • 没有,但是你确定它在(项目属性),因为有两个gradle.properties(全局属性)和(项目属性),并且必须在(项目属性),我用android arctic狐狸
  • 是的,北极狐,它已经被创造出来了。 gradle.properties(项目属性)说明了这一点。 (我认为我没有任何其他 gradle.properties 文件)
【解决方案2】:

好的,原来问题出在我的布局上。

布局文件以<merge 标记开头。我假设 IDE 将其解释为我的子布局。这似乎没有给正常编译带来错误,但显然视图绑定对我来说太聪明了。

在任何情况下,将其更改为普通容器时,例如

<androidx.constraintlayout.widget.ConstraintLayout

它工作正常。 谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多