2012-02-09 3 views
1

GWT/GIN으로 첫 걸음을 내딛려고합니다.GWT - binding activityMapper가 작동하지 않습니다.

Google에서 hellomvp 예제를 다운로드하고에 따라 gin을 시작하십시오.

내 문제는 HelloGinModule - 클래스의 구성-방법이 라인에 관한 것입니다 : 내 관점에서

bind(ActivityMapper.class).to(AppActivityMapper.class).in(Singleton.class); 

는 활성 ActityManager으로 내 수업 "AppActivityMapper"를 결합한다. 사실 클래스 생성자 (또는 클래스의 모든 메서드)는 호출되지 않으므로 발생 된 이벤트는 발견되지 않습니다.

는 클래스 AppActivityMapper는 다음과 같습니다

내보기 클래스에서이 코드는 링크를 클릭 한 후 호출 할 내 예에서
public class AppActivityMapper implements ActivityMapper { 

     Provider<HelloActivity> helloActivityProvider; 
     Provider<GoodbyeActivity> goodbyeActivityProvider; 

     @Inject 
     public AppActivityMapper(final Provider<HelloActivity> helloActivityProvider, final Provider<GoodbyeActivity> goodbyeActivityProvider) { 
      this.helloActivityProvider = helloActivityProvider; 
      this.goodbyeActivityProvider = goodbyeActivityProvider; 
     } 


     @Override 
     public Activity getActivity(Place place) { 
      if (place instanceof HelloPlace) { 
       return helloActivityProvider.get(); 
      } else if (place instanceof GoodbyePlace) { 
       return goodbyeActivityProvider.get();    
      } 

      return null; 
     } 
} 

:

presenter.goTo(new GoodbyePlace(name)); 

이벤트가 이벤트에 해고 버스. 그러나 아무 일도 일어나지 않습니다. 사전

답변

1

에서

덕분에 당신은 당신이 GIN 어딘가에 활동 매퍼을 정의했습니다. 그러나 액티비티 매퍼는 액티비티 매니저에서 사용해야합니다. AppActivityMapper를 사용할 활동 관리자는 어디에서 생성합니까? 업데이트 :

가장 논리적 인 점은 활동 관리자를 진에서 제외시키는 것입니다. 예 : 당신이 ginjector 인스턴스를 만들 때, 당신이 매니저를 만들고 그것으로 올바른 활동 매퍼를 넣을 수 있습니다,

interface MyInjector extends Ginjector { 
    ... //other methods 

    ActivityMapper getActivityMapper(); 

} 

보다 : 당신의 ginjector에 당신은 방법이있을 것이다. 예를 들면 :

MyInjector injector = GWT.create(MyInjector.class); 
    ActivityManager manager = new ActivityManager(injector.getActivityMapper(), injector.getEventBus()); 

여러 관리자와 매퍼가있는 경우,이 ActivityManager 클래스를 확장하는 것이 더있을 것입니다 수 있습니다 (그래서 당신은 생성자에 물건을 삽입 할 수 있습니다). 또 다른 해결책은 @Provides을 사용하여 ActivityManager를 초기화하는 것입니다.

+0

오케이, 그게 핵심이라고 생각합니다. ActivityMapper와 ActivityManager의 차이점을 얻지 못했습니다. 활동 관리자를 정의하는 가장 좋은 방법은 무엇입니까? – Lodger

+0

@Lodger @Lodger 내 게시물을 업데이트했습니다. – jusio

+0

Gin/Guice를 사용하는 아이디어와 더 밀접한 또 다른 옵션은 ActivityManager 모듈에서 공급자 또는 @Provides 메서드를 정의하는 것입니다. 샘플 gwt/gin 프로젝트의 한 예제 https://github.com/niloc132/tvguide-sample-parent/blob/master/tvguide-client/src/main/java/com/acme/gwt/client/ioc/ TvGuideClientModule.java # L98 –

관련 문제