前言
ViewPager展示图片时,对图片操作时出现如下异常
AndroidRuntime: FATAL EXCEPTION: main AndroidRuntime: Process: com.biumall.image, PID: 17729 AndroidRuntime: java.lang.IllegalArgumentException: pointerIndex out of range AndroidRuntime: at android.view.MotionEvent.nativeGetAxisValue(Native Method) AndroidRuntime: at android.view.MotionEvent.getX(MotionEvent.java:2205) AndroidRuntime: at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2072) AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2575) AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721) AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721) 这里简单记录一下,多谢
正文
网上有多种方式,比如方式一改源码,方式二自定ViewPager,然后onInterceptTouchEvent()处进行捕获异常。
本文采用的是第二种方式,对ViewPager进行捕获处理,如下:
public class ImageViewPager extends ViewPager { public ImageViewPager(Context context) { super(context); } public ImageViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) { return false; } } }