-2

編集フィールドに携帯電話番号を入力する必要があります。この形式で番号を表示する必要があります:
123-456-7890

例:1234567890は私の携帯電話番号ですが、これをテキストフィールドに入力しているときに、最初の3桁の後に「-」を配置し、次の3桁の後に別の「-」を配置する必要があります。

123と入力すると、テキストフィールドに自動的に「-」が配置され、456の後に別の「-」が配置されます。最後の4桁を配置する必要はありません。

通貨形式でテキストを表示するのと似ているようですが、そのテキストフィールドからテキストを取得するときは、「-」なしで実際の携帯電話番号を取得する必要があります(123-456-7890ではなく「1234567890」)。

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

gettext form editを取得するときはいつでも、「-」を削除してください。

于 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 に答える