我試圖替換合成佈局中的片段。這裏是我的根佈局XML:Android:替換合成佈局中的片段
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/buttons"
android:name="com.kippygo.android.touch_talker.ButtonsFragment"
android:layout_width="200dp"
android:layout_height="match_parent"
class="com.kippygo.android.touch_talker.ButtonsFragment" >
<!-- Preview: [email protected]/buttons_fragment -->
</fragment>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/buffer"
android:name="com.kippygo.android.touch_talker.BufferFragment"
android:layout_width="match_parent"
android:layout_height="80dp" >
<!-- Preview: [email protected]/buffer_fragment -->
</fragment>
<FrameLayout
android:id="@+id/grid_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/detailsElementBackground" >
</FrameLayout>
</LinearLayout>
</LinearLayout>
正如你所看到的,我有我的佈局三個方面,包含有按鈕的片段佈局的其餘部分固定的左柱垂直管理在一個TextView片段分頂部和下部分的數據網格。
我想使用通用佈局將各種GridView元素放置在「grid_frame」中,因爲我按下「按鈕」片段中的按鈕。這裏是「grid_fragment」的佈局,我想用每一個GridView的片段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/grid_fragment_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="80dp"
android:clipToPadding="true"
android:gravity="center"
android:horizontalSpacing="20dp"
android:numColumns="auto_fit"
android:orientation="vertical"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" >
<!-- Preview: [email protected]:layout/simple_list_item_2 -->
</GridView>
<TextView
android:id="@+id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="22sp"
android:textStyle="bold"
android:text="@string/no_list_items"/>
</LinearLayout>
這種複合佈局打開了罰款,當我開始我的應用程序。我把我的的FrameLayout ID「grid_frame」第一個片段,我用下面的代碼最初的活動:
// Execute a transaction to put the categoriesFragment in the grid_view
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.grid_frame, new CategoriesFragment(), "category_fragment");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
這工作完全正常,我看到在頂部,網格左側,文本輸入框我的按鈕的按鈕右側的很好填充的單元格。
當我點擊動態片段呈現的GridView中的一個列表項時,我想替換「grid_frame」FrameLayout中的片段。我這樣做是在用下面的代碼的「grid_frame」片段的onItemClick監聽器方法如下代碼:
// Execute a transaction to put the categoriesFragment in the grid_view
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.grid_frame, categoryWordsFragment, "category_words_fragment");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
它看起來非常相似,我在活動中使用,以設定精細工作的初始片段代碼。
當我這樣做時,我的整個屏幕被替換爲新的片段佈局,這是另一個具有不同數據的GridView。儘管我在replace
方法調用中將「grid_frame」FrameLayout指定爲容器視圖ID,但我的根佈局似乎完全被替換爲新片段膨脹的佈局。
我已經嘗試了一切,我可以找到使我的佈局保持不變,只是改變FrameLayout容器中的片段。
我在做什麼錯誤?
我已經爲現在由活動實現的片段添加了回調接口,以便可以在活動類中執行片段事務。這使得片段與佈局中的其他片段分離。即使我特別聲明grid_frame FrameLayout元素是片段的目標,它仍然會導致整個顯示被新的網格視圖片段替換。 –