8

I have seen a few questions raised on this topic (for e.g.: https://github.com/jfeinstein10/SlidingMenu/issues/5) but I am still unclear. I hope somebody can clarify this.

Context:

See https://github.com/jfeinstein10/SlidingMenu

I have an android app that organizes screens by activities and fragments (i.e.) each screen is an activity containing one or more fragments. The new requirement is to add a sliding menu (similar to what this library provides).

Issue:

It appears from the examples and discussion that the right model would be to have just 1 MAIN ACTIVITY that will then switch in/out fragments belonging to the different screens. In fact the author mentions in the above thread: "If you were to launch Activities based upon the list selection, then you would not have the behavior where you swap the views that you're talking about. " and also "You can't put an Activity into the above view. That doesn't really make sense when you think about what an Activity is. ".

Why doesn't it make sense? Obviously, I am missing the point here.

Question:

Given that my project already contains multiple activities (one corresponding to each screen), is my only option then to re-organize the project to have JUST 1 MAIN ACTIVITY, in order to use this library? Or alternatively, is there any way to launch a new activity when a list item in the sliding menu is clicked, and still observe the sliding menu behavior, [EDIT- added the last part to be more clear] or in other words, on how exactly to use this library within my existing app design.

Thanks in advance

4

3 回答 3

4

首先,您不能拥有另一个内部,并且活动与文档Activity中所述的视图完全不同:

活动是用户可以做的一个单一的、有重点的事情。

现在,要回答您的问题,这完全取决于您希望应用程序的行为方式。您可以使用滑动菜单实现您的活动并onClosedListener从那里切换到所选活动。这将为您提供在切换活动之前关闭菜单的动画。它还会给你一种奇怪的效果,因为每次你从菜单中选择一些东西时,你都会看到一个新活动的动画出现在前面。

我认为最好的方法是在所有滑动菜单选项之间有一个“共同目的”。例如,在我的一个项目中,我必须允许用户在不同类型的数据列表之间进行选择。当用户从菜单中选择任何内容时,我会在右上角加载一个新的列表片段,他可以在其中选择他想要查看或编辑的项目。那是应用程序入口点,也是我的应用程序中有一个滑动菜单的唯一地方。对于实现此 UI 设计模式的每个应用程序来说,它几乎都是一样的。查看 google+、currents 和 youtube,其中的侧边菜单可让您选择要显示的提要或内容。一旦用户做出选择,只需为所选项目(g+ 帖子、视频、新闻文章、推文或其他任何内容)打开一个新活动。

您的应用程序不必具有不同数据的列表或类似的东西来使用滑动菜单,但请记住,使用滑动菜单的 Activity 应该就其功能和目的有一个明确、集中的目标。因为许多其他应用程序都有滑动菜单,所以使用滑动菜单是一个糟糕的选择,您应该将其用于特定目标。还要记住,在任何地方都应用滑动菜单会干扰平台的导航模式并导致整体糟糕的用户体验,因为它不会像其他应用程序那样运行。

于 2013-03-13T19:16:49.350 回答
2

在上面的视图中放置一个 Activity 是没有意义的,因为 Activity 是每个屏幕视图的主控制器。Activity 还显示视图并跟踪 Fragment(它们又是迷你控制器,有或没有自己的视图)。因此,在上面的视图中放置一个 Activity 将意味着您将一个 Activity 放置在一个 Activity 中......这是不可能的。

根据我从您的文字中可以得出的信息,我认为再次阅读有关活动和片段的 Android 开发人员指南(http://developer.android.com/guide/components/activities.html)以获得更好的理解是明智的Android 的概念是如何运作的。

现在回答你的问题:

我不清楚您要实现什么,但是如果您希望您的应用程序的菜单表现得像 Google+ 应用程序,那么一种方法是实现一个扩展 Activity 类的基类(或任何项目中使用的基本活动)并让基本设置SlidingMenu。然后,您可以在每个应该有菜单的活动中简单地扩展您的基本活动。

你也可以按照你描述的方式来做,但是你最终会得到一个上帝对象的经典例子(http://en.wikipedia.org/wiki/God_object)。这是练习 Fragment 杂耍技巧和在 Fragment 之间切换而不是开始新活动的一种巧妙方法,确实有它的用例,但我仍然不建议将它用于具有更多视图的项目。

于 2013-03-14T04:32:28.210 回答
1

这是最接近我遇到的问题的答案 - http://www.verious.com/article/polishing-the-sliding-app-menu/。向下滚动到页面底部以查看标题为“在活动之间使用飞入式应用程序菜单”的最后一部分。如果您在现有应用程序中有大量活动并希望避免大量重构,这是一种选择。我还没有尝试过,但值得留意。

于 2013-03-18T20:34:36.530 回答