0

パスワードフィールド用に 3 つの EditTexts があります。それぞれに 1 桁のみを含めることができます。パスワード入力時のリクエストフォーカスを実装しました。しかし、数字を削除しているときに、ある EditText から別の EditText にフォーカスを変更するにはどうすればよいでしょうか?

4

1 に答える 1

0

これは、1 つのパスワードで edittext を使用するためのベスト プラクティスです。

et1 = (EditText) findViewById(R.id.code1);
et2 = (EditText) findViewById(R.id.code2);
et3 = (EditText) findViewById(R.id.code3);

et1.addTextChangedListener(new TextWatcher() {

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

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() == 1) {
                et2.requestFocus();
            }

        }
    });

    et2.addTextChangedListener(new TextWatcher() {

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

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() == 1) {
                et3.requestFocus();
            } else if (s.length() == 0) {
                et2.clearFocus();
                et1.requestFocus();
            }
        }
    });

このように管理する必要があります。

于 2013-04-04T13:50:51.887 に答える