当使用FragmentHost 对多个Fragment切换的时候,我们会发现每个Fragment都会重新调用onCreateView()方法重新绘制UI,如何避免这个问题呢?
我们可以在设置一个成员变量mView,然后在onCreateView方法里缓存他。
private View mView;// 缓存Fragment view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
Log.i(TAG, "onCreateView");
if (mView == null)
{
mView = inflater.inflate(R.layout.fragment_1, null);
// 此处可以调用你初始化控件的方法
}
// 缓存的mView需要判断是否已经被加过parent,如果有parent需要从parent删除,要不然会发生这个mView已经有parent的错误。
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null)
{
parent.removeView(mView);
}
return mView;
}
网友评论