看板 AndroidDev 關於我們 聯絡資訊
說實在Andrid 3.0真的是個半完成品,我找了好幾篇討論fragment怎麼處理螢幕旋轉,都 只看到一堆只能歸類為workaround的東西。 在xml裡面寫<fragment>然後直接setContentView只會吃Error,和你說fragment已經被創 造了這樣。所以如果你的port/land的layout是分開的,需要override onConfigureChanged來重新setContentView的話,xml裡根本不能用<fragment>。你需要 用<FrameLayout>以後,自行利用FragmentTransaction把Fragment加進去。 當你旋轉螢幕,呼叫setContentView時Fragment的生命週期不會有任何變動(on系列的 method全部不會被call),但是由於FrameLayout的instance變了,你在螢幕上是看不到 Fragment的。 此時如果你想重新add Fragment,就會吃到Fragment already added的錯誤。所以你需要 先把他remove掉後重新add,此時他的生命週期會跑: onPause onStop onDestroyView onCreateView onActivityCreated onStart onResume 你可以看到他跑了onDestroyView,所以你本來在裡面的東西就通通消失重新再來。但是 Fragment instance本身是沒有變動的,所以你可以先在onStop把你要的東西救出來保存 在field裡面,然後在onStart重新加回去或做其他處理。 -- 聽說把blog分類比較有人看 ._.a 主(雜)blog http://urakagi.blogspot.com/ 日文blog http://urakagij.blogspot.com/ 英文blog http://urakagie.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.92.60.63
tomap41017:推 06/09 14:41
lovelycateye:掃雷部隊總是要推一下的 06/11 08:43
nowar100:Push 辛苦你了 06/11 10:05