从活动中删除片段

新手上路,请多包涵
FragmantClass rSum = new FragmantClass();
getSupportFragmentManager().beginTransaction().remove(rSum).commit();

当我加载切换另一个片段时,我正在尝试删除此片段。上面的片段不会被删除。这是我调用来切换片段的方法。

 public void switchContent(Fragment fragment) {
    FragmantClass rSum = new FragmantClass();
    getSupportFragmentManager().beginTransaction().remove(rSum).commit();
    mContent = fragment;
    getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.content_frame, fragment)
        .commit();
    getSlidingMenu().showContent();
}

原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 314
2 个回答
getSupportFragmentManager().beginTransaction().
remove(getSupportFragmentManager().findFragmentById(R.id.frame)).commit();

试试这个,它应该工作。

 public void switchContent(Fragment fragment) {
    Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.frame);
    if (oldFragment != null) {
        getSupportFragmentManager().beginTransaction()
            .remove(oldFragment).commit();
    }
    mContent = fragment;
    getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.content_frame, fragment)
        .commit();
    getSlidingMenu().showContent();
}

原文由 Thalaivar 发布,翻译遵循 CC BY-SA 4.0 许可协议

就我个人而言,我以这种方式添加和删除片段:

  if(getSupportFragmentManager().findFragmentById(R.id.container) != null) {
        getSupportFragmentManager()
                .beginTransaction().
                remove(getSupportFragmentManager().findFragmentById(R.id.container)).commit();
    }
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.container, fragment)
            .commit();

原文由 Moises Portillo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题