Es muss eine dumme Frage sein, aber ich bin neu bei Kotlin und habe keine Lösung gefunden.
Wie deklariere ich das Klassenfeld? Wie können wir es in Java haben:
protected SharedPreferences mSharedPreferences;
Und später in onCreate()
:
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Jetzt kann ich es überall verwenden (in Unterklassen dieser Basisaktivität).
Ich versuche dasselbe in Kotlin zu tun:
protected var sharedPreferences : SharedPreferences
Und in onCreate()
:
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
Ich bekomme jedoch eine Warnung: "Eigenschaft muss initialisiert werden oder abstrakt sein"
Wenn Sie eine Eigenschaft außerhalb des Konstruktors initialisieren möchten, suchen Sie nach late-initialized properties . Deklarieren Sie die Eigenschaft mit dem Modifizierer lateinit
, der das sonst erforderliche Initialisieren überspringen kann und den Zugriff auf die Eigenschaft mit Ausnahme fehlschlagen lässt, bis ihm ein sinnvoller Wert zugewiesen wird:
protected lateinit var sharedPreferences: SharedPreferences
Dies aus den Kommentaren von Alexander Udalovs Antwort auf Sichtbarkeit zu ziehen. Für nullwertfähige Eigenschaften:
protected var sharedPreferences : SharedPreferences? = null
... und vergeben Sie später einen Wert.