關於Fragment的總結
Fragment生命週期:

fragment生命週期圖
1.onAttach(Activity):一旦和他所植入的Acitivty結合的時候回撥;
2.onCreate(Bundle):建立初始化操作的時候回撥;
3.onCreateView(LayoutInflater, ViewGroup, Bundle):建立並返回與片段有關的檢視層次結構;
4.onActivityCreated(Bundle):告訴Fragment他的Activity完成了自己的onCreate()操作;
5.onStart():使這個Fragment顯示出來,要基於他所植入的Activity已經啟動了;
6.onResume():使這個Fragment可以與使用者互動,要基於他所植入的Activity已經在執行狀態了;
7.onPause():這個Fragment不再與使用者互動,可能因為是所植入的Activity被paused了,也可能是在所植入的Activity中有一個操作正在修改他;
8.onStop():這個Fragment不再顯示出來,可能因為是所植入的Activity被stoped了,也可能是在所植入的Activity中有一個操作正在修改他;
9.onDestroyView():允許這個Fragment清理他所佔有的檢視資源;
10.onDestroy():執行Fragment的最終清理階段;
11.onDetach():立刻與所植入的Activity斷開連線;
除了onActivityCreated以外,其餘生命週期方法都是一一對應的。
Fragment的add與replace的區別
用add方式實現fragment的效果就是:切換fragment時不會重新建立;用replace的效果就是:切換fragment時每次都會重新建立初始化。
通常fragment切換處理方式都是判斷沒有呼叫add,然後用show和hide進行切換。
getFragmentManager、getSupportFragmentManager、getChildFragmentManager理解
FragmentManager的作用是用於管理stack中的framgent。
getFragmentManager、getSupportFragmentManager其實獲取的都是Activity裡面的Fragment的管理器。getFragmentManager是Activtiy的方法
而getSupportFragmentManager是FragmentActivity的方法。
Fragment中也有FragmentManager,獲取的是這個Fragment的管理器。
getChildFragmentManager是Fragment中的方法,是在fragment巢狀fragment的第二層fragment呼叫的方法。
FragmentPagerAdapter與FragmentStatePagerAdapter的區別
FragmentPagerAdapter:儲存所有加入的fragment,雖然步長超過1的頁面會呼叫destroyItem,但是在fragment的生命週期裡,只有onDestroyView呼叫了,沒有呼叫onDestory,也沒有呼叫onDetach,所以fragment只是把上面的view銷燬了,fragment並沒有銷燬。
FragmentStatePagerAdapter:對步長以內的fragment,跟FragmentPagerAdapter一樣,不會呼叫任何銷燬操作,再次顯示也無需重新建立,對步長以外的fragment會呼叫destroyItem,跟FragmentPagerAdapter不一樣,會真正銷燬fragment。適用於頁面比較多的情況,這樣才不會耗費過多的記憶體。