java - 多个按钮的onClick函数
问题描述
如何将 onclick 功能(或 onclicklistner)设置为多个按钮?原因是,我不想为每个按钮编写相同的代码,其中唯一不同的变量是每个按钮的“感觉”。
这是我的代码:(对不起,如果没有意义,我现在只是在试验!)
fun onClick(view: View) {
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("Users")
val userLocation = "New York"
val userId = myRef.push().key
val info = Users(Feeling = "Good", Location=userLocation)
if (userId != null) {
myRef.child(userId).setValue(info)
}
}
从类文件:
class Users(val Feeling: String, val Location: String) {
constructor() : this("","") {
}
}
解决方案
点击监听器接收一个view
as 参数,您可以使用它通过它的 id 来识别按钮,
val clickListener = View.OnClickListener { button ->
val feeling = when (button.id) {
R.id.button_1 -> /* get feeling */
R.id.button_2 -> /* ... */
...
else -> return
// use the feeling to do whatever you need
}
然后,您可以将此单击侦听器设置为您的所有按钮。
编辑:设置点击监听器,你有不同的选择。您可以使用findViewById
它们中的每一个,使用一个binding
对象然后绑定点击侦听器,这取决于您的设置。
例如
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
view.findViewById<Button>(R.id.button_1).setOnClickListener(clickListener)
view.findViewById<Button>(R.id.button_2).setOnClickListener(clickListener)
}
推荐阅读
- flutter - 无法使用 FutureBuilder 启动相机
- python - 违反约束的膳食计划优化(Python、OR-Tools、线性规划、XLRD)
- oracle - 服务器端的 Oracle 转移数据库
- r - 构造 2*2*2 列联表时遇到问题
- java - “mvn test”没有执行@Mock注解的方法
- jquery - JQuery:动态引用 JSON 数据元素的语法?
- node.js - 如何使用 nodejs 获取 gif 图像帧的 base64?
- binance - BSCscan:代币余额与账户中的代币交易不一致。解释差异的交易在哪里?
- python - 只加载一次训练好的模型
- rust - 我怎样才能`fut.await`在“后台”运行未来(执行但不等待它)?