0

カスタムキーボードを使用しています。

私は 4EditTextつと 1 つを持っていButtonます。

調子:-

の最大長EditTextは 1 です。 に値が入力されるたびにeditText、フォーカスは次の に移動する必要がありEditTextます。を使って実装してTextWatcherいます。

問題は、 EditText に任意の値を入力したときに、フォーカスまたはカーソルが次の EditText に移動することです。これは問題ありませんが、ユーザーが入力した値を編集したい場合EditText、最大値が既に存在するため、フォーカスを合わせることができません。 . そして明らかに、カーソルは次の EditText に移動します。

コード:-

public class Listener implements TextWatcher {

        EditText editText;
        public Listener(EditText et)
        {
            editText = et;
        }
        @Override
        public void afterTextChanged(Editable s)
        {
            int id = editText.getId();
            String str = s.toString();
            if(!str.isEmpty())
            {
                switch (id) {
                case R.id.edit_txt1:
                    et2.requestFocus();
                    break;
                case R.id.edit_txt3:
                    et3.requestFocus();
                    break;
                case R.id.edit_txt3:
                    et4.requestFocus();
                    break;
                case R.id.edit_pin4:
                    createPin4.clearFocus();

                    EditText txt =(EditText)findViewById(R.id.foc);
                    txt.requestFocus();
                    break;
                }
            }
            else
            {
                editText.setFocusable(true);
            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

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


        }

    }
4

1 に答える 1

0

Listener実装してOnClickListener、次のことを行います。

public void onClick(View v){
  this.requestFocus();
}

また、 をオーバーライドしbeforeTextChanged()て、テキスト フィールドを空にします。

onClick イベントが TextWatcher の前に発生すると確信していますが、確実に知る唯一の方法は試してみることです。

于 2013-06-05T10:13:51.027 に答える