Android上的导航层次结构?

时间:2015-04-04 17:42:44

标签: android ios navigation

我最近一直在研究Android使用的导航系统,目的是移植我的iOS应用,该应用使用包含多个UITabBarController的{​​{1}}。要替换标签栏(在Android上不可用),我决定使用内置的UINavigationController

根据我的阅读,Android中的导航通常是通过创建DrawerLayout,为其提供附加内容然后只替换当前活动来完成的。这会自动确保后退按钮正常工作,如果启用,可以选择左上角的后退按钮。

但是,我不确定如何使用the navigation drawer实现这种导航方式。该教程告诉我创建一个Intent,其中包含DrawerLayoutFrameLayout,其中ListLayout将包含实际应用,FrameLayout将包含导航。这意味着当我使用上述方法“导航”时,它将取代活动,从而移除抽屉。

实现我想要的最佳方式是什么(在维护全局抽屉导航菜单的同时支持后退按钮的基本导航)?我可以提出的可能选项是始终保持相同的活动并动态替换ListLayout,但这意味着要渲染很多样板,并且可能需要支持后退按钮(并且没有动画) :()。另一种选择是在每个活动上渲染抽屉(通过子类或其他东西),但这意味着如果用户导航很多后退按钮“堆栈”会变得非常大。

我试图尽可能详细地解释我需要什么,但很难解释这个概念。基本上,我想要FrameLayout中与UINavigationController类似的内容。

1 个答案:

答案 0 :(得分:0)

您可以拥有一个活动,只有一个NavigationDrawer,并通过在该活动中来回切换Fragments来向用户显示不同的视图。您可以使用FragmentManager在不同的Fragments之间切换。 或者,您可以使用全部都有Activities的多个NavigationDrawer

第二种选择可能听起来更难,但实际上并非如此。您创建了一个基础Activity,您的所有活动都会继承,并且所有活动都让他们拥有自己的NavigationDrawer,没问题。

当然,介于两者之间或完全不同的东西,但这是我能想到的最直接的方法。

您可能使用过的教程(带有行星的教程)有点误导,因为它假定了一个非常基本的应用程序结构。如果你只有很少的“屏幕”可能有用,对于一个非常复杂的应用它是不适合的(在我看来)。

我一直选择第二个选项,因为使用Activities / Intents可以更轻松地处理导航/ backstack。 您可以将loads of different flags设置为Intent以影响其导航行为。

另请参阅thisthat文档。这些文档可能是在NavigationDrawer模式不是很常见但它们仍然有用时编写的。