4

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

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

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 并导入对绑定类的新引用之后,它会一直工作到下一次构建。比同样的问题。

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

4

3 回答 3

1

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

于 2019-06-03T04:23:52.390 回答
0

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

代替:

    dataBinding {
    enabled = true
}

我有:

    dataBinding {
    true
}

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

于 2019-12-28T02:37:37.820 回答
0

多亏了这个线程,我发现了我的主项目中已经存在的被遗忘的部分。

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

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
    }
}
于 2018-08-08T21:53:04.070 回答