2016-11-10 42 views
0

我正在嘗試重新設計一些片段以從onAttach和onActivityCreated覆蓋中刪除依賴關係,而是在onViewCreated覆蓋中稍後查找Activity。Activity onCreate完成之前可以調用onViewCreated嗎?

是否有任何Android應用程序生命週期中的Activity onCreate完成之前調用了片段的onViewCreated的情況。例如,我知道:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

通常不會造成碎片onAttach被稱爲(假設片段被添加到片段經理編程以後),但在極少數情況下與配置更新的片段經理可以重新創建片段在super.onCreate中導致在onCreate之前調用onAttach以完成活動。

+0

「請從onAttach依賴和onActivityCreated」 爲什麼?這樣做的具體原因是什麼? – Sufian

+0

因爲我有一個循環依賴關係。 Activity onCreate初始化應用邏輯,該邏輯決定要創建哪個片段並創建它。但在極少數情況下,Activity onCreate super.onCreate正在重新創建片段本身(這很糟糕 - 它不知道在任何給定點上哪個片段是正確的,但無論如何)。因此,引用onAttach中的活動的片段正試圖引用尚未配置的庫,因爲庫尚未決定哪個片段甚至尚未使用。 – user3690202

+0

我認爲當Activity被重新創建時(比如在方向改變或者回到活動時),你將面臨這個問題,它將有一個參數'Bundle savedInstanceState'非空。 – Sufian

回答

0

 Fragment LifeCycle

的onCreate() 系統創建片段時調用此。在你的實現中,你應該初始化當片段暫停或停止時要保留的片段的基本組件,然後恢復。

onCreateView() 調用以創建與片段關聯的視圖層次結構。

當片段第一次繪製其用戶界面時,系統會調用它。要爲您的片段繪製UI,您必須從此方法返回一個視圖,該方法是片段佈局的根。如果片段不提供UI,則可以返回null。

參考Fragments Life Cycle

相關問題