2013-07-30 3 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 인스턴스를해야합니다.

@UiField(provided = true) 
SomeWidget someWidget; 

initWidget에 전에 전화를 생성자 의 필드를 지정 : 당신의 SomeWidget이 (BarView처럼) UiBinder에 사용하는 경우

, 당신은 @UiField(provided = true)SomeWidget 필드에 주석을해야한다

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

또한 FooView에서 두 가지 트릭을 수행해야합니다.

+0

매력처럼 작동했습니다! 후속 조치 : https://groups.google.com/forum/#!topic/gwt-platform/UqkpOmhO3kc –