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:
- Контекст приложения
- Контекст деятельности / службы
- Приемник вещания
- Поставщик услуг
Каждый из этих типов контекста имеет разные обязанности и доступные ресурсы. Таким образом, использование контекста здесь не ограничивает область, к которой вы можете прикоснуться, а скорее то, что вы можете работать с UI. Если вы хотите ограничить работу детектора жестов, вы просто прикрепите детектор к представлению. Вам все равно понадобится контекст Activity для создания детектора.
Я нашел эту статью о различных типах контекста очень полезной: