Android – прослушиватель OnClick в отдельном классе

Можно ли сделать вторичный класс для хранения прослушивателя OnClick? Значение не создается в классе Activity?

Я просто считаю, что включение слушателей OnClick в основной класс активности просто беспорядочно, и я предпочел бы иметь их в отдельных классах. благодаря

Конечно, это возможно. Просто создайте класс, реализующий View.OnClickListener и установите его как слушателя в View . Например:

 public class ExternalOnClickListener implements View.OnClickListener { public ExternalOnClickListener(...) { // keep references for your onClick logic } @Override public void onClick(View v) { // TODO: add code here } } 

А затем установите экземпляр класса выше как слушатель:

 view.setOnClickListener(new ExternalOnClickListener(...)); 

Параметрированный конструктор не является обязательным, но, скорее всего, вам нужно будет что-то передать, чтобы на самом деле заставить вашу логику onClick(...) работать.

Однако реализовать класс анонимно, как правило, легче работать. Просто мысль.

Вместо того, чтобы помещать onCLicklistener в отдельный класс, почему вы не пытаетесь определить onClickListener вне onCreate() ??

Например, например:

OnCreate ()

 yourViewName.setOnClicklistener(listener): 

Снаружи onCreate ()

 private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }; 

Да, ты можешь. Тем не менее, создание у слушателя внутреннего класса имеет одно преимущество – он может напрямую обращаться к полям и переменным вашего класса активности. Если вы сделаете это отдельным классом, и вашему слушателю действительно нужно получить доступ к 5 представлениям, конструктор вашего слушателя может выглядеть так:

MyListener listener = new MyListener(context, button, textView1, textView2, ratingBar, imageView);

Это тоже довольно громоздко. Если ваш слушатель прост, продолжайте и сделайте его отдельным классом. В противном случае, это зависит от вас для удобства чтения.

Ты можешь это сделать. Но просто подумайте, что у вас не будет ссылки на деятельность, ни на ее атрибуты, включая все взгляды. (Если вы не сделаете их общедоступными или доступными с помощью методов getters).

Кроме того, будьте осторожны с сохранением ссылок на активность или на любых участников слушателя, поскольку они могут избежать сбора сборщика мусора из памяти получателя.

Intereting Posts
Более простой способ получить идентификатор (строку) представления по его идентификатору (int) Android google maps can not zoom с активным компасом Android: Как получить поисковые предложения асинхронно из Интернета? OSMDROID android 4.2: Mapquest: по состоянию на июль 11,2016 доступ к прямой черепице был прекращен Не удалось запустить приложение Android, Не удалось найти проблему .apk в eclipse Вставка даты и времени в sqlite database android Android MapActivity на карте движения Совет по партнерским программам для музыки для Android-приложений Преобразование mm в пиксели Как включить отладку SSL на платформе Android? В чем разница между Android Studio Beta Channel, Android Studio Canary Channel, Android Studio Dev Channel? Виртуальные устройства Android немедленно сбой в Mac OS X после обновления SDK Appcelerator Hyperloop Android – Как использовать определенные функции диспетчера датчиков, которые используют проход по эталонной структуре Можем ли мы программно сортировать записи по алфавиту в листе excel на основе определенного значения столбца Как настроить механизм автоматической подсказки «чипов», используемый в поле получателей Gmail?