Разница между указанием view.onclicklistener и просто наличием onclicklistener

#android #button #view #interface #listener

#Android #кнопка #Вид #интерфейс #слушатель

Вопрос:

Я посмотрел на http://developer.android.com/reference/android/view/package-summary.html и увидел, что класс view имеет интерфейс с именем «View.OnClickListener», который является «определением интерфейса для обратного вызова, вызываемого при нажатии на представление», Мой вопрос в том, в чем разница, если вы указываете представление или нет в интерфейсе?

В основном это

button.setOnClickListener(новая кнопка.OnClickListener() такой же, как

button.setOnClickListener(новый OnClickListener()?

Комментарии:

1. я это знаю. Просмотр абстрактного класса

Ответ №1:

Есть 2 из setOnClickListener одного для View класса и один относится к DialogInterface классу.

Итак, чтобы манипулировать представлением как Button или ImageView и добавлять к нему действие, вам нужно использовать View.OnClickListener при работе с диалоговыми кнопками, которые вы должны использовать DialogIneterface.onClickListener , у обоих разные аргументы.

Обычно при добавлении onClickListener класс View будет импортирован по умолчанию или он заставит вас выбирать между обоими классами. так что вам не нужно добавлять View.onClickListener . Однако, если класс DialogInterface уже импортирован и вы хотите использовать View OnClickListener, вам нужно написать View.onClickListener , чтобы различать оба класса « onClickListener .

Надеюсь, теперь это ясно, и это то, что вы ищете.

Комментарии:

1. имеет ли это какое-то отношение к этому ключевому слову? Я знаю, что когда вы вызываете метод экземпляра внутри другого метода экземпляра, вам не нужно ставить this перед вызовом метода (выполняется автоматически, относится к текущему исполняемому объекту) Но здесь это анонимный класс. Работает ли это так же? Кнопка, тип представления, просто включается автоматически?

2. OnClickListener немного отличается от this keyword, вам не нужно ставить View перед OnClickListener, если вы импортировали View класс, однако, если вы его не импортировали, вам нужно добавить View ключевое слово. для this ключевого this слова во внешнем классе это не то же самое this , что в anonymous классе, который вы можете вызвать this из внешнего класса OuterClassName.this , вы можете обратиться к этой ссылке для this ключевого слова между внешним и внутренним классом.