我正在使用操作栏选项卡来显示不同类别下的一些图像。例如:有三个选项卡:-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,我只是添加和分离。这怎么能解决。我不想在选项卡侦听器中使用替换,因为如果这样做,我将不得不重新创建那些将是代价高昂的片段