You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin点击按钮后无法触发函数显示内容问题求助

问题分析与解决方案:点击按钮后TextView无内容显示

我来帮你排查这个问题,核心原因很明确,咱们一步步拆解和解决:

关键问题所在

你当前的代码里有几个影响功能的小问题:

  1. game()函数仅在初始化时执行一次:在onCreate方法里,你直接调用了game(result, hasclicked),此时hasclicked还是默认的false,完全不会触发显示"correct"的逻辑。
  2. 点击按钮未触发UI更新:按钮的点击监听里只修改了hasclicked的值,却没有再次调用game()函数,所以TextView的内容不会发生任何变化。
  3. 变量名拼写不一致:你通过findViewById获取的TextView变量是results,但调用game时传的是result,这会导致编译错误(能运行的话大概率是你写提问时的笔误)。

修正后的完整代码示例

这里给你调整好的代码,同时优化了Kotlin的简洁写法:

class NewGame : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_new_game)
        
        val results = findViewById<TextView>(R.id.textView5)
        val results2 = findViewById<TextView>(R.id.textView6)
        val submit = findViewById<Button>(R.id.button7)
        var hasclicked = false
        
        submit.setOnClickListener {
            hasclicked = true
            // 点击按钮后调用game函数,触发UI更新
            game(results, hasclicked)
        }

        // 如果你需要在初始状态执行game逻辑,可以保留这行,但此时hasclicked为false,不会显示correct
        // game(results, hasclicked)
    }

    fun game(result: TextView, hasclicked: Boolean) {
        // Kotlin里可以直接用hasclicked代替hasclicked == true,写法更简洁
        if (hasclicked) {
            // 推荐用Kotlin的text属性替代Java风格的setText()方法
            result.text = "correct"
        }
    }
}

额外优化建议

如果你的需求只是点击按钮后显示一次"correct",其实可以去掉hasclicked变量,直接在点击监听里设置TextView内容,代码会更简洁:

submit.setOnClickListener {
    results.text = "correct"
}

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:27:33