我正在ViewPager
中创建SherlockFragmentActivity
。
我的应用程序的结构类似于ViewPager
- >有三个标签:tab1,tab2,tab3。
在tab2中,我想显示不同的片段,如fragment1-> fragment2-> fragment3。
在ViewPager
中,我使用Fragment
添加了三个标签(FragmentStatePageAdapter
s),如下所示。
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
SearchTab searchtab = new Tab1();
return tab1;
case 1:
BrowseTab browsetab = new Tab2();
return tab2;
case 2:
SavedItemsTab savedTab = new Tab3();
return Tab3;
}
return null;
}
现在在tab2中,我在fragment1中显示了ListView
。当用户点击ListView
中的项目时,我想显示另一个片段(fragment2)与其他ListView
。我正在通过片段事务执行此操作:
Fragment newFragment = new Brxxxx_Fragment();
Bundle args = new Bundle();
args.putString("Main_Cat_ID", Main_Category_ID_Str);
args.putString("Main_Cat_Name", Main_Category_Name_Str);
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.b_p_layoutid, newFragment);
transaction.addToBackStack(null);
transaction.commit();
在这一步之后,我能够显示另一个片段(fragment2),但我的旧片段(fragment1)仍然可以在新片段下面看到。
如果我想在不使用replace()
的情况下删除以前的片段,我应该如何将当前片段传递给remove方法?
答案 0 :(得分:1)
如果您不需要向后导航或将背景颜色设置为新片段,也许可以删除其他片段。你可以检查你的布局ID'R.id.b_p_layoutid'是你的'FrameLayout'而不是你的'Fragment'id以防万一...
android:background="?android:attr/colorBackground"
getActivity().getSupportFragmentManager().beginTransaction().remove('YOUR_FRAGMENT').commit();
您也可以查看此答案:
访问Android replace fragment still displays some of the replaced fragment