Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动画取消()导致的崩溃_Java_Android_Animation_Listener_Cancellation - Fatal编程技术网

Java 动画取消()导致的崩溃

Java 动画取消()导致的崩溃,java,android,animation,listener,cancellation,Java,Android,Animation,Listener,Cancellation,我有两个动画,幻灯片[1]和幻灯片[3],当我试图在动画自身重复时取消它们时,会导致崩溃。以下是一些相关代码: slide[1].setDuration(500); slide[1].setStartDelay(500); slide[3].setDuration(500); slide[3].setStartDelay(500); slide[1].addListener(new Animator.AnimatorListener() { @Ov

我有两个动画,幻灯片[1]和幻灯片[3],当我试图在动画自身重复时取消它们时,会导致崩溃。以下是一些相关代码:

        slide[1].setDuration(500); slide[1].setStartDelay(500);
    slide[3].setDuration(500); slide[3].setStartDelay(500);
    slide[1].addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
            if (!start) {
                table[2][2].setBackgroundResource(R.drawable.black);
                slide[1].setDuration(1000);
                slide[1].setStartDelay(0);
                slide[3].setDuration(1000);
                slide[3].setStartDelay(0);
                slide[1].removeAllListeners();
                slide[3].cancel();
                slide[1].cancel();
            }
        }

        @Override
        public void onAnimationEnd(Animator animation) {
        }

    }); slide[1].start(); slide[3].start();
导致崩溃的行是“slide[1].cancel();”,我不知道为什么。 显然,当手机运行在JellyBean上时,会导致崩溃,但不包括棉花糖。 我怎样才能解决这个问题

谢谢

更新:以下是日志:

03-13 16:18:01.943 1623-1623/com.example.ohad.squerz E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
                                                                       at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
                                                                       at java.util.ArrayList.get(ArrayList.java:304)
                                                                       at android.animation.ValueAnimator$AnimationHandler.doAnimationFrame(ValueAnimator.java:603)
                                                                       at android.animation.ValueAnimator$AnimationHandler.run(ValueAnimator.java:639)
                                                                       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                                                                       at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                                                                       at android.view.Choreographer.doFrame(Choreographer.java:524)
                                                                       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                                                                       at android.os.Handler.handleCallback(Handler.java:615)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                       at android.os.Looper.loop(Looper.java:137)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                       at java.lang.reflect.Method.invokeNative(Native Method)
                                                                       at java.lang.reflect.Method.invoke(Method.java:511)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                       at dalvik.system.NativeStart.main(Native Method)

此崩溃已在年的AOSP中修复

如果您想支持API 16,则需要在
onAnimationUpdate
/
onAnimationRepeat
之外的其他位置取消动画


在您的情况下(如果有关系,因为这个答案是在您的问题之后很久才给出的),您可能希望使用
setRepeatCount(0)

打印日志,以避免在您的第一个动画师身上重复此操作。在此处添加了日志。请注意,这个问题是由JellyBean引起的,而不是由棉花糖引起的。谢谢您好,我知道这是一个(非常)老问题,但我在jellybean中也遇到了同样的崩溃。你还记得是什么问题吗?