У меня есть форма с 2 полями, где можно войти или в течение многих месяцев или в течение многих лет. Как я устанавливаю форму так, чтобы, если Вы входите в годах, месяцы edittext поле были автоматически вычислены и введены свое собственное поле. Аналогично, я хочу, чтобы годы были вычислены, если Вы вошли в месяцах
Кто-либо может дать мне пример кода для этого?
У вас есть два способа сделать это:
Выполнить посимвольную обработку одного поля для вычисления другого поля
Для этого вы можете использовать addTextChangedListener с наблюдателем текста, где вы изменяете метод onTextChanged для обработки данные.
// из editHandle = (EditText) findViewById (R.id. << ваш EditText >>);
editHandle.addTextChangedListener (redoWatcher);
{{1 }} // слушатель
private TextWatcher redoWatcher = new TextWatcher () {
public void beforeTextChanged (CharSequence s, int start, int count, {{1 }} int после) {
}
@Override
public void onTextChanged (CharSequence s, int start, int before,
int count) {
recalculate ();
}
@Override
public void afterTextChanged (Editable s) {
{{1} }}
};
Теперь вы можете написать метод пересчета для обработки данных.
2. Другой метод - вычислить данные, когда пользователь переключает фокус на другое поле.
Здесь вам нужно использовать onFocusChangeListener:
<Your EditView>.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
recalculate();
}
});
В любом случае, в зависимости от дизайна, вы можете захотеть проверить правильность ввода.