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

有时候我们会有一种需求,一个ViewPager有n个页面,每个页面是一个Fragment,在Fragment中使用了具有垂直滑动属性的控件,比如SwipeRefreshLayout!!!

这时二者之间的滑动事件就会产生冲突!!产生一个莫名其妙的空指针异常!解决的办法是重写ViewPager的“onInterceptTouchEvent”方法,

使得事件在传递过程中不被异常中断(try{}catch{}捕获异常并返回true),现在贴上代码,如果遇到类似错误的同学可以借鉴,如果有什么纰漏请不吝指正!

 1 public class CompatViewPager extends ViewPager {
 2     public CompatViewPager(Context context) {
 3         super(context);
 4     }
 5 
 6     public CompatViewPager(Context context, AttributeSet attrs) {
 7         super(context, attrs);
 8     }
 9 
10     /**
11      * 决定我们是否想要拦截这个手势,如果返回true,
12      * onMotionEvent就会接受到事件,并且在其中发生滑动的操作.
13      * 所以这段代码的原理是:当ViewPager和SwipeRefreshLayout滑动冲突的时候直接返回true,
14      * 使得ViewPager可以正常滑动(至于怎么产生冲突的我也不知道)
15      * @param ev
16      * @return
17      */
18     @Override
19     public boolean onInterceptTouchEvent(MotionEvent ev) {
20         try {
21             return super.onInterceptTouchEvent(ev);
22         } catch (Exception e) {
23             return true;
24         }
25     }
26 }

 

转载于:https://www.cnblogs.com/gzdx-tjh/p/5215330.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值