有时,在我的应用程序的第一个屏幕中,出现以下错误。
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错误,堆栈非常清晰。我无法告诉您该错误是什么,因为我不熟悉它们的代码,但是冒昧地猜测一下,我会说他们可能正在弄乱诸如title组件或command组件之类的东西,并从其本机线程中改变了布局。
由于您的代码都不在堆栈中,而堆栈在EDT上,因此您应该毫无疑问,除非您要通过单独的线程(例如start方法)修改UI。在Codename One中,使用内置的EDT违规检测器很容易检测到这一点,但是在这里,您只需要检查所有代码或获得诺基亚的帮助即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句