2015-04-04 65 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模式并不常见但仍然有用的情况下编写的。