当FragmentTabHost切换Fragment时,重复调用Fragment的onCreatView方法的解决办法

来源:互联网 发布:gpu编程 编辑:程序博客网 时间:2024/06/04 18:02

当切换tabhost的时候,会重复调用当前fragment的onCreatView方法,这样在这个方法里的initUI和initData都会重新调用,在某些情况下(自己碰到的情况是在片段里加载MagicIndicator时,重新加载为空白),会出现问题,如何避免呢?

解决方法:在onCreatView方法里进行判断

“`
private View rootView;// 缓存Fragmen view

@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){    if (rootView == null)    {        rootView = inflater.inflate(R.layout.tab_fragment, null);    }    //TODO do something    // 缓存的rootView需要判断是否已经被加过parent,    // 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。    ViewGroup parent = (ViewGroup) rootView.getParent();    if (parent != null)    {        parent.removeView(rootView);    }    return rootView;}

这样在重新调用onCreatView方法时,会进行判断,这样自己就可以控制哪些需要重新调用或获取数据,哪些则不需要重新加载。

阅读全文
0 0
原创粉丝点击