您的位置:首页 > 其它

ViewPager和SwipeRefreshLayout之间嵌套使用时发生"事件"冲突

2016-02-24 22:04 549 查看
有时候我们会有一种需求,一个ViewPager有n个页面,每个页面是一个Fragment,在Fragment中使用了具有垂直滑动属性的控件,比如SwipeRefreshLayout!!!

这时二者之间的滑动事件就会产生冲突!!产生一个莫名其妙的空指针异常!解决的办法是重写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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: