2013-07-30 67 views
1

我正在使用GWTP的項目,我想知道如果我可以注入一個視圖的對象到另一個視圖。例如:GWTP - 在另一個視圖中注入小部件

public class BarView extends ViewWithUiHandlers<BarUiHandlers> implements BarPresenter.BarView {  
    public interface Binder extends UiBinder<HTMLPanel, BarView> { 
    } 

    @UiField SomeWidget someWidget; 

    @Inject 
    public PlayerView(Binder binder) { 
     initWidget(binder.createAndBindUi(this)); 
    } 
} 

public class FooView extends ViewWithUiHandlers<FooUiHandlers> implements FooPresenter.FooView {  
    public interface Binder extends UiBinder<HTMLPanel, FooView> { 
    } 

    SomeWidget someWidget; 

    @Inject 
    public PlayerView(Binder binder, SomeWidget someWidget) { 
     initWidget(binder.createAndBindUi(this)); 
     this.someWidget = someWidget; 
    } 
} 

會這樣嗎?有人知道如何實現這一目標嗎?

回答

2

是的,它可以做到!

綁定你SomeWidget類辛格爾頓:

bind(SomeWidget.class).in(Singleton.class); 

這樣兩種觀點都會有相同的SomeWidget實例。

如果您SomeWidget在UiBinder的使用(如在BarView),您必須使用@UiField(provided = true)註解你SomeWidget領域:

@UiField(provided = true) 
SomeWidget someWidget; 

和之前呼叫分配在構造函數領域initWidget

@Inject 
public PlayerView(Binder binder, SomeWidget someWidget) { 
    this.someWidget = someWidget; 
    initWidget(binder.createAndBindUi(this)); 
} 

您還必須在FooView中執行這2個技巧。

+0

工作就像一個魅力!只需跟進:https://groups.google.com/forum/#!topic/gwt-platform/UqkpOmhO3kc –

相關問題