Ce doit être une question stupide, mais je suis vraiment nouveau à Kotlin et je n'ai trouvé aucune solution.
Comment déclarer un champ de classe? Comme on peut l'avoir en Java:
protected SharedPreferences mSharedPreferences;
Et plus tard dans onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Maintenant, je peux l'utiliser n'importe où (dans les sous-classes de cette activité de base).
J'essaie de faire pareil à Kotlin:
protected var sharedPreferences : SharedPreferences
Et dans onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Mais je reçois un avertissement: "La propriété doit être initialisée ou abstraite"
Si vous souhaitez initialiser une propriété en dehors du constructeur, vous pouvez rechercher propriétés finalisées Déclarez la propriété avec le modificateur lateinit
, ce qui permettra d'ignorer l'initialiseur par ailleurs requis et fera échouer l'accès à la propriété avec exception jusqu'à ce qu'une valeur significative lui soit affectée:
protected lateinit var sharedPreferences: SharedPreferences
En tirant ceci des commentaires de la réponse de Alexander Udalov pour la visibilité. Pour les propriétés nullables:
protected var sharedPreferences : SharedPreferences? = null
... et lui assigner une valeur plus tard.