當用戶單擊一個片段中的ListView
中的元素時,通過接口通知偵聽器,並且它應該更改菜單旁邊的片段。使用FragmentTransaction更改片段不起作用?
我當前的代碼看起來像這樣
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的版本? – Weibo