kikoso / Swipeable-Cards

A native library providing a Tinder-like cards effect. A card can be constructed using an image and displayed with animation effects, dismiss-to-like and dismiss-to-unlike, and use different sorting mechanisms.
Apache License 2.0
1.48k stars 364 forks source link

java.lang.IllegalArgumentException: pointerIndex out of range > com.andtinder.view.CardContainer.onInterceptTouchEvent(CardContainer.java:403) #62

Closed TiagoGouvea closed 7 years ago

TiagoGouvea commented 9 years ago

Some times my app crash with this error. I try to understand why, but I can't. I'm putting it here to know if someone have it too.

java.lang.IllegalArgumentException: pointerIndex out of range at android.view.MotionEvent.nativeGetAxisValue(Native Method) at android.view.MotionEvent.getX(MotionEvent.java:2140) at com.andtinder.view.CardContainer.onInterceptTouchEvent(CardContainer.java:403) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2033) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2134) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2305) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1575) at android.app.Activity.dispatchTouchEvent(Activity.java:2470) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2253) at android.view.View.dispatchPointerEvent(View.java:7875) at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3976) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3860) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5103) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5082) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5181) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:174) at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5153) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5200) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) at android.view.Choreographer.doCallbacks(Choreographer.java:591) at android.view.Choreographer.doFrame(Choreographer.java:559) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5317) 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:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method)

TiagoGouvea commented 9 years ago

To avoid the exception, I just change the lines in cardcontainer.java

x = event.getX(pointerIndex);
y = event.getY(pointerIndex);

to

try {
     x = event.getX(pointerIndex);
     y = event.getY(pointerIndex);
} catch (Exception e){
     return false;
}
kikoso commented 7 years ago

Solved

priyansh360 commented 6 years ago

How to change code in CardContainer.java , please reply