仅将一个片段实例添加到backstack中

时间:2017-02-06 10:37:29

标签: android android-fragments fragment back-stack

我已经在我的应用程序中实现了片段。这里是我在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中删除旧实例并向其添加新实例。

1 个答案:

答案 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:)