Reputation: 53
sometimes i get this exception when clearing and re-adding controls to a container
I think it related to paint issue ,is there a way I can stop drawing events till I finish adding controls
03-10 14:00:36.435: W/System.err(13405): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
03-10 14:00:36.435: W/System.err(13405): at java.util.ArrayList.get(ArrayList.java:308)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.i.a(Container.java:1312)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.b(Component.java:1302)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.435: W/System.err(13405): at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.i.a(Container.java:1313)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.p.a(Form.java:3099)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.b(Component.java:1308)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.p.b(Form.java:3109)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.d(Component.java:1282)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.a(Component.java:1257)
03-10 14:00:36.445: W/System.err(13405): at com.codename1.m.h.d(Component.java:1225)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.m.h.c(Component.java:1510)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.m.h.i(Component.java:1457)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.impl.a.p(CodenameOneImplementation.java:516)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.m.l.j(Display.java:1071)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.m.l.i(Display.java:993)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.m.ab.run(RunnableWrapper.java:120)
03-10 14:00:36.455: W/System.err(13405): at com.codename1.impl.b$1.run(CodenameOneThread.java:60)
03-10 14:00:36.455: W/System.err(13405): at java.lang.Thread.run(Thread.java:841)
Upvotes: 1
Views: 20
Reputation: 52770
You must never change the UI in a thread that isn't the event dispatch thread (EDT).
Paint happens on the EDT as well as all the other events so stopping it isn't an issue. There is no need to synchronize or do anything elaborate in such a case.
You can use the EDT violation detection tool to find mistakes in the code. See: https://www.codenameone.com/manual/edt.html
Upvotes: 1