Android Что такое контекст?

Поэтому я начал изучать Жест, все работает нормально, а затем я изменил это (контекст действия) на одну кнопку в действии (button.getContext()). Хотя я поймаю событие только на кнопке, но оно поймает событие на всем экране, как раньше. Можете ли вы, ребята, объяснить мне, почему, потому что я только знаю, что контекст похож на состояние объекта или деятельности, спасибо за ваше время

  detector = new GestureDetector(btn.getContext(), new GestureDetector.OnGestureListener(){};

3 ответа

В вашем сценарии GestureDetector нужен Context из Activity, Либо вы проходите MyCurrentActivity.this в качестве ссылки или button.getContext()оба контекста принадлежат одному Activity,

Context от которого вы получаете button.getContext() изначально установлен, когда вид раздут.

Интерфейс для глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается системой Android. Он позволяет получить доступ к ресурсам и классам, относящимся к конкретному приложению, а также к дополнительным вызовам для операций на уровне приложения, таких как запуск, широковещание и получение и т.д.

Источник

Контекст в основном это доступ к ресурсам приложения. Когда вы получаете контекст кнопки, вы действительно получаете ссылку на контекст действия, в котором находится кнопка, а не на саму кнопку. Есть 4 типа Context в Android:

  1. Контекст приложения
  2. Контекст деятельности / службы
  3. Приемник вещания
  4. Поставщик услуг

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

Я нашел эту статью о различных типах контекста очень полезной:

https://possiblemobile.com/2013/06/context/

Другие вопросы по тегам