0

我的片段有问题。我使用此代码在片段之间导航:

在“主要”片段之间(没有回栈,因为我希望用户在他按下后退出(它有效)):

    FragmentManager fragmentManager = getFragmentManager();
    final FragmentTransaction ft = fragmentManager.beginTransaction();

    ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb);
    ft.replace(R.id.container, NewsFragment.newInstance(position + 1), NewsFragment.class.getSimpleName());
    ft.commit();

并在“内部”片段之间(带有 backstack):

            FragmentTransaction ft = ((Activity) getActivity()).getFragmentManager().beginTransaction();
            Fragment nextFragment = LexikonDetailFragment
                    .newInstance(item);

            ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb);
            ft.replace(R.id.container, nextFragment);
            ft.addToBackStack(LexikonDetailFragment.class.getSimpleName());
            ft.commit();

但在以下情况下:

片段 A -> 片段 A1

片段 A1 -> 片段 B

按返回按钮(应该结束应用程序)-> 返回片段 A1

这个发生:

图片

看起来 A1 片段没有从后台堆栈中删除并留在后台。我认为一种可能的解决方案是将所有片段设置为白色背景..但这不能解决问题,它只会隐藏它。那么可能的解决方案是什么?

4

1 回答 1

0

好的,我找到了解决方案:

我必须通过以下命令手动删除内部碎片:

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

每次我的“外部”片段发生变化时,我都会调用这个命令。内部的被移除并且tada ......它就像一个魅力:)

于 2016-01-17T14:59:44.497 回答