Я использую GWTP для приложения. В этом приложении мне часто нужно сделать PresenterWidget
, который содержит вкладки с PresenterWidget
на каждой вкладке.Выполнение GWTP TabContainer для PresenterWidget
Как контейнер PresenterWidget
, я не могу использовать класс TabContainerPresenter
, поэтому я выполняю свою собственную реализацию.
У меня возникли некоторые проблемы при попытке управлять жизненным циклом PresenterWidget
, содержащимся на вкладках (onReveal()
, onHide()
и т. Д.).
Первый вопрос: В данном конкретном случае, это рекомендуется вручную вызвать onReveal()
, onHide()
и т.д.?
2-й вопрос: Я пытался управлять жизненным циклом, не называя эти методы.
Это то, что я делаю: когда пользователь нажимает на вкладку, главный ведущий вызывает setInSlot(index,presenterWidget)
, чтобы поместить соответствующий PresenterWidget
на правой вкладке.
Но: Когда я нажимаю на вкладке onReveal()
вызывается соответствующий PresenterWidget
тогда onReset()
называется на все PresenterWidget
(хорошо!): Все почему? Я ожидал бы, что onReset()
вызывается только на PresenterWidget
, соответствующем активной вкладке.
=>setInSlot()
правильный способ позвонить в этом случае?
Я попробовал решение с одним слотом, как отобразить один виджет в то время. Он работает намного лучше, но все еще не идеально: теперь, если я нажимаю на вкладку, 'onHide()' вызывается на предыдущей вкладке, 'onReveal()', то 'onReset()' вызывается только на новой вкладке. Проблема в том, что эти два метода всегда вызываются. Я ожидал бы, что 'onReveal()' вызывается только тогда, когда вкладка отображается в первый раз. Это правильно? Есть ли что-нибудь, что я могу сделать, чтобы иметь такое поведение? –
Нет 'onReveal()' и 'onReset' вызывается вместе (см. Https://github.com/ArcBees/GWTP/wiki/Presenter-Lifecycle). Вы можете использовать 'onBind()', чтобы делать что-то, когда создается 'Presenter', или вы используете флаг, чтобы узнать, является ли это в первый раз –
Хорошо, это ясно, спасибо вам большое :) –