我有一个 fragment ,我添加了这样的标签:
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,fragment_tag).commit();
有时,在另一个 fragment 中,我需要删除这个 fragment ,所以我调用:
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null && fragment.isAdded())
fragmentManager.beginTransaction().remove(fragment).commit();
理论上,下次我为刚刚删除的 fragment 调用 findFragmentByTag()
时,我应该得到一个 null,但是,下次我调用这个时:
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null)
if 语句为真,因此它实际上找到了带有该标签的 fragment !
我的问题是,如何完全删除 fragment ?
考虑到要删除的 fragment 可能不在后台堆栈的顶部,这意味着 popBackStack()
不是解决方案。
最佳答案
删除 fragment 后,它可能仍在 fragment 管理器返回堆栈中,因此要完全删除它,您必须从 fragment 管理器返回堆栈中删除 if ,因此您必须通过调用将其从返回堆栈中弹出fragmentManager.popBackStack(String, int) 方法...
关于java - fragment 交易删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45083160/