- Android Practice
- Установка OnClickListener и обработка нажатий
- Анонимный класс
- Поле типа OnClickListener
- Вложенный класс
- Activity с реализацией OnClickListener
- Использование одного обработчика
- Button Click Me setOnClickListener Method Working — Java Android
- Несколько кнопок OnClickListener () android
- 9 ответов
- Как передать параметры в OnClickListener?
- 8 ответов
Android Practice
Статьи о разработке Android приложений
Установка OnClickListener и обработка нажатий
Когда мы имеет дело с множеством кнопок в приложении, то нужно позаботиться об обработке событий. В данной статье мы рассмотрим работу с OnClickListener , варианты создания разных обработчиков событий и возможные пути идентификации конкретной кнопки. Так же мы рассмотрим преимущества и недостатки этих подходов , в некоторых случая они очень существенны, а в некоторых нет.
Для установки обработчика для кнопки, используется setOnClickListener метод. В параметре передается класс реализующий OnClickListener интерфейс, который имеет единственный метод onClick(View v) . Установку обработчика для кнопок следует выполнять в onCreate() методе Activity.
Анонимный класс
Самый простой способ создания обработчика это использование анонимного класса.
Преимуществом такого подхода является простота и не требует создания дополнительных переменных. Очень хорошо подходит, если у вас только одна кнопка. Недостатками является внутренняя реализация, обработчик нельзя задать в другом месте и при наличии нескольких кнопок, такой подход становиться массивным. Так же недостатком является то, что обработчик будет использоваться только данной кнопкой.
Поле типа OnClickListener
Вместо анонимного класса мы может определить поле с типа OnClickListener и сразу же его инициализировать:
Здесь мы получает одновременное определение и реализацию. Далее созданное поле можно передать кнопке в качестве обработчика:
По сравнению с анонимными классом, использовать поле типа OnClickListener более удобнее. Преимуществом является легкая установка обработчика сразу нескольким кнопкам и одновременное определение с реализацией. Реализация может располагаться в любом месте. Недостатком является создание поля, а именно экземпляра класса и при этом, он может иметь другие методы, но они будут не видны из вне.
Вложенный класс
При таком подходе создается вложенный класс реализующий OnClickListener интерфейс:
После создание класса обработчика, его можно установить для каждой кнопки следующим образом:
Преимуществом является простая установка в setOnClickListener методе и то, что класс может иметь другие методы, к которым можно обращается. Недостатком является обязательное определение класса и отведение отдельного поля для хранения созданного экземпляра.
Activity с реализацией OnClickListener
Activity может сама реализовывать интерфейс OnClickListener , тогда при установки обработчика передается this . Сначала нужно сообщить, что Activity будет реализовывать интерфейс:
Чтобы установить обработчик, нужно передать this нашей Activity в качестве параметра:
Если с кнопкой в дальнейшем не производиться никаких действий, то можно не создавать ее экземпляр и установка обработчика будет следующей:
Если нужно установить обработчик во внутреннем классе, то нужно передать в качестве параметра MainActivity.this .
Такой подход обработки нажатий более простой, удобный и наиболее предпочтительный, а так же не создает дополнительных полей или классов.
Использование одного обработчика
Было бы не разумно создавать для каждой кнопки свой обработчик, а постараться использовать уже созданный. Для определения конкретной нажатой кнопки, можно использовать getId() метод. Этот метод будет возвращать идентификатор нажатой кнопки, а мы сможем выполнить дальнейшею логику соответственно кнопки:
Вы можете использовать фигурные скобки для лучшего разделения кода:
Рассмотренные подходы обработки нажатий можно применять не только для кнопок, но и для других элементов, например таких как ListView и GridView.
Источник
Button Click Me setOnClickListener Method Working — Java Android
Button will respond to OnClickListener after this course.
This example demonstrates the implement button onclicklistener android java Code Example
In this article, we will discuss about how to trigger click events on android Views (Buttons, Text views etc) ?
Android Button in JAVA ANDROID
Action listeners are probably the easiest — and most common — event handlers to implement. You implement an action listener to define what should be done when an user performs certain operation.
Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.
Create Empty Project
How to implement on Android Button OnClick in android programmatically.
S tep 2 — “Add the following code to res/layout/activity_main.xml.“
I worked in simple relative layout method for only give basic example.
- In the below code, we have declared Button as ”@+id/button”.
- You can add a spinner to your layout with the Button object. You should usually do so in your XML layout with a element. For example:
Источник
Несколько кнопок OnClickListener () android
в настоящее время я делаю простое приложение Калькулятор на Android. Я пытаюсь настроить код так, чтобы при нажатии кнопки с номером он обновлял экран калькулятора с этим номером. Сейчас я делаю это вот так.
это работает, но я пишу этот же код для каждой кнопки на калькуляторе. Как вы можете себе представить, это очень избыточно. Есть ли в любом случае я могу написать этот код более эффективным способом? Тот, который включает в себя не писать этот метод для каждого кнопка?
9 ответов
вы просто должны следовать этим шагам, чтобы сделать его легким.
вам не нужно писать новые onClickListener для каждого Button . Просто Реализуйте View.OnClickLister на Activity / Fragment .. он будет реализовывать новый метод под названием onClick() для обработки событий onClick для Button ,виджет TextView, и т. д.
- реализовать OnClickListener() в своем Activity / Fragment
- реализовать метод onclick() в вашей деятельности/фрагмент
- реализовать OnClickListener() Для Кнопки
- найти кнопки по Id и реализовать свой код..
пожалуйста, обратитесь к этой ссылке для получения дополнительной информации :
это облегчит обработку многих событий нажатия кнопок и упрощает управление ими.
Вы можете установить свойство:
в xml-файле для каждой из этих кнопок и используйте это в коде java:
Я создал выделенный класс, который реализует View.OnClickListener.
затем я создал экземпляр этого класса в MainActivity
и затем установите onClickListener для кнопки
установите тег на каждой кнопке на то, с чем вы хотите работать, в этом случае, вероятно, целое число. Тогда вам нужен только один OnClickListener для всех ваших кнопок:
Источник
Как передать параметры в OnClickListener?
Как передать параметр в OnClickListener ()?
получил мой слушатель:
У меня есть 12 кнопок и я не хочу писать 12 слушателей для них, было бы здорово, чтобы просто передать строку, и они могут сделать абсолютно разные вещи.
8 ответов
использовать свой собственный OnClickListener
другое решение этой проблемы, вы можете создать обычный метод и передать ему View вы хотите, чтобы добавить onClickListener , и передать параметры вы хотите использовать вместе с ним:
- иметь представление реализации вашей деятельности.OnClickListener
- зарегистрируйте свои кнопки для слушателя
- проверьте, какая кнопка нажата в onClick
обработать строку в зависимости от того, какая кнопка была нажата
Я знаю, что это поздний ответ, но, надеюсь, это может помочь кому-то. Ни один из существующих ответов не работал в моей ситуации, но я в конечном итоге использовал функцию setTag изображения, которое действовало как кнопка. Информация о моей учетной записи находилась в глобальной переменной-члене, которая была настроена при запуске действия.
в этом случае я настраиваю таблицу, каждая строка которой является учетной записью. Данные учетной записи отображаются при нажатии на изображение (изображение-это просто информация икона.)
Таким образом:
использование реализует OnClickListener, как показано ниже code
если у вас есть статическое содержимое, связанное с представлением, другой вариант-использовать HashMap для сопоставления идентификатора вида с содержимым.
инициализировать карту в onCreate :
затем получите значение из идентификатора вида в onClick :
это немного чище, чем использование длинного набора переключателей.
обратите внимание, что Вы делаете это в Котлине немного иначе, чем в Java. В Котлине вы добавляете NameOfParentClass() к объявлению подкласса.
Теперь переопределить операции onCreate() метод. Это будет выглядеть примерно так.
другим решением может быть не писать код непосредственно внутри метода onClick (), либо написать код в отдельном методе, а затем вызвать этот метод в onClick ().
Источник