Кодовое название один - валидатор PickerComponent - PullRequest
0 голосов
/ 09 мая 2018

В следующем коде валидатор «даты» PickerComponent никогда не выполняется на симуляторе с «GooglePixel2.skin», вместо этого выполняется с «iPhoneX.skin». Зачем? В журнале нет строки «Проверка даты выполнения» после выбора даты на Android (в симуляторе), вместо этого эта строка непрерывно регистрируется на iPhone (в симуляторе). Мой код неверен?

Я пытался следовать этому примеру: https://www.codenameone.com/javadoc/com/codename1/ui/layouts/TextModeLayout.html

   public void show(Form backForm) {

        TextModeLayout textModeLayout = new TextModeLayout(4, 1);
        Container inputPersonData = new Container(textModeLayout);

        TextComponent name = new TextComponent().label("Nome");
        TextComponent surname = new TextComponent().label("Cognome");
        PickerComponent gender = PickerComponent.createStrings("Maschio", "Femmina", "altro");
        PickerComponent date = PickerComponent.createDate(new Date());

        Validator val = new Validator();
        val.addConstraint(name, new LengthConstraint(2));
        val.addConstraint(surname, new LengthConstraint(2));
        val.addConstraint(date, new Constraint() {
            @Override
            public boolean isValid(Object value) {
                Log.p("Validator of date executed");
                boolean res = false;
                if (value instanceof Date) {
                    Calendar birthday = Calendar.getInstance();
                    birthday.setTime((Date) value);
                    Calendar nowLess13years = Calendar.getInstance();
                    nowLess13years.setTime(new Date());
                    nowLess13years.add(Calendar.YEAR, -13);
                    if (birthday.before(nowLess13years) || birthday.equals(nowLess13years)) {
                        res = true;
                    }
                }
                return res;
            }

            @Override
            public String getDefaultFailMessage() {
                return "You must be at least 13 years old";
            }
        });

        inputPersonData.add(name);
        inputPersonData.add(surname);
        inputPersonData.add(gender);
        inputPersonData.add(date);

        add(inputPersonData);
        super.show();

        Log.p("Registry Form shown correctly");

    }

1 Ответ

0 голосов
/ 09 мая 2018

Это похоже на ошибку в коде валидатора и компоненте выбора. У меня работает только после того, как я отредактирую одно из полей независимо от скина. Я исправил это, чтобы связать правильно везде.

...