-2

我需要在编辑字段中输入手机号码。我需要以这种格式显示数字:
123-456-7890

例如:1234567890 是我的手机号码,当我在文本字段中输入这个时,前 3 位数字后我需要放置一个“-”,接下来的 3 位数字后,我需要放置另一个“-”。

如果我输入 123 然后自动在文本字段中放置“-”,在 456 之后放置另一个“-”,不需要放置最后 4 位数字。

似乎类似于以货币格式显示文本,但是从该文本字段获取文本时,我需要获取没有任何“-”的实际手机号码(“1234567890”,而不是 123-456-7890)关于如何做到这一点的任何想法?

4

3 回答 3

1

请尝试在 EditFiled 上添加侦听器并检查输入音素的长度并在 3 和 7 位置设置“-”,请参阅以下代码可能会有所帮助。

editField.getEditField().setChangeListener(new FieldChangeListener() { 

            public void fieldChanged(Field field, int context) {
                EditField sfield = (EditField)field;
            String number = sfield.getText();
            if (number.length() == 3 || number.length() == 7) { 
                setFormat(number); 
            } 
            } 

            });

    add(editField);

在主屏幕类上创建以下方法

private void setFormat(String newPhoneNo){
    editField.setText(newPhoneNo+"-");
}

每当您获取文本表单编辑时,删除“-”。

于 2012-07-05T14:18:41.677 回答
0

请检查此代码,

 public MyScreen()
{        
    setTitle("MyTitle");
    final EditField  ef = new EditField();
    add(ef);
    ef.setChangeListener(new FieldChangeListener() 
    {
        public void fieldChanged(Field field, int context) 
        {

             if (ef.getText().length() == 4 && !ef.getText().endsWith("-"))
             { 
                    ef.setText(""+ef.getText().substring(0,3)+"-"+ef.getText().charAt(3));
            }
             if (ef.getText().length() == 8 && !ef.getText().endsWith("-"))
             { 
                    ef.setText(""+ef.getText().substring(0,7)+"-"+ef.getText().charAt(7));
            }
        }
    });
}
于 2012-07-06T12:19:18.680 回答
-1

首先尝试原生 TextField.PHONENUMBER 约束。

public void startApp()
    {
        mDisplay = Display.getDisplay(this);
        mTextField = new TextField("Text Field Label:",null,MAXCHARS,TextField.PHONENUMBER);
        mForm = new Form("MIDlet Developer Guide: Display a text field.");
        mForm.append(mTextField);
        mDisplay.setCurrent(mForm);
    }
于 2012-07-05T10:47:41.877 回答