12
이벤트를 처음 수신 할 때 GWT 이벤트 처리기를 제거하려고합니다. 또한 실제로 필요하지 않은 등록 개체를 추적하여 클래스를 오염시키지 않으려합니다. 나는 현재 그것은으로 코딩 한 :첫 번째 이벤트 알림에서 GWT removeHandler
final HandlerRegistration[] registrationRef = new HandlerRegistration[1]; registrationRef[0] = dialog.addFooHandler(new FooHandler() { public void onFoo(FooEvent event) { HandlerRegistration removeMe = registrationRef[0]; if(removeMe != null) { removeMe.removeHandler(); } // do stuff here } });
하지만 registrationRef의 사용은 코드가 덜 읽을 수 있습니다. 클래스에 변수를 추가하지 않고이 작업을 수행하는 더 좋은 방법이 있습니까?
예를, 감사. 이 클래스의 리스너 중 하나만 가지고있을 때 (이 방법으로 처리하는 임의의 수의 위젯을 가지고있을 때 상황이 더 지저분해질 때)이 방법을 사용할 수 있습니다. 새로운 필드를 추가하지 않고이 작업을 수행 할 수있는 방법이 있었으면합니다. 오 잘 ... – Keith
이것은 보이는 것처럼 직선적이지 않을 수 있습니다. onXXX() 메서드에서 핸들러가 null로 설정된 경우가 있습니다. 왜? GWT가 핸들러를 바로 호출하는 것을 막을 수있는 것이 아무 것도 없기 때문입니다. 예를 들어 Image.onLoad()의 IE 경우 이미지가 이미로드 된 경우 실제로 addLoadHandler()를 호출하는 동안 핸들러를 호출 할 수 있습니다. 이 경우 유일한 수정은 "if null"체크를 랩핑 한 다음 나중에 정리하는 것이 었습니다. – John
핸들러를 여러 번 추가 할 수있는 경우에는 작동하지 않습니다. – ubiquitousthey