-1

EditTextの場合、最初の文字をアルファとして入力し、残りは何でも構いません。の助けを借りて、このタスクを達成しましたTextWatcher。しかし、今私の問題は、最初の文字として何か間違ったもの (数字、特殊文字など) を入力した場合EditText、残りの文字を受け入れないことです。私が最初の文字を修正した場合、私だけEditTextが受け入れる必要があります。この友達を達成する可能性はありますか?はいの場合は、友達を案内してください。

私のtextWatcherコードは

edittext.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    public void afterTextChanged(Editable s) {          
        if (s.length() > 0) {
            String str = edittext.getText().toString();
            char t = str.charAt(0);
            if (!Character.isLetter(t)) {
                Toast.makeText(getApplicationContext(),
                        "please enter your first charecter as alpha",
                        Toast.LENGTH_LONG).show();
            }
        }
    }
});

前もって感謝します。

4

3 に答える 3

3

以下のコードを試してください

editText.addTextChangedListener(new TextWatcher() {

        public void onTextChanged(CharSequence s, int start,
                int before, int count) {

        }

        public void beforeTextChanged(CharSequence s, int start,
                int count, int after) {
        }

        public void afterTextChanged(Editable s) {

            Character cr = s.toString().charAt(0);
     if(Character.isLetter(cr))
      {
        // do stuff here  
      }
             else
             {
                // do stuff here
             }


        }
    });
于 2013-03-05T07:29:21.550 に答える
0
editText.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start,
                    int before, int count) {
                            //check if 's' starts with an alphabet
                            if(Character.isLetter(s.toString().charAt(0)))
                            {
                                  //success
                            } else {
                                  //fail
                            }
            }

            public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {
            }

            public void afterTextChanged(Editable s) {
            }
        });
于 2013-03-05T07:25:58.923 に答える
0

メソッド chatAt(int index) を使用して、指定された位置の文字の値を取得できます。この場合は 0 です。

次に、 isLetter() を使用して、フェッチされた文字が文字であることを確認する必要があります。

例えば。isLetter(chatAt(0))

于 2013-03-05T07:29:46.873 に答える