2010-11-24 15 views
0

Ich entwickle ein BlackBerry-Projekt unter JDE 4.6.1. Das Problem ist, dass, wenn ein Element in der Liste hinzugefügt wird, wird eine Nullpointer von Verfahren geworfen measureListRowBlackBerry ObjectListField

NPE Aufrufliste:

CustomerListField(ObjectListField).measureListRow(ListField, int, int) 
CustomerListField(ListField).layout(int, int) 
CustomerListField(ObjectListField).layout(int, int) 
VList(Manager).layoutChild(Field, int, int)

Hinweise:

  • db_.getDataAccess() - Datenbank
  • getListCount - Abrufen der Anzahl der Elemente in der Liste
  • CustomerListItem - Die Struktur eines Listenelements

Und der entsprechende Code:

public class CustomerListField extends ObjectListField implements ListFieldCallback, ChangeListener { 

    private PagedDataFetcher dataFetcher = new CustomerListPagedDataFetcher(); 

    … 

    public CustomerListField() { 
     try { 
      super.set(new Object[db_.getDataAccess().getListCount()]); 
     } catch (Throwable e) { 
     } 
    } 

    public void drawListRow(ListField listField, Graphics g, int index, int y, 
          int width) { 
     CustomerListItem currentRow = (CustomerListItem) get(listField, index); 
     … 
    } 

    public Object get(ListField list, int index) { 
     try { 
      return dataFetcher.getRowAtIndex(index); 
     } catch (Throwable e) { 
      return null; 
     } 
    } 

// To obtain the data 
public class CustomerListPagedDataFetcher extends PagedDataFetcher { 
    protected Vector get(int from, int to) throws Exception { 
     return DataAccess.getDataAccess().getLists(from, to); 
    } 
} 


/** 
* layout for list 
*/ 
final class VList extends VerticalFieldManager { 
    private final ObjectListField list; 
    int maxHeight = Display.getHeight() - getFont().getHeight() * 2 - 5; 

    VList(ObjectListField list) { 
     super(Manager.VERTICAL_SCROLLBAR | Manager.VERTICAL_SCROLL); 
     this.list = list; 
    } 

    public int getPreferredHeight() { 
     return 45 * list.getSize(); 
    } 

    protected void sublayout(int width, int height) { 
     super.sublayout(width, height); 
     setExtent(width, maxHeight); 
    } 
} 

Antwort

0

Wenn Sie eine Nullpointer in measureRowList fühlen, ist der erste Ort, den ich sehen würde, ist die Quelle dieser Methode, um zu sehen, was Wert Null dereferenziert wird. Es sieht so aus, als hätten Sie die Quelle für diese Methode nicht angegeben.

+0

Diese Methode ist eine native Kernplattform. Und sieht seine Implementierung nicht. –