У меня есть вот такой GestureDetector.OnGestureListener, который я использую для определения событий взаимодействия с экраном.
internal class SociumPlayerOnGestureListener : GestureDetector.OnGestureListener {
override fun onDown(motionEvent: MotionEvent?): Boolean {
return true
}
override fun onShowPress(motionEvent: MotionEvent?) {
}
override fun onSingleTapUp(motionEvent: MotionEvent?): Boolean {
return true
}
override fun onScroll(
currentMotionEvent: MotionEvent?,
event: MotionEvent?,
scrollX: Float,
scrollY: Float
): Boolean {
return true
}
override fun onLongPress(motionEvent: MotionEvent?) {
}
override fun onFling(
motionEvent: MotionEvent?,
event: MotionEvent?,
scrollX: Float,
scrollY: Float
): Boolean {
return true
}
}
У меня есть вот такой GestureDetector.OnGestureListener, который я использую для определения событий взаимодействия с экраном.
После обновления compileSdk и targetSdk до 33 - компилятор попросил убрать нулабельность из всех папраметров motionEvent, что и было сделано. Но приложение крашнулось на физ девайсе 13 андройда вот с таким exception:
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter currentMotionEvent
Краш не удается воспроизвести. Произошел насколько помню при навигации назад жестами (Как на ios). Во всем приложении только в одном месте есть параметр currentMotionEvent (метод onScroll). Как это возможно если с currentMotionEvent снята нулабельность. И как защититься от null в таком случае? Студия не компилирует код с нулабельностью.
Возможно проблема в обфускации и почему то на этапе компиляции не происходит обнаружение типов. Что можно сделать в таком случае?