我正在开始使用Android搜索餐馆的应用程序,欢迎一些指导! 在第一个屏幕上,我想要一个带有提交按钮的搜索字段(我从Web服务获取数据),以及带有搜索结果的列表下方。点击列表中的一个项目时,它将显示一个包含餐厅详细信息的屏幕以及显示其位置的地图。我的问题是:
答案 0 :(得分:25)
我可以在一个活动中完成所有活动,还是应该为搜索执行活动,一个用于结果列表,一个用于餐馆描述,另一个用于地图?
这个问题的答案实际上取决于您的应用程序的流程。我认为最重要的是要注意用户如何使用“后退”按钮控制您的应用。当您创建一个新的Activity时,它将它放在堆栈上,用户可以随时按“后退”从堆栈中弹出它。
一个极端是将所有这些步骤放入不同的活动中。然后用户使用“后退”按钮进行终极控制,但他们可能会因为活动而烦恼。把它全部放在一个活动中是另一个极端,我强烈建议不要这样做;用户希望新屏幕是一个不同的活动,一个可以“退回”的活动,所以如果你把所有鸡蛋放到一个活动中,你就必须自己开始“回”。
我认为你的应用程序可以采取一个良好的中间立场,当然你的UI设计可能与我的建议不同。我想说你可以在两个活动中做到这一点;在第一个中,您在顶部有一个搜索字段(旁边有一个提交按钮),在该搜索字段下面是一个填充了结果的ListView。在第二个中,使用TabActivity,其中一个选项卡用于描述,另一个选项卡用于地图。我认为这有两个原因:第一个Activity,用户在搜索的同一页面上看到搜索结果,并且可以在必要时快速更改搜索参数。在第二个Activity上,后面的键封装了一个餐厅的退出。
进行一项活动会使应用程序更具响应性吗?
不是真的。活动需要时间来创建/拆除,但那时间很长。最好以合理的方式对应用程序进行分段(对于用户体验)。
如何在正常活动中使用列表和地图(没有ListActivity和MapActivity)?
您可以在没有ListActivity的普通Activity内部使用ListView;只需在Activity的内容中包含一个ListView,然后在代码中抓取ListView并手动设置其适配器。所有ListActivity都为一个主ListView添加了一些方便的包装函数,但它根本没有必要。
地图是另一回事。您需要使用MapActivity来显示地图,因为MapActivity具有需要运行的特殊设置和拆卸代码。遗憾。
答案 1 :(得分:1)
我会在搜索和列表中都有一个活动,然后是另一个显示餐馆详细信息的活动。
我认为只用一个活动就不会有效。
活动可以包含多个视图 - 如果需要,单个活动可以包含地图和列表。
答案 2 :(得分:1)
我想为Daniel的优秀答案添加一些指导。
用户无法区分具有更改视图的一个活动与各自具有自己视图的多个活动之间的区别 - 直到他们按下后退按钮。所以实际上非常重要的是,后退按钮应该具有与按下时屏幕上的内容相关的自然和逻辑目的。用户不应对使用它时会发生什么感到惊讶。
因此,对于您拥有的每项活动,请随时询问自己后退按钮的行为是否符合最终用户的逻辑。如果你找到一个不存在的场景,那么你应该考虑重构你的活动 - 这可能涉及将两个或多个活动合并为一个,将一些活动从一个活动转移到另一个活动(但同时保留它们),甚至拆分活动2。
创建一个用户界面,当用户在其周围导航时,其逻辑行为非常重要,应用程序执行的越多(导航越多),它就变得越重要。不可预知的导航行为会阻止人们在最有可能卸载应用程序时学习如何充分利用应用程序 - 在下载后的前几个小时内。
答案 3 :(得分:0)
如果您希望编写模块化,可重用且可移植的代码,则可以采用一种活动。 Activity是一个仅限Android的概念。任何设计良好的应用程序的主流和业务逻辑应该是独立于平台的。让您的项目更高级代码中的活动将您的项目与Android联系起来,这违背了平台独立性,这是Java和质量编程的核心原则。