Как создать переменную в Kotlin без инициализации? - PullRequest
0 голосов
/ 24 октября 2018

Это простой вопрос.В Java вы можете создать строковую переменную или пару переменных, не добавляя к ней никакого значения.Это используется в начале класса перед вызовом onCreate () в Activity.Для этого я использовал свойство lateinit в Kotlin, но теперь у меня проблема с изменением видимости RecyclerView.Будет выдано исключение "lateinit property recyclerView has not been initialized".

Есть ли способ узнать, инициализировано ли свойство?Это вызывается при запуске родительского действия во Fragment (скрыть recyclerView и показывать ProgressBar, пока данные не будут привязаны к recyclerView).

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Если вам нужно получить свой элемент пользовательского интерфейса в Kotlin, вам не нужно создавать переменную и инициализировать ее с помощью findViewById (хотя вы можете).Используйте привязку представления kotlin, которая работает довольно хорошо.

https://kotlinlang.org/docs/tutorials/android-plugin.html#view-binding

0 голосов
/ 24 октября 2018

В Java вы можете создать строковую переменную или пару переменных, не добавляя к ней никакого значения

На самом деле в этом случае она неявно объявляется null.Котлин этого не делает из-за своего механизма обнуляемости.Вы должны явно объявить переменную nullable, чтобы разрешить null:

var str: String // does not work
var str: String? // does not work
var str: String? = null // works

Также см. этот ответ .

Ваш другой вариант действительно состоит в том, чтобы пометить его lateinit:

lateinit var str: String // works

Если вам необходимо проверить, не инициализирована ли она перед ее использованием, вы используете

if (::str.isInitialized)

Но на самом деле вам следует избегать этой проверки и просто убедиться, что она инициализированаперед его использованием.

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