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
Android ScaleAnimation не масштабирует область с интерактивным доступом Получить имя из абсолютного пути, подстроку из последней косой черты, java android SSL взаимная аутентификация FAIL на Android Client принимает сертификат серверов, но сервер не получает сертификат клиента Не удается отправить сообщение с Android Wear на хост-устройство Библиотека для шифрования и расшифровки ресурсов Как избежать воссоздания просмотра onCreate на Android? Как закрепить и заполнить холст с помощью альфа-маски Растровое изображение изображения волейбола GcmNetworkManager OneoffTask ExecutionWindow необходимо? Отображение списка файлов в ListView Как отправить намерение От деятельности в библиотечном модуле к основным приложениям Android, как изменить цвет подсветки gridview? Передать список сложных объектов из активности в фрагмент Изменение панели действий searchview подсказка цвет текста Пропустили 49 кадров! Приложение может слишком много работать над своей основной нитью