У меня есть один EditText
и один FrameLayout
. Я сделал это таким образом, что если пользователь перетаскивает в FrameLayout, фон меняет цвет (RGB) на основе пикселя из (X, Y) координат, а также обновляет EditText значением Hex, преобразованным из значений RGB.Как позвонить функции только определенное время
Вот ссылка Pastebin для всего моего кода: http://pastebin.com/7P3QSmb4
вопрос я имею со следующим кодом:
if (s.length() == 6) {
int color = Integer.parseInt(etHexVal.getText().toString(), 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
getXY(r, g, b);
hexToRGB();
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etHexVal.getWindowToken(), 0);
}
Я хочу, чтобы вызвать функцию getXY(r, g, b)
только когда текст EditText
изменен, и я не перетаскиваю его в FrameLayout
, потому что в противном случае это заставит мое приложение отставать. Как изменить существующий код?
Таким образом, вы получаете это называется много раз с тем же значением? Почему бы вам просто не сделать чек в своем коде, который устанавливает значение, чтобы убедиться, что вы не записываете одно и то же значение в editText? т.е.: if (! newHexValue.equals (etHexVal.getText(). toString()) then setText. Это остановит вас от ненужной обработки. – natez0r
Функция должна вызываться только в том случае, если этот текст изменяется внутри, а FrameLayout MotionEvent также вызывает TextWatcher Если вы посмотрите на код pastebin, вы поймете лучше. – Si8