Search code examples
androidandroid-viewbinding

How to access content_main.xml elements in MainActivity.kt by using ViewBinding in Android Studio 4.1?


For example, I want to access RecyclerView(Id recycler_view) elements in content_main.xml by Mainactivity.kt. content_main.xml is in activity_main.xml.



class PhotoDetailsActivity : AppCompatActivity() {
private lateinit var binding: ContentMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(findViewById(R.id.toolbar))
        binding = ContentMain.inflate(layoutInflater)
        binding.recycler_view.layoutManager = LinearLayoutManager(this)
....

    }
}

But this way does not work. How can i do that?


Solution

  • Replace:

            setContentView(R.layout.activity_main)
            setSupportActionBar(findViewById(R.id.toolbar))
            binding = ContentMain.inflate(layoutInflater)
    

    with:

            binding = ContentMain.inflate(layoutInflater)
            setContentView(binding.root)
            setSupportActionBar(binding.toolbar)
    

    You need to use the root of your inflated binding with setContentView() for the binding to work.