Лучшая практика android: атрибут onClick XML или setOnClickListener?

Я следую руководству Google по Android и обнаружил, что есть два способа получить обратные вызовы виджета в соответствии с заголовком (или только onClick – я не знаю).

Я старший разработчик Java Swing, поэтому внутренний подход classа заставляет меня чувствовать себя как дома 🙂 Но я понимаю, что подход xml новее – поэтому Google должен был добавить его по какой-то причине.

В чем тут причина? Разве это «лучше» сделать это на платформе Android, если теперь следует избегать подхода внутреннего classа (в версиях, которые его поддерживают)?

Я не использую атрибут XML onClick потому что это означает, что Activity которая накачивает XML, должна реализовать метод значения onClick. Но если вы выполните какой-либо рефакторинг, и вы измените этот метод, тогда вы получите исключения во время выполнения, если изменения не будут сопоставлены с XML. Или если вы хотите использовать некоторые, include или merge .

Чтобы добавить еще: если вы используете fragmentы, вам необходимо делегировать событие click для fragmentа, который определяет атрибут onClick XML.

Это действительно меньше кода, но для того, чтобы поддерживать / реорганизовывать такой код, он делает вещи трудными и открытыми для ошибок. Поэтому не используйте его в производственном коде.

Вы можете определять виджеты, такие как кнопка, как xml, так и программно. Может дать возможность добавить слушателя в обоих направлениях. Таким образом, нет преимуществ друг от друга.

Если вы хотите выполнить макетную работу из xml, андроид предоставил вам возможность сделать это.

Но кто-то может определить макет прогматически, а затем должен будет определить прослушиватель кликов из кода.

Но есть люди, которые используют это сочетание.

Надеюсь, вы понимаете, что я имею в виду.

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

Если кнопки всегда будут всегда, и одно и то же действие будет выполняться всегда, то использование дескриптивных обработчиков событий имеет смысл. Например, когда вам не нужно делать findViewById() для этой кнопки.

Если вы можете включить или отключить нажатие или может генерировать кнопки динамически и т. Д. И т. Д., То динамическая настройка обработчиков событий в коде имеет смысл.

View.OnClickListener – это интерфейс, который определяет метод onClick(View) .

Вы реализуете как интерфейс, так и метод в своем коде.

  • Android Share Via Dialog
  • Ошибка: невозможно найти adb в SDK в Android Studio
  • получить последний fragment в backstack
  • Встроенная галерея в определенной папке
  • андроидный диалог прозрачный
  • findViewByID возвращает null
  • Android-студия logcat ничего не показывает
  • Android Studio TransformException: ошибка: выполнение не выполнено для задачи ': app: transformClassesWithDexForDebug'
  • java.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя
  • Почему я получаю ошибку «sqlite3: not found» на внедренном Nexus One при попытке открыть базу данных с помощью оболочки adb?
  • Активная ссылка URL-адреса Android в TextView
  • Interesting Posts
    Давайте будем гением компьютера.