Свойство должно быть инициализировано или быть абстрактным
это должно быть глупый вопрос, но я действительно Новичок в Котлине, и я не нашел никакого решения.
как объявить поле класса? Как мы можем иметь его в Java:
protected SharedPreferences mSharedPreferences;
и далее в onCreate():
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
теперь я могу использовать его в любом месте я хочу (в подклассах этой базы деятельности).
Я пытаюсь сделать то же самое в Котлин:
protected var sharedPreferences : SharedPreferences
и onCreate():
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
но я получаю предупреждение: "свойство должно быть инициализировано или быть аннотация"
1 ответ:
Если вы хотите инициализировать свойство вне конструктора, то поздно-инициализации свойства это то, что вы ищете. Объявите свойство с помощью
lateinitмодификатор, который позволит пропустить иначе необходимый инициализатор и сделает доступ к свойству fail с исключением, пока ему не будет присвоено какое-то значимое значение:protected lateinit var sharedPreferences: SharedPreferences
Comments