【问题标题】:Proper structure of an Android app with a navigation drawer带有导航抽屉的 Android 应用程序的正确结构
【发布时间】:2023-03-14 12:53:01
【问题描述】:

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

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

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

【问题讨论】:

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

标签: android android-fragments android-activity navigation-drawer


【解决方案1】:

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

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


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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多