【问题标题】:Android ViewBindings across dynamic features跨动态功能的 Android ViewBindings
【发布时间】:2020-03-04 12:36:45
【问题描述】:

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

build.gradle

    dynamicFeatures = [":myFeature"]

    viewBinding {
        enabled = true
    }

AdroidManifest.xml

package="com.mydomain.testproject"

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

我有动态功能文件

build.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.errorView AS 时显示错误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,它从那里完美地工作。

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

【问题讨论】:

  • 作为一个愚蠢的解决方法,我做了一些更改,我将errorView 包装为自定义视图(仍在应用程序模块中)并在布局中引用&lt;com.mydomain.testproject.common.ErrorView.. 而不是&lt;include .有了这个 ViewBinding 工作,但它不是真正的解决方案。
  • 您找到更好的解决方案了吗?
  • 不,目前我必须使用带有自定义视图的解决方法才能使其正常工作。
  • 您在 google issuetracker 中打开报告了吗?
  • @Stumi 解决方法现在在我们的项目中是首选,因为我们不想使用数据绑定 :(

标签: android android-viewbinding dynamic-feature-module


【解决方案1】:

在动态模块 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2021-03-17
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多