Я полагаю, это для проверки функциональности?
См. Предложенную стратегию проверки: у нас есть интерфейс IValidated, который можно проверить на правильность данных:
interface IValidated {
public boolean validate();
}
Теперь любое поле, например, список, флажок или выбор, могут его реализовать.
Далее, в каждом поле есть событие onFocus, в котором вы можете проверить предыдущее поле IValidated и установить обратно в случае сбоя setFocus.
См. Пример EditField:
class ValidatedEdit extends BasicEditField implements IValidated {
private static final String EMPTY_STRING = "";
public ValidatedEdit(String label, String value) {
super(label, value);
}
protected void onFocus(int direction) {
// it's from upper field
if (direction > 0 && getIndex() > 0) {
// get upper field
Field field = getManager().getField(getIndex() - 1);
// if its IValidated
if (field instanceof IValidated) {
IValidated validated = (IValidated) field;
// validate, if false set focus to IValidated
if (!validated.validate()) {
field.setFocus();
return;
}
}
}
super.onFocus(direction);
}
public boolean validate() {
return !getText().equalsIgnoreCase(EMPTY_STRING);
}
}
Пример использования:
class Scr extends MainScreen {
ValidatedEdit mEditField1 = new ValidatedEdit("field#1", "");
ValidatedEdit mEditField2 = new ValidatedEdit("field#2", "");
ValidatedEdit mEditField3 = new ValidatedEdit("field#3", "");
public Scr() {
add(mEditField1);
add(mEditField2);
add(mEditField3);
}
}