如果遇到fragment空白,那么亲请往下面定位:
1.通常这种问题出现是因为客户端长时间放在后台或者被360等软件清除了内存,看看savedInstanceState能不能帮你做什么,如果不行,直接放弃,看第二种情况;
2:看看是不是你的oncreateview又被走了一次,如果走了多次界面会空白的,下面方法可以帮你解决(方法转自http://www.eoeandroid.com/thread-538855-1-1.html 6楼的兄弟)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(mRootView == null) {
mRootView = inflater.inflate(R.layout.xxx, container, false);
}
if(mRootView != null) {
ViewGroup parent = (ViewGroup) mRootView.getParent();
if(parent != null) {
parent.removeView(mRootView);
}
}
return mRootView;
}
3:这种解决方案最好办:
首先看看你的添加方式是不是以每次new了一个实例去做的:
mFragments = new ArrayList<Fragment>(4);
mFragments.add(new fragment1());
mFragments.add(new
fragment2());
mFragments.add(new
fragment3());
for (int i = 0; i < mFragments.size(); i++) {
getChildFragmentManager()
.beginTransaction()
.add(R.id.ll_fragmentcontainer, mFragments.get(i),
String.valueOf(i)).commit();
}
如果是这样玩的,那么请注意不要用getActivity().getSupportFragmentManager().beginTransaction();来开启事务,用getChildFragmentManager().beginTransaction();就好。
推荐fragment直接使用单例来添加,不要用新实例。
mFragments.add(new Fragment1.newInstance);,如果不明怎么将fragment单例化的,百度之。