当用户单击ListView
一个片段中的元素时,会通过一个界面通知侦听器,并且它应该更改菜单旁边的片段。
我当前的代码看起来像这样
Fragment f = null;
switch(fragmentId) {
case 0:
f = new xFragment();
break;
case 1:
f = new yFragment();
break;
...
}
System.out.println(f.getClass().getName()); // Prints the name of the class correctly
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, f);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
当我从菜单中选择某个选项时,将调用包含片段的活动中的此函数。fragmentId
如代码示例中所述,它正确打印了并且类的名称是正确的。
但是,片段没有改变。我试图替换方法f
中的变量,但没有帮助。replace
new xFragment()
XML 布局文件看起来像这样。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/menuFragment"
android:layout_width="300dp"
android:layout_height="match_parent"
android:name="fi.peltoset.mikko.home.Navigation" />
<LinearLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
LinearLayoutfragmentContainer
是片段的容器。
在启动时,我使用与上面显示的相同的代码,只是我更改replace
为add
在应用程序启动时添加正确的片段。这工作正常。
怎么了?