2009-11-19 102 views
0

我有三個EditField,我爲第二個editfield單獨設置了一個focuslistener。當焦點丟失時,我正在檢查字段是否爲空,如果字段爲空,它將顯示彈出消息。現在,問題是用戶來到該字段後,他無法移動到其他字段而沒有輸入任何字段,但是我希望用戶可以移動到該字段之上的字段,並且他不能移動到下面的字段。如何處理這種情況?請分享你的想法。如何在這種情況下處理黑莓的Focuschangelistener?

+0

所以,要允許用戶從空場去前面的領域,但不許下一場移動:

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); } } 

使用示例? – 2009-11-19 12:12:38

+0

是的完全coldice – Kumar 2009-11-20 03:39:14

回答

2

我想這是驗證功能? 見提出驗證策略:我們有接口IValidated能進行正確的數據進行檢查:現在

interface IValidated { 
public boolean validate(); 
} 

,任何領域,如列表或複選框或選擇可以實現它。
接下來,在每個字段中都有onFocus事件,在那裏您可以驗證先前的IValidated字段,並在setFocus失敗時返回setFocus。

參見EditField中例如:

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); 
} 
}