我是全新的android工作室(kotlin),我试图使用按钮从片段打开一个新的活动。如果这很简单,我很抱歉,我只是似乎想不明白。
这就是我到目前为止所做的,当我运行模拟器并单击按钮
时,它不做任何事情class HomeFragment : Fragment(R.layout.fragment_home) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val btntakepicture: Button? = view?.findViewById<Button>(R.id.btn_take_picture)
btntakepicture?.setOnClickListener {
requireActivity().run {
startActivity(Intent(this, takepicture::class.java))
finish()
}
}
}
}
几乎没有理由在片段中重写onCreate
。它是在创建视图之前调用的,因此此时没有按钮来设置侦听器。你应该重写onViewCreated
。
要解决这个问题,您可以将代码移动到onViewCreated方法,该方法将在创建视图后调用:
重写onViewCreated
方法如下:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val btntakepicture: Button = view.findViewById<Button>(R.id.btn_take_picture)
btntakepicture.setOnClickListener {
requireActivity().run {
startActivity(Intent(this, takepicture::class.java))
finish()
}
}
}