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 框架提供了将变量“绑定”到屏幕字段的方法,以便这种更新自动发生。‖但它们往往要复杂得多;简单的解决方案没有错。)
我想在每次点击按钮时增加 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 框架提供了将变量“绑定”到屏幕字段的方法,以便这种更新自动发生。‖但它们往往要复杂得多;简单的解决方案没有错。)