Проблемы с преобразованием кода Java в Kotlin для реализации OnChangeListener - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть этот код для реализации прослушивателя для библиотеки Range Bar :

rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListener() {
        @Override
        public void onRangeChangeListener(RangeBar rangeBar, int leftPinIndex,
                                          int rightPinIndex, String leftPinValue, String rightPinValue) {
        }

    });

Теперь я попытался импортировать его и изменить его на kotlin следующими способами:

rangebar.setOnRangeBarChangeListener(object: RangeBar.OnRangeBarChangeListener {
        override fun onRangeChangeListener(rangeBar:RangeBar, leftPinIndex:Int,
                                  rightPinIndex:Int, leftPinValue:String, rightPinValue:String) {
            textView.text = "$leftPinIndex"
        }
    })

или

rangebar.setOnRangeBarChangeListener { rangeBar, leftPinIndex, 
rightPinIndex, leftPinValue, rightPinValue -> 
textView.text = "$leftPinIndex" }

В обоих случаях приложение аварийно завершает работу со следующей ошибкой:

java.lang.NullPointerException: попытка вызвать виртуальныйМетод 'void com.appyvet.materialrangebar.RangeBar.setOnRangeBarChangeListener> (com.appyvet.materialrangebar.RangeBar $ OnRangeBarChangeListener)' для ссылки на пустой объект

Что я делаю неправильно?*

1 Ответ

0 голосов
/ 27 сентября 2018

Ваш rangebar равен null ,

Чтобы избежать сбоя, используйте следующее:

rangebar?.setOnRangeBarChangeListener(object: RangeBar.OnRangeBarChangeListener {
    override fun onRangeChangeListener(rangeBar:RangeBar, leftPinIndex:Int, rightPinIndex:Int, leftPinValue:String, rightPinValue:String) {
        textView.text = "$leftPinIndex"
    }
})

или

rangebar?.setOnRangeBarChangeListener { rangeBar, leftPinIndex, rightPinIndex, leftPinValue, rightPinValue -> 
    textView.text = "$leftPinIndex" 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...