这是我的Traverse方法代码
protected boolean traverse(int dir, int viewportWidth, int viewportHeight,
int[] visRect_inout) {
try {
if (hori && vert) {
// CustomItems items=new CustomItems("Hi");
switch (dir) {
case Canvas.DOWN:
this.a=dir; //Canvas.DOWN
this.b=viewportWidth; //b=2
this.c=viewportHeight; //c=3
this.d=visRect_inout; //d={2,2,250,250}
this.traverse(Canvas.UP, b, c, d);
break;
case Canvas.UP:
this.a=dir;
this.j=viewportWidth;
this.k=viewportHeight;
this.d=visRect_inout;
this.traverse(Canvas.UP, j, k, d);
break;
case Canvas.LEFT:
this.a=dir;
this.j=viewportWidth;
this.k=viewportHeight;
this.d=visRect_inout;
this.traverse(Canvas.LEFT, j, k, d);
break;
case Canvas.RIGHT:
break;
}
}
} catch (Exception e) {
System.out.println("Exception " + e);
}
return false;
}
我对自定义项目很新 如果我做错了,请告诉我。
答案 0 :(得分:0)
从switch语句中调用traverse
的方式对我来说很滑:
this.traverse(Canvas.UP, b, c, d); // ...
// ...and similar in cases Canvas.UP, LEFT
到目前为止您发布的代码非常零碎,但据我所知,上面将导致traverse
的无限递归调用,最终以堆栈溢出错误结束。
在您的特定情况下,这可能是无害的,因为您无条件地从您的方法返回false
。根据我的理解,这意味着设备永远不会尝试使用Canvas UP
和其他潜在危险值来调用遍历。如果您有兴趣,请随时查看lcdui CustomItem#traverse API documentation以获取更多详细信息。