有时,在我的应用程序的第一个屏幕上,会出现以下错误。
java.lang.ArrayIndexOutOfBoundsException: 5 >= 5
at java.util.Vector.elementAt(Vector.java:427)
at com.sun.lwuit.Container.getComponentAt(Container.java:844)
at com.sun.lwuit.layouts.BoxLayout.getPreferredSize(BoxLayout.java:133)
at com.sun.lwuit.Container.calcPreferredSize(Container.java:1097)
at com.sun.lwuit.Component.preferredSize(Component.java:1431)
at com.sun.lwuit.Component.getPreferredSize(Component.java:473)
at com.sun.lwuit.Component.getPreferredH(Component.java:553)
at com.sun.lwuit.layouts.BoxLayout.layoutContainer(BoxLayout.java:84)
at com.sun.lwuit.Container.doLayout(Container.java:813)
at com.sun.lwuit.Container.layoutContainer(Container.java:805)
at com.sun.lwuit.Container.doLayout(Container.java:818)
at com.sun.lwuit.Form.sizeChangedInternal(+93)
at com.sun.lwuit.Display.handleEvent(Display.java:1654)
at com.sun.lwuit.Display.edtLoopImpl(Display.java:886)
at com.sun.lwuit.Display.mainEDTLoop(Display.java:831)
at com.sun.lwuit.RunnableWrapper.run(RunnableWrapper.java:119)
它对应用程序的其他部分没有影响,但当这种情况发生时,它会显示一个对话框,里面有错误,我不希望它显示出来。
我该如何避免这种情况?
这是一个LWUIT4S40错误,堆栈非常清楚。我不能告诉你这个bug是什么,因为我不熟悉他们的代码,但大胆猜测一下,我会说他们可能在扰乱标题组件或命令组件之类的东西,并从本地线程更改布局。
由于堆栈中没有任何代码,而且堆栈在EDT上,因此除非您从单独的线程(例如启动方法)修改UI,否则您应该处于清除状态。在Codename One中,使用内置的EDT违规检测器很容易检测到这一点,但在这里,您只需检查所有代码或获得诺基亚的帮助。