On Thursday, June 30, 2011 2:06:22 PM UTC+2, El bassistos wrote:
>
> I am doing a small "test" application and I am using Activities and
> Place but can't make it work as I expect..
>
> I have 2 Views, Activities and Places. DefaultView calls Example1View
> and Vice Versa ..
>
> In the Example1Activity I override mayStop() so that it returns a
> String asking if user wants to "go to Default". It works the first
> time - when I hit "go to Default", it ask if I am "sure, and then I
> press " 'OK' - that works, it swaps out the Example1View/Activity and
> swap in the DefaultView/Activity.
>
> But when I hit the "go to Example1" from the DefaultView/Activity, it
> ALSO ask the question. I can see in the Debugger that first the
> DefaultActivity is called, and that it behaves as expected (the
> mayStop() returns null), but the ExampleView's mayStop() method is
> ALSO called?? Even though it is no "in focus" - "it is about to come
> in Focus" .. So it seems as the previous Example1Activity is NOT
> deregistered on the EventBus, after I hit the "OK" (which calles the
> onClose() method and should cause the ActivityManager to de-registere
> the "Activity"..)
>
> Any Ideas ???
>
> Rehgards Jesper - Running GWT 2.2.1 and it is same behavior on FF,
> Chrome and Safari
>
>
> Here is my code:
>
> DefaultPlace.java:
> public class DefaultPlace extends Place {}
>
> DefaultView.java:
> public class DefaultView extends Composite implements IsWidget{
> HorizontalPanel hp = new HorizontalPanel();
> Button b = new Button("Go To Example1");
>
> public DefaultView() {
> hp.add(b);
> initWidget(hp);
>
> }
>
> HasClickHandlers getButton() {
> return b;
> }
> }
>
> DefaultActivity.java
> public class DefaultActivity extends AbstractActivity implements
> Activity {
>
> ClientFactory clientFactory;
> DefaultView defaultView;
>
> public DefaultActivity(DefaultPlace place, ClientFactory
> clientFactory) {
> this.clientFactory = clientFactory;
> }
>
> public void start(AcceptsOneWidget panel, EventBus eventBus) {
> defaultView = clientFactory.getDefaultView();
> defaultView.getButton().addClickHandler(new ClickHandler() {
> public void onClick(ClickEvent event) {
> clientFactory.getPlaceController().goTo(new
> Example1Place());
> }
> });
>
Beware! you have a leak here! your view is a singleton but your activity is
disposable: you should remove the ClickHandler from onStop and onCancel
otherwise the button keeps references to all the activities ever started!
This is why you experience a slowdown when you remove your mayStop override.
I'm afraid it's not the cause of your issue with mayStop but it's a start…
--
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/-/hOZUbep85PIJ.
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.