我已经看到了一些关于这个主题的问题(例如:https://github.com/jfeinstein10/SlidingMenu/issues/5),但我仍然不清楚。我希望有人可以澄清一下。
上下文:
请参阅https://github.com/jfeinstein10/SlidingMenu
我有一个Android应用程序,通过活动和片段组织屏幕(即)每个屏幕是包含一个或多个片段的活动。 新要求是添加一个滑动菜单(类似于该库提供的)。
问题:
从示例和讨论中可以看出,正确的模型只有1个主要活动,然后切换/切出属于不同屏幕的片段。事实上,作者在上面的帖子中提到:“如果你根据列表选择启动活动,那么你就不会有交换你正在谈论的视图的行为。”还有“你不能将一个Activity放到上面的视图中。当你想到一个Activity是什么时,这没有任何意义。“
为什么不合理?显然,我在这里忽略了这一点。
问题:
鉴于我的项目已经包含多个活动(一个对应于每个屏幕),那么我唯一的选择就是重新组织项目以获得JUST 1 MAIN ACTIVITY,以便使用这个库?或者,当单击滑动菜单中的列表项时,是否有任何方法可以启动新活动,并且仍然可以观察滑动菜单行为,[编辑 - 添加最后一部分更清晰]或换句话说,在我现有的应用程序设计中如何使用此库。
提前致谢
答案 0 :(得分:4)
首先,您不能在另一个内部使用Activity
,并且活动与docs中所述的观看完全不同:
活动是用户可以做的一件重点事。
现在,要回答您的问题,这一切都取决于您希望应用的行为方式。您可以使用滑动菜单实现活动onClosedListener
并从那里切换到所选活动。这将为您提供在切换活动之前关闭菜单的动画。它也会给你带来奇怪的效果,因为每次从菜单中选择一些东西,你都会看到一个新活动的动画出现在前面。
我认为最好的方法是在所有滑动菜单选项之间设置“共同目的”。例如,在我的一个项目中,我必须允许用户在不同类型数据的列表之间进行选择。当用户从菜单中选择任何内容时,我会在右上角加载一个新的列表片段,在那里他可以选择要查看或编辑的项目。这是应用程序入口点,也是我在我的应用程序中有一个滑动菜单的唯一地方。对于实现此UI设计模式的每个应用程序,它几乎相同。查看google +,current和youtube,侧边菜单可让您选择要显示的Feed或内容。一旦用户做出选择,只需打开所选项目的新活动(g +帖子,视频,新闻文章,推文或其他任何内容)。
您的应用不必拥有使用滑动菜单的不同数据或类似内容的列表,但请记住,使用滑动菜单的活动应该在其功能和目的方面具有明确,重点突出的目标。有一个滑动菜单,因为许多其他应用程序有一个是一个糟糕的选择,你应该使用它与特定的目标。另请注意,在任何地方应用滑动菜单都会干扰平台的navigation pattern并导致整体糟糕的用户体验,因为它不会像其他应用一样。
答案 1 :(得分:2)
将Activity放入上面的视图是没有意义的,因为Activity是每个屏幕视图的主控制器。活动还显示视图并跟踪碎片(这些碎片又是迷你控制器,有或没有自己的视图)。因此,在上面的视图中放置一个Activity意味着你将一个Activity放在一个Activity中......这是不可能的。
从我的文本中我可以得出,我认为再次阅读有关活动和片段的Android开发人员指南(http://developer.android.com/guide/components/activities.html)以更好地理解Android的概念是如何运作的。 / p>
现在回答你的问题:
我不清楚你想要实现什么,但是如果你想要你的应用程序,菜单的行为就像是Google+应用程序,那么实现它的一种方法是实现扩展Activity类的基类(或者什么曾经在你的项目中使用Activity)并让基础设置SlidingMenu。然后,您可以在每个应该有菜单的活动中简单地扩展您的基本活动。
你也可以按照描述它的方式来做,但最后你会得到一个神对象的经典例子(http://en.wikipedia.org/wiki/God_object)。这是练习你的片段杂耍技巧和在片段之间切换而不是开始新活动的一种巧妙的方式确实有它的用例,但我仍然不建议它用于具有多个视图的项目。
答案 2 :(得分:1)
以下是与我遇到的问题最接近的答案 - http://www.verious.com/article/polishing-the-sliding-app-menu/。向下滚动到页面底部,查看标题为“在活动之间使用直接进入应用程序菜单”的最后一节。如果您在现有应用程序中有很多活动并且希望避免大量重新分解,那么这是一个选项。我还没有尝试过,但值得注意的是。