我对片段有问题。在我的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();
}
});
}
}
答案 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