当Fragment包含RecyclerView时,首次加载Fragment页面可以正常加载RecyclerView。但是当切换到别的Fragment再回退时,或者二次加载Fragment时,加载不出页面,报错:No adapter attached; skipping layout。
解决:只要在onCreateView里重新设置一遍setLayoutManager、setAdapter即可
注:Fragment回退或重新加载时所有的View及与View绑定的数据、适配器Adapter等都需要重新设置,否则相关数据显示都是空的,除非复用上一次View!特别注意
Adapter不要进行非空判断然后使用Adapter.notifyDataSetChanged刷新,因为View已经重新创建并可能已经回收,但Adapter还是原来的!
即在不复用View的情况下:
//if (mAdapter == null) {
mAdapter = new MyAdapter(mDataList);
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
mRecyclerView.setAdapter(mAdapter);
//} else {
//mAdapter.notifyDataSetChanged();
//}