Search code examples
androidkotlinhandlerrunnable

view must not be null after postDelayed


I try to repeat animation task with Handler

   import kotlinx.android.synthetic.main.fragment_main.*
   ...
   ...
   ...
   private val mInterval: Long = 3000
   private var mHandler: Handler = Handler()
   private var mStatusChecker: Runnable = object : Runnable {
    override fun run() {
                txtUserRole.text = "dddddddddd"
                YoYo.with(Techniques.Pulse)
                    .duration(700)
                    .playOn(txtUserRole)
            mHandler.postDelayed(this, mInterval)
    }
}

private fun updateStatus() {

}

fun startRepeatingTask(txtUserRole: TextView) {
    mStatusChecker.run()
}

fun stopRepeatingTask() {
    mHandler.removeCallbacks(mStatusChecker)
}

in first run everything is work properly, but after first repeat txtUserRole is NULL


Solution

  • Finally i try to repeat animation without handler

     YoYo.with(Techniques.Pulse)
                .duration(700)
                .delay(3000)
                .withListener(
                    object : Animator.AnimatorListener {
                        override fun onAnimationStart(animation: Animator) {}
                        override fun onAnimationEnd(animation: Animator) { animation.start() }
                        override fun onAnimationCancel(animation: Animator) {}
                        override fun onAnimationRepeat(animation: Animator) {}
                    })
                .playOn(txtUserRole)