2012-11-02 31 views
1

我需要使用不同視圖更新片段。 正如我想出的,強制Fragment :: onCreateView()方法調用(以顯示我的更新給用戶),我只能使用FragmentTransaction的方法replace(,)。 如果我在每次調用FragmentTransaction :: replace()時創建一個新的Fragment和一個從onCreateView()方法返回它的新視圖,它會很好用。 但我希望在記憶中保留一些意見。 我如何重用我的觀點?如何重新使用片段視圖獲取新片段

問題是,如果我在新片段中使用我的視圖(即已附加到已替換的片段),我會得到一個異常: 「java.lang.IllegalStateException:指定的子項已經有父項。首先調用孩子父母的removeView()。「因此,我試圖通過調用FragmentTransaction.detach()或FragmentTransaction.remove()來從片段中分離視圖,從而導致從活動中刪除片段,並從已替換的片段中刪除我的視圖,但它沒有幫助。

有誰知道如何強制片段刪除其子視圖(這是內部onCreateView()?

+2

你最好關閉Fragment中包含的視圖以保證片段本身適當地處理它。要麼有無視片段將數據發送到該片段以更新視圖或使用參數構建視圖。它更乾淨,從長遠來看,更易於維護。 – DeeV

+0

@DeeV請把它作爲答案:)因爲你完全正確。 – Warpzit

+0

好的,可以做。感覺不對,但這是答案。 – DeeV

回答

2

返回你最好保持片段內含有的片段本身適當的處理它的觀點。無論是有無形的碎片將數據發送到該片段更新視圖或建立與參數的查看,它是清潔,從長遠來看,更容易維護。

時退房Adding a Fragment without UI部分。