Java 如何避免碎片重叠

Java 如何避免碎片重叠,java,android,android-fragments,android-listfragment,Java,Android,Android Fragments,Android Listfragment,我试图使用ListFragment和自定义适配器显示一个列表。每行包括一个文本视图和按钮。看起来是这样的: 单击按钮时,我希望列表中的元素发生更改。为了做到这一点,我想用另一个ListFragment替换现有的ListFragment。我的问题是,第二个片段被添加到第一个片段之上,如下所示: 以下是在自定义ArrayAdapter中单击按钮时执行的代码: public void onClick(View view) { //Some unrelated stu

我试图使用ListFragment和自定义适配器显示一个列表。每行包括一个文本视图和按钮。看起来是这样的:

单击按钮时,我希望列表中的元素发生更改。为了做到这一点,我想用另一个ListFragment替换现有的ListFragment。我的问题是,第二个片段被添加到第一个片段之上,如下所示:

以下是在自定义ArrayAdapter中单击按钮时执行的代码:

public void onClick(View view) {
                //Some unrelated stuff

                //I want to replace the old ListGeneratedFragment by a new one
                ListGeneratedFragment fragment = new ListGeneratedFragment();
                ((MainActivity)getContext())
                        .getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.main_list_meals, fragment)
                        .commit();
            }
});

我已经在我的代码的其他部分使用了相同的技术,它工作得非常完美。我不明白为什么这里没有替换旧片段。

您的第一个片段也在
R.id.main\u list\u
容器中吗?第一个片段是如何添加到容器中的?是的,第一个片段也在R.id.main\u list\u容器中。它是使用getChildFragmentManager().beginTransaction.replace(…).commit()添加的,因此它是以相同的方式添加的,但在这种情况下它不起作用。在一种情况下,您使用的是活动的
getSupportFragmentManager()
另一种情况是,您使用的是一个完全不同的
片段管理器
,您使用的是某个父片段的
getChildFragmentManager()