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 回答