Интеллектуальное приведение к «КЛАССУ!» невозможно, потому что «ПЕРЕМЕННАЯ» — это изменяемое свойство, которое к этому времени могло быть изменено

#java #android #android-studio #kotlin

Вопрос:

Поэтому я недавно начал изучать Kotlin и следовал учебнику для Android Studio на языке Java. В конце концов я преобразовал файл Java в Kotlin с помощью Android Studio.

Фрагмент кода Kotlin:
Фрагмент кода Kotlin

Ошибка компиляции:
Ошибка компиляции

Как я могу исправить эту ошибку?

Комментарии:

1. пожалуйста, разместите всю соответствующую информацию в самом вопросе

2. Прости! это мой первый пост, и я не знал, что изображения будут выглядеть так. Я запомню это в следующий раз, когда буду задавать вопрос.

3. при публикации кода или сообщений об ошибках не публикуйте изображения. опубликуйте фактический код и текст ошибки в виде форматированного текста

4. Примечание. Вы можете отредактировать сообщение и заменить изображения кодом.

5. Я также советую использовать учебник на основе Kotlin вместо учебника на основе Java, потому что обычно такой код не пишется в Kotlin (хотя его можно заставить работать).

Ответ №1:

Я бы предложил вам разместить код в самом сообщении. Приходим к ошибке. Давайте посмотрим ваш код. У вас есть различные свойства, присвоенные null, как это. Давайте рассмотрим один из них.

 var splashImg: ImageView? = null
 

Ошибка, которую вы получаете, подразумевает, что, поскольку это свойство может быть аннулировано, нет никакой гарантии, что при попытке доступа оно все еще является ImageView , а не просто null.

Ответ прост, то есть добавить для них нулевую проверку. Для этого у котлина есть оператор безопасного вызова, который называется ?.

Поэтому, когда вы пытаетесь получить доступ к собственности, получите доступ к ней следующим образом. Это гарантирует, что он получит доступ к нему только в том случае, если он не равен нулю. Вы также можете поставить обычную if-else

 splashImg?.animate()...