嵌套两层滑动view下,IllegalArgumentException: pointerIndex out of range的解决方法


----------------------发现问题期间的一些记录,日期是后面补充的,不一定准确,不想看可以直接翻到下面。---------------------------

2014年10月17日23:48:11

10-17 17:51:26.370: W/System.err(2789): java.lang.IllegalArgumentException: pointerIndex out of range

10-17 17:51:26.370: W/System.err(2789): at android.view.MotionEvent.nativeGetAxisValue(Native Method)

10-17 17:51:26.375: W/System.err(2789): at android.view.MotionEvent.getX(MotionEvent.java:2148)

(debug,看看getX(传入了什么参数,返回了什么参数

10-17 18:02:55.385: W/System.err(5522):  at android.widget.HorizontalScrollView.onTouchEvent(HorizontalScrollView.java:807)
(debug,看看传入了什么参数,返回了什么参数




- -- -------------------------------------------------------- -以上可以忽略 ---------------------------------------------


2014年10月19日15:48:46

HorizontalScrollView 里嵌套了一个类似viewpager的view。
重写了onInterceptTouch Event  和 onTouchEvent 之后,
滑动内层,报下列错误。google 百度 stackoverfloew 有相关的问题,但无法解决。

网络上try catch  IllegalArgumentException,或者return false什么的,不能解决。

java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:2148)


2014年10月19日17:25:14

重写了,Menu的onInterceptTouchEvent 之后, return 的值被我人为的限定成(true  false),并没有调用super.onInterceptTouchEvent。

这时,如果条件满足拦截下了Touch事件,就会进入Menu的onTouchEvent。

在该方法最后的返回值为:super.onTouchEvent(ev);  

意味着,返回值是通过父类HorizontalScrollView 的 onTouchEvent 计算得出的。

在父类的onTouchEvent  里面

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
java.lang.IllegalArgumentException: pointerIndex out of range 是一个 Java 异常,意味着在使用触摸屏或鼠标等输入设备时,指针索引超出了有效范围。这个异常通常发生在处理触摸或滑动事件时,可能是因为程序没有正确处理输入事件或者出现了错误的输入事件。 解决这个问题的方法有多种,具体取决于你的代码和应用程序的需求。以下是一些常见的解决方法: 1. 请确保在处理触摸或滑动事件时,检查指针索引是否在有效范围内。可以通过使用 MotionEvent 类的 getPointerCount() 方法来获取指针数量,并使用 getActionIndex() 方法获取触摸事件的索引。 2. 在处理触摸或滑动事件之前,先检查指针索引是否在有效范围内。可以使用以下代码片段来进行检查: ``` if (pointerIndex < 0 || pointerIndex >= pointerCount) { // 处理超出范围的情况 } ``` 3. 确保在滑动或触摸操作结束后,及时释放资源或重置状态。可能需要在 MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL 事件中进行适当的清理和重置操作。 4. 检查你的代码是否正确处理了触摸或滑动事件的序列。例如,在处理多点触控事件时,确保每个触摸点的索引都正确处理,避免出现混乱或错误的索引。 5. 如果你使用了自定义的触摸或滑动事件处理类,确保该类正确处理了指针索引超出范围的情况,并提供适当的错误处理或日志记录。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值