лучшие практики для обработки событий пользовательского интерфейса - PullRequest
10 голосов
/ 02 мая 2011

Я поместил весь код привязки для событий пользовательского интерфейса в OnCreate ().Это сделало мой OnCreate () огромным.

Существует ли шаблон реализации событий пользовательского интерфейса в Android?Могу ли я добавить методы в файл View xml и затем поместить весь код обработчика в другое место.

В двух словах, я спрашиваю, как я могу реализовать шаблон MVVM с кодом приложения для Android?

Ответы [ 4 ]

5 голосов
/ 02 мая 2011

Вещи, которые я делаю:

  1. Сохраняйте все функции onClick в XML.Позволяет избежать путаницы в коде Java.
  2. Инициализируйте прослушиватели событий как члены класса активности, а не сохраняйте их в функции.Мне не нравится слишком много фигурных скобок в моем коде.Черт меня побери.
  3. Если мои списочные адаптеры становятся слишком большими, я оставляю их в отдельном классе, а не в классе активности, а затем сохраняю всех слушателей представления в адаптере.
  4. Чтобы не создавать слишком много функций onClick, я иногда сохраняю одну функцию, например onNavigatonClick , а затем использую view.getId () , чтобы увидеть, какая кнопка была нажата.Поскольку XML не проверяется на допустимые вызовы функций, это приводит к ошибкам времени выполнения, если имя вашей функции неверно.
  5. Если конкретному представлению требуется много кода взаимодействия с пользовательским интерфейсом, я создаю настраиваемое представление с помощью GestureDetector, чтобыобрабатывать взаимодействия с пользовательским интерфейсом.

Я думаю, это все еще довольно просто, так как у меня еще не было большого опыта работы с Java.

5 голосов
/ 02 мая 2011

В 1.6 и более поздних версиях вы можете указать методы onClick в XML-файле макета , чтобы обрезать немного жира. Обычно я просто скрываю все это в методе initUi (), в котором у меня есть вызов метода onCreate. Таким образом, по крайней мере, onCreate легче читать.

1 голос
/ 02 мая 2011

Много хороших ответов на это уже.:)

Если вы используете Android 1.6 или более позднюю версию, вы можете найти новый API фрагментов , полезный для организации и разделения ваших действий на несколько логических единиц.

0 голосов
/ 02 мая 2011

onCreate обычно является лучшим местом для вызова setContentView и настройки прослушивателей, но код для обработки пользовательских взаимодействий обычно входит в процедуры onClick, onTouch, onKey и т. Д.

Возможно, если вы разместили свой код, мымог видеть что ты сделал?

...