2017-09-12 3 views
1

Si l'utilisateur clique plusieurs fois assez rapidement sur Button, ToastBar - ToastBar lève NullPointerException.Codename One - ToastBar 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, ligne 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() est appelé par ce ActionListener:

btnCopy.addActionListener((e)-> { 
      this.copyToClipboard(); 
     }); 

Après avoir affiché Exception détails dans Dialog le gel app ou arrête des animations par sa propre décision. Extrêmement simple de plantage de l'application.

Répondre

1

Cela semble être un bug, j'ai ajouté une solution de contournement potentielle pour cela here.