2015-04-04 96 views
0

我最近一直在研究Android使用的導航系統,意在移植使用UITabBarController的iOS應用程序,其中包含多個UINavigationController。要替換標籤欄(Android上不可用),我決定使用內置的DrawerLayoutAndroid上的導航層次結構?

從我讀過的內容來看,Android中的導航通常是通過創建一個Intent來完成的,它提供額外功能,然後替換當前活動。這會自動確保後退按鈕可用,並且可以選擇左上角的後退按鈕(如果啓用)。

但是,我不知道如何實現這種與the navigation drawer導航的方式。本教程告訴我創建一個DrawerLayout,其中包含FrameLayoutListLayout,其中FrameLayout將包含實際應用程序,而ListLayout將包含導航。這意味着當我使用上述方法「導航」時,它將取代活動並因此取出抽屜。

什麼是最好的方式來實現我想要的(帶有後退按鈕支持的基本導航,同時保持全局抽屜導航菜單)?我可以提出的可能選項始終保持相同的活動並動態替換FrameLayout,但這意味着需要渲染大量樣板並可能需要黑客來支持後退按鈕(並且不會有動畫:()。另一種選擇是在每個活動上渲染抽屜(通過子類化或其他),但這意味着如果用戶導航很多,後退按鈕「堆棧」將變得相當大。

我試過基本上,我想要類似於UITabBarController中的UINavigationController

+0

我建議使用android工作室模板的應用程序與導航抽屜,您可以使用片段作爲主要組件來顯示內容。後退按鈕的行爲是可定製的,您不必將每個碎片事務提交給後臺堆棧。 – dominik4142 2015-04-04 17:55:24

回答

0

你可以有一個活動與一個NavigationDrawer,並通過在該一個活動內來回切換Fragments來向用戶呈現不同的視圖。您可以使用FragmentManager在不同的Fragments之間切換。 或者您可以使用多個Activities,它們都具有NavigationDrawer

第二種選擇可能聽起來更困難,但實際上並非如此。你創建一個基地Activity,你的所有活動繼承和所有讓他們有自己的NavigationDrawer,沒問題。

當然,在兩者之間還是有些東西完全不同,但這是我能想到的最直接的方法。

您可能使用過的教程(帶有行星的教程)是imho有點誤導,因爲它假設了一個非常基本的應用程序結構。如果你只有一些不同的'屏幕'可能工作,對於一個非常複雜的應用程序,這是不合適的(再次,在我看來)。

我一直選擇第二種選擇,因爲使用活動/ Intents來處理導航/後臺堆棧更簡單。 有loads of different flags,你可以設置爲你的Intent來影響他們的導航行爲。

另請參閱thisthat文檔。這些文檔可能是在NavigationDrawer模式並不常見但仍然有用的情況下編寫的。