我最近一直在研究Android使用的导航系统,目的是移植我的iOS应用,该应用使用包含多个UITabBarController
的{{1}}。要替换标签栏(在Android上不可用),我决定使用内置的UINavigationController
。
根据我的阅读,Android中的导航通常是通过创建DrawerLayout
,为其提供附加内容然后只替换当前活动来完成的。这会自动确保后退按钮正常工作,如果启用,可以选择左上角的后退按钮。
但是,我不确定如何使用the navigation drawer实现这种导航方式。该教程告诉我创建一个Intent
,其中包含DrawerLayout
和FrameLayout
,其中ListLayout
将包含实际应用,FrameLayout
将包含导航。这意味着当我使用上述方法“导航”时,它将取代活动,从而移除抽屉。
实现我想要的最佳方式是什么(在维护全局抽屉导航菜单的同时支持后退按钮的基本导航)?我可以提出的可能选项是始终保持相同的活动并动态替换ListLayout
,但这意味着要渲染很多样板,并且可能需要支持后退按钮(并且没有动画) :()。另一种选择是在每个活动上渲染抽屉(通过子类或其他东西),但这意味着如果用户导航很多后退按钮“堆栈”会变得非常大。
我试图尽可能详细地解释我需要什么,但很难解释这个概念。基本上,我想要FrameLayout
中与UINavigationController
类似的内容。
答案 0 :(得分:0)
您可以拥有一个活动,只有一个NavigationDrawer
,并通过在该活动中来回切换Fragments
来向用户显示不同的视图。您可以使用FragmentManager
在不同的Fragments
之间切换。
或者,您可以使用全部都有Activities
的多个NavigationDrawer
。
第二种选择可能听起来更难,但实际上并非如此。您创建了一个基础Activity
,您的所有活动都会继承,并且所有活动都让他们拥有自己的NavigationDrawer
,没问题。
当然,介于两者之间或完全不同的东西,但这是我能想到的最直接的方法。
您可能使用过的教程(带有行星的教程)有点误导,因为它假定了一个非常基本的应用程序结构。如果你只有很少的“屏幕”可能有用,对于一个非常复杂的应用它是不适合的(在我看来)。
我一直选择第二个选项,因为使用Activities / Intents
可以更轻松地处理导航/ backstack。
您可以将loads of different flags设置为Intent
以影响其导航行为。