前言

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; } } } 

参考文章

  1. java.lang.IllegalArgumentException: pointerIndex out of range
  2. 图片缩放时java.lang.IllegalArgumentException: pointerIndex out of range解决方案
  3. It's the android ViewPager's bug

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...