首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >片段事务删除

片段事务删除
EN

Stack Overflow用户
提问于 2017-07-13 22:10:03
回答 2查看 1.9K关注 0票数 3

我有一个片段,我添加了一个这样的标签:

代码语言:javascript
复制
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,fragment_tag).commit();

在另一个片段中,我需要删除这个片段,所以我调用:

代码语言:javascript
复制
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null && fragment.isAdded())
    fragmentManager.beginTransaction().remove(fragment).commit();

从理论上讲,下一次我为刚删除的片段调用findFragmentByTag()时,应该会得到一个null,但是,下一次我调用它时:

代码语言:javascript
复制
fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag);
if(fragment != null)

if语句是真的,所以它实际上找到了带有该标记的片段!

我的问题是,我如何完全删除一个片段?Ia fragment?

考虑到要删除的片段可能不在后台堆栈的顶部,这意味着popBackStack()不是一种解决方案。

EN

回答 2

Stack Overflow用户

发布于 2017-07-13 22:24:57

在删除片段之后,它可能仍然在片段管理器后栈中,因此要完全删除它,必须将其从片段管理器后栈中移除,因此必须通过调用fragmentManager.popBackStack(String,int)方法将其从后栈中弹出...

查看Fragment Manager pop back stack method方法

票数 0
EN

Stack Overflow用户

发布于 2017-11-27 14:15:59

代码语言:javascript
复制
int index = getSupportFragmentManager().getFragments().indexOf(oldfragment);
        getSupportFragmentManager().getFragments().set(index, null);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45083160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档