Android上的导航层次结构



我最近一直在研究Android用来移植我的iOS应用程序的导航系统,该应用程序使用包含多个UINavigationControllerUITabBarController。为了替换选项卡栏(在Android上不可用),我决定使用内置的DrawerLayout

据我所知,Android中的导航通常是通过创建一个Intent来完成的,为它提供额外的功能,然后只替换当前的活动。这会自动确保后退按钮工作,如果启用,也可以选择左上角的后退按钮。

但是,我不确定如何使用导航抽屉实现这种导航方式。本教程告诉我创建一个包含FrameLayoutListLayoutDrawerLayout,其中FrameLayout将包含实际应用程序,ListLayout将包含导航。这意味着,当我使用上面描述的方法"导航"时,它将替换活动,从而删除抽屉。

实现我想要的功能(支持后退按钮的基本导航,同时维护全局抽屉导航菜单)的最佳方式是什么?我能想到的可能选项是始终保持相同的活动并动态替换FrameLayout,但这意味着要渲染大量样板,可能还需要破解以支持后退按钮(并且不会有动画:()。另一种选择是只在每个活动上呈现抽屉(通过子类化或其他方式),但这意味着如果用户多次导航,返回按钮"堆栈"将变得相当大。

我试图尽可能详细地解释我需要什么,但很难解释这个概念。基本上,我想要一些类似于UITabBarController中的UINavigationController的东西。

您可以将一个"活动"与一个"NavigationDrawer"组合在一起,并通过在该"活动"中来回切换Fragments向用户呈现不同的视图。您可以使用FragmentManager在不同的Fragments之间切换。或者,您可以使用多个Activities,它们都有一个NavigationDrawer

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

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

你可能使用过的教程(关于行星的教程)有点误导,因为它假设了一个非常基本的应用程序结构。如果你只有一些不同的"屏幕"可以工作,那么对于一个非常复杂的应用程序来说,这是不合适的(同样,在我看来)。

我一直选择第二个选项,因为使用Activities/Intents处理导航/后台操作更容易。您可以为Intent设置大量不同的标志来影响它们的导航行为。

另请参阅此文档和该文档。这些文档可能是在NavigationDrawer模式不那么常见的时候编写的,但它们仍然很有用。

相关内容

  • 没有找到相关文章

最新更新