Изменить Focus на EditText Android

У меня есть 2 EditText в моей активности и установите maxLength в 5.

Теперь я хочу настроить фокус на editText2 , если длина 5 достигнута в editView1

Я попробовал:

 editView1.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(editView1.getText().length() == 5) editView2.requestFocus(); return false; } }); 

Но это не сработает.

Solutions Collecting From Web of "Изменить Focus на EditText Android"

Это работает

 final EditText editText1 = (EditText) findViewById(R.id.editText1); final EditText editText2 = (EditText) findViewById(R.id.editText2); editText1.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(editText1.getText().length() == 5) editText2.requestFocus(); return false; } }); 

Сообщение Марка Юшкеита почти идеально для меня.

Но в моем случае я должен был проверить, является ли keyevent действием, потому что у меня есть стандартный текст в edittext, который имеет одинаковую длину.

 final EditText editText1 = (EditText) findViewById(R.id.editText1); final EditText editText2 = (EditText) findViewById(R.id.editText2); editText1.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { if (keyEvent.getAction() == KeyEvent.ACTION_UP) { if (editText1.getText().length() == 5) { editText2.requestFocus(); } } return false; } }); 

Я думаю, что фокус запроса не работает над основным потоком. Но я не уверен. Это работает для меня,

 _edittext.post(new Runnable() { public void run() { _edittext.requestFocus(); } }); 

EdName.setOnKeyListener (новый OnKeyListener () {

  @Override public boolean onKey(View v, int keyCode, KeyEvent event) { System.out.println("Yes Bud"); if(EdName.length()== 5) { EdBin.requestFocus(); } return false; } }); 

В файле androidmanifest.xml добавьте следующий код в тег активности:

 android:windowSoftInputMode="stateHidden"