我已经在我的应用程序中实现了片段。这里是我在fragment_container中切换片段的代码。
private void switchFragment(Fragment fragment, boolean isAddToBackStack, String tag)
{
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, fragment, tag);
if (isAddToBackStack)
ft.addToBackStack(tag);
setCurrentTopFragment(Integer.parseInt(tag));
ft.commit();
}
我有4个片段A,B,C和D,并且我正在使用上述方法在这个片段之间进行切换。我的背包里有A,C,B。如果再次切换到fragmnet A,我的背板就像A,C,B,A。我真正想要的是如果我再次转向A,我想要像这样的C,B,A的背堆序列。意味着从backstack中删除旧实例并向其添加新实例。
答案 0 :(得分:1)
首先获取您需要移除的ID的后备Fragment
:
Fragment fragment = getSupportFragmentManager().getFragment(new Bundle(), TAG_KEY)
或有几种方法getBackStackEntryCount()
,getBackStackEntryAt
。获取需要删除的片段后。从片段后栈中删除它。
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(fragment);
然后你可以添加一个新的片段Done:)