根据从 XML 文件中解析信息的向量绘制 ListField 并使用 Graphics 绘制屏幕
public class CategoriesUI extends MainScreen implements ListFieldCallback {
//categoryimport.listingnodup is the current categories with no duplicates
public Categories categoryimport = new Categories(); //brings in all infromation from Categories.java
private ListField allcategories;
CategoriesUI() {
this.add(new LabelField("List of Categories"));
allcategories = new ListField(categoryimport.listingnodup.size());
allcategories.setCallback(this); //we manage the interaction!
this.add(allcategories);
}
protected boolean onSavePrompt() {
return true;
}
//Implemented Call Back Methods follow
//draw the current row
public void drawListRow(ListField list, Graphics g, int index, int y, int w) {
catdrawer categorydraw = (catdrawer) this.get(list, index);
int drawColor = Color.BLACK;
g.setColor(drawColor);
g.drawText(categorydraw.cat, 0, y, 0, w);
}
public int getPreferredWidth(ListField list) {
return Display.getWidth();
}
public int indexOfList(ListField listField, String prefix, int start) {
//Not a current implementation this is really just commented out
return start;
}
//Returns the object at the specified index
public Object get(ListField list, int index){
return categoryimport.listingnodup.elementAt(index);
}
class catdrawer {
public String cat = categoryimport.listingnodup.toString();
}
}
该程序正确符合要求,但当它在 Simulator 8800 中运行时,执行此代码时会崩溃。
public class CategoriesUI extends MainScreen implements ListFieldCallback {
//categoryimport.listingnodup is the current categories with no duplicates
public Categories categoryimport = new Categories(); //brings in all infromation from Categories.java
private ListField allcategories;
CategoriesUI() {
this.add(new LabelField("List of Categories"));
allcategories = new ListField(categoryimport.listingnodup.size());
allcategories.setCallback(this); //we manage the interaction!
this.add(allcategories);
}
protected boolean onSavePrompt() {
return true;
}
//Implemented Call Back Methods follow
//draw the current row
public void drawListRow(ListField list, Graphics g, int index, int y, int w) {
catdrawer categorydraw = (catdrawer) this.get(list, index);
int drawColor = Color.BLACK;
g.setColor(drawColor);
g.drawText(categorydraw.cat, 0, y, 0, w);
}
public int getPreferredWidth(ListField list) {
return Display.getWidth();
}
public int indexOfList(ListField listField, String prefix, int start) {
//Not a current implementation this is really just commented out
return start;
}
//Returns the object at the specified index
public Object get(ListField list, int index){
return categoryimport.listingnodup.elementAt(index);
}
class catdrawer {
public String cat = categoryimport.listingnodup.toString();
}
}
The program complies correctly but when it runs in the Simulator 8800 it crashes it when this code is executed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这段代码就是问题的根源:
当categorydraw为null时,3行后调用drawtext会抛出异常。您需要检查是否为空。
This code is the source of the problem:
When categorydraw is null, the call to drawtext 3 lines later will throw an exception. You need to check for null.