java - fragment 交易删除

标签 java android android-fragments fragmentmanager

我有一个 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) 方法...

查看方法 Fragment Manager pop back stack method

关于java - fragment 交易删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45083160/

相关文章:

java - 通用构造函数的好处

java - 什么是 Web 服务的 Java EE 框架?

android - VideoView ViewPager 滑动时出现黑线

android - 在 fragment 中隐藏底部导航 View

android - 拦截触摸事件SlidingPaneLayout

java - 在 Web 应用程序中验证数据的位置(使用 Spring)

java - Servlet xxx 不可用

AndroidStudio 告诉我我的模拟器与我的项目不兼容,为什么,如果模拟器是 api10 而项目是 api3?

android - VLC在此媒体Android上遇到错误

java - 切换 fragment 时滑动选项卡滞后