1

我正在将 GWTP 用于应用程序。在这个应用程序中,我经常需要做一个PresenterWidget包含PresenterWidget每个选项卡中的选项卡的选项卡。

由于容器是一个PresenterWidget,我不能使用类TabContainerPresenter,所以我正在做自己的实现。

我在尝试管理PresenterWidget选项卡(等)中包含onReveal()onHide()生命周期时遇到了一些问题。

第一个问题:在这种特殊情况下,是否建议手动调用onReveal()onHide()

第二个问题:我试图在不调用这些方法的情况下管理生命周期。

这就是我所做的:当用户点击一个选项卡时,主演示者会调用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()方法,因为在任何时候只有一个PresenterWidget处于活动状态。

但是,您为每个PresenterWidget. 工作方式setInSlot()是它替换PresenterWidget分配给该插槽的任何内容。因为您为每个选项卡使用不同的插槽,所以它不会删除另一个PresenterWidgets. 其他PresenterWidget人留在他们的位置,可能这就是他们被召唤的原因onReset()
您有 2 个选择:

  • 如果你想保留不同的插槽,你应该调用removeFromSlot所有 non-visible PresenterWidgets
  • 仅指定一个插槽 (TAB_CONTENT) 并简单地使用setInSlot()
于 2013-06-21T10:54:52.680 回答