2012-10-23 48 views
0

有一个领域的工厂 -通场到另一个类

... 
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); 
... 

我在做什么错?

回答

1

该字段仅在创建时Form.setItemDataSource()Form.addItemProperty()被调用,所以你需要确保你叫getIncomingValueT()setItemDataSource()后。

还要注意的是该项目的数据源必须包含一个名为“incomingValue”属性在所有要创建的领域。

+0

感谢您的答复,了Jonatan!现在尝试一下。 –

+0

是的,你是对的,再次感谢! –