В серии EditText
видов курсор должен автоматически перейти к следующему виду после ввода 5-го символа.
Я делаю так:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int twTreshold = 4;
etKey1 = (EditText) findViewById(R.id.et_levels_key1);
// ...
etKeyX = (EditText) findViewById(R.id.et_levels_keyX);
etKey1.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > twTreshold)
etKey2.requestFocus();
}
@Override
public void afterTextChanged(Editable arg0) {
if (currentText.length() > twTreshold)
etKey2.requestFocus();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
});
}
Теперь проблема:
Пользователь может использовать клавиатуру T9 или аналогичную. Там для ввода буквы «B» необходимо нажать кнопку «ABC» на клавиатуре. «A» присоединяется к тексту EditText, событие onTextChanged()
вызывается. Слишком рано! Пользователь все еще должен нажать кнопку «ABC» в другой раз, чтобы заменить «A» на желаемую «B».
Моя идея состояла в том, чтобы получить тип клавиатуры и, если она относится к тому типу, который упоминался здесь, просто не переключать фокус автоматически.
Может быть, у кого-то есть идея, как узнать тип клавиатуры?
Большое спасибо!