Как реализовать ввод в EditText через Button, а не клавиатуру?
Допустим в активити будет одна кнопка и неопределенное количество edittext. Когда мы нажимаем на edittext, клавиатура не появляется, но если мы нажмем на кнопку, то в edittext введется то, что мы определим в программе Java. Как такое сделать?
Ответы (1 шт):
Как вариант можно сделать глобальную переменную которая будет соответствовать текущему выбранному полю для ввода:
private EditText currentView;
у данного типа виджетов есть слушатель фокуса:
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (hasFocus) {
...
} else {
...
}
}
});
вы можете сделать его общим для всех ваших виджетов поля ввода:
private View.OnFocusChangeListener listener = (view, hasFocus) -> {
if (hasFocus) {
...
} else {
...
}
};
дальше в слушателе когда у вас есть фокус вы присваиваете currentView значение view:
if (hasFocus) {
currentView = (EditText) view;
} else {
...
}
и добавляете слушатель к каждому EditText которых у вас большое кол-во:
myEtxt1.setOnFocusChangeListener(listener);
ну и наконец у кнопки вы можете добавить ее включение/отключение:
myBtn.setEnabled(currentView != null);
и в слушателе нажатий устанавливаете текст в поле для ввода которое вы выбрали.