Error java.lang.IllegalStateException: Cannot start this animator on a detached view!


Cuando se lanza animaciones con un retardo, se puede dar el caso que la vista ya no este disponible y al intentar associarle una animación puede devolver el error

Si el usuario cierra o rota el dispositivo en el momento exacto de asignar la animación a la vista, como está separada nos informará el siguiente error

java.lang.IllegalStateException: Cannot start this animator on a detached view!

Código Kotlin de Testeo

private var mHandler: Handler = Handler()
...
mHandler = Handler()
mHandler.postDelayed({
    runAnimation()
}, 5000)
...
fun runAnimation() {
...

//ERROR java.lang.IllegalStateException: Cannot start this animator on a detached view!
anim = Animator...
anim.start()
}

Solución

Añadir comprobación de la vista está anclada en pantalla con el método isAttachedWindow

if (!isAttachedToWindow) return
val anim =
    ViewAnimationUtils.createCircularReveal(view, cx, cy, initialRadius, 0F).apply {
        interpolator = AccelerateDecelerateInterpolator()
        //duration = 5000
    }
anim.start()

Extraido de esa solución Cannot start this animator on a detached view! reveal effect

Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: