希望使用 thread.sleep 每 3 秒显示一个值。但是,它不起作用



我在谷歌中学习了kotlin的基础知识;调试介绍";部分这里完全没有人,我已经努力地研究了这些主题,现在我被困在这里了。。因此,预期的结果是textview每三秒显示一个商,但当我运行应用程序时,它显示的静态值为60。

private val TAG = "MainActivity"
MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Log.d (TAG, "this is where the app crashed before")
    setContentView(R.layout.activity_main)
    Log.d (TAG, "this should be logged if the bug is fixed.")
    logging()
    division()
}
fun division (){
    val numerator = 60
    var denominator = 4
    repeat(4) {
        Thread.sleep(3)
        findViewById<TextView>(R.id.division_textview).setText("${numerator/denominator}")
        Log.v(TAG, "${numerator / denominator}")
        denominator --
    }
}

我从小就想学习编程/开发。。不幸的是,事情没有成功。。现在我在这里,我100%致力于此。。谢谢

那个代码实验室开始困扰我——不是你,他们的代码坏了,在这种情况下100%错了。我在这里更详细地回答了这个问题(这个答案链接到另一个答案,并为如何实际实现它提供了一些建议(。

基本上,问题是你正在休眠主线程,这会阻止应用程序运行,包括UI更新和对触摸的反应。在循环完成并退出division函数之前,它将无法继续运行——此时UI可以更新,并最终显示TextView的当前内容,这是最终结果。

对用户来说,这只是一段时间内看起来什么都没发生,然后最终结果就会出现。这个代码应该也是录制应用程序视频演示的一部分,我认为没有人真正运行过这个程序。你不应该像这样阻塞主线程。我看到很多困惑的初学者试图学习关于这个代码实验室的问题,对于官方资源来说,没有任何借口真的

相关内容

最新更新