Unresolved reference - activity does not recognize synthetic imports in android studio v4

Solution 1:

Kotlin Synthetic imports not working ?

Well, there's always the age-old alternative:

val foo: TextView = findViewById(R.id.your_id)

I believe synthetics have been deprecated and I guess support for it has just now been completely removed


Alternatively, you can make use of ViewBinding, which is another alternative.

Enable it in your build.gradle:

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

This generates a Binding object for your layout, so you can make use of it like this:

private lateinit var binding: YourLayoutNameBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = YourLayoutNameBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}

then you have access to all views on the layout, through the binding:

binding.name.text = "foo"

Solution 2:

An alternative you can look at is ViewBinding, a concept in Android that was introduced recently.

You should take a look for this

https://developer.android.com/topic/libraries/view-binding

You cannot set view id directly for your use in app, instead you need findViewById(R.id.idTextHello).setOnClickListener()

That's how views are bind in application.

Solution 3:

import kotlinx.android.synthetic.main.activity_main.*

but dont forget to apply kotlin extension