我的新模块未生成Android数据绑定类

时间:2018-08-08 21:21:25

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

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

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

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并将新的引用导入到绑定类之后,它可以工作到下一个版本。比同一个问题。

有人有这样的东西吗?有什么事吗似乎在我的第二个模块中,可能是在构建过程中删除了绑定类,或者像这样

3 个答案:

答案 0 :(得分:0)

由于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
    }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在花了一个小时仔细研究了为什么这对我不起作用的所有可能原因之后,我发现自己犯了一个简单的错误...

而不是:

    dataBinding {
    enabled = true
}

我有:

    dataBinding {
    true
}

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