android - sirve - La propiedad debe ser inicializada o ser abstracta
metodo abstracto java (2)
Debe ser una pregunta estúpida, pero soy muy nuevo en Kotlin y no encontré ninguna solución.
¿Cómo declarar el campo de clase? Como podemos tenerlo en Java:
protected SharedPreferences mSharedPreferences;
Y luego en
onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Ahora puedo usarlo donde quiera (en subclases de esta actividad base).
Intento hacer lo mismo en Kotlin:
protected var sharedPreferences : SharedPreferences
Y en
onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Pero recibo una advertencia: "La propiedad debe inicializarse o ser abstracta"
Sacando esto de los comentarios de la respuesta de Alexander Udalov para la visibilidad. Para propiedades anulables:
protected var sharedPreferences : SharedPreferences? = null
... y asígnele un valor más tarde.
Si desea inicializar una propiedad fuera del constructor, entonces puede estar buscando
propiedades con inicialización tardía
.
Declare la propiedad con el modificador
lateinit
, que permitirá omitir el inicializador requerido y hará que el acceso a la propiedad falle con excepción hasta que se le asigne un valor significativo:
protected lateinit var sharedPreferences: SharedPreferences