這是我希望我的應用程序在平板電腦上執行的操作。 片段(0)有一定的菜單,將顯示的片段(1)...(n)的這樣的:將Android片段移動到不同的容器不能更改片段的容器ID
-----------------
| | | | |
| | | | |
|(0)| X | X | X |
| | | | |
| | | | |
-----------------
becomes
-----------------
| | | | |
| | | | |
|(0)|(1)| X | X |
| | | | |
| | | | |
-----------------
and then
-----------------
| | | | |
| | | | |
|(0)|(2)|(1)| X |
| | | | |
| | | | |
-----------------
etc...
Fragment0從不移動時,另一個則分別向右移位。碎片離開邊緣向右將被銷燬。
所以我安裝我的XML佈局與水平的LinearLayout和含4的FrameLayout用正確的ID(fragment0 ... fragment3)
我可以實例化和顯示fragment0然後片段1,但我不能移它之後的權利,我得到:
ERROR/AndroidRuntime(343): FATAL EXCEPTION: main
java.lang.IllegalStateException: Can't change container ID of fragment ...
我發現的唯一有關的問題是this one和that one,嘗試了所有沒有運氣提供了不同的解決方案。
試圖FragmentTransaction.remove()
其次.add()
,試圖.replace()
,他們嘗試以不同的順序,並通過(甚至試圖去提交兩倍有人建議)提交中途,試着撥打addToBackStack()
...仍然沒有運氣。
問題是否可以像這樣用FragmentTransaction移動片段。如果是的話,我做錯了什麼(和獎金,是否可以動畫?)。如果不是,那麼執行此操作的正確方法是什麼?
請注意,我不希望每次都重新實例化這些片段(每個都會在Web上進行一些查詢,這可能需要一些時間)。可以將所有數據提取回活動重新創建一個,但我寧願不這樣做,如果可能的話...
它不會做什麼我期待的,但我試圖改變你的代碼做...我會後,如果我能... – Matthieu
能夠做什麼,我需要.. 。無法弄清楚如何將我的更改推送到您創建的要點,所以我把它放在那裏:https://gist.github.com/4166640 – Matthieu
對不起。這是一個錯字,它應該是'LinearLayout'而不是'frag_fragaccordion.xml'中的'RelativeLayout'嗎? – midnite