Codenameone Enum.valueof String在iOS 9上引发IllegalArgument异常

Codenameone Enum.valueof String在iOS 9上引发IllegalArgument异常,ios,codenameone,Ios,Codenameone,在codenameone中,在enum上使用valueOf(字符串s)时抛出IllegalArgument异常:在iPhone5、iOS9上没有enum常量,但在模拟器和Android上工作正常。3-4周前效果不错。在文本框中键入OK并按下simulator fine上的按钮,如果您为iOS9构建并运行它-您将获得异常 下面是要测试的快照代码: public class MyApplication { private Form current; private Resources theme;

在codenameone中,在enum上使用valueOf(字符串s)时抛出IllegalArgument异常:在iPhone5、iOS9上没有enum常量,但在模拟器和Android上工作正常。3-4周前效果不错。在文本框中键入OK并按下simulator fine上的按钮,如果您为iOS9构建并运行它-您将获得异常

下面是要测试的快照代码:

public class MyApplication {

private Form current;
private Resources theme;
enum popo { OK, ERROR,EXCEPTION};

public void init(Object context) {
    theme = UIManager.initFirstTheme("/theme");

    // Pro only feature, uncomment if you have a pro subscription
    // Log.bindCrashProtection(true);
}

public void start() {
    if(current != null){
        current.show();
        return;
    }

    Form hi = new Form("Hi World");
    hi.setLayout(new BorderLayout());
    final TextArea input = new TextArea();
    Button testr = new Button("Touch me");

    testr.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent evt) {
            popo q = popo.valueOf(input.getText());
            Dialog.show("title", 
                    "just found string = "+input.getText()+" \nthat gives enum = "+q.toString()
                    , "OK", null);
        }
    });


    hi.addComponent(BorderLayout.CENTER, input);
    hi.addComponent(BorderLayout.SOUTH,testr);
    hi.show();

}

public void stop() {
    current = Display.getInstance().getCurrent();
}

public void destroy() {
}

}
非常感谢,, Goran.

枚举的
值()
和相关调用在Codename One中未实现。问题的关键在于它们在模糊处理过程中失败(对于Android),需要一些由
javac
工具生成的反射代码

解决方法是使用如下内容:

enum popo {OK("OK"), ERROR("ERROR),EXCEPTION("EXCEPTION");
public popo(String value) {
   this.value = value;
}
String value;
};
然后使用
myPopo.value

Enum的
values()
,相关调用不会在Codename One中实现。问题的关键在于它们在模糊处理过程中失败(对于Android),需要一些由
javac
工具生成的反射代码

解决方法是使用如下内容:

enum popo {OK("OK"), ERROR("ERROR),EXCEPTION("EXCEPTION");
public popo(String value) {
   this.value = value;
}
String value;
};

然后使用
myPopo.value

这不是swift,跨平台?抱歉-忘了提到它在codenameone上。这不是swift,跨平台?抱歉-忘了提到它在codenameone上。我重写了的值并使用了popo[]l=popo.values();它工作了,它不应该工作吗?它在iOS设备上对你有用吗?据我记忆所及,它不应该出现,但我可能在这里错了。我重写了valueOf并使用了popo[]l=popopo.values();它工作了,它不应该工作吗?它在iOS设备上对你有用吗?据我回忆,这不应该,但我可能错了。