Android 安卓:碎片行为出人意料(突然透明?)

Android 安卓:碎片行为出人意料(突然透明?),android,android-fragments,transparent,fragment-backstack,Android,Android Fragments,Transparent,Fragment Backstack,我的碎片有问题。我使用以下代码在片段之间导航: 在“main”片段之间(没有backback,因为我希望用户在按下back时退出(它工作)): 以及在“内部”碎片之间(带后退): 但在以下情况下: 片段A->片段A1 片段A1->片段B 按后退按钮(应结束应用程序) ->回到片段A1 发生: 看起来A1碎片没有从背景中移除,而是留在背景中。我认为一个可能的解决方案是将所有碎片设置为白色背景。但这并不能解决问题,它只是将其隐藏。那么什么是可能的解决方案呢?好的,我找到了一个解决方案: 我必须通过

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

在“main”片段之间(没有backback,因为我希望用户在按下back时退出(它工作)):

以及在“内部”碎片之间(带后退):

但在以下情况下:

片段A->片段A1

片段A1->片段B

按后退按钮(应结束应用程序) ->回到片段A1

发生:


看起来A1碎片没有从背景中移除,而是留在背景中。我认为一个可能的解决方案是将所有碎片设置为白色背景。但这并不能解决问题,它只是将其隐藏。那么什么是可能的解决方案呢?

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

我必须通过命令手动移除内部碎片:

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

每次我的“外部”片段更改时,我都调用这个命令。内部片段被删除,tada…它就像一个符咒:)

你知道addToBackStack的含义吗?当然,但我认为当按下“后退”时,片段会自动删除。我希望内部片段可以重用,这就是我使用addToBackStack的原因。但是,一旦上面的片段被改变,我就不想再次恢复旧的内部片段。因此,您可以向LexikonDetailFragment添加背景。或者使用ft.hide(R.id.container,oldFragment);AddNewFragment.addToBackStack就像从一个活动到另一个活动的意图一样。如果第二个活动有一个透明的theme.Hm,则可以看到活动前的内容。我理解您的意图示例,但如果我使用ft.replace函数,这应该不是问题。总之,我找到了解决办法。稍后我会更新:)谢谢你的帮助!
            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();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);