解决方案 »

  1.   

    判断是否已经存在了 不存在的时候才new
      

  2.   

    ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
      

  3.   

    当然如果你要用老版本,请看这段代码if (savedInstanceState == null) {//== null的时候新建Fragment1
    contentFragment = new Fragment1();
    } else {//不等于null,直接get出来
    //不等于null,找出之前保存的当前Activity显示的Fragment
    contentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "contentFragment");
    }
    //设置内容Fragment
    getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, contentFragment)
    .commit();
      

  4.   

    将fragment存到变量中,先判断有没有这个fragment,如果有直接return,没有的话再new一个
      

  5.   

    把Fragment 放到一个List中,每次从List读取。比如TabHost它就是把TabSpec放到List中,借鉴下看行不哈:private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
      

  6.   

    这段是写在onCreate方法里的吧,可是菜单切换的时候调用的是selectItem这个方法
      

  7.   

    嗯,之前没有设置全局变量,@Override
    public void selectItem(int position, String title) {
    // update the main content by replacing fragments 

        Fragment fragment = null;  
        switch (position) {  
        case 0:  
         fragment = homeFragment;  
            break;  
        case 1:  
         if(null == reportFragment){
         reportFragment = new ReportFragment();
         }
            fragment = reportFragment;  
            break;  
        case 2:  
            if(null == dataFragment){
             dataFragment = new DataFragment();
         }
            fragment = dataFragment;  
            break;  
        default: 现在是这么写的,但是虽然没有重新new Fragment 但是每次返回去的时候又重新加载了,而且如果是多Tab页面的话,会显示空白,如图圈着的都是空白也不会加载,除非滑动是它销毁后重新创建视图才会重新加载,我看网易的就没有重新加载,就好像调用了toggle();一样,很平静的就返回去了
      

  8.   

    if(fragment != mContent){
    if(!fragment.isAdded()){
    getSupportFragmentManager().beginTransaction().hide(mContent)
    .add(R.id.menu_frame_content, fragment).commit();
    }else{
    getSupportFragmentManager().beginTransaction().hide(mContent)
    .show(fragment).commit();
    }
    mContent = fragment;
    }这样解决了