【发布时间】:2021-07-22 19:27:16
【问题描述】:
您好,我有 textView 元素,我正在尝试通过延迟更改其文本。 例如“你好” -> 等待 1 秒 -> “世界” -> 等待 1 秒 -> “你好吗?”
当我在终端中的单独 kotlin 文件中使用我的代码时,它完全按照我想要的方式工作。 当我在 MainActivity.kt 中使用代码时,它会等待 1 秒并且只放置一次文本值。 我认为它同时执行所有行。但是为什么终端和ui之间存在差异。
我的代码在 Main Activity 中有一个类文件和代码
class Ball (val Ball: TextView, val time: Long){
fun textChange(){
Handler().postDelayed({
Ball.text = (1..90).random().toString()
}, time)
}
}
在 MainActivity 中
class MainActivity : AppCompatActivity() {
var resultsList = mutableListOf<Int>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fun playButtonPressed(view:View){
Ball(Ball01,1000).textChange()
Ball(Ball01,1000).textChange()
Ball(Ball01,1000).textChange()
Ball(Ball01,1000).textChange()
Ball(Ball01,1000).textChange()
}
}
【问题讨论】:
-
If 将执行五次,有 1000 毫秒的延迟,但只有最后一个完成才会真正将文本更改为它的持续时间。你对这样做有一个错误的想法。
标签: android android-studio kotlin android-handler