从runnable内的handler.postDelayed显示Kotlin中的语法错误-Android

Adi*_*fyr 3 android task handler runnable kotlin

private val progressTask = Runnable {
    runOnUiThread { if (!tvMessage.text.isEmpty()) tvMessage.text = "" }
    pbLoading.progress++
    when {
        pbLoading.progress == 600 -> finalFunction()
        pbLoading.progress % 20 == 0 -> runOnUiThread {
            tvMessage.text = messages[pbLoading.progress / 20]
        }
    }
    handler.postDelayed(this, 1000)
}
Run Code Online (Sandbox Code Playgroud)

这段代码给我this关键字下面的语法错误。说这个错误指向我的活动,而不是可运行的本身。我该如何解决?

s1m*_*nw1 6

为了this参考Runnable,请使用object语法而不是带有SAM转换的lambda :

val runnable = object : Runnable {
        override fun run() {
            println("$this runs in a runnable")
        }
}
Run Code Online (Sandbox Code Playgroud)

它有点冗长,但这就是您要付出的代价。