專案中對activity和fragment使用都很多,它們都能用來寫頁面,那麼什麼時候用activity,什麼時候用fragment?
關於 android,用多個 activity,還是單 activity 配合 fragment? 中提到 單activity多fragment實現,已知的坑有,activity重建時,可能導致多重fragment出現,生命週期複雜;很多專案大量使用fragment做檢視,組裝更靈活,開銷比activity小。
在fragment中監聽返回鍵事件,可以避開多重fragment重複疊加頁面的困擾。
首先fragment帶來的便利以及足以讓我們無視它可能會導致的麻煩了,而且很多麻煩都是自己使用方法不正確導致的。
畢竟相比於activity來說,建立乙個fragment所需系統資源相比activity來說更少,然而控制卻更為靈活。
fragment一般分為兩類,一類是有ui的fragment,可以作為頁面,作為view來展示,另一類是用沒有ui的fragment,一般用作儲存資料。重疊以及建立多個的問題,都是自己使用不當導致的。
封裝basefragment基類
一般專案組會分別對activity和fragment進行封裝,重寫各個生命週期方法,把公用的部分放在basefragmentactivity和basefragment中。比如設定標題欄、設定廣播監聽、設定頁面統計、新增&取消網路請求、設定顯示&隱藏載入框等。
由於fragment的oncreateview和onviewcreate要用來頁面布局,則資料的初始化、網路請求,一般在oncreate方法中,防止頁面太久都載入不出來。
public view oncreateview 這個方法中返回之前判斷一下你的mrootview是null再inflate,這樣會比較好,在viewpager中隨著頁面滑動這個方法會呼叫多次,inflate過了之後就直接用就好了。
使用靜態工廠方法newinstance(…)來獲取fragment例項
可以在google的**中發現這種寫法,好處是接收確切的引數,返回乙個fragment例項,避免了在建立fragment的時候無法在類外部知道所需引數的問題,在合作開發的時候特別有用。
還有就是fragment推薦使用setarguments來傳遞引數,避免在橫豎屏切換的時候fragment自動呼叫自己的無參建構函式,導致資料丟失。
參考**:
1、關於 android,用多個 activity,還是單 activity 配合 fragment?
Fragment 巢狀 Fragment 問題
今天又渾渾噩噩過了一天,被乙個問題困惑了一天。有時候要學會放下,先做其他的,也許下班回去就能想到解決方法呢。苦苦找問題,還是沒找到。問了老同學,一句解決了。大神啊。其實我遇到的就是fragment巢狀fragment的問題。這樣一搜答案就出來了,這裡也提醒一下自己,找到問題,再去解決問題。把解決方法...
fragment與activity之間的跳轉實現
fragment中文譯為碎片,與fragmentlayout幀布局搭配使用,它是activity的一部分,是分割出來顯示檢視的,展示頁面的,是輕量級的。fragment是3.0以後出現的,是google為平板專門分割出來的,後來開發者發現這個東西非常好用就遷移到手機上了。下面具體介紹一下fragme...
fragment與activity之間的通訊
contentfragment cf contentfragment getactivity getfragmentmanager findfragmentbyid r.id.content fg cf.showpro name 2 在fragment中定義乙個介面 inte ce cat cat ...