未解决的参考:将数据绑定导入 MainActivity 时的数据绑定

Posted

技术标签:

【中文标题】未解决的参考:将数据绑定导入 MainActivity 时的数据绑定【英文标题】:Unresolved reference: databinding when importing databinding to MainActivity 【发布时间】:2020-06-12 15:24:02 【问题描述】:

当我尝试将数据绑定导入 MainActivity 时,我收到“未解析的引用:数据绑定”错误。

MainActivity 文件:

package <package-name>

import <package-name>.databinding.FragmentLoginBinding

class LoginFragment : Fragment() 

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? 
        val binding = DataBindingUtil.inflate<FragmentLoginBinding>(inflater,
            R.layout.fragment_login,container,false)

        binding.register_btn.setOnClickListener  view : View ->
            view.findNavController().navigate(R.id.action_loginFragment_to_welcomeFragment)
        

        binding.login_btn.setOnClickListener  view : View ->
            view.findNavController().navigate(R.id.action_loginFragment_to_welcomeFragment)
        

        return binding.root
    

其中包名是我的包名。包名被识别,只有数据绑定不被识别,所以显示为红色。

我猜是因为这个,FragmentLoginBinding in

val binding = DataBindingUtil.inflate<FragmentLoginBinding>(inflater,
            R.layout.fragment_login,container,false)

也无法识别。

项目 build.gradle 文件:

buildscript 
    ext
        kotlin_version = '1.3.61'
        gradle_version = '3.6.0'
        data_binding_compiler_version = gradle_version
    
    dependencies 
        classpath "com.android.tools.build:gradle:$gradle_version"
    

App build.gradle 文件:

apply plugin: 'kotlin-kapt'

android 
    dataBinding 
        enabled = true
    


dependencies 
    kapt "androidx.databinding:databinding-compiler:$data_binding_compiler_version"

我已经尝试关注这个 codelab https://codelabs.developers.google.com/codelabs/kotlin-android-training-add-navigation/#0 并搜索解决方案,但无法修复它。

有人可以帮忙吗?

提前致谢。

【问题讨论】:

很可能是因为数据绑定编译器中的错误。换句话说,某些布局文件中一定存在错误,Databinding 库无法为其生成绑定类。您应该检查 gradle 构建日志中的数据绑定编译器错误,这些错误通常位于构建日志的末尾。 在我的情况下,解决方案是:***.com/a/66237310/3613808 【参考方案1】:

看起来我在布局中缺少布局标记以支持数据绑定:

<layout xmlns:android="http://schemas.android.com/apk/res/android">

【讨论】:

【参考方案2】:

correct Answer

也用标签包裹你的根视图

  var cropAdviceBinding: TemplateCropAdviceBinding? = null
        cropAdviceViewStub.viewStub?.apply 
            setOnInflateListener  _, inflated ->
                cropAdviceBinding =
                    DataBindingUtil.bind(inflated)
            
            inflate()
        

【讨论】:

以上是关于未解决的参考:将数据绑定导入 MainActivity 时的数据绑定的主要内容,如果未能解决你的问题,请参考以下文章

未解决的参考:Android Studio 4.1.3 中的数据绑定

Sqoop- sqoop将mysql数据表导入到hive报错(未解决)

OpenSSL解决ArcGIS软件部署的证书问题(三)--ArcGIS绑定证书

未解决的参考 - 活动无法识别 android studio v4 中的合成导入

在 ngOnInit() 中使用数据绑定从本地 JSON 文件读取数据会导致未定义的变量

未定义符号:导入 pybind11 绑定时的 _ZN3a13A