Search code examples
androidkotlinandroid-databinding

Unresolved reference: databinding when importing databinding to MainActivity


When I try to import databinding to MainActivity, I get an "Unresolved reference: databinding" error.

MainActivity file:

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

where package-name is my package name. The package name is recognized, only databinding is not, so it shows in red.

I guess because of that, FragmentLoginBinding in

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

is not recognized too.

Project build.gradle file:

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 file:

apply plugin: 'kotlin-kapt'

android {
    dataBinding {
        enabled = true
    }
}

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

I already tried to follow this codelab https://codelabs.developers.google.com/codelabs/kotlin-android-training-add-navigation/#0 and also search for solutions, but wasn't able to fix it.

Anyone can help, please?

Thanks in advance.


Solution

  • Looks like I was missing the layout tag in the layout to support Databinding:

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