我用codenameone开发已有一年多了,之前我从未遇到过这个问题,我觉得我正在失去理智。我刚刚重新设计了我正在处理的应用程序的一部分,现在ActionListener
没有被解雇。我将它们附加到代码中的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 :(得分:0)
您是否将父级设置为主要组件或可关注?
答案 1 :(得分:0)
单击事件未触发的原因是因为未启用组件,可能是BUI Builder中的错误。在GUI Builder中选中“Enabled”和“Focusable”复选框后,每次我回到该表单时都看不到它们,我只是在代码中使用了component.setFocusable(true)
和component.setEnabled(true)
,之后它运作良好。