Kotlin 按钮监听器

Kotlin button listener

我想在每次点击按钮时增加 i 的值

我试过这段代码,但它不起作用。

val textview = findViewById<TextView>(R.id.texttest)
    var i = 10

        bookbutton.setOnClickListener {

            i++
        }

    textview.text = "$i"

您必须在侦听器中设置文本:

bookbutton.setOnClickListener {
    i++
    textview.text = "$i"
}

你的听众 正在 更新 i 的值——但这没有任何可见的效果,因为到那时已经太晚了:你的文本视图中显示的文本已经已设置。

让我们回顾一下事件的顺序:

  • 您的代码 运行s。这会创建一个文本视图和一个变量,在按钮上设置一个侦听器,并在文本视图中设置文本。

  • 稍后,用户可能会单击该按钮。这会调用侦听器,它会更新变量。

因此,虽然您的代码 设置了 侦听器,但 侦听器不会 运行 直到稍后 。它可能根本不会 运行,也可能 运行 很多次,具体取决于用户的操作,但在您在文本视图中设置文本之前它不会 运行。

所以当你更新变量时你需要一些方法来更新文本。最简单的方法是在侦听器中明确地执行它,例如:

bookbutton.setOnClickListener {
    textview.text = "${++i}"
}

(还有其他方法——例如,一些 UI 框架提供了将变量“绑定”到屏幕字段的方法,以便这种更新自动发生。‖但它们往往要复杂得多;简单的解决方案没有错。)