移动开发 \ Android \ 为什么Fragment的onCreateView()处要removeView(view):避免多次调用

为什么Fragment的onCreateView()处要removeView(view):避免多次调用

总点击25
简介:当第一次创建fragment的时候在onCreateView里面初始化view,下一次创建时不需要重新创建view时,希望使用已经创建的,所以要把view设为全局变量。view为空,表示是第一次,则初始化view。如果view不为空,则返回该vi

当第一次创建fragment的时候在onCreateView里面初始化view,下一次创建时不需要重新创建view时,希望使用已经创建的,所以要把view设为全局变量。view为空,表示是第一次,则初始化view。如果view不为空,则返回该view,需要注意的是:如果直接返回会报错(java.lang.IllegalStateException: The specified child already has a parent),还没研究什么原因,但是大体意思就是有一个parent了,所以在返回该view前要找到该view的parent,然后remove掉该view,再返回就ok了。

@Nullable

@Override

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

if (mView == null) {

mView = inflater.inflate(R.layout.fragment_list,container,false);

}

//缓存的mView需要判断是否已经被加过group,如果有group需要从group删除,要不然会发生这个mView已经有group的错误。

ViewGroup group = (ViewGroup) mView.getParent();

if (group != null) {

group.removeView(mView);

}

return mView;

}


意见反馈 常见问题 官方微信 返回顶部