2017-01-05 3 views

答えて

0

要素自体が親から削除されたときに、要素のClickHandlerが削除されないことを前提としています。しかし、親のclear()メソッドはすべての子ウィジェットを削除するだけなので、これは問題ではありません。それ以外の場合は、親から要素を削除し、たとえば新しいコンテナに追加する場合は、常にClickHandlerを追加する必要があります。

ClickHandlerを使用してclear()メソッドを呼び出した後に、これが本当に必要な場合はHandlerRegistrationを使用して削除できます。

HandlerRegistration handler = button.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
     //Do something 
    } 
}); 

parent.clear(); 
handler.removeHandler(); 

あなたはすべての子供のためにこれをしたい場合は、removeHandler()ときに呼び出す、このリストをHandlerRegistrations(あなたはいつもあなたがウィジェットを追加または削除している最新の状態に維持する必要があります)、ループでリストを使用することができますウィジェット親をクリアする。

+0

clear()は、Panelに追加されたウィジェットのEventHandlerも強制終了します。したがって、私たちはそれを世話する必要はありません。 http://www.gwtproject.org/articles/dom_events_memory_leaks_and_you.html – baris

関連する問題