View GWTP-在另一个视图中插入小部件

View GWTP-在另一个视图中插入小部件,view,inject,gwtp,View,Inject,Gwtp,我正在从事一个使用GWTP的项目,我想知道是否可以将一个视图的对象注入到另一个视图中。比如: 公共类BarView扩展ViewWithUiHandlers实现BarPresenter.BarView{ 公共接口绑定器扩展了UiBinder{ } @uifieldsomewidget SomeWidget; @注入 公共播放视图(活页夹){ initWidget(binder.createAndBindUi(this)); } } 公共类FooView扩展ViewWithUiHandlers实现F

我正在从事一个使用GWTP的项目,我想知道是否可以将一个视图的对象注入到另一个视图中。比如:

公共类BarView扩展ViewWithUiHandlers实现BarPresenter.BarView{
公共接口绑定器扩展了UiBinder{
}
@uifieldsomewidget SomeWidget;
@注入
公共播放视图(活页夹){
initWidget(binder.createAndBindUi(this));
}
}
公共类FooView扩展ViewWithUiHandlers实现FooPresenter.FooView{
公共接口绑定器扩展了UiBinder{
}
SomeWidget SomeWidget;
@注入
公共PlayerView(活页夹、SomeWidget和SomeWidget){
initWidget(binder.createAndBindUi(this));
this.someWidget=someWidget;
}
}
这样行吗?有人知道如何做到这一点吗?

是的,这是可以做到的

在Singleton中绑定您的
SomeWidget
类:

bind(SomeWidget.class).in(Singleton.class);
因此,两个视图将具有相同的
SomeWidget
实例

如果您的
SomeWidget
在UiBinder中使用(如
BarView
),则必须使用
@UiField(提供=true)
注释
SomeWidget
字段:

@UiField(提供=true)
SomeWidget SomeWidget;
在调用
initWidget
之前,在构造函数中指定字段:

@Inject
公共PlayerView(活页夹、SomeWidget和SomeWidget){
this.someWidget=someWidget;
initWidget(binder.createAndBindUi(this));
}

您还必须在
FooView

中使用这两个技巧,效果非常好!只是跟进: