7

私はGWTアプリを持っており、プレイス/アクティビティでGWTMVPを使用しています。

私のアプリケーションのレイアウトは次のようなものです

メニュー| コンテンツ

メニューとコンテンツの表示は動的に変化し、一方が他方とは別に変化します。これが意味するのは、コンテンツの表示が変更されたときに、メニューの表示を更新する必要がないということです。その逆も同様です。両方のディスプレイは、PlaceChangeEventsに応答し、これらが発生したときに自分自身を更新できる必要があります。問題は、各ディスプレイが特定のPlaceChangeEventsに応答してのみ更新され、他のディスプレイに向けられたPlaceChangeEventsを無視することです。ただし、これは「標準」のGWT MVPパターンでは機能しません。これは、各ディスプレイに独自のActivityManagerがある場合でも、単一のEventBusをリッスンする単一のPlaceControllerがあるため、すべてのPlaceChangeEventsが自動的に取得されるためです。これを行うために私が見ることができる唯一の方法は、2つのEventBusを持つことです。■および2つのPlaceController-1つはメニュー用、もう1つはコンテンツ用です。だから私の質問は、これが良い解決策なのか、それとも私が見逃しているより簡単でより良い方法があるのか​​ということです。このソリューションの問題の1つは、PlaceHistoryHandlerを登録できるのはEventBusの1つだけであるということです。

4

1 に答える 1

5

場所の変更は、実際にはActivityMappersによって制御されます。彼らは場所を取得し、対応するアクティビティを返します。ここで、プレイスをアクティビティにマッピングする方法を制御します。

  1. 2つのActivityMappers(MenuActivityMapper、ContentActivityMapper)を作成してから、それぞれ独自のActivityMappersを使用して2つのActivityManagerをインスタンス化する必要があります。次に、ActivityManagersetDisplay(AcceptsOneWidget display)ごとに、コンテンツが表示される領域(ディスプレイ)を通過する場所を呼び出します。

  2. メニューでは、すべての場所で利用できるため、おそらく1つのアクティビティのみを使用します。したがってMenuActivityMapper.getActivity()、常にMenuActivityの同じインスタンスを返します。MenuActivityが場所の変更に基づいて外観を調整できるようにするには、MenuActivityがPlaceChangeEventsをリッスンする必要があります。

于 2011-05-04T12:41:39.570 に答える