-1

說我有一些片段顯示和做某些事情。現在,基於某個事件,我想更改片段的屏幕(或內容)。 [編輯]更新片段在android

例如。

我的第一個佈局佈局A有一個列表視圖。而另一個佈局,佈局B有一個表格視圖。我目前在片段中顯示佈局A.在列表項單擊時,我想在同一個片段中顯示佈局B.

這是如何完成的?

謝謝。

+0

這是一個非常寬泛和普遍的問題。你可以再詳細一點嗎? – StuStirling

+0

我編輯了這個問題以包含更多細節。謝謝。 – Namratha

回答

1

如果我正確理解你的問題,這是我將如何去解決它。

我假設你已經爲你的列表片段(片段A)和視圖片段(片段B)創建了片段類。

我們可以使用fragmentManager來替換佈局視圖中的片段。

//grab fragmentManager, this will allow us to switch out fragments 
FragmentManager fragManager = getFragmentManager(); 
FragmentTransaction fragTransaction = fragManager.beginTransaction(); 

//first remove the current fragment 
fragTransaction.remove(fragManager.findFragmentById(R.id.layout_view)); 

//replace the current FragmentA with FragmentB 
fragTransaction.replace(R.id.layout_view, new FragmentB()); 

//add to backstack if you want the android back button to work properly 
fragTransaction.addToBackStack(null); 

//and lastly, we commit the changes to the fragmentManger's transaction 
fragTransaction.commit(); 

希望這會有所幫助。

+0

替換片段是否確保新片段佔用與前一片段相同的屏幕空間,或者是否依賴於佈局? – Namratha

+0

@Namratha有幾種不同的方式可以像前一樣佔用整個屏幕空間。取決於您擁有標記的初始佈局以及設置的寬度/高度以及FragmentA或FragmentB中的佈局將決定佈局大小以及是否填充整個屏幕。 – Grant

+0

我明白了。謝謝。我的片段B將被聲明在與片段A相同的XML文件中?那麼,應用程序如何知道要顯示哪個片段? – Namratha

1

我的第一個佈局,佈局A,有一個列表視圖。而另一種佈局,佈局 B有一個表格視圖。我目前在 片段中顯示佈局A.在列表項單擊時,我想要在相同的 片段中顯示佈局B.

這是如何完成的?

您可以使用新的嵌套片段API(可通過兼容包和普通片段API 16+獲得)。相反,當前Fragment持有的ListView(和你會被替換表),你就會有一個包裝Fragment,一個有作爲其視圖中的單個FrameLayout其內容。

你會創建兩個片段一個包含ListView和含有表格的佈局。最初,您將基於列表的片段添加到包裝器片段以獲取開始佈局,並在項目單擊事件中,您將使用getChildFragmentManager()將基於列表的片段替換爲基於表格的片段(全部在包裝器片段中)。