为什么第一种情况可以设置点击事件而第二种不可以
val biding1 = TitleBinding.inflate(layoutInflater)
setContentView(biding1.root)
biding1.button2.setOnClickListener {
Toast.makeText(this,"你点击了按钮",Toast.LENGTH_SHORT).show()
}
val biding1 = TitleBinding.inflate(layoutInflater)
setContentView(R.layout.title)
biding1.button2.setOnClickListener {
Toast.makeText(this,"你点击了按钮",Toast.LENGTH_SHORT).show()
}
望采纳。。。
方法一:
setContentView是把你的binding.root1这个ViewGroup添加到DecorView里面,你的Activity才能加载和显示,这个时候,你通过binding去获取控件,然后去设置click是正确的,能响应。
方法二:
你只是通过setContentView设置一个布局ID,没有关联你的binding1,其实这里你的binding1的click也没问题,
你之所以无法响应点击,是因为你此时界面显示的控件是你的setContentView里面设置的layoutID的控件,懂我意思吧?
所以你在方法二里面,你的button2在R.layout.title里面并没有设置点击事件,你的binding1.button2是你的binding里面的,不是你的R.layout.title里面的。
找到generated目录下的R.java包删了后重新clean 然后再试下第二种。
原因可能是导入的包覆盖了真正要引用的R包。
第一种情况可以设置点击事件,因为它是传统的 HTML元素,允许使用 onclick 属性[1].第二种情况无法设置单击事件,因为它不是 HTML 元素,而是使用反应的事件处理系统[2].React 的事件处理方式与传统 HTML 元素不同,使用允许事件由父元素处理的路由系统