如何在转换到下一个片段后删除片段

时间:2018-05-22 16:15:40

标签: android fragment

我使用片段如下:

 img_home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ft = fragmentManager.beginTransaction();
            ft.replace(R.id.freamlayout,fragment_home);
            ft.remove(fragment_setting);
            ft.commit();
        }
    });

    img_setting.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ft = fragmentManager.beginTransaction();
            ft.remove(fragment_home);
            ft.replace(R.id.freamlayout,fragment_setting);
            ft.addToBackStack(null);
            ft.commit();
        }
    });

但是当转换到片段2时,保留片段1 如何解决?

IMG1:

img1

IMG2:

img2

2 个答案:

答案 0 :(得分:0)

您只需要调用replace(),它同时执行这两项操作:

删除添加的片段,并添加您传递的新片段作为第二个参数。

请参阅: FragmentTransaction replace

答案 1 :(得分:0)

我在documentation中可以看到fragmentTransaction.replace()

  

替换添加到容器的现有片段。这是   与当前所有人调用remove(Fragment)基本相同   添加了使用相同containerViewId添加的片段   add(int,Fragment,String)与此处给出的参数相同。

检查

  • 请确保您使用的是v4片段,因为app fragments已在android P中删除。

最简单的方法

如果没有任何作用,请将背景放在两个片段布局的父节点上。所以旧的片段不会出现在这背后。