Tsudzukeru
@Tsudzukeru

Как возможен NullPointerException в параметре который не может быть null?

У меня есть вот такой 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 в таком случае? Студия не компилирует код с нулабельностью.

Возможно проблема в обфускации и почему то на этапе компиляции не происходит обнаружение типов. Что можно сделать в таком случае?
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
не всему можно верить из подсказок студии.
Китайский андроид имеет отличия от стандарта. Да очем говорить, если гугл для своего пикселя делает тоже кастом, а не чистый OSP
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы