Имущество должно быть инициализировано или абстрактно

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

Как объявить поле класса? Как мы можем иметь это в java:

protected SharedPreferences mSharedPreferences; 

И позже в onCreate() :

 mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) 

Теперь я могу использовать его везде, где хочу (в подклассах этого базового действия).

Я пытаюсь сделать то же самое в Котлине:

 protected var sharedPreferences : SharedPreferences 

И в onCreate() :

 sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) 

Но я получаю предупреждение: «Имущество должно быть инициализировано или быть абстрактным»

Если вы хотите инициализировать свойство вне конструктора, то вы можете искать свойства с заглавной инициализацией . lateinit свойство с lateinit модификатора lateinit , который позволит пропустить требуемый иначе инициализатор и приведет к отказу доступа к ресурсу с исключением, пока ему не будет присвоено какое-либо значимое значение:

 protected lateinit var sharedPreferences: SharedPreferences