ViewPager和SwipeRefreshLayout之间嵌套使用时发生"事件"冲突
2016-02-24 22:04
549 查看
有时候我们会有一种需求,一个ViewPager有n个页面,每个页面是一个Fragment,在Fragment中使用了具有垂直滑动属性的控件,比如SwipeRefreshLayout!!!
这时二者之间的滑动事件就会产生冲突!!产生一个莫名其妙的空指针异常!解决的办法是重写ViewPager的“onInterceptTouchEvent”方法,
使得事件在传递过程中不被异常中断(try{}catch{}捕获异常并返回true),现在贴上代码,如果遇到类似错误的同学可以借鉴,如果有什么纰漏请不吝指正!
这时二者之间的滑动事件就会产生冲突!!产生一个莫名其妙的空指针异常!解决的办法是重写ViewPager的“onInterceptTouchEvent”方法,
使得事件在传递过程中不被异常中断(try{}catch{}捕获异常并返回true),现在贴上代码,如果遇到类似错误的同学可以借鉴,如果有什么纰漏请不吝指正!
public class CompatViewPager extends ViewPager { public CompatViewPager(Context context) { super(context); } public CompatViewPager(Context context, AttributeSet attrs) { super(context, attrs); } /** * 决定我们是否想要拦截这个手势,如果返回true, * onMotionEvent就会接受到事件,并且在其中发生滑动的操作. * 所以这段代码的原理是:当ViewPager和SwipeRefreshLayout滑动冲突的时候直接返回true, * 使得ViewPager可以正常滑动(至于怎么产生冲突的我也不知道) * @param ev * @return */ @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (Exception e) { return true; } } }
相关文章推荐
- 2.多线程-GCD
- C#5.0 采用CancellationTokenSource方式取消Task
- 权限分析
- XPath语法以及谓语的结合使用
- iOS多线程
- 从现有仓库克隆并开发项目
- [hdu5225][BC#40]Tom and permutation
- Container With Most Water
- Linux中的Buffer 与 Cache
- 【Mastering Machine Learning with scikit-learn (python+spark版)】Chapter2 Linear Regression
- Memcached 笔记
- 使用Vitamio打造自己的Android万能播放器(1)——准备
- AIDL随写
- Spring整合RabbitMQ进行消息队列开发
- 备份系列——Exp/Imp基本使用指南
- 修改oracle database中user的密码遇到ORA-28003和ORA-20001
- 为Node.js编写组件的几种方式
- angular自定义组件popbox练习日志(一)
- Hdu 2027 getchar用法
- 文件访问权限详解(eclipse和studio如何访问虚拟机内部的存储内容)