Разница между событием OnClick() и OnClickListener?

Я всегда использую событие onclick() в большинстве своих проектов. Но я читал о OnClickListener(). Может ли кто-нибудь сказать, в чем разница между этими двумя? И какой из них лучше всего использовать в приложении Android?.

Ответ 1

Я не уверен, что вопрос ясен. View.OnClickListener - это интерфейс, который определяет метод onClick(View). Если у вас есть класс, который намеревается прослушивать клики, вы должны реализовать интерфейс (если он еще не расширяет класс, который делает), и реализовать этот метод тоже. Вы должны использовать оба; они не являются альтернативами.

Ответ 2

OnClickListener - это интерфейс, который вам нужно реализовать, и его можно установить в виде в Java-коде.

В последнее время андроид добавил атрибут xml к представлениям под названием android:onclick, которые могут использоваться для обработки кликов непосредственно в активности вида без необходимости реализации какого-либо интерфейса.

Оба функционируют одинаково, просто устанавливаются через java-код, а другой - через XML-код.

Ответ 3

Я предполагаю использовать onClick, который вы используете, это тот, который вы определяете в XML-макете. Эти две альтернативы, которые выполняют одну и ту же функцию, но реализуются по-разному.

  • onClick с привязкой к функции в макете XML является привязкой между onClick и функцией, которую он будет вызывать. Функция должна иметь один аргумент (View), чтобы функция onClick функционировала.

  • An OnClickListener - это интерфейс, который может реализовать любой класс. Поскольку это интерфейс, который может реализовать любой класс, он имеет большую гибкость и более сложный по своей форме. Несколько гибких возможностей, которые вы могли бы иметь с помощью OnClickListener

    • Вы можете легко поменять одну реализацию прослушивателя на другую, если вам нужно.
    • An OnClickListener позволяет вам отделить действие/поведение события click от View, которое запускает событие. Хотя для простых случаев это не так уж и важно, для комплексной обработки событий это может означать более читабельность и удобство обслуживания кода.
    • Так как OnClickListener является интерфейсом, класс, который его реализует, обладает гибкостью при определении переменных экземпляра и методов, необходимых для обработки события. Опять же, это не имеет большого значения в простых случаях, но для сложных случаев мы не хотим, чтобы мы смешали переменные/методы, связанные с обработкой событий, с кодом представления, который запускает событие.

Ответ 4

OnClickListener - это то, что ждет, когда кто-то на самом деле щелкнет, onclick определяет, что происходит, когда кто-то нажимает

слушатель - это класс, метод onclick - это метод, это различие не очень полезно в простых случаях, но если вы хотите быть более сложным, он становится более необходимым

Ответ 5

Button button = (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Do stuff
    }
});

OnClickListener - это интерфейс и onClick - это метод OnClickListener.

Ответ 6

Мы используем

    public void button_onClick_name(View v)
{
-------
}

чтобы определить метод из класса. Но Чтобы определить компонент события Click в классе, мы используем onclick прослушиватель.

Ответ 7

Рассмотрим "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...
    }
}

Ответ 8

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

Когда вы определяете прослушиватель, используя атрибут onClick, представление ищет метод с этим именем только в его активности хоста. Программная установка OnClickListener позволяет вам управлять поведением кнопок из-за чего-либо, кроме хост-активности. Это станет очень актуальным для Fragments, Fragments всегда нужно использовать OnClickListeners для управления своими кнопками, поскольку они не являются действиями и не будут искать слушателей, определенных в onClick.

Ответ 9

В XML можно добавить атрибут android:onClick="your_method".

Пример:

 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Click"
  android:onClick="your_method"/>

Ответ 10

Мы используем OnClick в xml и OnClickListner в коде java. Оба используются для выполнения функции.

Ответ 11

Когда мы хотим добавить кнопку click listener к кнопке в Java-коде, мы используем OnClickListener.
Когда мы хотим добавить кнопку click listener к кнопке в файле макета, мы используем android:onClick="your_method"
Если вы используете вариант XML, вы должны реализовать your_method в своем классе приложения.

Ответ 12

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

Когда вы определяете прослушиватель, используя атрибут onClick, представление ищет метод с этим именем только в его активности хоста. Программная установка OnClickListener позволяет вам управлять поведением кнопок из-за чего-либо, кроме активности хоста. Это станет очень актуальным, когда мы узнаем о фрагментах, которые в основном представляют собой мини-действия, позволяющие создавать многоразовые коллекции представлений с их собственным жизненным циклом, которые затем могут быть собраны в действия. Фрагменты всегда должны использовать OnClickListeners для управления своими кнопками, так как они не являются действиями и не будут искать слушателей, определенных в onClick.

Ответ 13

каждый упомянул о OnClickListener listner, который всегда использовался. Я хочу добавить еще одну точку android:onClick работает как метод, и ей не нужно ссылаться, поэтому полезно, когда вам нужно добавить кнопку после выполнения какой-либо задачи, чтобы вы не ссылались на нее для OnClickListener.

Для example, когда мы создаем viewpager с макетом (без фрагментов), если вы помещаете кнопку в любом макете, она инициализируется только тогда, когда отображается макет, поэтому вы не можете использовать метод findViewById для кнопки в этом случае android:onClick стало полезно просто поместить этот метод в действие!

Ответ 14

Вот простая терминология Если у вас дома, и я хочу позвонить кому-то.. можно позвонить напрямую, и они могут слушать u. (используйте onclick). Но если вы находитесь снаружи, и вы хотите позвонить кому-то дома, вам нужно использовать либо телефон, либо Интернет. (Нужно использовать onclicklistener). В Android все начинается с дома, I.e. основная деятельность Таким образом, андроид облегчает работу; когда у вас есть одна активность, вам не нужно присоединять слушателя, создавать объект и определять его. Просто используйте onClick. Onclicklistener обычно используются во фрагментах. Поэтому продолжайте кодирование.

Ответ 15

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

Когда вы определяете слушателя с помощью атрибута onClick, представление ищет метод с таким именем только в своей активности хоста. Программная установка OnClickListener позволяет вам контролировать поведение кнопки где-то, кроме ее активности на хосте. Это станет очень актуальным, когда мы поговорим о Фрагментах, которые в основном представляют собой мини-действия, позволяющие вам создавать повторно используемые коллекции представлений с собственным жизненным циклом, который затем можно объединить в действия. Фрагменты всегда должны использовать OnClickListeners для управления своими кнопками, так как они не "Активности" и не будут искать слушателей, определенных в onClick.

Ответ 16

Основное различие между onclick() и setOnClicklisner() описывается следующим образом:

  1. onclick()
    Это атрибут в XML. при нажатии кнопки вызывается метод onclick. Предположим, у вас есть три кнопки в макете, вы можете добавить только одну функцию из onclick(), и когда будет нажата любая из кнопок, onclick() будет вызываться

  2. setOnClicklistner()
    Предположим, у вас есть три кнопки в макете, которые вы хотите выполнить отличное от них действие. Затем вы должны использовать метод setonClicklistner() для каждой кнопки, чтобы задать для них разные методы.