Wyjątek krytyczny: java.lang.ArrayIndexOutOfBoundsException length = 12; indeks = 12 Napotkałem ten błąd tylko na urządzeniu Samsung 6.0.1 (wersja Android). Nie napotkałem tego błędu na żadnym innym urządzeniu z Androidem
stacktrace jest poniżej. Jest raport o awarii na crashlytics, ale nie mogłem odtworzyć błędu.
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=12; index=12
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1833)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.widget.ScrollView.dispatchHoverEvent(ScrollView.java:1107)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2176)
at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:1878)
at android.view.View.dispatchGenericMotionEvent(View.java:10074)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:2839)
at com.android.internal.policy.PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1873)
at android.app.Activity.dispatchGenericMotionEvent(Activity.java:3082)
at android.support.v7.view.WindowCallbackWrapper.dispatchGenericMotionEvent(WindowCallbackWrapper.java:70)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:2806)
at android.view.View.dispatchPointerEvent(View.java:10230)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5344)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5180)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4620)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4673)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4639)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4781)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4647)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4838)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4620)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4673)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4639)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4647)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4620)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7306)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7184)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7145)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7416)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Odpowiedzi:
1 dla odpowiedzi № 1W funkcji android.view.ViewGroup.dispatchHoverEvent
, jest tablica. Nazwijmy to foo
.
foo.length
jest 12.
Ale ktoś napisał w linii 1833 foo[n]
dla n
mając 12 lat
Jest to teraz dozwolone, dla tablicy o długości 12. n
musi zawierać się w przedziale od 0 do 11 włącznie. Nawiasem mówiąc, jest to niezwykle często popełniany błąd.
Mam nadzieję, że to się przyda. Jeśli cokolwiek to pokazuje, jak przydatne są ślady stosu.