【问题标题】:onClick function for multiple buttons多个按钮的onClick函数
【发布时间】:2020-08-18 21:14:23
【问题描述】:

如何将 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("","") {

    }
}

【问题讨论】:

    标签: java class kotlin methods onclicklistener


    【解决方案1】:

    点击监听器接收一个view作为参数,你可以用它来通过它的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)
    }
    

    【讨论】:

    • 如何将点击监听器设置为所有按钮?
    • 抱歉给您添麻烦了,但是我应该在哪里使用 val “感觉”?如果这太麻烦了,别担心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2015-05-14
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多