显示特定图像时更改textView.text



我有这个互动游戏,有2个按钮和1个图像,其中图像存储在可绘制的地图中。当前图像为var currentImageDrawable,因此单击按钮时,图像将与currentImageVariable一起更改。但由于我添加了TextView,只是为了在显示特定图像时更改文本,不幸的是,它没有更改。它只是停留在第一个文本,即"开始游戏?"。

import com.example.thegame.R.drawable.*
var tv = findViewById<TextView>(R.id.textView)
var currentImageDrawable = menu
data class Choice(val choice1: Int, val choice2: Int)
val choicesMap = mapOf(
menu to Choice(door1, menu),
door1 to Choice(door_inside, door_back),
door_inside to Choice(door_inside2, door_inside2_1),
door_back to Choice(door_back2, door_back2_1)
)

buttonYes.setOnClickListener {
currentImageDrawable = choicesMap[currentImageDrawable]!!.choice1
imageView.setImageResource(currentImageDrawable)
}
buttonNo.setOnClickListener {
currentImageDrawable = choicesMap[currentImageDrawable]!!.choice2
imageView.setImageResource(currentImageDrawable)
if (currentImageDrawable== menu) {
finishAffinity()
}
}
if (currentImageDrawable== menu) {
tv.setText("Start the game?") }
else if (currentImageDrawable== door1) {
tv.setText("Open the door?") }
else {
tv.setText("")
}
/*
when (currentImageDrawable) {
menu -> tv.setText("start the game?")
door1 -> tv.setText("open the door?")
else -> tv.text = ("")
}
*/

我认为您的代码来自您的OnCreate方法,是吗?OnCreate在创建活动时执行一次。要在单击按钮时更改文本内容,必须在OnClickListener中写入该部分。

buttonYes.setOnClickListener {
currentImageDrawable = choicesMap[currentImageDrawable]!!.choice1
imageView.setImageResource(currentImageDrawable)
if (currentImageDrawable== menu) {
tv.setText("Start the game?") }
else if (currentImageDrawable== door1) {
tv.setText("Open the door?") }
else {
tv.setText("")
}
}
buttonNo.setOnClickListener {
currentImageDrawable = choicesMap[currentImageDrawable]!!.choice2
imageView.setImageResource(currentImageDrawable)
if (currentImageDrawable== menu) {
tv.setText("Start the game?")
finishAffinity()
} else if (currentImageDrawable== door1) {
tv.setText("Open the door?") 
} else {
tv.setText("")
}
}

OnClick方法不会立即执行,但每次单击按钮时都会执行。

最新更新