动作听众没有开火

时间:2016-06-07 21:30:28

标签: actionlistener codenameone

我用codenameone开发已有一年多了,之前我从未遇到过这个问题,我觉得我正在失去理智。我刚刚重新设计了我正在处理的应用程序的一部分,现在ActionListener没有被解雇。我将它们附加到代码中的ButtonSpanButton

        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上测试。

2 个答案:

答案 0 :(得分:0)

您是否将父级设置为主要组件或可关注?

答案 1 :(得分:0)

单击事件未触发的原因是因为未启用组件,可能是BUI Builder中的错误。在GUI Builder中选中“Enabled”和“Focusable”复选框后,每次我回到该表单时都看不到它们,我只是在代码中使用了component.setFocusable(true)component.setEnabled(true),之后它运作良好。