带有导航抽屉的 Android 应用程序的正确结构

Posted

技术标签:

【中文标题】带有导航抽屉的 Android 应用程序的正确结构【英文标题】:Proper structure of an Android app with a navigation drawer 【发布时间】:2014-05-06 21:09:20 【问题描述】:

我正在构建一个 android 应用程序,我有一个关于最佳结构的问题。我正在使用Navigation Drawer UI,似乎Android 推动您为与导航抽屉中的列表项关联的每个视图使用fragment

这似乎很快变得复杂,我的每个片段都会有几个片段(为了可重用性)。片段交互监听器需要与Activity 通信,但我所涉及的唯一Activity 是包含我的导航抽屉的那个。我不希望有很多听众链接回 Activity - 理想情况下我希望他们链接到他们的父片段。

我已经有一段时间没有进行 Android 开发了,我想确保我以正确的方式进行开发。有人知道处理这个问题的最佳方法吗?

【问题讨论】:

developer.android.com/training/implementing-navigation/… 阅读了一些最佳实践。不要沉迷于设计,因为将活动重构为碎片并不是什么大不了的事。 IMO 进入 nav-drawer 和相关片段的唯一粘性区域是处理方向更改和返回堆栈。 我想答案将取决于您将如何将片段嵌套在其他片段中。听起来对我来说有些不寻常。至于良好的做法,我将开始制作一个 AbstractNavDrawerActivity 类,封装 nav-drawer 代码,并从中扩展您的活动。这将帮助您专注于与片段的通信,而不会被属于导航抽屉逻辑的代码堆分心。 【参考方案1】:

如果您想要嵌套片段,我建议您使用包装片段。 This wrapper fragment will be called when an item in the navigation drawer is selected.在这个包装片段内,将显示其他片段。这样,您可以从一个片段内的导航抽屉中的该项目执行所有操作。在包装片段中,您使用getChildFragmentManager() 来允许嵌套片段。

此外,如果您想在导航栏中添加内容,您应该这样做:https://***.com/a/20189260/2767703。


这当然是很多工作,所以这里有一个替代方案:

大部分时间片段是使用导航抽屉的方式,但如果您的应用程序变得非常大,我建议您改用活动。

要使用我已经在其他地方写过答案的活动:https://***.com/a/19451842/2767703。

这是我关于如何在多个活动中使用导航抽屉的答案,如果您的应用程序很大,我认为这是最好的方法。

【讨论】:

以上是关于带有导航抽屉的 Android 应用程序的正确结构的主要内容,如果未能解决你的问题,请参考以下文章

Android - 为带有导航抽屉和应用栏的应用完全隐藏状态和导航栏

带有许多片段的 Android 导航抽屉

带有导航抽屉的 Android 文件管理器

在 Android 中创建带有导航抽屉的汉堡菜单

带有嵌套片段的导航抽屉 (ViewPager)

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中