我有一个ListFragment:
public void fragmentSelection(Integer count) {
Fragment fr;
if (count == 0) {
fr = new Fragment1();
} else {
fr = new Fragment2();
}
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.content, fr, fr.getClass().getName());
fragmentTransaction.commit();
}
这里我试图用fr替换片段内容(取决于计数值)..
XML中的部分看起来像这样
<fragment
android:id="@+id/content"
android:name="com.test.app.DefaultContent"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
现在,当我想要替换片段&#34;内容&#34;用&#34; fr&#34;它不会以1:1替换它 - 它会将fr添加到已经存在的片段(这里是DefaultContent
) - 所以 - 它为什么不替换它?我必须做的是,它取代它而不是将fr放在当前片段之下
答案 0 :(得分:2)
您传递给replace()
的视图ID(在您的情况下为R.id.content
)必须是片段的父视图的ID,而不是原始片段本身。
这意味着您必须将android:id="@+id/content"
设置为Fragment的父级,如下所示:
<FragmentLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.test.app.DefaultContent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FragmentLayout>
或者,如果这对您不起作用,请为父级设置一个新ID,并将其用于replace()
。