最近测试反馈一个旋转屏幕之后,界面不能上拉加载更多以及下拉刷新的问题,因为该界面允许旋转屏幕之后就销毁重建,
But,销毁重建我也设置Mode为Both了, 百思不得其解,没办法排坑咯
mPullToRefreshRecyclerView = (PullToRefreshRecyclerView) (rootView.findViewById(R.id.homepage_fragment_recyclerview));
mPullToRefreshRecyclerView.setMode(PullToRefreshBase.Mode.BOTH);
mPullToRefreshRecyclerView.setScrollingWhileRefreshingEnabled(false);
mRecyclerView = mPullToRefreshRecyclerView.getRefreshableView();
想着当我滑动屏幕时PullToRefresh的onInterceptTouchEvent()逻辑是咋处理的, 在方法里第一句就看到可疑的方法了-->isPullToRefreshEnabled()
于是乎, 打了个断点, 发现这里 return false,也就是说他把滑动事件上交给国家了(不拦截上下的滑动事件了),excuse me? OK, 接着跟下去
@Override
public final boolean isPullToRefreshEnabled() {
return mMode.permitsPullToRefresh();
}
boolean permitsPullToRefresh() {
return !(this == DISABLED || this == MANUAL_REFRESH_ONLY);
}
mMode是个内部枚举类, 跟到这里瞬间就明白了, 这里我外部虽然设置了Mode,霸特,内部肯定修改了这个值 , 这时候就该抖一下机灵了, 反推一下视图销毁,view走了重建... 二话不说奔着onRestoreInstanceState()方法去,果不其然
0 --> disable, 把这个手动修改过来即可.
希望帮到遇到此问题的人!