Ah yes, the code you pasted exactly fits the problem I described. The activity start method is called by the ActivityManager from within the PlaceChangeEvent.Handler [1]. The SimpleEventBus, uses deferred methods to only apply changes to the handler lists after the current round of events have fired [2]. i.e. if you are currently in a handler, add a handler and then immediately fire that event, your handler won't be called.
[1] http://code.google.com/p/google-web-toolkit/source/browse/branches/2.1/bikeshed/src/com/google/gwt/app/place/ActivityManager.java?r=8009#85 [2] http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/event/shared/SimpleEventBus.java#156 On Wed, Apr 25, 2012 at 7:11 AM, tanteanni <[email protected]> wrote: > i think this is not the problem. first i register for event then i fetch the > data that triggers the event. here is the code of start method: > > @Override > public final void start(final AcceptsOneWidget panel, final > com.google.gwt.event.shared.EventBus eventBus) { > this.eb = new ResettableEventBus(eventBus); > view.setPresenter(this); > this.eb.addHandler(DynamicTableHashResolvedEvent.TYPE, > this);//handler registration > stateResolver.resolveState(((DynamicTablePlace) > pc.getWhere()).getTablehash(), eb);//triggers event > panel.setWidget(view); > } > > the event triggered in start method will be received when next event is > triggered - so after the start method i am one event too "late". > > > On Tuesday, 24 April 2012 19:19:28 UTC+2, Chris Price wrote: >> >> Does your data fetch include the event bus in some way? If so you may be >> running into the problem that handler changes (adds/removes) are only >> applied after the current event has completed. In this case that event would >> be the place change eventually calling the activity start. >> >> Sorry for the lack of references, im not at a pc >> >> On 24 Apr 2012 14:49, "tanteanni" wrote: >> >>> i have an activity that needs another class to resolve the state (ids to >>> real objects) brought by current place. this class' "getData(StateObject)" >>> is called within start-method right after registering for the class' >>> gotData-event. But the activitie's onGotData-data method isn't called the >>> first time. If the activity calls getData after the start method all works >>> fine. >>> i have the feeling that this can't work but how to get it working? The >>> data class need an object provided by a special kind of place (the same >>> place as the activity starts on). >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Google Web Toolkit" group. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msg/google-web-toolkit/-/6MNHc8yNbm0J. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/google-web-toolkit?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-web-toolkit/-/BLVNKJReNVAJ. > > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
