0

I found when the specified EditText doesn't set "addTextWatcher", the followed operation is unuseful: editText1.clearFocus(); editText2.requestFocus();

my purpose is to shift the cursor to editText2,but it doesn't work,how can I solve this problem

wislie
  • 101
  • 1
  • 9
  • Possible duplicate of [Android TextField : set focus + soft input programmatically](http://stackoverflow.com/questions/8080579/android-textfield-set-focus-soft-input-programmatically) – Shabbir Dhangot Feb 17 '16 at 03:56

2 Answers2

0

Have a look at this example.

Suppose there is 4 EditText.

EditTextV pin1 = (EditText) indViewById(R.id.pin1);
EditTextV pin2 = (EditText) indViewById(R.id.pin2);
EditTextV pin3 = (EditText) indViewById(R.id.pin3);
EditTextV pin4 = (EditText) indViewById(R.id.pin4);

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

pin1.addTextChangedListener(new TextWatcher() {

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

    if (s.toString().trim().length() != 0) // You can specify some specific length here e.g suppose you want length 4 then s.toString().trim().length() != 4
        pin2.requestFocus();
    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
pin2.addTextChangedListener(new TextWatcher() {

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

    if (s.toString().trim().length() != 0)
        pin3.requestFocus();
    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
pin3.addTextChangedListener(new TextWatcher() {

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

    if (s.toString().trim().length() != 0) 
        pin4.requestFocus();
    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

pin4.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (s.toString().trim().length() != 0) {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(pin4.getWindowToken(), 0);                  
        }
    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});
Chirag Savsani
  • 6,020
  • 4
  • 38
  • 74
0
YourEditText.addTextChangedListener(new TextWatcher() {
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {

      if (!(s.toString().trim().length() == 0))
          YourEdidtText2.requestFocus();
      }
   }
  .
  .
  .
  .
  .
});

This might help you out