1

有时,在我的应用程序的第一个屏幕中,会出现以下错误。

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)

它对应用程序的其余部分没有影响,但是当发生这种情况时,它会出现一个包含错误的对话框,我不希望它显示。

我怎样才能避免这种情况?

4

1 回答 1

2

这是一个 LWUIT4S40 错误,堆栈非常清晰。我不能告诉你这个错误是什么,因为我不熟悉他们的代码,但冒昧地猜测我会说他们可能会弄乱标题组件或命令组件之类的东西,并从他们的原生线程中改变布局。

由于您的代码都没有在堆栈中并且堆栈在 EDT 上,除非您从单独的线程(例如 start 方法)修改 UI,否则您应该清楚。在 Codename One 中,使用内置的EDT 违规检测器很容易检测到这一点,但在这里您只需要检查所有代码或获得诺基亚的帮助。

于 2013-08-18T19:24:39.180 回答