Android:碎片表现出意外(突然透明?)
Android: Fragments act unexpected (suddenly transparent?)
我的碎片有问题。我使用此代码在片段之间导航:
在 "main" 个片段之间(没有 backstack,因为我希望用户在按下后退时退出(有效)):
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();
和 "inner" 片段之间(带 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
发生:
Image
看起来 A1 片段没有从后台堆栈中删除并保留在后台。我认为一种可能的解决方案是为所有片段设置白色背景..但这不能解决问题,它只会隐藏它。那么可能的解决方案是什么?
好的,我找到了解决方案:
我不得不通过命令手动删除内部片段:
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
每次 "outer" 片段发生变化时,我都会调用此命令。内部的被移除并且 tada ......它就像一个魅力:)
我的碎片有问题。我使用此代码在片段之间导航:
在 "main" 个片段之间(没有 backstack,因为我希望用户在按下后退时退出(有效)):
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();
和 "inner" 片段之间(带 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
Image
看起来 A1 片段没有从后台堆栈中删除并保留在后台。我认为一种可能的解决方案是为所有片段设置白色背景..但这不能解决问题,它只会隐藏它。那么可能的解决方案是什么?
好的,我找到了解决方案:
我不得不通过命令手动删除内部片段:
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
每次 "outer" 片段发生变化时,我都会调用此命令。内部的被移除并且 tada ......它就像一个魅力:)