我有一个片段,我添加了一个这样的标签:
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,fragment_tag).commit();
在另一个片段中,我需要删除这个片段,所以我调用:
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null && fragment.isAdded())
fragmentManager.beginTransaction().remove(fragment).commit();
从理论上讲,下一次我为刚删除的片段调用findFragmentByTag()
时,应该会得到一个null,但是,下一次我调用它时:
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null)
if语句是真的,所以它实际上找到了带有该标记的片段!
我的问题是,我如何完全删除一个片段?Ia fragment?
考虑到要删除的片段可能不在后台堆栈的顶部,这意味着popBackStack()
不是一种解决方案。
发布于 2017-07-13 22:24:57
在删除片段之后,它可能仍然在片段管理器后栈中,因此要完全删除它,必须将其从片段管理器后栈中移除,因此必须通过调用fragmentManager.popBackStack(String,int)方法将其从后栈中弹出...
发布于 2017-11-27 14:15:59
int index = getSupportFragmentManager().getFragments().indexOf(oldfragment);
getSupportFragmentManager().getFragments().set(index, null);
https://stackoverflow.com/questions/45083160
复制相似问题