9

以我当前正在使用的应用为例: - 它具有包含多个项目的navigationDrawer;有两个项目的利息我现在,我会打电话给他们X和Y带有活动的NavigationDrawer与带片段的NavigationDrawer

  • X和Y,当点击,显示包含X元素或y元素的列表片段

  • 选择和x或y列表元素显示一个新的片段,其中显示有关选择项目的信息;视图片段x和y的元素

  • 视图中的片段

    我可以选择编辑,它会弹出一个编辑片段

片段方法工作的特定元素的不同,但我花了一段时间来管理片段之间的导航。另外,我可能不得不在抽屉里添加一些类似于X和Y的新项目。我的抽屉和我做碎片切换的主要活动已经很密集了,这让我想到了:我应该我从碎片切换到活动?我在考虑选择抽屉项目时开始一项新活动,并处理与该活动中选定项目相关的列表/视图/编辑片段,而不是处理单个活动中所有项目的所有片段。

这是一个好主意吗?这是不好的设计?

+0

你为什么试图发明一辆自行车 - 有一种描述的方式如何做到这一点和吨的例子。如今,您拥有了NavigationView,可以为您提供开箱即用的材料设计。您的主要活动应该管理导航和状态。每个片段应该给你逻辑分离。如果你的活动中有超过100行的代码 - 这可能意味着你做错了什么。 –

+0

感谢您的回答。我刚刚开始关注NavigationView,我可能也会关注主要活动。再次感谢。 –

回答

8

我在类似的船上,我使用的是Activities方法,这种方式我有每个活动与一组特定的导航视图点击导航视图。显然,我使用NavigationView,但只用一个MainActivity管理所有这些片段实际上是一项痛苦的任务。

当我们点击一​​个导航项目时,宁愿使用EachActivity来管理它们自己的片段。这给了我一个更好的性能,因为我不需要担心很多碎片的生命周期,它是backStack并添加/删除/显示/隐藏地狱。

我用下面的SO问题来巧妙地使用实现NavigationDrawer的BaseActivity,并与所有其他活动共享它。真正的魔力在于它不重复代码,或者它不仅仅是普通的旧式继承技术。

Here's the link, do check it out

我在我的两个项目的使用这个方法,它运行得非常好再加上我没有权从一开始就处理片段管理。

+0

谢谢你的回答。我最终也做了同样的事情,因为我真的很难管理一个具有完全不同目的的单个活动片段。我最终得到了像你所提到的一样的BaseActivity,并且为每个片段组(列表片段,编辑片段,视图)扩展了先前的专门活动。片段) –

+0

我很高兴你为你的解决方案提供字体,你可以接受这个答案;) – Rinav

0

首先,管理片段之间的导航并不困难。你可以检查google's tutorial。如果您发布我可以建议你一些修改代码

,我认为它是坏的设计有两个原因

批量码返工
  • 如果你想改变你的导航模式说的标签,它不能轻易完成。
+0

您有一个有效的观点。感谢您的链接(虽然我去过很多次),并感谢您的回答。 –

3

我有以下几点提交:

  1. 片段的做法要好得多。您应该使用更好的用户体验的片段。

  2. 这样想,想象你的屏幕信息的篮子,如果你有另一个篮(I,E另一个屏幕)与大量数据将不得不被转移来来回回,然后,根据对我来说,使用两个篮子的碎片以及容器活动要好得多。当然,可以有两个以上的篮子/屏幕。

  3. 有没有硬性规定,你应该只使用片段或活动,但谷歌说,它是好得多的使用片段哪里有可能

  4. 通常,开发人员使用片段来组相关联的逻辑在一起,它是非常好做这种方式,因为它会提供的无论你正在尝试做一个逻辑分组

  5. 这也很容易通过Java数据经由容器活性和与接口帮助片段中对象。这也被认为是一种非常模块化的方法。

休息取决于您希望如何定义应用程序的流程。我认为使用片段是一种更好的方法。使用容器活动,无论您认为相关逻辑是否发生了巨大变化。

+0

我真的很感谢你的帮助。我将保留片段方法并修改我迄今为止编写的代码,以便更好地交换片段。非常感谢! –

相关问题