我有一个错误,其中一个片段只是拒绝被删除。我在这里浏览过许多其他文章,标题几乎相同,但是没有一种解决方案适用于我的问题。
像这样添加片段:
CustomFragment fragment = new CustomFragment();
fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment, "fragment_tag").commit();
它不会添加到Backstack。
然后将其删除,如下所示:
Fragment fragmentToRemove = fragmentManager.findFragmentByTag("fragment_tag");
if (fragmentToRemove != null) {
fragmentManager.beginTransaction().remove(fragmentToRemove).commit();
}
要确保我检查:
fragmentManager.getFragments() -> empty
fragmentManager.getBackStackEntryCount() -> 0
看起来很好,很花哨,对不对?但是当我打电话时:
fragmentManager.findFragmentByTag("fragment_tag");
我仍然找到刚删除的相同片段,具有相同的ID。是什么赋予了?我已经失去了对所有尝试过的东西的跟踪,足以说出像popBackStackImmediate()和commitNow()这样的显而易见的东西不起作用。希望其他人之前遇到过这种情况,并且可以告诉我我所缺少的。