データを取得するために別のクラスのサービス(「DataClass」)を必要とするアクティビティがあります。このデータクラスは、データをフェッチするために呼び出すことができ、成功するとイベントを発生させます。アクティビティで初めてデータが必要になるのは「開始」です。現在の場所によってもたらされた状態を解決し、それに応じてビューを更新します。
問題は、アクティビティonDataEventメソッドが最初に呼び出されるのではなく、後続のすべてのイベントで呼び出されることです。イベントのハンドラーを確認しました。最初のイベントが発生すると、アクティビティはこのイベントに登録されます。イベントをコンストラクターに登録しようとしましたが、何も変わりません。では、イベントのアクティビティを登録し、startメソッド内でトリガーしてそれに反応する方法は?または、そのようなユースケースを一般的に実装する方法。
その間に編集して、私はここの ようにそれを実装しようとしましたが、成功しませんでした。
startメソッドのコードは次のとおりです。
@Override
public final void start(final AcceptsOneWidget panel, final com.google.gwt.event.shared.EventBus eventBus) {
this.eb = new ResettableEventBus(eventBus);
if (!(pc.getWhere() instanceof DynamicTablePlace)) {
throw new IllegalStateException(CreateDynamicTableActivity.class.getName() + " should only be called on "
+ DynamicTablePlace.class.getName());
}
view.setPresenter(this);
this.eb.addHandler(DynamicTableHashResolvedEvent.TYPE, this);
stateResolver.resolveState(((DynamicTablePlace) pc.getWhere()).getTablehash(), eb); //this is triggering the event
panel.setWidget(view);
}
onDynamicTableHashResolved(DynamicTableHashResolvedEvent event)メソッドは、最初に呼び出されるのではなく、後続のすべてのイベントで呼び出されます。