提问人:Ionut Ciuta 提问时间:9/7/2015 更新时间:10/5/2015 访问量:8738
带有活动的 NavigationDrawer 与带有片段的 NavigationDrawer
NavigationDrawer with Activities vs. NavigationDrawer with Fragments
问:
以我目前正在开发的应用程序为例: - 它有一个包含多个项目的 navigationDrawer;现在有两个项目我感兴趣,我称它们为 X 和 Y。
单击 X 和 Y 时,都会显示一个包含 x 元素或 y 元素列表的片段
selecting 和 x 或 y list 元素显示一个新片段,我在其中显示有关选择项的信息;X 和 Y 元素的视图片段不同
在视图片段中,我可以选择编辑特定元素,从而弹出编辑片段
片段方法有效,但我花了一段时间来管理片段之间的导航。此外,我可能不得不在抽屉中添加一些类似于 X 和 Y 的新物品。我的主要活动,我有抽屉,我做片段切换,已经很密集了,这让我想到了我的问题:我应该从片段切换到活动吗?我正在考虑在选择抽屉项目时开始一个新活动,并处理与该活动中的所选项目相关的列表/查看/编辑片段,而不是处理单个活动中所有项目的所有片段。
这是个好主意吗?是糟糕的设计吗?
答:
首先,管理片段之间的导航并不困难。您可以查看谷歌的教程。如果您发布代码,我可以建议您进行一些编辑
我认为这是糟糕的设计,原因有两个
- 大量代码返工
- 如果要更改导航模式以显示选项卡,则不容易完成。
我有以下几点要提交:
片段方法要好得多。应使用片段为用户提供更好的 UI 体验。
这样想,把你的屏幕想象成一个信息篮子,如果你有另一个篮子(即另一个屏幕),那么,根据我的说法,最好将两个篮子的片段与容器活动一起使用。当然,可以有两个以上的篮子/屏幕。
没有硬性规定你应该只使用片段或活动,但谷歌说,在可能的情况下使用片段要好得多。
通常,开发人员使用片段将关联的逻辑组合在一起,这样做要好得多,因为它将提供您尝试执行的任何操作的逻辑分组。
通过容器活动和接口在片段之间传递 java 数据对象也很容易。这也被认为是一种非常模块化的方法。
其余部分取决于您希望如何定义应用程序的流程。我认为在您的方案中使用片段是一种更好的方法。在您认为关联的逻辑已发生巨大变化的任何地方使用容器活动。
评论
我在类似的船上,我使用了 Activities 方法,这样我就可以让每个 Activity 都带有一组片段,用于单击 NavigationView 上的特定导航。显然,我使用的是 NavigationView,但仅使用一个 MainActivity 管理所有这些片段确实是一项痛苦的任务。
我更喜欢 EachActivity 在我们单击导航项时管理自己的片段。这给了我更好的性能,因为我不需要担心这么多片段的生命周期,而且它是 backStack 和添加/删除/显示/隐藏地狱。
我使用以下 SO 问题巧妙地使用实现 NavigationDrawer 的 BaseActivity,并将其与所有其他 Activity 共享。真正的魔力在于它不会重复代码,或者它不仅仅是普通的旧继承技术。
我在我的两个项目中使用了这种方法,它运行得很好,而且我不必从一开始就处理片段管理。
评论