碎片彼此堆叠

时间:2018-12-16 13:39:51

标签: android android-fragments

我对片段有问题。在我的xml文件中,已经在其中设置了一个片段,我想单击按钮将其替换为另一个片段。因此,使用我的代码,我可以单击按钮,将片段替换为想要的片段,但是第一个片段不会消失,因此我仍然可以在第二个片段下看到它,代码就是这样:

public class MainActivity extends AppCompatActivity {
FragmentManager fragmentManager;
Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      button = findViewById(R.id.button);
      button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {

              fragmentManager = getSupportFragmentManager();

              FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
              fragmentTransaction.replace(R.id.fragment,new BlankFragment2());
              fragmentTransaction.addToBackStack(null).commit();
          }
      });
    }    
}

3 个答案:

答案 0 :(得分:0)

删除addToBackStack(null)

存储片段并使其保持连接状态,以便调用popBackStack()将删除顶部的片段,并将其替换为前一个片段。

答案 1 :(得分:0)

设置第二个片段的根布局的背景色,并将clickable和focusable true放入xml文件。当显示另一个片段时,它将使第一个片段消失,并禁用第一个片段的点击。

答案 2 :(得分:0)

正确实现addToBackStack在这种情况下以及其他许多情况下都将有所帮助 addToBackStack带有一个称为任务记录TAG的参数,要稍后再执行事务,您可以使用此标记将返回堆栈移除到一个点

要了解更多信息,请阅读 https://medium.com/@bherbst/managing-the-fragment-back-stack-373e87e4ff62