Мне нужно ввести только четные числа от 0 до 20 в EditText
. Однако, когда я нажимаю клавиши «1» и «2», чтобы дать 12, это дает мне Toast
, что мой ввод недействителен, прежде чем я получу нажать клавишу «2».Как разрешить только четные числа в EditText в TextWatcher?
Textwatcher:
public void afterTextChanged(Editable s) {
try {
int val = Integer.parseInt(s.toString());
if (val > 20) {
s.replace(0, s.length(), "20", 0, 2);
} else if (val < 0) {
s.replace(0, s.length(), "0", 0, 1);
} else if (val == 1) {
s.replace(0, s.length(), "1", 0, 2);
} else if (val == 3) {
s.replace(0, s.length(), "3", 0, 2);
} else if (val == 5) {
s.replace(0, s.length(), "5", 0, 2);
} else if (val == 7) {
s.replace(0, s.length(), "7", 0, 2);
} else if (val == 9) {
s.replace(0, s.length(), "9", 0, 2);
} else if (val == 11) {
s.replace(0, s.length(), "11", 0, 2);
} else if (val == 13) {
s.replace(0, s.length(), "13", 0, 2);
} else if (val == 15) {
s.replace(0, s.length(), "15", 0, 2);
} else if (val == 17) {
s.replace(0, s.length(), "17", 0, 2);
} else if (val == 19) {
s.replace(0, s.length(), "19", 0, 2);
}
} catch (NumberFormatException ex) {
Toast.makeText(MainActivity.this,"invalid!",Toast.LENGTH_LONG).show();
}
}
});
Вместо тестирования входа на каждом символе пользователь вводит, было бы проще просто их ввести номер, а затем ударил представить чтобы отправить все значение в ваш нечетный/четный тест. Тогда вы могли бы просто сделать «if (val% 2 == 0) // значение val равно:' – NoChinDeluxe
Где я должен добавить ваш код, потому что когда я добавил его, он остался прежним. –