有一个字段工厂 -
...
public IncomingFieldFactory(MainView app) {
hbnContainer = new HbnContainer<Incoming>(Incoming.class, app);
}
@Override
public Field createField(Container container, Object itemId,
Object propertyId, Component uiContext) {
final Field f = super.createField(container, itemId, propertyId, uiContext);
if(f != null) {
if(f instanceof TextField) {
TextField tf = (TextField) f;
tf.setWidth("100%");
}
if(propertyId.equals("incomingDate")) {
((DateField) f).setResolution(DateField.RESOLUTION_MIN);
f.setWidth("100%");
}
if(propertyId.equals("incomingBalance")) {
f.setEnabled(false);
}
if(propertyId.equals("incomingValue")) {
incomingValueT = f;
...
...
public Field getIncomingValueT() {
return incomingValueT;
}
...
我想将一些字段传递给另一个类来管理它们(启用/禁用),但在调用时获取NullPointerException
-
...
Field f = incomingFieldFactory.getIncomingValueT();
f.setEnabled(false);
...
我做错了什么?
答案 0 :(得分:1)
只有在调用Form.setItemDataSource()
或Form.addItemProperty()
时才会创建该字段,因此您需要确保在 getIncomingValueT()
后调用setItemDataSource()
另请注意,项目数据源必须包含一个名为“incomingValue”的属性,以便根据要创建的字段。