Я только что закончил свой первый собственный пример с действиями/местами и MVP. все работает нормально, но некоторые события не отправляются или не принимаются должным образом, если я возвращаюсь к месту (из другого места). но на "moduleLoad", где это место установлено как место по умолчанию, все работает нормально. я думаю, что не должно иметь значения, запущено ли место/активность при загрузке модуля (через historyHandler = new PlaceHistoryHandler(historyMapper); historyHandler.register(placeController, eB, defaultPlace); historyHandler.handleCurrentHistory();) или через placeController. идти (место); , должно ли?
с помощью отладки я проверил порядок регистрации событий, отправки и получения событий (все выполняется в начале (...) действия). проблема в том, что все получатели не получают событие, если start() выполняется через goTo(place) (регистрация и отправка работают нормально). Но если событие отправлено после start() или внутри start()-выполняется на moduleLoad, все работает нормально!
начало моей активности выглядит так:
@Override
public final void start(final AcceptsOneWidget panel, final EventBus eventBus) {
// register events - to manipulate visibility of some display areas
eventBus.addHandler(SelectedEvent.TYPE, this);
//initiate presenters -(pseudo code)
[presenter that receives SelectedEvent]
[presenter that sends SelectedEvent]
//ading presenter's asWidgets to screen -> panel.setWidget..
...
}
@Override
public final void onSelected(final SelectedEvent event) {
//do something
}
(вариант использования для отправки этого события при запуске заключается в том, что я хочу сказать, что ничего не выбрано - полезная нагрузка события равна нулю)
проблема в том, что ни ведущий, ни метод onSelected активности не вызываются, если start() вызывается через goTo. Но во всех случаях (проверено отладчиком) регистрация на событие происходит до его отправки. Что я должен делать?