在我的GWTP应用程序中,我有一个简单的Java类,它不是Presenter,它只是一个类。从这个类中,我需要触发一个将从Presenter类中侦听的事件。
GWTP在演示者之间共享一个EventBus。问题是我需要在此EventBus中从外部类触发事件,以便演示者能够收听它。
我做了我的研究,到目前为止我还没有遇到过与这个外部类共享GWTP的EventBus的方法(除了来自任何随机演示者的内部,这是不正确的。)
正如我在这里看到的,注射方法不起作用。 任何想法?
如果需要,我会分享一些代码。谢谢!
这是我的班级:
public class MyClass {
private static MyClass INSTANCE;
public static MyClass singleton() {
if (INSTANCE == null) {
INSTANCE = new MyClass();
}
return INSTANCE;
}
private MyClass() {
}
}
并且
@Inject EventBus eventBus
不起作用。当我调用eventBus.fireEvent()时,eventBus是未定义。
答案 0 :(得分:1)
您应该重写您的类并使用Gin将MyClass绑定为具有bind(MyClass.class).in(Singleton.class)
的Singleton,并将MyClass注入您需要的位置。您的MyClass类可能如下所示:
public class MyClass {
@Inject
MyClass(EventBus eventBus) {
this.eventBus = eventBus;
}
}
如果你真的想做自己的单身人士,那么你也可以使用Gin模块的静态注入:requestStaticInjection(MyClass.class)
。
public class MyClass {
@Inject
private static EventBus eventBus;
private static MyClass INSTANCE;
public static MyClass singleton() {
if (INSTANCE == null) {
INSTANCE = new MyClass();
}
return INSTANCE;
}
private MyClass() {
}
}