GWT-杜松子酒不起作用的绑定活动标签

GWT-杜松子酒不起作用的绑定活动标签,gwt,gwt-gin,Gwt,Gwt Gin,我正试图用GWT/GIN完成我的第一步 我已经从google下载了hellomvp示例,并按照此开始使用gin 我的问题是关于HelloGinModule类的configure方法中的这一行: bind(ActivityMapper.class).to(AppActivityMapper.class).in(Singleton.class); 在我看来,它应该将我的类“AppActivityMapper”绑定为活动管理器。 但事实上,从未调用类构造函数(或类的任何方法),因此不会捕获激发的事件

我正试图用GWT/GIN完成我的第一步

我已经从google下载了hellomvp示例,并按照此开始使用gin

我的问题是关于HelloGinModule类的configure方法中的这一行:

bind(ActivityMapper.class).to(AppActivityMapper.class).in(Singleton.class);
在我看来,它应该将我的类“AppActivityMapper”绑定为活动管理器。 但事实上,从未调用类构造函数(或类的任何方法),因此不会捕获激发的事件

类AppActivityMapper如下所示:

public class AppActivityMapper implements ActivityMapper {

       Provider<HelloActivity> helloActivityProvider;
       Provider<GoodbyeActivity> goodbyeActivityProvider;

       @Inject
       public AppActivityMapper(final Provider<HelloActivity> helloActivityProvider, final Provider<GoodbyeActivity> goodbyeActivityProvider) {
           this.helloActivityProvider = helloActivityProvider;
           this.goodbyeActivityProvider = goodbyeActivityProvider;
       }


       @Override
       public Activity getActivity(Place place) {
           if (place instanceof HelloPlace) {
               return helloActivityProvider.get();
           } else if (place instanceof GoodbyePlace) {
               return goodbyeActivityProvider.get();            
           }

           return null;
       }
}
事件被激发到事件总线。但什么也没发生


提前感谢

您已经在您的系统中定义了一个活动映射器。但是活动映射器必须在活动管理器中使用。在哪里创建将使用AppActivityMapper的活动管理器? 更新

最合乎逻辑的事情是不让activity manager参与进来。例如,在Ginject中,您将有一个方法:

interface MyInjector extends Ginjector {
   ... //other methods

  ActivityMapper  getActivityMapper();

}
然后,当您创建Ginject实例时,您可以创建一个管理器并将正确的活动映射器放入其中。例如:

 MyInjector  injector = GWT.create(MyInjector.class);
   ActivityManager manager = new ActivityManager(injector.getActivityMapper(), injector.getEventBus());

若您有多个管理器和映射器,那个么扩展ActivityManager类可能会更好(这样您就可以将内容注入到它的构造函数中)。另一种解决方案是使用
@Provides
初始化ActivityManager。

您已经在GIN中的某个位置定义了活动映射器。但是活动映射器必须在活动管理器中使用。在哪里创建将使用AppActivityMapper的活动管理器? 更新

最合乎逻辑的事情是不让activity manager参与进来。例如,在Ginject中,您将有一个方法:

interface MyInjector extends Ginjector {
   ... //other methods

  ActivityMapper  getActivityMapper();

}
然后,当您创建Ginject实例时,您可以创建一个管理器并将正确的活动映射器放入其中。例如:

 MyInjector  injector = GWT.create(MyInjector.class);
   ActivityManager manager = new ActivityManager(injector.getActivityMapper(), injector.getEventBus());

若您有多个管理器和映射器,那个么扩展ActivityManager类可能会更好(这样您就可以将内容注入到它的构造函数中)。另一个解决方案是使用
@提供的
初始化ActivityManager。

好的,我想这就是重点。我不明白ActivityMapper和ActivityManager之间的区别。您能告诉我,定义活动管理器的最佳实践是什么吗?另一种可能更接近于使用Gin/Guice的方法是在模块中为ActivityManager定义提供者或@Providers方法。一个来自gwt/gin项目的例子,好吧,我想这就是重点。我不明白ActivityMapper和ActivityManager之间的区别。您能告诉我,定义活动管理器的最佳实践是什么吗?另一种可能更接近于使用Gin/Guice的方法是在模块中为ActivityManager定义提供者或@Providers方法。一个示例来自gwt/gin项目