2016-06-07 102 views
1

我一直在使用codenameone進行一年的開發,而且我從未遇到過這個問題,我覺得我正在失去理智。我剛剛重新設計了我正在工作的應用程序的一部分,現在ActionListener s沒有開火。我將它們連接到Button,並在代碼SpanButton動作監聽器沒有觸發

 ActionListener goToDoc = new ActionListener() { 
      String mDocId = docId; 

      @Override 
      public void actionPerformed(ActionEvent evt) { 
       mStateMachine.currentExpertId = mDocId; 
       mStateMachine.showForm("DoctorDetails", null); 
      } 
     }; 
     name.addActionListener(goToDoc); 
     Util.downloadImageToStorage(mStateMachine.URL_PREFIX+"images/doctors/"+(String)value.get("doc_pic"), 
       "doc_post_pic_"+(String)value.get("doc_id")+".png", new Callback<Image>() { 
      @Override 
      public void onSucess(Image img) { 
       pic.setIcon(img.scaledWidth(mStateMachine.getProportionalWidth(.23))); 
       StateMachine.applyGreenBorder(pic); 
       pic.addActionListener(goToDoc); 
       pic.getParent().revalidate(); 
      } 

      @Override 
      public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { 
       System.out.println("Unable to download expert profile picture"); 
      } 
     }); 

當我調試代碼,組件都表明ActionListener連接,但從未達到actionPerformed方法,無論多少次我點擊按鈕。我在模擬器和Android設備上遇到此問題。我還沒有測試iPhone。

回答

0

點擊事件未被觸發的原因是因爲組件未啓用,可能是BUI Builder中的一個錯誤。在GUI生成器中勾選'Enabled'和'Focusable'複選框後,每次回到表單時都沒有選中它們,我只是在代碼中使用了component.setFocusable(true)component.setEnabled(true),並且在此之後它運行正常。

0

您是否將父級設置爲首要組件或可調焦?

+0

不,父母是一個普通的BoxLayout Y容器。這個答案應該是一個評論,順便說一句。 – ygesher

+0

我建議覆蓋形式指針發佈事件和調用超級檢查聚焦組件。 –

+0

如何使用GUI構建器表單來做到這一點? – ygesher