【发布时间】:2022-02-21 23:01:30
【问题描述】:
我创建了一个空白Fragment 并尝试在其布局中将OnClickListener 添加到Button,但它似乎没有做任何事情。我不确定我是否把它放在正确的地方。如果我只使用Button 的id 而不使用view,当我打开这个Fragment 时应用程序就会崩溃。
class CreateJobFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view: View = inflater!!.inflate(R.layout.fragment_create_job, container, false)
view.create_btn.setOnClickListener {
Log.d("console", "Button pressed")
}
return inflater.inflate(R.layout.fragment_create_job, container, false)
}
companion object {
@JvmStatic
fun newInstance(param1: String, param2: String) =
CreateJobFragment().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
}
}
}
}
【问题讨论】:
-
要从视图中获取按钮对象,您应该使用
view.findViewById<Button>(R.id.create_btn)然后在此调用 setOnClickListener -
^ 那个,还有stackoverflow.com/a/18894294。
-
是的,我试过了,但还是不行。我认为是 viewBinding 允许我使用仅带有 id 的元素。
-
您似乎在使用已弃用的合成,而不是视图绑定。
标签: android kotlin button fragment onclicklistener