Android NavigationDrawer活动充斥着片段回调和应用程序业务逻辑

Android NavigationDrawer活动充斥着片段回调和应用程序业务逻辑,android,android-fragments,android-activity,navigation-drawer,android-navigation,Android,Android Fragments,Android Activity,Navigation Drawer,Android Navigation,一个活动包含被认为是在篡改它的片段。我的问题是抽屉必须在应用程序的所有可能屏幕上都可用,这使得我唯一的活动MainActivity被片段回调代码和不同类型的导航/业务逻辑弄得乱七八糟 随着应用程序的增长,在活动中导航变得越来越困难,我开始考虑可能的替代方法。新方法必须保持与原始方法相同的视觉行为,并消除混乱 除了导航抽屉事件外,还有多个片段也包含导航/业务逻辑,这也将由MainActivity处理。例如,一个片段可能包含3个或更多按钮,这些按钮将启动其他片段或执行一些跨关注点的业务逻辑 所以。。

一个
活动
包含被认为是在篡改它的片段。我的问题是抽屉必须在应用程序的所有可能屏幕上都可用,这使得我唯一的活动MainActivity被片段回调代码和不同类型的导航/业务逻辑弄得乱七八糟

随着应用程序的增长,在活动中导航变得越来越困难,我开始考虑可能的替代方法。新方法必须保持与原始方法相同的视觉行为,并消除混乱

除了导航抽屉事件外,还有多个片段也包含导航/业务逻辑,这也将由MainActivity处理。例如,一个片段可能包含3个或更多按钮,这些按钮将启动其他片段或执行一些跨关注点的业务逻辑

所以。。MainActivity实现的监听器接口的数量不断增加,到目前为止达到了20个。你可能会想象它看起来或感觉都不好

我想我可以将事情解耦到多个活动,以简化维护。这意味着更大的资源消耗和轻微的视觉效果偏差,因为新活动只有在抽屉关闭后才会启动,这与原始方法相反,原始方法会立即改变碎片

你认为这是个坏主意吗?如何改进?还是有更好的解决办法

谢谢


UPD完善了描述。

你说过,你只有一项活动。因此,我假设所有屏幕都是应用程序中的片段。因此,默认情况下,NavDrawer在应用程序中随时可用

NavDrawer的不同实现不需要多个活动。您可以使用一个BaseActivity来处理NavDrawer的实现,通过继承,您可以在您喜欢的每一个活动中使用它,如果您想在将来实现更多。这将遵循OOP原则,并引入更干净的代码。此外,NavDrawer在每个活动中的外观和行为都相同。这就是它的目的,为你的应用程序提供一个导航菜单

扩展BaseActivity的活动的任务是处理片段的事务以及通过回调与片段的通信

有了这一点,你的应用程序的导航结构清晰明了,是一条必经之路


你可以遵循这个非常好的完整性,它做了类似的事情。乍一看,这有点让人不知所措,但您可以了解基本的想法。

我建议只使用一个NavigationDrawerDelegate类,它负责所有的导航逻辑,并将其添加到您的活动中,然后委托给它。
一个例子做得很好

我被困在这样的问题中,并将问题发布在这里>。没有尝试该解决方案,但如果它有效,您可以尝试,我不确定它是否有效。我最后只从几块碎片的屏风上打开了抽屉。说得好。视觉效果如何?我是否应该仅在抽屉关闭后才显示新活动?您将在抽屉上有单击的选项,并且可能正在启动新活动或显示其中一个片段,这不会有问题,它会在选择后自动关闭。我知道,我的意思是,活动启动动画将破坏抽屉动画。所以我必须等待——可能不是最好的决定。然后加上几秒钟的延迟,以便抽屉关闭,然后启动活动。这就是OP试图避免/寻求建议的地方<代码>它建议。。。。。。。。轻微的视觉效果偏差,因为新活动只有在抽屉关闭后才会启动,这与原始方法相反,原始方法会立即更改片段@user2558882我的答案不是抽屉中的选择,它可以启动活动和片段。无论如何,这是为了避免。这是抽屉的视觉效果或行为改变的唯一情况。我只是说,如果代码在不同的类中更结构化,那么代码就会更干净。