2016-11-10 1 views
2

ToastBar Wenn ich in einem Teil des Codes verwenden, funktioniert es gut, aber wenn ich es verwenden, um einige Nachricht anzuzeigen, dass die Verbindung abgeschlossen ist dh. Verwenden Sie es in postResponse von connectionRequest, es zeigt nicht. Warum?ToastBar in PostResponse von connectionRequest

public boolean abc = false; 
ConnectionRequest cr = new ConnectionRequest(){ 
    @Override 
    protected void postResponse() { 
     abc = true; 
     //update: this toastbar is commented 
     ToastBar.showMessage("Confirmation of your password is sent to your email address", FontImage.MATERIAL_MAIL_OUTLINE,2000); 
    } 

}; 
cr.setPost(true); 
cr.setUrl(AllUrl.forgetPasswordUrl); 
cr.setDuplicateSupported(true); 
cr.setTimeout(30000); 
cr.addArgument("forgetten_email", forgottonEmail); 
InfiniteProgress ip = new InfiniteProgress(); 
Dialog d = ip.showInifiniteBlocking(); 
cr.setDisposeOnCompletion(d); 
NetworkManager.getInstance().addToQueueAndWait(cr); 

Update1: Es ist eine Form in Gui Builder als Leer Dialog erstellt. Die toastbar doesnot hier arbeiten, aber ein weiteres Dialogfeld arbeitet

protected void beforeForgetPasswordDialog(Form f) { 
    TextField emailTextField = new TextField(); 
    f.add(emailTextField); 

    Button submit = new Button("Submit"); 

    submit.addActionListener(e -> { 
     Style s = UIManager.getInstance().getComponentStyle("Label"); 
     String forgottenPasswordEmail = emailTextField.getText(); 
     if (forgottenPasswordEmail != null && !forgottenPasswordEmail.equals("")) { 
      ForgetPasswordConnection fpc = new ForgetPasswordConnection(); 
      fpc.forgetPasswordConnectionMethod(forgottenPasswordEmail, s, StateMachine.this, f); 
      forgetPasswordSuccess = fpc.abc; 
      if (forgetPasswordSuccess) { 
       showForm("Main", null); 
      } 
     } else { 
     //Dialog.show(null, "Email id is empty", "ok", null); 
//Dialogbox works here, but toastBar doesnt work 
     // f.addShowListener(d -> { 
     // ToastBar.showMessage("Email id is empty", FontImage.MATERIAL_MAIL_OUTLINE, 2000); 
     // });     
     } 
    }); 
    f.add(submit); 
} 

Antwort

0

Beachten Sie, dass die Methode aufgerufen wird, bevor der Dialog angeordnet ist, so dass Sie die toastbar im Dialog anstelle der Mutterform zeigen. Versuchen Sie, einen Verweis auf das aktuelle Formular beizubehalten und fügen Sie dann einen Show-Listener hinzu, z. B .:

parentForm.addShowListener(e -> showMyToastbar()); 
+0

ok jetzt habe ich ein echtes Problem. Ich habe diese connectionRequest in einer Form aufgerufen, die eigentlich ein leerer Dialog ist, der im GUI-Builder erstellt wurde und auch hier hilft addShowListener nicht. – beck

+0

Ich habe die Frage oben aktualisiert. Schau mal – beck

+1

'ToastBar' funktioniert nicht über einem' Dialog'. –

Verwandte Themen