User interface 在这种情况下,如何在blackberry中处理Focuschangelistener?
我有三个EditField,第二个EditField有一个设置焦点Listener。当焦点丢失时,我正在检查字段是否为空。如果字段为空,它将显示弹出消息。现在的问题是,一旦用户来到该字段,他不能移动到其他字段而不输入任何字段,但我希望用户可以移动到该字段上方的字段,他不能移动到下方现场。如何处理这种情况?请分享您的想法。我想这是为了验证功能? 参见建议的验证策略:我们有可验证的接口,可检查其是否有正确的数据:User interface 在这种情况下,如何在blackberry中处理Focuschangelistener?,user-interface,validation,blackberry,User Interface,Validation,Blackberry,我有三个EditField,第二个EditField有一个设置焦点Listener。当焦点丢失时,我正在检查字段是否为空。如果字段为空,它将显示弹出消息。现在的问题是,一旦用户来到该字段,他不能移动到其他字段而不输入任何字段,但我希望用户可以移动到该字段上方的字段,他不能移动到下方现场。如何处理这种情况?请分享您的想法。我想这是为了验证功能? 参见建议的验证策略:我们有可验证的接口,可检查其是否有正确的数据: interface IValidated { public boolean vali
interface IValidated {
public boolean validate();
}
现在,任何字段,如列表、复选框或选项都可以实现它。接下来,每个字段中都有一个onFocus事件,在这里您可以验证以前的有效字段,并在失败时将焦点设置回原处 请参见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);
}
}
所以,您希望允许用户从空字段转到上一个字段,但禁止移动下一个字段?