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

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

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的萌新能不能弄懂这个问题

阅读 2.2k
1 个回答
val binding = ActivityMainBinding.inflate(layoutInflater)

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题