提问者:小点点

从后台android中删除碎片?


我总共有7个碎片

Frag1 -> Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 

用户从< code>Frag1 -导航

这是片段交易代码

    public void displayView(Fragment fragment, Bundle data) {
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        if (data != null) {
            if (fragment.getArguments() != null) {
                fragment.getArguments().putAll(data);
            } else {
                fragment.setArguments(data);
            }
        }
        if (!fragment.isAdded()) {
            ft.replace(R.id.frame, fragment);
            ft.addToBackStack(null);
        }
        ft.commit();
    } else {
        Logger.e("MainActivity", "Error in creating fragment");
    }
}

在迁移到Frag7之前,我调用了getActivity().getSupportFragmentManager().popBackStack();5次,但我总是把它作为backstack。

Frag7 -> Frag6 -> Frag1

我无法从用户导航的位置移除当前片段(Frag6)。


共2个答案

匿名用户

您可以尝试以下代码:yourfragmentName是要重定向的片段

   if (getFragmentManager().getBackStackEntryCount() > 0) {
         getFragmentManager().popBackStack(yourfragmentName.class.getSimpleName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

匿名用户

当您从<代码>片段1 -开始时,请尝试以下逻辑

在那之后,当你从

Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 

u不需要添加到backstack意味着不调用add to back stack();