您的位置:首页 > 编程语言 > Java开发

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

2016-09-21 19:36 666 查看
转载请注明出处:http://blog.csdn.net/harryweasley/article/details/52612239

最近做一个项目,遇到了一个bug,在此进行记录一下。

自定义view,在用到ViewDragHelper时候,报以下的错误:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.seeyon.mobile.android.model.common.content.view.drag.ViewDragHelper.shouldInterceptTouchEvent(ViewDragHelper.java:1172)
at com.seeyon.mobile.android.model.common.view.DropAllChildView.onInterceptTouchEvent(DropAllChildView.java:76)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2143)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2666)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2318)


错误第二行

at com.seeyon.mobile.android.model.common.content.view.drag.ViewDragHelper.shouldInterceptTouchEvent(ViewDragHelper.java:1172)


显示viewDragHelper:1172报错,

final float dx = x - mInitialMotionX[pointerId];


这句话数组越界。

因为viewDragHelp是系统源码的,我们没必要在这里进行修改,接下来看看第三行

at com.seeyon.mobile.android.model.common.view.DropAllChildView.onInterceptTouchEvent(DropAllChildView.java:76)


DropALlChildView是我自定义的一个view,它的76行报错,76行处的代码,就这一句话:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mDragger.shouldInterceptTouchEvent(event);

}


我们可以看出来,是因为调用了mDragger.shouldInterceptTouchEvent(event);报错的,所以在这里进行一个try catche判断:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
//      return mDragger.shouldInterceptTouchEvent(event);
try {
//某些手机在双点操作的时候会报此错误,在此进行捕捉。
return mDragger.shouldInterceptTouchEvent(event);
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
}


这样就解决了此问题。

其实这个是多点触碰导致的错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐