A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟奇 黑马帝   /  2015-1-28 19:06  /  2736 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


     使用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>
复制代码



2 个回复

倒序浏览
老师是这种情况吗? 我们最近做的产品在遇到程序崩溃之后再切换fragment就会出现第一页和第二页的重叠的错误。

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

Screenshot_2015-01-28-21-50-28.png
回复 使用道具 举报
添加fragment的时候先把以前的移除再添加
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马