Разница между событием OnClick () и OnClickListener?
В большинстве моих проектов я всегда использую событие onclick()
. Но я читал о OnClickListener()
. Может ли кто-нибудь сказать, в чем разница между этими двумя? И какой из них лучше всего использовать в приложении Android ?.
- Как установить задержку в Android?
- Не удается разрешить символ HttpGet, HttpClient, HttpResponce в Android Studio
- Как показать маркер в Картах, запущенных Geo Uri Intent?
- Как получить день месяца?
- Недопустимое сообщение подписи GoogleSignatureVerifier (google play services 9.0.0)
- Как имитировать Android, убивающий мой процесс
- Как создать ссылки в текстовом клиенте?
- Как получить сертификат отпечатка SHA-1 в Android Studio для режима отладки?
Я не уверен, что вопрос ясен. View.OnClickListener
– это интерфейс, который определяет метод onClick(View)
. Если у вас есть class, который намеревается прослушивать клики, вы должны реализовать интерфейс (если он еще не расширяет class, который делает), и реализовать этот метод тоже. Вы должны использовать оба; они не являются альтернативами.
OnClickListener
– это интерфейс, который вам нужно реализовать, и его можно установить в виде Java-кода.
В последнее время андроид добавил атрибут xml в представления под названием android:onclick
, которые могут использоваться для обработки кликов непосредственно в действии вида без необходимости реализации какого-либо интерфейса.
Оба функционируют одинаково, только один устанавливается через java-код, а другой через xml-код.
Я принимаю onClick
который вы используете, это тот, который вы определяете в XML-макете. Эти две альтернативы, которые выполняют одну и ту же функцию, но реализуются по-разному.
-
Функция
onClick
с привязкой к функциям в XML-макете является привязкой между onClick и функцией, которую он вызовет. Функция должна иметь один аргумент (View
), чтобы функция onClick функционировала. -
OnClickListener
– это интерфейс, который может реализовать любой class. Поскольку это интерфейс, который может реализовать любой class, он имеет большую гибкость и более сложный по своей форме. Немного гибкости, которые вы могли бы использовать сOnClickListener
- Вы можете легко поменять одну реализацию прослушивателя на другую, если вам нужно.
-
OnClickListener
позволяет вам отделить действие / поведение события click отView
которое вызывает событие. Хотя для простых случаев это не так уж и важно, для комплексной обработки событий это может означать лучшую читаемость и ремонтопригодность кода - Поскольку
OnClickListener
является интерфейсом, class, который его реализует, обладает гибкостью при определении переменных экземпляра и методов, необходимых для обработки события. Опять же, это не очень важно в простых случаях, но для сложных случаев мы не хотим, чтобы мы смешали переменные / методы, связанные с обработкой событий, с кодом представления, который запускает событие.
OnClickListener – это то, что ждет, когда кто-то на самом деле щелкнет, onclick определяет, что происходит, когда кто-то нажимает
слушатель – это class, метод onclick – это метод, это различие не очень полезно в простых случаях, но если вы хотите быть более сложным, оно становится более необходимым
Button button = (Button)findViewById(R.id.buttonId); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Do stuff } });
OnClickListener – это интерфейс, а onClick – метод OnClickListener .
Мы используем
public void button_onClick_name(View v) { ------- }
определить метод из classа. Но Чтобы определить компонент события Click в classе, мы используем onclick listener.
Есть несколько причин, по которым вы, возможно, захотите программно установить OnClickListener
. Во-первых, если вы когда-либо захотите изменить поведение своей кнопки во время работы вашего приложения. Вы можете указать свою кнопку по другому методу целиком или просто отключить кнопку, установив OnClickListener
который ничего не делает.
Когда вы определяете прослушиватель, используя атрибут onClick
, представление ищет метод с этим именем только в его активности хоста. Программная установка OnClickListener
позволяет вам управлять поведением кнопки из-за чего-то другого, кроме хост-активности. Это станет очень актуальным для Fragments
Fragments
всегда должны использовать OnClickListeners
для управления своими кнопками, поскольку они не являются действиями и не будут искать слушателей, определенных в onClick
.
Мы используем OnClick
в xml и OnClickListner
в java
коде. Оба используются для выполнения функции.
Рассмотрим «OnClickListener» как парень, который ждет, когда ваш пользователь нажмет кнопку вашего приложения. Тогда ваш парень выполнит ваш метод OnClick () .
Вы должны поместить идентификатор в свою кнопку в свой XML-файл, а затем указать ему имя в файле MainActivity.java. Затем установите для своего парня прослушиватель кликов. И добавьте свой метод onClick. Вот почему onClick привязан к интерфейсу View.OnClickListener: https://developer.android.com/reference/android/view/View.OnClickListener.html
Пример :
Button myButton = (Button)findViewById(R.id.myButton); myButton.setOnClickListener(new View.OnClickListener(){ @override public void onClick(View v) { // your method... } }
Вы можете добавить атрибут android:onClick="your_method"
в свой XML.
Пример:
Когда мы хотим добавить кнопку click listener к кнопке в Java-коде, мы используем OnClickListener
.
Когда мы хотим добавить кнопку click listener к кнопке в файле макета, мы используем android:onClick="your_method"
Если вы используете вариант XML, вы должны реализовать your_method
в своем classе приложения.
Есть несколько причин, по которым вы, возможно, захотите программно установить OnClickListener. Во-первых, если вы когда-либо захотите изменить поведение своей кнопки во время работы вашего приложения. Вы можете указать свою кнопку по другому методу целиком или просто отключить кнопку, установив OnClickListener, который ничего не делает.
Когда вы определяете прослушиватель, используя атрибут onClick, представление ищет метод с этим именем только в его активности хоста. Программная установка OnClickListener позволяет вам управлять поведением кнопки из-за чего-то другого, кроме хост-активности. Это станет очень актуальным, когда мы узнаем о fragmentах, которые в основном представляют собой мини-действия, позволяющие создавать многоразовые коллекции представлений с их собственным жизненным циклом, которые затем могут быть собраны в действия. Фрагменты всегда должны использовать OnClickListeners для управления своими кнопками, поскольку они не являются действиями, и не будут искать слушателей, определенных в onClick.
каждый упомянул о OnClickListener
OnClickListener, который всегда использовался. Я хочу добавить еще один point android:onClick
работает как метод, и ему не нужно ссылаться, поэтому полезно, когда вам нужно добавить кнопку после выполнения какой-либо задачи, чтобы вы не ссылались на нее для OnClickListener
.
example
когда мы создаем viewpager только с макетом (без fragmentов), если вы помещаете кнопку в любой макет, она добавляется только тогда, когда макет видимый, поэтому вы не можете использовать метод findViewById
для Button в этом случае android:onClick
onClick стало полезно просто поместить этот метод в действии !!
Вот простая терминология. Если у вас дома, и я хочу позвонить кому-то .. можно напрямую позвонить, и они могут слушать u. (используйте onclick). Но если вы находитесь снаружи, и вы хотите позвонить кому-то дома, вам нужно использовать либо телефон, либо Интернет. (Нужно использовать onclicklistener). В Android все начинается с дома, т.е. main_activity. Это способ, которым андроид облегчает работу; когда у вас есть одна активность, вам не нужно присоединять слушателя, создавать объект и определять его. Просто используйте onClick. Onclicklistener обычно используются во fragmentах. Так что продолжайте кодирование.
Есть несколько причин, по которым вы, возможно, захотите программно установить OnClickListener
. Во-первых, если вы когда-либо захотите изменить поведение своей кнопки во время работы вашего приложения. Вы можете указать свою кнопку по другому методу целиком или просто отключить кнопку, установив OnClickListener
который ничего не делает.
Когда вы определяете прослушиватель, используя атрибут onClick
, представление ищет метод с этим именем только в его активности хоста. Программная установка OnClickListener
позволяет вам управлять поведением кнопки из-за чего-то другого, кроме хост-активности. Это станет очень актуальным, когда мы поговорим о fragmentах, которые в основном представляют собой мини-действия, позволяющие создавать многоразовые коллекции представлений с их собственным жизненным циклом, которые затем могут быть собраны в действия. Фрагменты всегда должны использовать OnClickListeners
для управления своими кнопками, поскольку они не являются действиями, и не будут искать слушателей, определенных в onClick
.