Android 中获取EditText控件的焦点以及监听他的内容让焦点自动跳转到下一个EditText控件

       最近在弄EditText控件,监听他的输入内容,在输入3个字符的时候就自动将焦点跳到另一个EditText文本框里面,找了好久,才弄到代码:

xml 文件:

   
            

            
java代码:

     让当前的activity 或者实现TextWatcher接口,重写三个方法,代码如下:

FragFour extends Fragment implements TextWatcher{
        editText1.addTextChangedListener(this);//给edittext设置光标改变的监听
        editText2.addTextChangedListener(this);//给edittext设置光标改变的监听

    /**
     * This method is called to notify you that, within s,
     * the count characters beginning at start
     * are about to be replaced by new text with length after.
     * It is an error to attempt to make changes to s from
     * this callback.
     *
     * @param s
     * @param start
     * @param count
     * @param after
     */
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    /**
     * This method is called to notify you that, within s,
     * the count characters beginning at start
     * have just replaced old text that had length before.
     * It is an error to attempt to make changes to s from
     * this callback.
     *
     * @param s
     * @param start
     * @param before
     * @param count
     */
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    /**
     * This method is called to notify you that, somewhere within
     * s, the text has been changed.
     * It is legitimate to make further changes to s from
     * this callback, but be careful not to get yourself into an infinite
     * loop, because any changes you make will cause this method to be
     * called again recursively.
     * (You are not told where the change took place because other
     * afterTextChanged() methods may already have made other changes
     * and invalidated the offsets.  But if you need to know here,
     * you can use {@link Spannable#setSpan} in {@link #onTextChanged}
     * to mark your place and then look up from here where the span
     * ended up.
     *
     * @param s
     */
    @Override
    public void afterTextChanged(Editable s) {
        Log.i("TAG","edittext1获取到焦点了1");
        if(editText1.getText().length() ==3){
            editText2.requestFocus();
        } if(editText2.getText().length() ==3){
            editText3.requestFocus();
        }if(editText3.getText().length() ==3) {
            editText4.requestFocus();
        }
    }
}
  

你可能感兴趣的:(Android基础)