2015-06-03 77 views
1

我有一個疑問,希望澄清有關持有多個片段的活動的一些觀點。從Android中的一個活動中加載多個片段

我有10個片段附加一個活動(HomeActivity.java);本次活動包含一個導航抽屜,多個圖標,如搜索工具欄,添加,刪除,返回鍵等

這我下面的結構如下,

用戶點擊的導航抽屜裏的任何項目,我加載片段,

fragmentManager.beginTransaction().replace(R.id.fragment_container, fragmentToLoad, tagFragment).addToBackStack(tagFragment).commit(); 

fragmentToLoad - >片段的名稱,tagFragment - >標記該特定片段。

我正在改變標題名稱,工具欄根據HomeActivity本身的片段。

我的導航抽屜項目只有一個片段,並在fragment_container中被替換,但有一件事也存在,即這些片段也具有內部子片段。

在開始時,我說有10個片段,這10個片段是導航抽屜項目。有許多內在的煎爐。

現在,我使用接口(監聽器)在HomeActivity.java本身中進行內部片段的點擊監聽器和其他活動。

所以有時我會發出警告「主線程上有很多工作要做」。

我知道有很多活動正在進行HomeActivity.java。

請告訴我這個架構是錯誤的或有任何解決方案。

+0

你可以使用像這樣的片段......但通常不推薦使用這種片段,因爲最終會出現一個真正臃腫的「超級活動」。首先,片段更能幫助開發平板電腦 - 避免重寫或複製巨大的代碼片段以進行平板電腦佈局。 考慮根據用例將你的碎片分離成活動。 – Zadrox

+0

您應該考慮從片段移動到自定義視圖。我不知道您收到的警告是否與您的應用程序架構相關,但過度使用碎片確實無濟於事。 https://corner.squareup.com/2014/10/advocating-against-android-fragments.html – pawelo

+0

另外,如果您有一些時間,請仔細閱讀Google IO 2014 iosched源代碼 - https:// github。 COM /谷歌/ iosched。這是如何組織Android應用的一個很好的例子。 – Zadrox

回答

0

我不會說你的架構是錯誤的。相反,我會說,通過使用單箇中心活動來處理這麼多的片段,您正在爲自己維護和調試該活動非常困難。

就警告信息而言,它取決於跳過的幀數(在日誌中'主線程中有大量工作正在進行'之前打印的內容)。我相信如果這個數字是大約100,那麼它確實不應該是一個令人嚴重關切的問題。請通過this SO answer進行完整說明!希望有所幫助。

相關問題