Android onTouchEvent java.lang.IndexOutOfBoundsException

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzw2312/article/details/53689831

这是一个莫名奇妙的问题~因为我们写来一些莫名奇妙的代码。

我的是在ListView中出现这个问题的:

12-16 09:31:26.886: E/InputEventReceiver(26852): Exception dispatching input event.
12-16 09:31:29.766: E/AndroidRuntime(26852): FATAL EXCEPTION: main
12-16 09:31:29.766: E/AndroidRuntime(26852): Process: com.yfscms, PID: 26852
12-16 09:31:29.766: E/AndroidRuntime(26852): java.lang.IndexOutOfBoundsException: Invalid index 4, size is 0
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at java.util.ArrayList.get(ArrayList.java:308)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:234)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.obtainView(AbsListView.java:2357)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.ListView.makeAndAddView(ListView.java:1816)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.ListView.fillDown(ListView.java:717)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.ListView.fillGap(ListView.java:681)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5704)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3459)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.startScrollIfNeeded(AbsListView.java:8421)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.onTouchMove(AbsListView.java:3895)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.widget.AbsListView.onTouchEvent(AbsListView.java:3688)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at com.yf.util.view.PullToRefreshListView.onTouchEvent(PullToRefreshListView.java:147)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.View.dispatchTouchEvent(View.java:7725)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2215)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1950)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2221)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1964)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2110)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1557)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.app.Activity.dispatchTouchEvent(Activity.java:2480)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2058)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.View.dispatchPointerEvent(View.java:7905)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3900)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3443)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3493)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3462)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3569)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3470)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3626)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3443)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3493)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3462)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3470)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3443)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5669)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5649)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5620)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5749)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
12-16 09:31:29.766: E/AndroidRuntime(26852): 	at android.view.In
上面提示的 com.yf.util.view.PullToRefreshListView.onTouchEvent(PullToRefreshListView.java:147)
这句代码其实就是:

return super.onTouchEvent(ev);

不知道什么原因~这个为报超出索引。

解决办法:

if(this.isEnabled()) {
	return super.onTouchEvent(ev);
}else{
	return false;
}
如果是其它View试试各种enbled,getEndled呀isEndled呀~或者直接endled





猜你喜欢

转载自blog.csdn.net/hzw2312/article/details/53689831