Java.lang.IllegalArgumentException: pointerIndex fuera de rango Exception – dispatchTouchEvent
Tengo este método en mi vista personalizada que se extiende FrameLayout
:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { int currentItem = vp.getCurrentItem(); if (inDragPanelZone(currentItem, ev.getX(), ev.getY()) && ev.getAction() == MotionEvent.ACTION_DOWN) { if (!shouldAllowPaging()) { return true; } vp.setPagingEnabled(true); } return super.dispatchTouchEvent(ev); }
De vez en cuando – estoy recibiendo la siguiente Excepción:
- Droidparts ClearableEditText
- Diferencia real entre TextView y Button
- Android - Diferencia entre View.getResources () y View.getContext (). GetResources ()
- Problema con revelación circular y CircularRevealLibrary en Android
- Cómo agregar varias vistas al gestor de ventanas en Android
java.lang.IllegalArgumentException: pointerIndex out of range at android.view.MotionEvent.nativeGetAxisValue(Native Method) at android.view.MotionEvent.getX(MotionEvent.java:1995) at android.support.v4.view.MotionEventCompatEclair.getX(MotionEventCompatEclair.java:32) at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getX(MotionEventCompat.java:86) at android.support.v4.view.MotionEventCompat.getX(MotionEventCompat.java:210) at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:1734) at android.view.View.dispatchTouchEvent(View.java:5710) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726) at MyView.dispatchTouchEvent(DraggablePane.java:176) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1918) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1377) at android.app.Activity.dispatchTouchEvent(Activity.java:2391) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1866) at android.view.View.dispatchPointerEvent(View.java:5890) at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3077) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2619) at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:983) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2628) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4512) 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:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) at dalvik.system.NativeStart.main(Native Method)
También intenté usar onInterceptTouchEvent()
y conseguí la misma excepción.
Aquí hay un stacktrace adicional:
java.lang.IllegalArgumentException: pointerIndex out of range at android.view.MotionEvent.nativeGetAxisValue(Native Method) at android.view.MotionEvent.getX(MotionEvent.java:2013) at android.support.v4.view.MotionEventCompatEclair.getX(MotionEventCompatEclair.java:32) at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getX(MotionEventCompat.java:86) at android.support.v4.view.MotionEventCompat.getX(MotionEventCompat.java:210) at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:1734) at android.view.View.dispatchTouchEvent(View.java:5724) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1964) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1725) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1970) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1739) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1970) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1739) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1970) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1739) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1970) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1739) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2071) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405) at android.app.Activity.dispatchTouchEvent(Activity.java:2426) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2019) at android.view.View.dispatchPointerEvent(View.java:5904) at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3155) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2670) at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:1000) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1014) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2644) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4517) 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:993) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) at dalvik.system.NativeStart.main(Native Method)
- Lienzo en no actualizar
- Android equivalente de trabajo alrededor de View.getX () antes de la API 11?
- FindViewById () no funciona en una clase no MainActivity
- ¿Por qué no hay un método getContentView () para la actividad?
- ¿Es un Android ViewParent garantizado que es un Viewgroup?
- Seguimiento de la velocidad de una vista en movimiento
- ¿Por qué no se ve el color de fondo de Android?
- Diferencia entre SurfaceView y ImageView
Hay un error en 2.1 (Eclair) donde el índice del puntero no está marcado y es a veces -1. Puede crear una vista personalizada que expanda ViewPager, anule onTouchEvent y envuelva la llamada a super.onTouchEvent en un try / catch. Aunque no es una solución muy bonita, recuerdo que no tiene efectos secundarios (como eventos de toque perdidos).
Agregando a la respuesta anterior También puede intentar Superponer método onInterceptTouchEvent y surround super.onInterceptTouchEvent (ev) con try and catch trabajado para mí en un ViewPager
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException ex) { ex.printStackTrace(); } return false; }
- ¿Cuál es el significado de addToBackStack con un parámetro nulo?
- Cómo personalizar la intención de compartir en Android?