【发布时间】:2013-08-07 01:44:32
【问题描述】:
当用户在一个片段中单击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,并且类的名称是正确的,如代码示例中所述。
但是,片段没有改变。我尝试用new xFragment() 替换replace 方法中的f 变量,但没有帮助。
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>
LinearLayout fragmentContainer 是片段的容器。
在启动时,我使用上面显示的相同代码,只是我将replace 更改为add 以在应用程序启动时添加正确的片段。这很好用。
怎么了?
【问题讨论】:
-
你使用的是哪个版本的android sdk?
标签: java android android-fragments