我有一个活动需要另一个类的服务来检索一些数据(“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) 方法不是第一次调用,而是在所有后续事件中调用。