If user clicks multiple times fast enough on Button
which shows ToastBar
- ToastBar
throws NullPointerException
.
Stack:
java.lang.NullPointerException
(Code 1) at com.codename1.components.ToastBar.updateStatus(ToastBar.java:602)
at com.codename1.components.ToastBar.access$300(ToastBar.java:84)
at com.codename1.components.ToastBar$2.run(ToastBar.java:638)
at com.codename1.ui.Display.processSerialCalls(Display.java:1101)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1045)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1154)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1191)
at com.codename1.ui.AnimationManager.addAnimationAndBlock(AnimationManager.java:105)
at com.codename1.ui.ComponentSelector.animateUnlayoutAndWait(ComponentSelector.java:3584)
at com.codename1.ui.ComponentSelector.slideUpAndWait(ComponentSelector.java:1036)
at com.codename1.components.ToastBar.setVisible(ToastBar.java:787)
at com.codename1.components.ToastBar.updateStatus(ToastBar.java:502)
at com.codename1.components.ToastBar.access$300(ToastBar.java:84)
at com.codename1.components.ToastBar$2.run(ToastBar.java:638)
at com.codename1.ui.Display.processSerialCalls(Display.java:1101)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1045)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1154)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1191)
at com.codename1.ui.AnimationManager.addAnimationAndBlock(AnimationManager.java:105)
at com.codename1.ui.Container.replaceComponents(Container.java:869)
at com.codename1.ui.Container.replaceAndWait(Container.java:744)
at com.codename1.components.ToastBar.updateStatus(ToastBar.java:602)
at com.codename1.components.ToastBar.access$300(ToastBar.java:84)
at com.codename1.components.ToastBar$2.run(ToastBar.java:638)
at com.codename1.ui.Display.processSerialCalls(Display.java:1101)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1045)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1154)
at com.codename1.ui.Display.invokeAndBlock(Display.java:1191)
at com.codename1.ui.AnimationManager.addAnimationAndBlock(AnimationManager.java:105)
at com.codename1.ui.Container.replaceComponents(Container.java:869)
at com.codename1.ui.Container.replaceAndWait(Container.java:744)
at com.codename1.components.ToastBar.updateStatus(ToastBar.java:602)
at com.codename1.components.ToastBar.access$300(ToastBar.java:84)
at com.codename1.components.ToastBar$Status.show(ToastBar.java:325)
at com.codename1.components.ToastBar.showMessage(ToastBar.java:820)
at com.codename1.components.ToastBar.showMessage(ToastBar.java:830)
at com.codename1.components.ToastBar.showErrorMessage(ToastBar.java:858)
(Code 2) at com.somesite.someapp.somepackage.DigitRoller.copyToClipboard(DigitRoller.java:122)
(Code 1): ToastBar.java, line 602
c.label.getParent().replaceAndWait(c.label, newLabel, CommonTransitions.createCover(CommonTransitions.SLIDE_VERTICAL, true, 300));
(Code 2): DigitRoller.java
protected void copyToClipboard () {
Clipboard.copyString(sToken);
ToastBar.showErrorMessage("Copied " + sToken, 1000);
}
copyToClipboard()
is invoked by this ActionListener
:
btnCopy.addActionListener((e)-> {
this.copyToClipboard();
});
After displaying Exception
details in Dialog
the app freezes or stops animations by it's own decision.
Extremely simple way to crash application.
This seems to be a bug, I added a potential workaround for it here.