1

我想要一个 UI:Binder 生成的页面,我可以在运行时切换部分 UI。这是一个例子:

//...More UI Binder stuff
<g:Widget ui:field="generalWidget" />
//...More UI Binder stuff

现在在我的视图实现中,我想更改 generalWidget 显示的确切小部件类型。例如,我希望能够做这样的事情:

@UiBinder Widget generalWidget;
...
if (<condition>) 
   generalWidget = new TabLayoutPanel(...);
else
   generalWidget = new FlowPanel(...);

但是,这对我不起作用。当我点击页面时,我得到:

java.lang.AssertionError: This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()

在开发日志中。据我所知,这是因为我使用了 g:widget,因为如果我直接使用面板,它就可以工作。

解决此问题并获得我想要的切换小部件行为的最佳方法是什么?

4

1 回答 1

2

你错过provided = true@UiField

@UiField(provided = true) Widget generalWidget;

当然,请确保在调用之前分配该字段createAndBindUi

于 2012-10-22T14:53:38.700 回答