这是我的流程/结构:
我已经覆盖了removeCurrentFragment()
方法,该方法确实可以通过按如下所示按ID删除Fragment来返回功能-
@Override
public void removeCurrentFragment() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment currentFrag = getSupportFragmentManager().findFragmentById(R.id.fragment);
if (currentFrag != null)
transaction.remove(currentFrag);
transaction.commit();
}
似乎发生这种情况时,由于两个片段的ID相同,因此会创建空白视图。
如果需要更多详细信息,请随时在评论中提问。我将根据所需的详细信息来编辑问题。
我认为这与删除片段有关,但是我用单独的XML制作了新片段,但仍然遇到相同的问题。
我有一个带有分页功能的父片段(因为我需要水平滚动),在其中有一个子片段,当单击子片段按钮时,将替换新的片段,因此,当将其删除时,也会破坏子片段的X和Y
有人可以建议出什么问题吗?
答案 0 :(得分:1)
您必须使用标签来加载Fragment
,然后再次使用相同的标签将其删除。
例如,要添加Fragment
:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
fragmentManager.popBackStack(tag, androidx.fragment.app.FragmentManager.POP_BACK_STACK_INCLUSIVE);
ft.setCustomAnimations(R.anim.enter, R.anim.exit);
ft.add(containerId, fragment, tag);
ft.addToBackStack(tag);
ft.commit();
要删除它,请再次使用相同的标签:
if (fragmentManager.findFragmentByTag(currentTag) != null) {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.remove(fragmentManager.findFragmentByTag(currentTag));
ft.commit();
}