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