2016-02-17 3 views
0

Я нашел, когда указанный EditText не устанавливает «addTextWatcher», , следующая операция не используется: editText1.clearFocus() ; editText2.requestFocus();Как переключить Focus из одного EditText в другой EditText автоматически, когда указанный EditText достигает ограничения (android)

моя цель состоит в том, чтобы переместить курсор на editText2, но он не работает, как я могу решить эту проблему

+0

Возможный дубликат [Android TextField: установить фокус + мягкий вход программно] (http://stackoverflow.com/questions/8080579/android-textfield-set -софт-фокус-вход-программный способ) –

ответ

0

Посмотрите на этот пример.

Предположим, что существует 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) { 

    } 
}); 
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(); 
     } 
    } 
    . 
    . 
    . 
    . 
    . 
}); 

Это может помочь вам

Смежные вопросы