我试图了解GWT活动和地点。而且我不确定如何实现特定的功能。
我们假设我也在使用MVP,我的活动是我的演示者。
假设我有一个显示客户列表的活动(让我们称之为活动A)(及其相应的视图)。用户可以单击视图中的“创建客户”按钮。
我想要做的是:当用户点击按钮时,我想要一个“创建客户”对话框,在当前活动的顶部上弹出。我还希望所有与所述对话框相关的逻辑都是分开的,因此可以在以后重复使用。
例如,可以在“创建发票”活动中重复使用相同的对话框。因此,用户可以在“创建发票”活动中单击类似的“创建客户”按钮,并显示与之前使用的相同的对话框。
现在,如果我理解正确,我不想去一个新地方,因为它会终止当前活动“列出客户”或“创建发票”。
我考虑过定义一个“CreateCustomerPresenter”和一个“CreateCustomerDialog”(这将是相应的视图“,并让我的”列表客户“/”创建发票“活动(提醒:他们也是我的演示者)扩展“CreateCustomerPresenter”,但我不知道这是否是一个明智的想法......
在活动上下文中重用与对话框关联的逻辑+视图的推荐方法是什么?
答案 0 :(得分:2)
有几种有效的方法,但我通常更喜欢的方法是:不要将对话框视为地方(活动)。
推理:地方意味着您可以通过书签/浏览器历史记录与其联系。假设我在客户列表中,点击“编辑客户”,会打开一个对话框。单击浏览器后退按钮时,是否要“返回”列表?当我点击浏览器前进按钮时,对话框会再次打开吗?我对此表示怀疑,并且相信用户想要使用浏览器按钮在应用程序内返回/转发整个“页面”(即对用户感觉像页面一样的概念),但不是在页面内打开/关闭对话框
答案 1 :(得分:1)
我最近完成了这个。
我采用的方法是以通常的方式为对话框的内容创建活动/视图。要启动,请创建要嵌入对话框的活动/视图 - 我称之为子活动。创建模式对话框,然后在作为面板传递对话框内容的子活动上调用start。在主要活动中,我然后重定向mayStop,停止等到子活动。
棘手的部分是处理对话框关闭并将控制权传递回主要活动。我最终在对话框中添加了一个监听器,并在事件总线上触发了事件,这些事件被我的主要活动所取代。我并不是百分之百满意,但确实有效。
我没有使用它,但我认为GWTP支持这种以及开箱即用的创建子活动的其他方法。