Свойство должно быть инициализировано или быть абстрактным



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



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



protected SharedPreferences mSharedPreferences;


и далее в onCreate():



mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)


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



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



protected var sharedPreferences : SharedPreferences


и onCreate():



sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)


но я получаю предупреждение: "свойство должно быть инициализировано или быть аннотация"

580   1  

1 ответ:

Если вы хотите инициализировать свойство вне конструктора, то поздно-инициализации свойства это то, что вы ищете. Объявите свойство с помощью lateinit модификатор, который позволит пропустить иначе необходимый инициализатор и сделает доступ к свойству fail с исключением, пока ему не будет присвоено какое-то значимое значение:

protected lateinit var sharedPreferences: SharedPreferences

Comments

    Ничего не найдено.