Ben さん、TabContainerPresenter は、各タブが場所である場合にのみ適用されます。あなたの問題に関しては、各タブに同じプレゼンター ウィジェットを設定するだけです。複数のタブにプレゼンター ウィジェットを挿入する場合は、プレゼンター ウィジェットをシングルトンにしないことをお勧めします。これは、メイン プレゼンターのスロットにプレゼンター ウィジェットを設定するサンプルです。
@Override
protected void onBind() {
super.onBind();
setInSlot(TYPE_PermitContent, permitPresenter);
setInSlot(TYPE_ErpMessageContent, orgErpMessagePresenter);
setInSlot(TYPE_ContractDetailContent, contractDetailPresenter);
}
次に、ビューでは、私のサンプル許可証と ERP では、TabLayoutPanel にタブがあります。
@Override
public void setInSlot(Object slot, Widget content) {
if (content == null) return;
if (slot == ContractPopupWithTabPresenter.TYPE_PermitContent) {
permit.clear();
permit.add(content);
} else if (slot == ContractPopupWithTabPresenter.TYPE_ErpMessageContent) {
erp.clear();
erp.add(content);
} else if (slot == ContractPopupWithTabPresenter.TYPE_ContractDetailContent) {
contractDetail.clear();
contractDetail.add(content);
} else {
super.setInSlot(slot, content);
}
}
次に、TabLayoutPanel に beforeSelection ハンドラーを追加します。これは次のようになります。
tabPanel.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
@Override
public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
//TODO: Set your presenter widget here with whatever argument it needs to populate itself
}
});
お役に立てれば。