Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有活动的NavigationDrawer与带有片段的NavigationDrawer_Android_Android Fragments_Navigation Drawer_Android Navigation - Fatal编程技术网

Android 带有活动的NavigationDrawer与带有片段的NavigationDrawer

Android 带有活动的NavigationDrawer与带有片段的NavigationDrawer,android,android-fragments,navigation-drawer,android-navigation,Android,Android Fragments,Navigation Drawer,Android Navigation,以我目前正在使用的应用程序为例: -它有一个带有多个项目的navigationDrawer;现在有两个项目我感兴趣,我称之为X和Y 单击X和Y时,都会显示包含X元素或Y元素列表的片段 选择和x或y列表元素显示一个新的片段,在其中我显示关于所选项目的信息;x和y元素的视图片段不同 在视图片段中,我可以选择编辑出现编辑片段的特定元素 片段方法正在工作,但我花了一些时间来管理片段之间的导航。此外,我可能需要在抽屉中添加一些与X和Y类似的新项目。我的主要活动(我有抽屉并进行片段切换)已经非常密集,这

以我目前正在使用的应用程序为例: -它有一个带有多个项目的navigationDrawer;现在有两个项目我感兴趣,我称之为X和Y

  • 单击X和Y时,都会显示包含X元素或Y元素列表的片段

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

  • 在视图片段中,我可以选择编辑出现编辑片段的特定元素

片段方法正在工作,但我花了一些时间来管理片段之间的导航。此外,我可能需要在抽屉中添加一些与X和Y类似的新项目。我的主要活动(我有抽屉并进行片段切换)已经非常密集,这就引出了我的问题:我应该从片段切换到活动吗?我正在考虑在选择抽屉项目时启动一个新活动,并处理与该活动中所选项目相关的列表/查看/编辑片段,而不是处理单个活动中所有项目的所有片段


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

首先,管理片段之间的导航并不困难。你可以查一下。如果您发布代码,我可以建议您进行一些编辑

我认为这是一个糟糕的设计,有两个原因

  • 大量代码返工
  • 如果你想改变你的导航模式,比如说标签,这是不容易做到的
      我有以下几点要提交:

    • 片段方法要好得多。您应该使用片段来为用户提供更好的UI体验

    • 这样想,把你的屏幕想象成一个信息篮子,如果你有另一个篮子(即另一个屏幕),很多数据都必须用它来来回传输,那么,根据我的说法,最好在容器活动中使用两个篮子的片段。当然,可以有两个以上的篮子/屏幕

    • 没有硬性规定你应该只使用片段或活动,但谷歌表示,如果可能的话,最好使用片段

    • 通常,开发人员使用片段将相关逻辑分组在一起,这样做更好,因为它将为您尝试执行的任何操作提供逻辑分组

    • 通过容器活动和接口的帮助,在片段之间传递java数据对象也很容易。这也是一种非常模块化的方法


    • Rest取决于您希望如何定义应用程序的流。我认为在您的场景中使用片段是一种更好的方法。只要您认为关联的逻辑发生了巨大的变化,就可以使用容器活动

      我在一艘类似的船上,我使用活动方法,这样我就可以在导航视图上单击每个活动以及一组特定导航的片段。显然,我使用NavigationView,但仅用一个MainActivity管理所有这些片段确实是一项痛苦的任务

      我更喜欢每个活动在单击导航项目时管理自己的片段。这给了我更好的性能,因为我不需要担心太多片段的生命周期,它是backbackback和add/remove/show/hide地狱

      我使用下面的SO问题巧妙地使用BaseActivity实现NavigationDrawer,并与所有其他活动共享它。真正的神奇之处在于它不会复制代码,或者它不仅仅是简单的旧继承技术


      我在我的两个项目中使用了这种方法,它运行得非常好,而且我从一开始就不必处理片段管理。

      为什么要尝试发明自行车?有一种描述的方法和大量的示例。现在,您有了NavigationView,它为您提供了开箱即用的材质设计。您的主要活动应该管理导航和状态。每个片段都应该提供逻辑分离。如果你的活动中有超过100行的代码,这可能意味着你做错了什么。谢谢你的回答。我刚刚开始研究NavigationView,我可能也会处理主要的活动。再次感谢。我真的很感谢你的帮助。我将保留片段方法,并修改到目前为止我编写的代码,以便更好地在片段之间进行通信。谢谢!谢谢你的回答。我最后也做了同样的事情,因为我很难在一个单独的活动中管理目的完全不同的片段。我以您提到的BaseActivity结束,并为每组片段(列出片段、编辑片段、查看)扩展了前面的专门活动。(片段)我很高兴您提出解决方案,您可以接受这一点作为您的答案;)