7

包含NavigationDrawerActivity應該與其片段混雜在一起。我的問題是抽屜必須在應用程序的所有可能的屏幕上可用,這使得我唯一的活動MainActivity非常混亂的片段回調代碼和不同種類的導航/業務邏輯。NavigationDrawer活動與片段回調和應用程序業務邏輯混雜

隨着應用程序的增長,它變得更難以瀏覽整個活動,我開始考慮可能的替代方法。新方法必須保持與原始相同的視覺行爲並消除混亂。

除了導航抽屜事件之外,還有多個片段也包含導航/業務邏輯,這也是由MainActivity處理的。例如,一個片段可能包含3個或更多按鈕,這些按鈕可以啓動其他片段或執行一些交叉關注的業務邏輯。

因此,由MainActivity實現的監聽器接口的最終數量增長,並且截至此刻爲止。您可能會認爲它看起來不舒服或感覺不舒服。

我想我可能會將事情分解爲多個NavigationDrawer活動以簡化維護。它表明較大的資源消耗和輕微的視覺效果偏差,因爲新的活動只有在抽屜關閉後纔會啓動,與原來的方法立即改變碎片相反。

你認爲這是一個壞主意嗎?如何改進?或者有更好的解決方案?

謝謝。

UPD細化描述。

+0

我被困在這樣的問題和發佈問題在這裏> http://stackoverflow.com/questions/17779915/open-android-navigation-drawer-from-an-activity-class 。沒有嘗試解決方案,但你可以嘗試,如果它的工作,我不知道它是否工作。我最終只從幾塊碎片打開抽屜。 –

+0

公平點。視覺效果怎麼樣 - 我應該在抽屜關閉後才顯示新的活動嗎? – midnight

+0

您將在抽屜上選擇點擊並可能啓動新活動或顯示其中一個片段,這不會成爲問題,它會在選擇時自動關閉。 –

回答

4

你說,你只有一個活動。所以,我認爲所有屏幕都是應用程序中的碎片。因此,NavDrawer在默認情況下隨時可以在您的應用程序中使用。

不需要多個具有不同NavDrawer實現的活動。您可以使用一個BaseActivity來處理NavDrawer的實現,如果您希望在未來實現更多功能,那麼您可以在每個您喜歡的活動中使用它。這將遵循OOP原則並導致更清晰的代碼。此外,NavDrawer的外觀和行爲在每個活動中都相同。這是它的目的,爲您的應用程序有一個導航菜單。

擴展BaseActivity的Activity的工作是處理碎片的事務以及通過回調與它們進行通信。

有了這個你的應用程序的導航清晰的結構,並明確的路要走。

你可以按照這個非常好的完成tutorial這樣做。第一眼看起來有些壓倒,但你可以得到基本的想法。

+2

這是OP試圖避免/尋求建議的原因。 「這暗示着......輕微的視覺效果偏差,因爲新的活動只有在抽屜關閉之後纔會啓動,與原先的方法相反,這會立即改變碎片。 – Vikram

+0

@ user2558882我的回答不是關於抽屜裏的選擇,它可能會同時啓動活動和片段。無論如何,這是爲了避免。這是抽屜的視覺效果或行爲會改變的唯一情況。我只是說如果代碼更多地在不同的類中結構化,代碼將更清晰。 –

3

我會建議只需要一個NavigationDrawerDelegate類,它負責處理所有的導航邏輯並將其添加到您的活動中,並將其委託給它。 一個很好的例子here