我是GWT、GWTP的新手。
我有一个PresenterWidget,它被实例化多次并添加到一个插槽中。我想以编程方式定义实例的数量。我只知道我通过注入它来创建一个新的Widget实例
@Inject MyWidgetPresenter first;
@Inject MyWidgetPresenter second;
// ...
我可以用new实例化它吗?如何实例化视图?
我尝试使用复合,因为它似乎是最聪明的解决方案,因为它无论如何都不包含太多逻辑。但是我不能将复合添加到槽中。
提前感谢
在GWTP 1.0中,不再需要Gijector(由GWTP自动生成)。
在您的情况下(每次您需要一个类的多个实例时),最好的方法是注入WidgetPresenter的Provider:
@Inject Provider<MyWidgetPresenter> myWidgetPresenterProvider;
每次您需要MyWidegtPresenter的新实例时,请调用提供程序上的get()方法:
MyWidgetPresenter myWidgetPresenter = myWidgetPresenterProvider.get();
您可以获取ClientGinjector
引用并调用getYourPresenter()方法。如果它被声明为@Singleton
,它将返回相同的实例,如果不是,它将创建一个新实例,与使用new相同,但将所有参数注入构造函数。这将与向字段中添加@Inject相同。
已添加:如果您在ClientGinjector
中没有所需的演示者,您可以简单地在该接口上编写一个getter方法。例如:
public interface ClientGinjector extends Ginjector {
....
SideMenuPresenter getSideMenuPresenter();
....
}