前言
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;
}
}
}
参考文章
© 版权声明