7

碰巧我有一个主应用程序模块

构建.gradle

    dynamicFeatures = [":myFeature"]

    viewBinding {
        enabled = true
    }

AdroidManifest.xml

package="com.mydomain.testproject"

使用我在整个应用程序 eq 中使用的一些常见布局:app/res/error_view.xml

我有动态功能文件

构建.gradle

    viewBinding {
        enabled = true
    }

AdroidManifest.xml

package="com.mydomain.testproject.myFeature"

myfeature_fragment.xml

    <include
        android:id="@+id/error_view"
        layout="@layout/error_view"
        android:visibility="gone" />

MyFeatureFragment.kt

binding = MyFeatureFragmentBinding.bind(view)

问题来了。当我尝试访问binding.errorViewAS 时显示错误Cannot access class 'com.mydomain.testproject.myFeature.databinding.ErrorViewBinding'. Check your module classpath for missing or conflicting dependencies

奇怪的是,当我检查生成的MyFeatureFragmentBinding类时,它包含以下内容

  @NonNull
  public final View errorView;

所以我想 AS 知道的比它对我显示的要多。此外,我在主模块生成的类中发现了原始类ErrorViewBinding和 OFC,它从那里完美地工作。

有人设法从另一个功能模块中引用了一个通用布局?
或者如何强制生成的公共视图绑定的类型?

4

1 回答 1

0

在动态模块 Gradle 文件中应用此插件后,我遇到了同样的问题

apply plugin: 'kotlin-kapt'

然后在 android 块内启用这样的数据绑定

dataBinding.enabled = true

对于像我这样使用 gradle.kts 文件的人

plugins {
id("kotlin-kapt")
}

并在 android 块内启用这样的数据绑定

// enable data binding inside module
dataBinding.apply {
    isEnabled = true
}
于 2020-11-18T00:44:53.203 回答