android 中如果 viewbinding 和 R.layout.activity_main 一起用会导致按钮失效?

swhoro
  • 16

这么写按钮能正常起作用:

val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

val dn = binding.startNormalActivity
dn.setOnClickListener {
        val intent = Intent(this, NormalActivity::class.java)
        startActivity(intent)
}

val da = binding.startDialogActivity
da.setOnClickListener {
        val intent = Intent(this, DialogActivity::class.java)
        startActivity(intent)
}

这么写按钮点击无效:

val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(R.layout.activity_main)

val dn = binding.startNormalActivity
dn.setOnClickListener {
        val intent = Intent(this, NormalActivity::class.java)
        startActivity(intent)
}

val da = binding.startDialogActivity
da.setOnClickListener {
        val intent = Intent(this, DialogActivity::class.java)
        startActivity(intent)
}

整个代码只有第二行有区别,其它均一致

目前是跟着《第一行android代码》在学习中,发现书中的插件已经淘汰了

刚好在网上搜到了本书作者的viewbinding的文章,稍微看了一下,就把书中的写法setContentView(R.layout.activity_main)和新的viewbinding混在一起写了,但是貌似会出问题,想来问问

不知道刚接触android的萌新能不能弄懂这个问题

回复
阅读 583
1 个回答
val binding = ActivityMainBinding.inflate(layoutInflater)

上述代码只是创建了ActivityMainBinding对象,并未把视图设置到Activity,设置视图还需要调用setContentView(View)

最后看看这个文章吧:ViewBinding 的本质

宣传栏