如何解决我的应用中的“ Button()。isEnabled”错误?

时间:2019-03-26 13:08:51

标签: android kotlin

我正在尝试制作RNG应用,并且想在我的动画运行时禁用我的Button。应该不会太复杂,因为我是Kotlin-App开发的初学者。 延迟后它崩溃了。

我已经用我的Animation尝试了其他方法,并尝试了setEnable()。

button_randomize.setOnClickListener {
    textView_Number.text = (minRangeRandom..maxRangeRandom).shuffled().first().toString()

    textView_Number.animate().setDuration(500).rotationBy(360f)
    Timer().schedule(object: TimerTask(){
         override fun run() {
             button_randomize.isEnabled = false
          }
          },500)
    button_randomize.isEnabled = true
}

我希望在动画完成之前禁用“随机化”按钮。目前,延迟结束后会崩溃。

3 个答案:

答案 0 :(得分:0)

尝试下面的代码。

textView_Number.animate().setDuration(500).rotationBy(360f)
    .withStartAction {
        button_randomize.isEnabled = false
    }.withEndAction {
        button_randomize.isEnabled = true     
    }

答案 1 :(得分:0)

可能是因为Timer创建了一个新线程,并且TimerTask在该新线程上运行。
但是,Android UI框架不支持多线程。视图属性只能在主线程上更改。

要解决此问题,请使用其他方式延迟。这将在主线程上执行延迟的代码:

button_randomize.isEnabled = true
button_randomize.postDelayed({
    button_randomize.isEnabled = false
}, 500)

答案 2 :(得分:0)

您可以添加一个动画侦听器,以了解它何时结束

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title> Fullscreen Div </title>
  <style>
  .test{
    position: fixed;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    z-index: 10;
  }
  </style>
</head>
<body>
  <div class='test'>Some text</div>
</body>
</html>