Java 片段事务删除
我有一个片段,我添加了一个标签,如下所示:Java 片段事务删除,java,android,android-fragments,fragmentmanager,Java,Android,Android Fragments,Fragmentmanager,我有一个片段,我添加了一个标签,如下所示: getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,fragment_tag).commit(); 在某个时刻,在另一个片段中,我需要删除此片段,因此我调用: fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag); if(
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语句为true,因此它实际上找到了带有该标记的片段
我的问题是,我如何完全删除一个片段
考虑到要删除的片段可能不在backstack的顶部,这意味着
popBackStack()
不是一个解决方案。删除片段后,它可能仍在片段管理器后堆栈中,因此要完全删除它,必须从片段管理器后堆栈中删除,因此,您必须通过调用fragmentManager.popBackStack(String,int)方法将其从后堆栈中弹出
看看这个方法
删除片段后,它可能仍在片段管理器后堆栈中,因此要完全删除它,必须从片段管理器后堆栈中删除if,因此必须通过调用fragmentManager.popBackStack(String,int)方法将其从后堆栈中弹出 看看这个方法
谢谢您的关注。检查我编辑的问题。碎片可能不在靠背的顶部你试过了吗?如果要立即删除它,可以调用popackstackimeditely();我确实试过了。我已经搜索过提供此解决方案的软件,但这对我的案例没有帮助,而且片段没有在活动布局文件中声明?假设我有5个片段,它们被添加到活动中,我打算删除的片段不在backbackback的顶部。所有这些都添加到活动中,每个都有自己的标记感谢您的关注。检查我编辑的问题。碎片可能不在靠背的顶部你试过了吗?如果要立即删除它,可以调用popackstackimeditely();我确实试过了。我已经搜索过提供此解决方案的软件,但这对我的案例没有帮助,而且片段没有在活动布局文件中声明?假设我有5个片段,它们被添加到活动中,我打算删除的片段不在backbackback的顶部。所有这些都添加到活动中,每个都有自己的标记。请说明这将如何解决问题,或者这将如何解决问题。请说明这将如何解决问题,或者这将如何解决问题。诀窍在于,您找到的片段是
isRemoving
,所以你可以忽略它。@Ricardo你解决这个问题了吗?我面对的是同一个。诀窍是你找到的片段正在删除,所以你可以忽略它。@Ricardo你解决这个问题了吗?我面对的是同一个。
int index = getSupportFragmentManager().getFragments().indexOf(oldfragment);
getSupportFragmentManager().getFragments().set(index, null);