NavigationDrawer活动与片段回调和应用程序业务逻辑混杂在一起

时间:2013-10-18 08:57:53

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

包含NavigationDrawerActivity应该兼顾它的碎片。我的问题是抽屉必须在应用程序的所有可能屏幕上都可用,这使我的唯一活动MainActivity与片段回调代码和不同类型的导航/业务逻辑混杂在一起。

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

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

所以..由MainActivity实现的监听器接口的数量增加,并且此时的数量达到20.你可能会想象它看起来或感觉不好。

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

你认为这是个坏主意吗?怎么改进?还是有更好的解决方案?

感谢。

UPD 对说明进行了细化。

2 个答案:

答案 0 :(得分:4)

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

不需要具有不同NavDrawer实现的多个Activity。你可以使用一个BaseActivity来处理NavDrawer的实现,如果你想在将来实现更多,你可以在你喜欢的每个Activity中使用它。这将遵循OOP原则并导致更清晰的代码。此外,NavDrawer在每个Activity中的外观和行为都相同。它的目的是为您的应用程序提供一个导航菜单。

扩展BaseActivity的Activity的工作是处理Fragments的事务以及通过回调与它们进行通信。

有了这个,您的应用程序的导航结构清晰,绝对是最佳选择。

你可以按照这个非常好的完整tutorial来完成这样的事情。第一眼看起来有点压倒性,但你可以得到基本的想法。

答案 1 :(得分:3)

我建议只使用一个NavigationDrawerDelegate类来处理所有导航逻辑并将其添加到您的活动中并委托给它。 一个例子很好地完成了here