I have built this app, but it crashes when I click on the 4th column's samples

#2 · closed · 1 comments

View on GitHub ↗

reuniware

Hello. Thank you for this awesome sampler project :) I have found a "bug" that happens after this function call, that I have isolated by debugging your code : ``` override fun getCurrentSamples(): List<String> { return if (currentDeck == DECK_A) { deckASamples } else { deckBSamples } } ``` When I click on a sample on the fourth column (Zones A and B) then I have the following exception : ``` E/InputEventReceiver: Exception dispatching input event. E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback E/MessageQueue-JNI: java.lang.ArrayIndexOutOfBoundsException: length=12; index=12 at java.util.Arrays$ArrayList.get(Arrays.java:3769) at com.mercandalli.android.apps.sampler.sample.SampleManagerImpl.mapPositionToPath(SampleManagerImpl.kt:36) at com.mercandalli.android.apps.sampler.main.MainActivity$onCreate$1.onSquareCheckedChanged(MainActivity.kt:51) at com.mercandalli.android.apps.sampler.pad.SquaresView.notifyListener(SquaresView.kt:313) at com.mercandalli.android.apps.sampler.pad.SquaresView.handlePointerDown(SquaresView.kt:270) at com.mercandalli.android.apps.sampler.pad.SquaresView.onTouchEvent(SquaresView.kt:177) at android.view.View.dispatchTouchEvent(View.java:12540) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:601) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871) at android.app.Activity.dispatchTouchEvent(Activity.java:3384) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:563) at android.view.View.dispatchPointerEvent(View.java:12788) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5675) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5470) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5119) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5176) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7741) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7681) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7642) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7852) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:197) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) at android.app.ActivityThread.main(ActivityThread.java:6944) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) D/AndroidRuntime: Shutting down VM --------- beginning of crash E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mercandalli.android.apps.sampler, PID: 6526 java.lang.ArrayIndexOutOfBoundsException: length=12; index=12 at java.util.Arrays$ArrayList.get(Arrays.java:3769) at com.mercandalli.android.apps.sampler.sample.SampleManagerImpl.mapPositionToPath(SampleManagerImpl.kt:36) at com.mercandalli.android.apps.sampler.main.MainActivity$onCreate$1.onSquareCheckedChanged(MainActivity.kt:51) at com.mercandalli.android.apps.sampler.pad.SquaresView.notifyListener(SquaresView.kt:313) at com.mercandalli.android.apps.sampler.pad.SquaresView.handlePointerDown(SquaresView.kt:270) at com.mercandalli.android.apps.sampler.pad.SquaresView.onTouchEvent(SquaresView.kt:177) at android.view.View.dispatchTouchEvent(View.java:12540) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:601) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871) at android.app.Activity.dispatchTouchEvent(Activity.java:3384) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:563) at android.view.View.dispatchPointerEvent(View.java:12788) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5675) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5470) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5119) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5176) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7741) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7681) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7642) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7852) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:197) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) at android.app.ActivityThread.main(ActivityThread.java:6944) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) ```

Comments

reuniware

After analyzing a little more, I've found that the list of samples have 12 samples each... I've then realized that they should contain 16 samples each for the app not to crash :)