黑马程序员技术交流社区

标题: 切换Fragment时状态错乱 [打印本页]

作者: 马伟奇    时间: 2015-1-28 19:06
标题: 切换Fragment时状态错乱

     使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态。

        解决办法:在Fragment onCreateView方法中缓存View

   

  1. <font color="#362e2b"><font face="Arial"><font style="font-size: 14px">        private View rootView;//缓存Fragment view
  2.         
  3.         @Override
  4.         public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  5.                 if(rootView==null){
  6.                         rootView=inflater.inflate(R.layout.tab_fragment, null);
  7.                 }
  8. //缓存的rootView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
  9.         ViewGroup parent = (ViewGroup) rootView.getParent();
  10.         if (parent != null) {
  11.             parent.removeView(rootView);
  12.         }
  13.                 return rootView;
  14.         }</font></font></font>
复制代码




作者: 位俊鹏    时间: 2015-1-28 21:54
老师是这种情况吗? 我们最近做的产品在遇到程序崩溃之后再切换fragment就会出现第一页和第二页的重叠的错误。

Screenshot_2015-01-28-21-50-28.png (87.99 KB, 下载次数: 3)

Screenshot_2015-01-28-21-50-28.png

作者: 马伟奇    时间: 2015-1-29 20:50
添加fragment的时候先把以前的移除再添加





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2