在Blackberry中自动更改编辑字段的焦点

在Blackberry中自动更改编辑字段的焦点,blackberry,event-handling,focus,textfield,blackberry-editfield,Blackberry,Event Handling,Focus,Textfield,Blackberry Editfield,我的黑莓应用程序中有五个EditField对象,每个对象只接受一个数字字符 输入字符时,我想将焦点从第一个EditField更改为第二个EditField。注意:焦点必须自动从一个编辑字段转到另一个编辑字段,而不是按Enter键或其他键。您想在编辑字段上设置一个字段更改侦听器来监控字段内容的更改。用户输入单个字符后,可以通过调用field.setFocus()移动到下一个字段 假设您的编辑字段已逐个添加到屏幕中 您可以使用下一个代码: editField<i>.setFieldCha

我的黑莓应用程序中有五个
EditField
对象,每个对象只接受一个数字字符


输入字符时,我想将焦点从第一个
EditField
更改为第二个
EditField
。注意:焦点必须自动从一个编辑字段转到另一个编辑字段,而不是按Enter键或其他键。

您想在编辑字段上设置一个
字段更改侦听器来监控字段内容的更改。用户输入单个字符后,可以通过调用
field.setFocus()
移动到下一个字段

假设您的
编辑字段已逐个添加到屏幕中

您可以使用下一个代码:

editField<i>.setFieldChangeListener(this);
...
public void fieldChanged(Field field, int status) {
   if (field instanceof EditField) {
     EditField editField = (EditField)field;
     if (field.getText().length() > 0) {//don't move focus in case of deleted text
        Manager manager = field.getManager();
        Field nextField = manager.getField(manager.getFieldIndex(editField) + 1);
        if (nextField instanceof EditField) {
           nextField.setFocus();
        }
     }
   }
}
editField.setFieldChangeListener(此);
...
公共无效字段已更改(字段,整型状态){
if(编辑字段的字段实例){
EditField EditField=(EditField)字段;
如果(field.getText().length()>0){//在删除文本的情况下不移动焦点
Manager=field.getManager();
字段nextField=manager.getField(manager.getFieldIndex(editField)+1);
if(nextField instanceof EditField){
setFocus();
}
}
}
}

Hey在这方面遇到了问题实际上我正在使用自定义EditField,但当我在编辑字段中更改或输入一些文本时,不会调用FieldChanged()事件,而焦点也不会设置为下一个EditField。是他们捕获Editfield文本中除FieldChangelistner之外的其他事件。
fieldChanged()
总是在
Editfield
的内容更改时调用,这意味着您正在自定义类中执行重写此行为的操作。你可能想问一个单独的问题来解决这个问题。