1

アプリケーションに GWTP を使用しています。このアプリでは、各タブPresenterWidgetに があるタブを含むを実行する必要があることがよくあります。PresenterWidget

コンテナーは であるためPresenterWidget、クラスを使用できないためTabContainerPresenter、独自の実装を行っています。

PresenterWidgetタブ ( など) に含まれるonReveal()のライフサイクルを管理しようとすると、いくつかの問題が発生しますonHide()

最初の質問: この特定のケースでは、手動onReveal()onHide()などを呼び出すことをお勧めしますか?

2 番目の質問: これらのメソッドを呼び出さずにライフサイクルを管理しようとしました。

これは私がすることです:ユーザーがタブをクリックすると、メインプレゼンターが呼び出しsetInSlot(index,presenterWidget)て、対応するPresenterWidgetタブを右側のタブに配置します。

しかし:タブをクリックするonReveal()と、対応するPresenterWidget(良い!)で呼び出され、次にonReset()すべてで呼び出されますPresenterWidget:なぜすべて?アクティブなタブに対応するonReset()上でのみ呼び出されると思います。PresenterWidget

=>setInSlot()この場合に呼び出す正しいメソッドはありますか?

4

1 に答える 1

2

たぶんこれが役立つかもしれません: https://github.com/ArcBees/GWTP/wiki/Presenter-%22Slots%22

  1. ライフサイクル メソッドを手動で呼び出すことはお勧めしません。それらがなくても問題なく動作するはずです。
  2. setInSlot()どの時点でも 1 つだけPresenterWidgetがアクティブであるため、このメソッドを使用したいと考えています。

ただし、それぞれに異なる SLOTS を使用していますPresenterWidget。機能する方法は、そのスロットに割り当てられたものをsetInSlot()すべて置き換えることです。PresenterWidgetタブごとに異なるスロットを使用するため、他のPresenterWidgets. 他の はスロットにとどまり、おそらくそれが が呼び出されるPresenterWidget理由です。 次の 2 つの選択肢があります。onReset()

  • 異なるスロットを保持したい場合はremoveFromSlot、すべての非表示を呼び出す必要がありますPresenterWidgets
  • スロット (TAB_CONTENT) を 1 つだけ指定して、setInSlot()
于 2013-06-21T10:54:52.680 に答える