Java 如何避免碎片重叠
我试图使用ListFragment和自定义适配器显示一个列表。每行包括一个文本视图和按钮。看起来是这样的: 单击按钮时,我希望列表中的元素发生更改。为了做到这一点,我想用另一个ListFragment替换现有的ListFragment。我的问题是,第二个片段被添加到第一个片段之上,如下所示: 以下是在自定义ArrayAdapter中单击按钮时执行的代码: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
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()
?