Просто интересно, как вы решаете следующую проблему: результат рассчитывается в зависимости от выбранных элементов двух спиннеров. Чтобы обрабатывать вещи пользовательского интерфейса, то есть пользователь выбирает новый элемент в одном из счетчиков, я устанавливаю прослушиватель, используя setOnItemSelectedListener
для счетчика в моем методе onCreate()
действия.
Теперь: это работает, конечно, хорошо. Работа слушателя заключается в том, чтобы инициировать новый расчет результата.
Проблема: поскольку я перехватываю onPause()
onResume()
для сохранения/восстановления последнего состояния, у меня есть метод, который устанавливает выбранный элемент этих двух счетчиков программно, как здесь:
startSpinner.setSelection(pStart);
destSpinner.setSelection(pDest);
Эти два вызова также вызывают слушателей! Мой метод вычисления результата плюс уведомление о новом наборе результатов вызывается здесь дважды!
Глупый прямой подход для этого состоял бы в том, чтобы иметь логическую переменную отключающую все, что слушатель делает внутри, устанавливая ее перед установкой выбранных элементов и сбрасывая ее после этого. Хорошо. Но есть ли лучший метод??
Я не хочу, чтобы слушатели вызывались кодом — действиями, только действиями пользователя! :-(
Как ты делаешь это? Спасибо!