Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段事务添加/分离和操作栏选项卡_Android_Android Actionbar - Fatal编程技术网

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

Android 片段事务添加/分离和操作栏选项卡,android,android-actionbar,Android,Android Actionbar,我正在使用操作栏选项卡显示不同类别下的一些图像。例如:有三个选项卡:-cat1、cat2、cat3。所有三个选项卡都在网格视图中显示图像。选项卡侦听器类如下所示:- @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { switch(id){ case 1:{ this.tagName="cat1"; Cat1 genf

我正在使用操作栏选项卡显示不同类别下的一些图像。例如:有三个选项卡:-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上的任何图像,我将执行碎片事务。在同一空间中替换并加载新碎片。是的,我不会启动新活动。直到一切顺利。但是,当我在这之后选择Cat2 tab时,它不会替换上一步中创建的片段,当网格中的图像被单击时,这看起来很自然,因为在tab listener类中,我没有清空ui,我只是添加和分离。如何解决这个问题。我不想在选项卡侦听器中使用replace,因为如果这样做,我将不得不重新创建这些片段,这将是一件昂贵的事情