【问题标题】:Android data binding class is not generated in my new module我的新模块中没有生成 Android 数据绑定类
【发布时间】:2019-01-16 06:10:08
【问题描述】:

我在我的项目中添加了一个模块,现在我想在其中放置一些片段。

在我的片段中,我像这样初始化数据绑定

class MyTestFragment : Fragment() {

    private lateinit var binding: 
    MyTestFragmentNewBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        binding = DataBindingUtil.inflate(inflater, R.layout.my_test_fragment_new, container, false)

        binding.test = DataModel("zzz")
        return binding.root
    }
}

然后在 Android Studio 中单击 make module 并编译。之后我尝试运行我的应用程序并看到两个错误 Unresolved reference: MyTestFragmentNewBinding

import com.example.common.databinding.MyTestFragmentNewBinding

我看到Unresolved reference: databinding 我尝试了很多解决方案,例如重建、使缓存无效、关闭和重新打开 Android Studio,但没有任何效果。 最有趣的是,在重命名 layout.xml 并导入对绑定类的新引用之后,它会一直工作到下一次构建。比同样的问题。

有人有这样的事情吗?有什么问题?似乎在我的第二个模块中,可能在构建期间删除绑定类或类似的东西

【问题讨论】:

标签: android data-binding android-databinding android-module


【解决方案1】:

似乎喜欢 android studio 的 bug。尝试重命名布局文件名并重建模块。

【讨论】:

    【解决方案2】:

    感谢this 线程,我找到了我的主项目中已经存在的被遗忘的部分。

    记住,要启用数据绑定,您需要添加

    dataBinding {
        enabled = true
    }
    

    到您的build.gradle 文件,但如果您使用Kotlin,请不要忘记添加

    apply plugin: 'kotlin-kapt'
    

    插件也可以添加到您的build.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    apply plugin: 'kotlin-kapt'
    
    android {
        compileSdkVersion 27
        defaultConfig {
           ... 
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        dataBinding {
            enabled = true
        }
    }
    

    【讨论】:

    • 这在 Android Studio 3.4 中对我没有帮助。
    【解决方案3】:

    在花了一个小时搜索了这对我不起作用的所有可能原因之后,我发现我犯了一个简单的错误......

    代替:

        dataBinding {
        enabled = true
    }
    

    我有:

        dataBinding {
        true
    }
    

    这是一个愚蠢的错误。
    希望有人会觉得它有用。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 1970-01-01
      • 2020-06-09
      • 2017-01-21
      • 2020-10-10
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多