有时,在我的应用的第一个屏幕中,会出现以下错误。
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)
它对应用程序的其余部分没有影响,但是当发生这种情况时,它会出现一个内部错误的Dialog,我不希望它显示。
我该如何避免这种情况?
答案 0 :(得分:2)
这是一个LWUIT4S40错误,堆栈很清楚。我无法告诉你这是什么错误,因为我不熟悉他们的代码,但冒险猜测我会说他们可能正在搞乱标题组件或命令组件之类的东西,并从他们的原生线程中改变布局。
由于您的代码都不在堆栈中,并且堆栈在EDT上,因此您应该处于明确状态,除非您从单独的线程(例如,start方法)修改UI。在Codename One中,使用内置EDT violation detector很容易检测到,但在这里您只需要检查所有代码或获得诺基亚的帮助。