切换UI:运行时的粘合剂小部件



我想拥有一个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

之前确保分配该字段

最新更新