Несоответствие типов: предполагаемый тип - это Контекст?но стОит ожидаться - Котлин - PullRequest
0 голосов
/ 20 марта 2019

Я получаю вышеупомянутую проблему после обновления версии kotlin до 1.3.0

Ниже приведен код,

     public class SequenceLayout(context: Context?, attrs: AttributeSet?, defStyleAttr: Int)
: FrameLayout(context, attrs, defStyleAttr), ViewTreeObserver.OnGlobalLayoutListener {

}

Первая строка, которую я получаю. выпускать Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Подпись неверна.Контекст не может быть нулевым для создания представления, в то время как AttributeSet может.Измените это как

 public class SequenceLayout(context: Context, attrs: AttributeSet?, defStyleAttr: Int)
0 голосов
/ 20 марта 2019

В Котлине Type отличается от Type?.Второй - Nullable.Первому вы не можете присвоить значение null.

Когда бы вы ни ожидали Type?, вы можете использовать Type, но нет другого способа использовать его наоборот.

Таким образомКотлин обеспечит нулевую безопасность.Подробнее вы можете прочитать здесь: https://kotlinlang.org/docs/reference/null-safety.html

Итак, как решить вашу проблему?:

  • Использовать оператор !! - этот оператор преобразует обнуляемый тип в ненулевой, но если значение равно нулю, вы получите NullPointerException

  • Измените сигнатуру вашей функции для использования совместимых типов.В вашем случае это выглядит правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...