做了几年的开发,一直没有做记录的习惯,本来记忆就不太好,某些不常用的东西用过之后就丢。最近发现有些问题重复的出现,但是已经忘记了怎么去处理,又要重新度一次,感觉非常浪费时间。希望能从现在开始将工作中遇到的问题和得到的收获记录下来,一是在自己以后再遇到的时候能够快速有效的找到方案,二是希望能帮助和我遇到同样问题的同僚们。
1,viewpager+fragment中有recycleView,发现fragment不显示,报错:No adapter attached:skipping layout,网上查了很多资料一直都是没显示,后来找了两位大神帮忙看了一下,才发现是在fragment的onCreateView方法中没有将view返回。在此特地记录一下,自己已扇几个大巴掌。希望大家一定细心细心再细心。
2.Fragment 在横竖屏切换的时候崩溃的问题,这个需要在fragment所在的activity中配置属性:android:configChanges="orientation|screenSize"(menifest),并且在fragment中重写onConfigurationChanged方法,在此方法中执行你要进行的操作。参考:fragment横竖屏切换导致崩溃
3.android.support.v4.widget.SwipeRefreshLayout进行页面刷新,大家都知道,SwipeRefreshLayout中只能放一个滚动容器,但是有些需求中需要用到两个recycleView(我的就是),然后就想到在外层再放一个ScrollView,不过肯定会滑动冲突,然后问了一下度娘,发现可以用android.support.v4.widget.NestedScrollView,但是如果不设置的话还是会卡顿,不流畅。需要分别对recycleView的layoutmanager进行设置,如下:
LinearLayoutManager manager=new LinearLayoutManager(getActivity()){
@Override
public boolean canScrollVertically() {
//解决ScrollView里存在多个RecyclerView时滑动卡顿的问题
//如果你的RecyclerView是水平滑动的话可以重写canScrollHorizontally方法
return false;//禁掉滚动
}
};
rcv1.setLayoutManager(manager);
rcv2.setLayoutManager(manager);
这样只有scrollView的滚动事件了,也就是两个recycleView不能单独滚动,看大家的需求。参考:https://www.jianshu.com/p/98f2fcfb0e22
4.fragment中嵌套fragment调用transaction.commit()出现如下错误,
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
解决方法:将commit()换成commitAllowingStateLoss (),参考如下:
解决java.lang.IllegalStateException: Can not perform this action after onSaveInstance