1

我正在使用操作栏选项卡来显示不同类别下的一些图像。例如:有三个选项卡:-cat1、cat2、cat3。所有三个选项卡都在网格视图中显示图像。选项卡侦听器类如下所示:-

@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,我只是添加和分离。这怎么能解决。我不想在选项卡侦听器中使用替换,因为如果这样做,我将不得不重新创建那些将是代价高昂的片段

4

0 回答 0