我正在使用操作栏选项卡显示不同类别下的一些图像。例如:有三个选项卡:-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,因为如果我这样做,我将不得不重新创建那些代价高昂的片段