我对GWT活动和位置的理解是,对于屏幕上的给定区域,您有ActivityManager
和ActivityMapper
。您可以在屏幕上有多个区域,这意味着您可以具有多个ActivityManagers
和ActivityMappers
(每个区域一个)。因此,每当有PlaceChange
时,ActivityManagers
询问他们各自的ActivityMapper
在Place
给定的活动应该显示什么活动。只要您的Places
都有一个共同的布局,它们以不同的方式进行不同的活动,这效果很好。我的问题是,我们如何处理不同的Places
使用截然不同的布局的情况?我的第一个想法是只有更多的ActivityManagers
和ActivityMappers
,如果Place
不使用特定区域,则该区域的ActivityMapper
在我们更改为Place
时只会返回null
。如果有更好的方法,我会欣赏任何智慧。
我发现在整个应用
在典型的情况下,您有一个"菜单"区域和一个"主"区域。菜单区域非常基本:单击菜单项将用户发送到新的地方。它还突出显示了新选择的项目并重置先前选择的项目的样式。所有这些都可以在一个简单的小部件中轻松完成,您可以在需要此菜单的所有视图中包含。为菜单区域拥有单独的ActivityMapper和ActivityManager,这使一切都复杂化,而无需提供任何好处。
我在"顶部菜单"区域和"左菜单/树"区域使用相同的方法:一个小部件告诉主持人在"主"区域中显示哪些数据。
我的应用中有50多个不同的位置,并且具有简单的体系结构确实有助于:每个地方对应于一个视图和一个活动。