【问题标题】:Single activity app with Navigation Component and Navigation Drawer带有导航组件和导航抽屉的单活动应用程序
【发布时间】:2020-11-24 17:08:07
【问题描述】:
我想创建一个 Single Activity 应用程序,为简单起见仅包含以下屏幕:
登陆、登录、注册、主页、个人资料。仅当用户登录并属于导航抽屉时,主页和个人资料屏幕才会对用户可见。
不幸的是,我想到的是使用 nav_graph_1 创建一个 Activity,其中包含以下目的地:着陆、登录、注册。
然后使用 nav_graph_2(主页和个人资料目的地)创建另一个活动,其中将包含导航抽屉的所有设置:例如setupActionBarWithNavController,带有 nav_graph_2 和抽屉的 appBarConfiguration。
是否可以在 Single Activity 应用中实现上述功能以及如何实现?
【问题讨论】:
标签:
android
navigation-drawer
android-architecture-navigation
android-jetpack-navigation
android-navigation-graph
【解决方案1】:
是否可以在 Single Activity 应用中实现上述功能以及如何实现?
简短回答:是的,有可能。
长答案:
我想到的是使用 nav_graph_1 创建一个 Activity,其中包含以下目的地:着陆、登录、注册。 然后使用 nav_graph_2 创建另一个 Activity(主页和个人资料目的地) 将包含导航抽屉的所有设置
我假设您拥有单一活动模型的主要问题: 是您有一个容器,您建议将其作为您的第二个活动,因为其中包含子容器(抽屉片段) .如果您愿意,您可以这样做,但您也可以使用单个活动和多个片段,这些片段排列在级联导航图中,如下面的导航图方案所示。
- 着陆片段被视为您活动的根片段。
- 您的活动布局有一个
FragmentContainerView,可以托管登录注册和主要片段
- 用户登录后,切换到主片段
- 与主活动布局一样,主片段布局只有一个
FragmentContainerView 用于其子片段。您可以在其中为其创建一个包含主页和个人资料片段的新导航图。
这里有 2 个导航图,第一个包含 4 个片段(登陆、登录、注册和主),另一个包含 2 个片段(主页和个人资料)。
因此,在您的示例中,您有 2 个导航图:
图表 1
图表 2