天天看點

android開發—Fragment中onCreateView()和onActivityCreated()的差別

在編寫Fragment時,在onCreateView()方法中啟動了一個初始化自定義View的方法 initView(),但是調試時就崩潰,列印日志發現是這裡出了問題,就将這個方法放到了onActivityCreated()方法中啟動,就沒有再崩潰過,不明白為什麼,查詢API和資料後總結如下: 

書上的講解是: 

onCreateView():每次建立、繪制該Fragment的View元件時回調該方法,Fragment将會顯示該方法傳回的View元件。 

onActivityCreated():當Fragment所在的Activity被啟動完成後回調該方法。

API: 

android開發—Fragment中onCreateView()和onActivityCreated()的差別
android開發—Fragment中onCreateView()和onActivityCreated()的差別

而上文出現的問題是這樣的: 

①靜态的view不需要onActivityCreated 

②儲存view的狀态的時候需要用onActivityCreated 

③通路父activity的view層的時候需要在onActivityCreated 方法裡面做 

即如果view是靜态的,那麼沒有必要在onActivityCreated 方法去調用,大多數的自定義的view,初始化時都需要一個context,而activity是context的子類,是以在onCreateView方法的時候非靜态的view初始化調用可能出現異常,是以對于非靜态的view,最好在onActivityCreated方法調用 

參考了以下兩篇部落格: 

<a href="http://blog.csdn.net/lxl403853563/article/details/49800231">http://blog.csdn.net/lxl403853563/article/details/49800231</a>

    本文轉自 一點點征服   部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/5591988.html,如需轉載請自行聯系原作者

繼續閱讀