首页 > 解决方案 > 多个按钮的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("","") {

    }
}

标签: javaclasskotlinmethodsonclicklistener

解决方案


点击监听器接收一个viewas 参数,您可以使用它通过它的 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)
}

推荐阅读