9

以我當前正在使用的應用爲例: - 它具有包含多個項目的navigationDrawer;有兩個項目的利息我現在,我會打電話給他們X和Y帶有活動的NavigationDrawer與帶片段的NavigationDrawer

  • X和Y,當點擊,顯示包含X元素或y元素的列表片段

  • 選擇和x或y列表元素顯示一個新的片段,其中顯示有關選擇項目的信息;視圖片段x和y的元素

  • 視圖中的片段

    我可以選擇編輯,它會彈出一個編輯片段

片段方法工作的特定元素的不同,但我花了一段時間來管理片段之間的導航。另外,我可能不得不在抽屜裏添加一些類似於X和Y的新項目。我的抽屜和我做碎片切換的主要活動已經很密集了,這讓我想到了:我應該我從碎片切換到活動?我在考慮選擇抽屜項目時開始一項新活動,並處理與該活動中選定項目相關的列表/視圖/編輯片段,而不是處理單個活動中所有項目的所有片段。

這是一個好主意嗎?這是不好的設計?

+0

你爲什麼試圖發明一輛自行車 - 有一種描述的方式如何做到這一點和噸的例子。如今,您擁有了NavigationView,可以爲您提供開箱即用的材料設計。您的主要活動應該管理導航和狀態。每個片段應該給你邏輯分離。如果你的活動中有超過100行的代碼 - 這可能意味着你做錯了什麼。 –

+0

感謝您的回答。我剛剛開始關注NavigationView,我可能也會關注主要活動。再次感謝。 –

回答

8

我在類似的船上,我使用的是Activities方法,這種方式我有每個活動與一組特定的導航視圖點擊導航視圖。顯然,我使用NavigationView,但只用一個MainActivity管理所有這些片段實際上是一項痛苦的任務。

當我們點擊一​​個導航項目時,寧願使用EachActivity來管理它們自己的片段。這給了我一個更好的性能,因爲我不需要擔心很多碎片的生命週期,它是backStack並添加/刪除/顯示/隱藏地獄。

我用下面的SO問題來巧妙地使用實現NavigationDrawer的BaseActivity,並與所有其他活動共享它。真正的魔力在於它不重複代碼,或者它不僅僅是普通的舊式繼承技術。

Here's the link, do check it out

我在我的兩個項目的使用這個方法,它運行得非常好再加上我沒有權從一開始就處理片段管理。

+0

謝謝你的回答。我最終也做了同樣的事情,因爲我真的很難管理一個具有完全不同目的的單個活動片段。我最終得到了像你所提到的一樣的BaseActivity,並且爲每個片段組(列表片段,編輯片段,視圖)擴展了先前的專門活動。片段) –

+0

我很高興你爲你的解決方案提供字體,你可以接受這個答案;) – Rinav

0

首先,管理片段之間的導航並不困難。你可以檢查google's tutorial。如果您發佈我可以建議你一些修改代碼

,我認爲它是壞的設計有兩個原因

批量碼返工
  • 如果你想改變你的導航模式說的標籤,它不能輕易完成。
+0

您有一個有效的觀點。感謝您的鏈接(雖然我去過很多次),並感謝您的回答。 –

3

我有以下幾點提交:

  1. 片段的做法要好得多。您應該使用更好的用戶體驗的片段。

  2. 這樣想,想象你的屏幕信息的籃子,如果你有另一個籃(I,E另一個屏幕)與大量數據將不得不被轉移來來回回,然後,根據對我來說,使用兩個籃子的碎片以及容器活動要好得多。當然,可以有兩個以上的籃子/屏幕。

  3. 有沒有硬性規定,你應該只使用片段或活動,但谷歌說,它是好得多的使用片段哪裏有可能

  4. 通常,開發人員使用片段來組相關聯的邏輯在一起,它是非常好做這種方式,因爲它會提供的無論你正在嘗試做一個邏輯分組

  5. 這也很容易通過Java數據經由容器活性和與接口幫助片段中對象。這也被認爲是一種非常模塊化的方法。

休息取決於您希望如何定義應用程序的流程。我認爲使用片段是一種更好的方法。使用容器活動,無論您認爲相關邏輯是否發生了巨大變化。

+0

我真的很感謝你的幫助。我將保留片段方法並修改我迄今爲止編寫的代碼,以便更好地交換片段。非常感謝! –

相關問題