片段事务添加/分离和操作栏选项卡

时间:2012-08-20 19:49:29

标签: android android-actionbar

我正在使用操作栏选项卡显示不同类别下的一些图像。例如:有三个选项卡:-cat1,cat2,cat3.All三个在网格视图中显示图像.Tab Listener类如下所示: -

@Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        switch(id){
        case 1:{
            this.tagName="cat1";

            Cat1 genf=(Cat1)= getFragmentManager().findFragmentByTag(this.tagName);
            if(genf==null){
               genf=Cat1.newInstance();
               ft.add(R.id.therightframe,genf,tagName);
             }else{
               ft.attach(genf);
            }

            this.fragment=genf;
            break;
        }
        case 2:{
            this.tagName="cat2";
             Cat2 genf= (Cat2) getFragmentManager().findFragmentByTag(this.tagName);
             if(genf==null){
                 genf=Cat2.newInstance();
                 ft.add(R.id.therightframe,genf,tagName);

            }else{

              ft.attach(genf);

            }
             this.fragment=genf;
             break;
        }
        case 3:{
            this.tagName="Cat3";
            Cat3 genf= (Cat3) getFragmentManager().findFragmentByTag(this.tagName);
             if(genf==null){
             genf=Cat3.newInstance();

                    ft.add(R.id.therightframe,genf,tagName);

            }else{

                    ft.attach(genf);

            }
             this.fragment=genf;
             break;
        }


    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

    ft.detach(fragment);

    }

现在,如果一个人点击gridview上的任何图像,我会执行fragmenttransaction.replace并在同一空间中加载一个新的Fragment。是的,我不会开始新的活动。直到这件事情工作正常。但是当我在此之后选择Cat2选项卡时,它不会替换在最后一步中创建的片段(当点击网格中的图像时)并且这看起来很自然也因为在选项卡监听器类中我无处清空ui,我是只需添加和分离。如何解决这个问题。我不想在标签监听器中使用replace,因为如果我这样做,我将不得不重新创建那些代价高昂的片段

0 个答案:

没有答案