android - 当大小变为零时,后退按钮上的 findFragmentById 变为空白
问题描述
这是我的流程/结构:
- 活动
- 分段
- 里面有相同的片段。
我已经覆盖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 也会受到干扰。
任何人都可以建议可能是什么问题?
解决方案
您必须使用标签来加载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();
}
推荐阅读
- r - 将 R 字符向量解析为 DataFrame
- javascript - 引导表多选行并突出显示
- python - 将 Keras 用于 CNN 对一组视频执行回归
- python - sklearn 将标签编码器序列化到磁盘以用于多个分类列
- multithreading - 增加工作线程对 Netty IO 性能没有影响
- javascript - Node.js 中的异步循环
- r - 在 R 中嵌套 For 循环以在列之间进行迭代
- sql - 如何根据给定的日期列创建自定义季度sql sql server
- svelte - 为什么 Sapper 省略了关闭 HTML 标记?
- javascript - 我应该将仅在路由器组件中一起呈现的两个组件的状态放在哪里?