【发布时间】:2017-12-18 09:15:24
【问题描述】:
我有一个片段,我用这样的标签添加它:
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() 时,我应该得到一个空值,但是,下次我调用这个时:
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null)
if 语句为真,因此它实际上找到了带有该标签的片段!
我的问题是,我如何完全删除片段?
考虑到要删除的片段可能不在后台堆栈的顶部,这意味着popBackStack() 不是解决方案。
【问题讨论】:
-
诀窍是你找到的片段是
isRemoving,所以你可以忽略它。 -
@Ricardo 你解决了这个问题吗?我也面临同样的问题。
标签: java android android-fragments fragmentmanager