2012-01-12 3 views
2

Я разработчик мобильных телефонов .NET. С тех пор как я начал работать с android, я заметил, что единственный способ сохранить обработчики событий из вида - через файл активности или создать класс для хранения всех этих прослушивателей событий. Может ли кто-нибудь предложить лучший способ, который я могу сделать, чтобы иметь наименьший беспорядок и сохранить все обработчики событий соответственно?Где должны храниться обработчики событий при разработке приложения?

ответ

1

Немного субъективно, как «беспорядок», зависит от того, насколько вы эффективны при реализации обработчиков событий и насколько сложны ваши приложения.

Например, я видел пример кода здесь на так, как ...

button1.setOnClickListener(new View.OnClickListener {...}); 
button2.setOnClickListener(new View.OnClickListener {...}); 
button3.setOnClickListener(new View.OnClickListener {...}); 

В каждом случае анонимный слушатель для каждого отдельного Button часто выполняет очень сходную функцию (начало деятельности 1, начало деятельности 2 ....). Чистейший способом было бы реализовать View.OnClickListener на Activity сам, а затем использовать ...

button1.setOnClickListener(this); 

... (и так далее для каждого Button), а затем получить идентификатор ресурса View, передаваемого в слушателю определить, что было нажато, и что нужно сделать. Меня поражает, сколько людей этого не понимают.

Что касается создания отдельного класса (или классов) для хранения слушателей, это становится сложным в зависимости от того, сколько действий у вас происходит. Удержание слушателей отдельно имеет два недостатка.

Прежде всего, если вы не идете с моделью, имеющей Activity, используйте анонимных слушателей или реализуйте прослушиватель напрямую, что предполагает, что у вас будет целый набор действий (которые могут быть расширены в какой-то момент) хелперных слушателей. Каждый раз, когда вы расширяете свой Activity, вам нужно убедиться, что отдельный класс обновлен, чтобы справиться с ним - потенциально из виду, вне сознания, где вам нужно что-то новое от Activity, которое ваш «общий» прослушиватель не обрабатывает.

Вторая потенциальная проблема заключается в том, как работает Android (в зависимости от вашего приложения). Android Activity должен быть модульным - если он отображает фотографии или изображения или документы определенного формата, то он должен быть как можно более автономным. Наличие отдельного класса с множеством слушателей означает, что очень простой Activity, предназначенный для выполнения очень простой задачи, заканчивается загрузкой раздувания класса (или классов), который содержит всю загрузку слушателей, которые не имеют отношения к делу.

Stick с простым - оптимизируйте слушателей для каждого Activity и сохраните их в автономном режиме. Если вы чувствуете, что происходит какое-то дублирование, определите свои базовые классы и оттуда оттуда.

0

Неясно, какой результат вы хотите получить. Насколько я понимаю, вы не хотите создавать подкласс Activity для обработки событий пользовательского интерфейса. Если это так, то это действительно странно - как бы вы показывали эти представления не в рамках Activity?