之前确保分配该字段
我想拥有一个UI:粘合剂生成的页面,可以在运行时切换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:widtget所致,因为如果我直接使用面板,它可以正常工作。
解决此问题并获得我想要的切换小部件行为的最佳方法是什么?
您缺少@UiField
上的provided = true
:
@UiField(provided = true) Widget generalWidget;
当然,请确保在调用createAndBindUi
!